From minios-devel-bounces@lists.xenproject.org Wed Apr 01 02:56:28 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 01 Apr 2020 02:56: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 1jJTYH-0004wF-Pr; Wed, 01 Apr 2020 02:56:25 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=6nih=5R=gmail.com=razvand@srs-us1.protection.inumbo.net>)
 id 1jJTYH-0004wA-1y
 for minios-devel@lists.xenproject.org; Wed, 01 Apr 2020 02:56:25 +0000
X-Inumbo-ID: 5ea3b20e-73c4-11ea-83d8-bc764e2007e4
Received: from mail-wr1-x442.google.com (unknown [2a00:1450:4864:20::442])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 5ea3b20e-73c4-11ea-83d8-bc764e2007e4;
 Wed, 01 Apr 2020 02:56:23 +0000 (UTC)
Received: by mail-wr1-x442.google.com with SMTP id t7so28728401wrw.12
 for <minios-devel@lists.xenproject.org>; Tue, 31 Mar 2020 19:56:23 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=sender:from:to:cc:subject:references:date:in-reply-to:message-id
 :user-agent:mime-version;
 bh=GBsGDV9Vp1z0YQcuHYmGDfMGucUYlz6jndL0hntZwMg=;
 b=ryJ0UFMIbvf5Jw2cA/5ptgvtMgeRHJy2BDMVBP4Cv65ysHJhbHeWMJo+PJefQClDZA
 rXDpvpOjDfa4vjewOLikLuqrnaFvq5wcxpip3h+q3VyDJcv3wVsScH/dYHgyiVhozMJu
 lFTLs9yrOh3jJldn7vitaYSrh5Js3M+rSuJrxg6XJllEVAHPXVwe7DugTCN4wv2mgjL9
 SmlNRphU1OeaCrQWKvELvSbZqS1M+oNYhilYc2Z+YTu8vOEnW/Xax44vz1gAb3/LTTDM
 rggtb48GAfM3DRBtua+zW2K+7eyIfI5v+otvxQhqf/GwlWFtEc1HPc074ktmR9r9Rdt2
 tZzg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:sender:from:to:cc:subject:references:date
 :in-reply-to:message-id:user-agent:mime-version;
 bh=GBsGDV9Vp1z0YQcuHYmGDfMGucUYlz6jndL0hntZwMg=;
 b=KCMe04IWFR9/4lwyf/uwvCWrLbQHWwveFUWNXMujnF+zIQ8yWdiG6sNypuSs9yA6q/
 LpS+RfLw7XE/cwYCYIsYvGm9Vme4+ZsMaGad5aMgK5+T8VfxKW7ZgKtcaOvJlliSMLA7
 SbsnvUdmenNyJd67yJRlPUZ/ouKpoiabTV38CRk6RG2x7PYTirAmC34lSXbMspyt0lRH
 2SaA/YbOx/zUofrEg3PFHOh1pg8zO5oR/+ol0UXupHwr10XRePYV/B6Mi19FCfJEPpMi
 zXkVbvI3d21T/bEtr6SNXM+5tqxTLsSbKBi2wejDT11aboPOEEuxOMNPB9qT2AjMRVZz
 OUXQ==
X-Gm-Message-State: ANhLgQ3JgM739ygu1zZUcdtqi5zLQsUIdQlar4RdjUUoOVxoTSnmhIn+
 W5RpMZXADJgUjxiBUg3upbA=
X-Google-Smtp-Source: ADFU+vt0C7ef6xKIsrGMJYb/vzWBX1Dkoxq6qgj0ASDPBibGY/V8zyS5aagBnEOw5mkkZ6INe4Nvsg==
X-Received: by 2002:a05:6000:1205:: with SMTP id
 e5mr25065405wrx.73.1585709782158; 
 Tue, 31 Mar 2020 19:56:22 -0700 (PDT)
Received: from localhost ([141.85.233.147])
 by smtp.gmail.com with ESMTPSA id l4sm1025321wru.1.2020.03.31.19.56.21
 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256);
 Tue, 31 Mar 2020 19:56:21 -0700 (PDT)
From: Razvan Deaconescu <razvan.deaconescu@cs.pub.ro>
To: Simon Kuenzer <simon.kuenzer@neclab.eu>
References: <20200331072551.97172-1-justin.he@arm.com>
 <60fe8b60-740c-58e0-399b-515758b53f61@neclab.eu>
Date: Wed, 01 Apr 2020 05:56:20 +0300
In-Reply-To: <60fe8b60-740c-58e0-399b-515758b53f61@neclab.eu> (Simon Kuenzer's
 message of "Wed, 1 Apr 2020 00:06:49 +0200")
Message-ID: <864ku3vrqj.fsf@drone.cs.pub.ro>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.2 (gnu/linux)
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT PATCH] build: Remove flag
 -fms-extensions for CFLAGS
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>,
 minios-devel@lists.xenproject.org, Kaly Xin <Kaly.Xin@arm.com>,
 Alice Suiu <alicesuiu17@gmail.com>, 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>

VGhpcyBhbHNvIHByZXZlbnRlZCBjbGFuZyBmcm9tIGNvbXBpbGluZyBVbmlrcmFmdC4gV2UganVz
dCBmb3VuZCBhYm91dAp0aGF0IHllc3RlcmRheS4gVGFraW5nIC1mbXMtZXh0ZW5zaW9ucyBvdXQg
ZW5hYmxlcyBjb21waWxpbmcgZm9yIGNsYW5nLgoKQWxpY2UgKGF0IENjKSB3aWxsIHByb3ZpZGUg
Y2xhbmcgcGF0Y2hlcyBzb29uLgoKUmF6dmFuCgpTaW1vbiBLdWVuemVyIDxzaW1vbi5rdWVuemVy
QG5lY2xhYi5ldT4gd3JpdGVzOgo+IFRoYW5rcyBhIGxvdCBmb3IgbG9va2luZyBpbnRvIHRoaXMu
Cj4KPiBSZXZpZXdlZC1ieTogU2ltb24gS3VlbnplciA8c2ltb24ua3VlbnplckBuZWNsYWIuZXU+
Cj4KPiBPbiAzMS4wMy4yMCAwOToyNSwgSmlhIEhlIHdyb3RlOgo+PiBDb21taXQgY2VjODk4OTkw
NGFjICgiYnVpbGQ6IEludHJvZHVjZSBDT01QRkxBR1MoLXkpIGFuZCBBUkNIRkxBR1MoLXkpIikK
Pj4gbW92ZWQgLWZtcy1leHRlbnNpb25zIGZyb20gYXJtIGFyY2ggdG8gZ2xvYmFsIENGTEFHUwo+
Pgo+PiBIZXJlIGlzIHRoZSBpbnRyb2R1Y3Rpb24gZnJvbSAibWFuIGdjYyIKPj4gICAgQWNjZXB0
IHNvbWUgbm9uLXN0YW5kYXJkIGNvbnN0cnVjdHMgdXNlZCBpbiBNaWNyb3NvZnQgaGVhZGVyIGZp
bGVzLgo+Pgo+PiAgICBJbiBDKysgY29kZSwgdGhpcyBhbGxvd3MgbWVtYmVyIG5hbWVzIGluIHN0
cnVjdHVyZXMgdG8gYmUgc2ltaWxhciB0bwo+PiAgICBwcmV2aW91cyB0eXBlcyBkZWNsYXJhdGlv
bnMuCj4+Cj4+ICAgIHR5cGVkZWYgaW50IFVPVzsKPj4gICAgc3RydWN0IEFCQyB7Cj4+ICAgICAg
T1cgVU9XOwo+PiAgICB9Owo+Pgo+PiAgICBTb21lIGNhc2VzIG9mIHVubmFtZWQgZmllbGRzIGlu
IHN0cnVjdHVyZXMgYW5kIHVuaW9ucyBhcmUgb25seSBhY2NlcHRlZAo+PiAgICB3aXRoIHRoaXMg
b3B0aW9uLgo+Pgo+PiBIZW5jZSwgaWYgVW5pa3JhZnQgZG9lc24ndCBpbmNsdWRlIGFueSBub24t
c3RhbmRhcmQgY29uc3RydWN0cyB1c2VkIGluCj4+IE1pY3Jvc29mdCBoZWFkZXIgZmlsZXMsIHdl
IGNhbiByZW1vdmUgaXQuCj4+Cj4+IFNpZ25lZC1vZmYtYnk6IEppYSBIZSA8anVzdGluLmhlQGFy
bS5jb20+Cj4+IC0tLQo+PiAgIE1ha2VmaWxlLnVrIHwgMiAtLQo+PiAgIDEgZmlsZSBjaGFuZ2Vk
LCAyIGRlbGV0aW9ucygtKQo+Pgo+PiBkaWZmIC0tZ2l0IGEvTWFrZWZpbGUudWsgYi9NYWtlZmls
ZS51awo+PiBpbmRleCBhNzhhZmMwLi4xZDZkMDYwIDEwMDY0NAo+PiAtLS0gYS9NYWtlZmlsZS51
awo+PiArKysgYi9NYWtlZmlsZS51awo+PiBAQCAtOSw4ICs5LDYgQEAgQ09NUEZMQUdTICAgICs9
IC1VIF9fbGludXhfXyAtVSBfX0ZyZWVCU0RfXyAtVSBfX3N1bl9fCj4+ICAgQ09NUEZMQUdTICAg
ICs9IC1mbm8tc3RhY2stcHJvdGVjdG9yIC1mbm8tb21pdC1mcmFtZS1wb2ludGVyIC1mbm8tdHJl
ZS1zcmEKPj4gICBDT01QRkxBR1MgICAgKz0gLVdhbGwgLVdleHRyYQo+PiAgIC0jIFRPRE86IFJl
bW92ZSAtZm1zLWV4dGVuc2lvbnMgaWYgbm90IG5lZWRlZCBmb3Igb3VyIGNvZGUgKGl0IHdhcwo+
PiBtb3ZlZCBmcm9tIEFybTY0IGFyY2gpCj4+IC1DRkxBR1MgICAgICAgKz0gLWZtcy1leHRlbnNp
b25zCj4+ICAgQVNGTEFHUyAgICAgICs9IC1EX19BU1NFTUJMWV9fCj4+ICAgICBBU0lOQ0xVREVT
ICAgKz0gLUkkKENPTkZJR19VS19CQVNFKS9pbmNsdWRlCj4+Cj4KPiBfX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IE1pbmlvcy1kZXZlbCBtYWlsaW5nIGxp
c3QKPiBNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKPiBodHRwczovL2xpc3RzLnhl
bnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVsCgpfX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBs
aXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnBy
b2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Wed Apr 01 02:58:06 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 01 Apr 2020 02:58: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 1jJTZt-0004zs-W8; Wed, 01 Apr 2020 02:58:05 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=6nih=5R=gmail.com=razvand@srs-us1.protection.inumbo.net>)
 id 1jJTZs-0004zn-Rh
 for minios-devel@lists.xen.org; Wed, 01 Apr 2020 02:58:04 +0000
X-Inumbo-ID: 9a381e68-73c4-11ea-83d8-bc764e2007e4
Received: from mail-wm1-x343.google.com (unknown [2a00:1450:4864:20::343])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 9a381e68-73c4-11ea-83d8-bc764e2007e4;
 Wed, 01 Apr 2020 02:58:03 +0000 (UTC)
Received: by mail-wm1-x343.google.com with SMTP id j19so5472794wmi.2
 for <minios-devel@lists.xen.org>; Tue, 31 Mar 2020 19:58:03 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=sender:from:to:cc:subject:references:date:in-reply-to:message-id
 :user-agent:mime-version;
 bh=wt7zsoyP2rR7VkhDL9j8uunR5bqAOEOFUlYHC+9oSe4=;
 b=s615P9jl1icWLlykWGzyi/JFChFR9ZsP4wQIWesiw4TC/XNur99DNr5aTVp+zxSV88
 et1IkjRYeZ0RJPWlOvYkCJJLsHv8PHweeFhiX7PZMXaAbVUAqUBwBuOtD3Vx6CWyEJiu
 e2QYIEKDPg6iduflO96RsuCns+4P868Tm3AI/T9eKzPlsDA2q5PHu7q737tGcgVGhjXm
 pJ5Ai5aWC3DlKUjdak+e4QDjkpqx5hnBRklyACOi3DgEqwpyrWYO637MuOV3ITn3F81j
 HDtFrRMQimHOd+wdGwoPMghdXs1HlPC0IT42Msh1/B2Y58tuezS0tS6bVm1kpsSgnyQY
 gjTg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:sender:from:to:cc:subject:references:date
 :in-reply-to:message-id:user-agent:mime-version;
 bh=wt7zsoyP2rR7VkhDL9j8uunR5bqAOEOFUlYHC+9oSe4=;
 b=MxCL91qKtfnIlPjKMFj04J02nb9Ha2qkENhA/hzB/MgKyYwqrNunsO8Q4cOhzKN26W
 AnHLFDHWyVnnhKjKipmz9I2YSFv4TLQlpRj3SzXtZ6NhFpl2G7hNvFUDmIGbRaTp17Gm
 tSPjr3xdoUjvXvT5tP0ftQV0GuMjMzkhJhxC7N9rPLLjskaMAJ9qyFZGMRAzN720O+FS
 fQHXq4fBRR4xpD7ADLKWUA+3Qg5I2dYdw5gox7CHHJyi8RhvU7hUABosp/c6uML9XVJ3
 0hwxisC3uVH5uCFTa+SoOtBvmc68OIgh9ysRIJcx3DT1c5Kq4Ws7y0iKHxsmWBTdnZnW
 cdTg==
X-Gm-Message-State: AGi0Pua8DMDab2r3THqoYPADTk7Q83N2BA9AvY3QU8J2wpKnwyTgqt73
 wdmcBZGsARpujwiD1iKYxck=
X-Google-Smtp-Source: APiQypJviGrKjZyRZ2Rc+e55RceZyWo7o3l56u+xxcidMdt2f+mbkXDhkiHacN0OzDpTMH7IbG0kPw==
X-Received: by 2002:a1c:5502:: with SMTP id j2mr1886548wmb.93.1585709882210;
 Tue, 31 Mar 2020 19:58:02 -0700 (PDT)
Received: from localhost ([141.85.233.147])
 by smtp.gmail.com with ESMTPSA id a13sm985127wrt.64.2020.03.31.19.58.01
 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256);
 Tue, 31 Mar 2020 19:58:01 -0700 (PDT)
From: Razvan Deaconescu <razvan.deaconescu@cs.pub.ro>
To: Simon Kuenzer <simon.kuenzer@neclab.eu>
References: <20200325174136.18862-1-simon.kuenzer@neclab.eu>
Date: Wed, 01 Apr 2020 05:58:01 +0300
In-Reply-To: <20200325174136.18862-1-simon.kuenzer@neclab.eu> (Simon Kuenzer's
 message of "Wed, 25 Mar 2020 18:41:29 +0100")
Message-ID: <86zhbvud3a.fsf@drone.cs.pub.ro>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.2 (gnu/linux)
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT/LIBELF PATCH 0/7] Port libelf from ELF
 Toolchain
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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
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>

QWxsIGdvb2QuCgpSZXZpZXdlZC1ieTogUmF6dmFuIERlYWNvbmVzY3UgPHJhenZhbi5kZWFjb25l
c2N1QGNzLnB1Yi5ybz4KClNpbW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJAbmVjbGFiLmV1PiB3
cml0ZXM6Cj4gVGhpcyBpcyBhbiBpbml0aWFsIHBvcnQgb2YgbGliZWxmLCB0aGUgRUxGIGFjY2Vz
cyBsaWJyYXJ5LCBmcm9tCj4gdGhlIG9mZmljaWFsIEVMRiBUb29sIENoYWluOgo+ICBodHRwczov
L3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9lbGZ0b29sY2hhaW4vCj4KPiBQbGVhc2Ugbm90ZTog
QmVjYXVzZSBvZiBjdXJyZW50IGluY29tcGF0aWJpbGl0aWVzIHdpdGgKPiBsaWJ2ZnNjb3JlLCBm
aWxlLUkvTyByZWxhdGVkIGxpYnJhcnkgc3ltYm9scyBhcmUgY29tbWVudGVkCj4gb3V0LCBmb3Ig
bm93Lgo+Cj4gU2ltb24gS3VlbnplciAoNyk6Cj4gICBDb3B5IGZyb20gb2ZmaWNpYWwgRUxGIFRv
b2wgQ2hhaW4gKDAuNy4xKQo+ICAgUHJvdmlkZSBgUkVBRE1FLm1kYCwgYENPUFlJTkcubWRgLCBg
Q09OVFJJQlVUSU5HLm1kYAo+ICAgQWRkIFNMSVNUIG1hY3JvIG9wZXJhdGlvbgo+ICAgQWRkIGBf
X1VuaWtyYWZ0X19gIGNvbmZpZ3VyYXRpb24KPiAgIEludGVncmF0ZSB0byBVbmlrcmFmdCBidWls
ZCBzeXN0ZW0KPiAgIFByb3ZpZGUgYGV4cG9ydHN5bXMudWtgCj4gICBVbmNvbW1lbnQgc291cmNl
IGZpbGVzIHRoYXQgZGVwZW5kIG9uIGxpYnZmc2NvcmUKPgo+ICBDT05UUklCVVRJTkcubWQgICAg
ICAgICAgfCAgICA0ICsKPiAgQ09QWUlORy5tZCAgICAgICAgICAgICAgIHwgICAgNyArCj4gIENv
bmZpZy51ayAgICAgICAgICAgICAgICB8ICAgIDcgKwo+ICBNYWtlZmlsZS51ayAgICAgICAgICAg
ICAgfCAgIDY4ICsKPiAgUkVBRE1FLmVsZnRvb2xjaGFpbiAgICAgIHwgIDEyNyArKwo+ICBSRUFE
TUUubWQgICAgICAgICAgICAgICAgfCAgIDEwICsKPiAgX2VsZnRjLmggICAgICAgICAgICAgICAg
IHwgIDU3NCArKysrKysrKwo+ICBfbGliZWxmLmggICAgICAgICAgICAgICAgfCAgMjQxICsrKysK
PiAgX2xpYmVsZl9hci5oICAgICAgICAgICAgIHwgICA1NyArCj4gIF9saWJlbGZfY29uZmlnLmgg
ICAgICAgICB8ICAyMjggKysrKwo+ICBlbGYuYyAgICAgICAgICAgICAgICAgICAgfCAgIDQwICsK
PiAgZWxmX2JlZ2luLmMgICAgICAgICAgICAgIHwgICA5MSArKwo+ICBlbGZfY250bC5jICAgICAg
ICAgICAgICAgfCAgIDU4ICsKPiAgZWxmX2RhdGEuYyAgICAgICAgICAgICAgIHwgIDI3NiArKysr
Cj4gIGVsZl9lbmQuYyAgICAgICAgICAgICAgICB8ICAgOTUgKysKPiAgZWxmX2Vycm1zZy5jICAg
ICAgICAgICAgIHwgICA4MyArKwo+ICBlbGZfZXJybm8uYyAgICAgICAgICAgICAgfCAgIDQxICsK
PiAgZWxmX2ZpbGwuYyAgICAgICAgICAgICAgIHwgICAzNyArCj4gIGVsZl9mbGFnLmMgICAgICAg
ICAgICAgICB8ICAxOTYgKysrCj4gIGVsZl9nZXRhcmhkci5jICAgICAgICAgICB8ICAgNDUgKwo+
ICBlbGZfZ2V0YXJzeW0uYyAgICAgICAgICAgfCAgIDU2ICsKPiAgZWxmX2dldGJhc2UuYyAgICAg
ICAgICAgIHwgICA0NiArCj4gIGVsZl9nZXRpZGVudC5jICAgICAgICAgICB8ICAgNjYgKwo+ICBl
bGZfaGFzaC5jICAgICAgICAgICAgICAgfCAgIDU0ICsKPiAgZWxmX2tpbmQuYyAgICAgICAgICAg
ICAgIHwgICA0MiArCj4gIGVsZl9tZW1vcnkuYyAgICAgICAgICAgICB8ICAgNDcgKwo+ICBlbGZf
bmV4dC5jICAgICAgICAgICAgICAgfCAgIDY0ICsKPiAgZWxmX29wZW4uYyAgICAgICAgICAgICAg
IHwgICA2NyArCj4gIGVsZl9waG51bS5jICAgICAgICAgICAgICB8ICAgNjUgKwo+ICBlbGZfcmFu
ZC5jICAgICAgICAgICAgICAgfCAgIDU3ICsKPiAgZWxmX3Jhd2ZpbGUuYyAgICAgICAgICAgIHwg
ICA1MSArCj4gIGVsZl9zY24uYyAgICAgICAgICAgICAgICB8ICAyMzcgKysrKwo+ICBlbGZfc2hu
dW0uYyAgICAgICAgICAgICAgfCAgIDY1ICsKPiAgZWxmX3Noc3RybmR4LmMgICAgICAgICAgIHwg
ICA4MCArKwo+ICBlbGZfc3RycHRyLmMgICAgICAgICAgICAgfCAgMTMyICsrCj4gIGVsZl90eXBl
cy5tNCAgICAgICAgICAgICB8ICAzMDkgKysrKysKPiAgZWxmX3VwZGF0ZS5jICAgICAgICAgICAg
IHwgMTIxNSArKysrKysrKysrKysrKysrKwo+ICBlbGZfdmVyc2lvbi5jICAgICAgICAgICAgfCAg
IDUwICsKPiAgZXhwb3J0c3ltcy51ayAgICAgICAgICAgIHwgICA4OSArKwo+ICBnZWxmX2NhcC5j
ICAgICAgICAgICAgICAgfCAgMTUwICsrKwo+ICBnZWxmX2NoZWNrc3VtLmMgICAgICAgICAgfCAg
IDU2ICsKPiAgZ2VsZl9keW4uYyAgICAgICAgICAgICAgIHwgIDE1MiArKysKPiAgZ2VsZl9laGRy
LmMgICAgICAgICAgICAgIHwgIDE2NyArKysKPiAgZ2VsZl9mc2l6ZS5jICAgICAgICAgICAgIHwg
ICA2MCArCj4gIGdlbGZfZ2V0Y2xhc3MuYyAgICAgICAgICB8ICAgMzcgKwo+ICBnZWxmX21vdmUu
YyAgICAgICAgICAgICAgfCAgMTU5ICsrKwo+ICBnZWxmX3BoZHIuYyAgICAgICAgICAgICAgfCAg
MTc3ICsrKwo+ICBnZWxmX3JlbC5jICAgICAgICAgICAgICAgfCAgMTYyICsrKwo+ICBnZWxmX3Jl
bGEuYyAgICAgICAgICAgICAgfCAgMTY1ICsrKwo+ICBnZWxmX3NoZHIuYyAgICAgICAgICAgICAg
fCAgMTMwICsrCj4gIGdlbGZfc3ltLmMgICAgICAgICAgICAgICB8ICAxNTkgKysrCj4gIGdlbGZf
c3ltaW5mby5jICAgICAgICAgICB8ICAxNTIgKysrCj4gIGdlbGZfc3ltc2huZHguYyAgICAgICAg
ICB8ICAxMzcgKysKPiAgZ2VsZl94bGF0ZS5jICAgICAgICAgICAgIHwgICA3OSArKwo+ICBpbmNs
dWRlL2VsZmRlZmluaXRpb25zLmggfCAyNzAwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrCj4gIGluY2x1ZGUvZ2VsZi5oICAgICAgICAgICB8ICAxMTAgKysKPiAgaW5jbHVk
ZS9saWJlbGYuaCAgICAgICAgIHwgIDI1NiArKysrCj4gIGxpYmVsZl9hbGlnbi5jICAgICAgICAg
ICB8ICAxMzUgKysKPiAgbGliZWxmX2FsbG9jYXRlLmMgICAgICAgIHwgIDIxMCArKysKPiAgbGli
ZWxmX2FyLmMgICAgICAgICAgICAgIHwgIDQ2NiArKysrKysrCj4gIGxpYmVsZl9hcl91dGlsLmMg
ICAgICAgICB8ICAzNjAgKysrKysKPiAgbGliZWxmX2NoZWNrc3VtLmMgICAgICAgIHwgICA5OCAr
Kwo+ICBsaWJlbGZfY29udmVydC5tNCAgICAgICAgfCAxMDg3ICsrKysrKysrKysrKysrKwo+ICBs
aWJlbGZfZGF0YS5jICAgICAgICAgICAgfCAgMTAxICsrCj4gIGxpYmVsZl9laGRyLmMgICAgICAg
ICAgICB8ICAyMDQgKysrCj4gIGxpYmVsZl9leHRlbmRlZC5jICAgICAgICB8ICAxMzQgKysKPiAg
bGliZWxmX2ZzaXplLm00ICAgICAgICAgIHwgIDE1OSArKysKPiAgbGliZWxmX21lbW9yeS5jICAg
ICAgICAgIHwgICA5NiArKwo+ICBsaWJlbGZfbXNpemUubTQgICAgICAgICAgfCAgMTA2ICsrCj4g
IGxpYmVsZl9vcGVuLmMgICAgICAgICAgICB8ICAyNDkgKysrKwo+ICBsaWJlbGZfcGhkci5jICAg
ICAgICAgICAgfCAgMTUzICsrKwo+ICBsaWJlbGZfc2hkci5jICAgICAgICAgICAgfCAgIDU0ICsK
PiAgbGliZWxmX3hsYXRlLmMgICAgICAgICAgIHwgIDE0OCArKysKPiAgNzMgZmlsZXMgY2hhbmdl
ZCwgMTM4NDUgaW5zZXJ0aW9ucygrKQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgQ09OVFJJQlVUSU5H
Lm1kCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBDT1BZSU5HLm1kCj4gIGNyZWF0ZSBtb2RlIDEwMDY0
NCBDb25maWcudWsKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IE1ha2VmaWxlLnVrCj4gIGNyZWF0ZSBt
b2RlIDEwMDY0NCBSRUFETUUuZWxmdG9vbGNoYWluCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBSRUFE
TUUubWQKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IF9lbGZ0Yy5oCj4gIGNyZWF0ZSBtb2RlIDEwMDY0
NCBfbGliZWxmLmgKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IF9saWJlbGZfYXIuaAo+ICBjcmVhdGUg
bW9kZSAxMDA2NDQgX2xpYmVsZl9jb25maWcuaAo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZWxmLmMK
PiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGVsZl9iZWdpbi5jCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBl
bGZfY250bC5jCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBlbGZfZGF0YS5jCj4gIGNyZWF0ZSBtb2Rl
IDEwMDY0NCBlbGZfZW5kLmMKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGVsZl9lcnJtc2cuYwo+ICBj
cmVhdGUgbW9kZSAxMDA2NDQgZWxmX2Vycm5vLmMKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGVsZl9m
aWxsLmMKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGVsZl9mbGFnLmMKPiAgY3JlYXRlIG1vZGUgMTAw
NjQ0IGVsZl9nZXRhcmhkci5jCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBlbGZfZ2V0YXJzeW0uYwo+
ICBjcmVhdGUgbW9kZSAxMDA2NDQgZWxmX2dldGJhc2UuYwo+ICBjcmVhdGUgbW9kZSAxMDA2NDQg
ZWxmX2dldGlkZW50LmMKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGVsZl9oYXNoLmMKPiAgY3JlYXRl
IG1vZGUgMTAwNjQ0IGVsZl9raW5kLmMKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGVsZl9tZW1vcnku
Ywo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZWxmX25leHQuYwo+ICBjcmVhdGUgbW9kZSAxMDA2NDQg
ZWxmX29wZW4uYwo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZWxmX3BobnVtLmMKPiAgY3JlYXRlIG1v
ZGUgMTAwNjQ0IGVsZl9yYW5kLmMKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGVsZl9yYXdmaWxlLmMK
PiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGVsZl9zY24uYwo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZWxm
X3NobnVtLmMKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGVsZl9zaHN0cm5keC5jCj4gIGNyZWF0ZSBt
b2RlIDEwMDY0NCBlbGZfc3RycHRyLmMKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGVsZl90eXBlcy5t
NAo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZWxmX3VwZGF0ZS5jCj4gIGNyZWF0ZSBtb2RlIDEwMDY0
NCBlbGZfdmVyc2lvbi5jCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBleHBvcnRzeW1zLnVrCj4gIGNy
ZWF0ZSBtb2RlIDEwMDY0NCBnZWxmX2NhcC5jCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBnZWxmX2No
ZWNrc3VtLmMKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGdlbGZfZHluLmMKPiAgY3JlYXRlIG1vZGUg
MTAwNjQ0IGdlbGZfZWhkci5jCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBnZWxmX2ZzaXplLmMKPiAg
Y3JlYXRlIG1vZGUgMTAwNjQ0IGdlbGZfZ2V0Y2xhc3MuYwo+ICBjcmVhdGUgbW9kZSAxMDA2NDQg
Z2VsZl9tb3ZlLmMKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGdlbGZfcGhkci5jCj4gIGNyZWF0ZSBt
b2RlIDEwMDY0NCBnZWxmX3JlbC5jCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBnZWxmX3JlbGEuYwo+
ICBjcmVhdGUgbW9kZSAxMDA2NDQgZ2VsZl9zaGRyLmMKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGdl
bGZfc3ltLmMKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGdlbGZfc3ltaW5mby5jCj4gIGNyZWF0ZSBt
b2RlIDEwMDY0NCBnZWxmX3N5bXNobmR4LmMKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGdlbGZfeGxh
dGUuYwo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9lbGZkZWZpbml0aW9ucy5oCj4gIGNy
ZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL2dlbGYuaAo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgaW5j
bHVkZS9saWJlbGYuaAo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliZWxmX2FsaWduLmMKPiAgY3Jl
YXRlIG1vZGUgMTAwNjQ0IGxpYmVsZl9hbGxvY2F0ZS5jCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBs
aWJlbGZfYXIuYwo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliZWxmX2FyX3V0aWwuYwo+ICBjcmVh
dGUgbW9kZSAxMDA2NDQgbGliZWxmX2NoZWNrc3VtLmMKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxp
YmVsZl9jb252ZXJ0Lm00Cj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJlbGZfZGF0YS5jCj4gIGNy
ZWF0ZSBtb2RlIDEwMDY0NCBsaWJlbGZfZWhkci5jCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJl
bGZfZXh0ZW5kZWQuYwo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliZWxmX2ZzaXplLm00Cj4gIGNy
ZWF0ZSBtb2RlIDEwMDY0NCBsaWJlbGZfbWVtb3J5LmMKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxp
YmVsZl9tc2l6ZS5tNAo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliZWxmX29wZW4uYwo+ICBjcmVh
dGUgbW9kZSAxMDA2NDQgbGliZWxmX3BoZHIuYwo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliZWxm
X3NoZHIuYwo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliZWxmX3hsYXRlLmMKCl9fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5n
IGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVu
cHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Wed Apr 01 02:58:31 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 01 Apr 2020 02:58: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 1jJTaJ-00050x-45; Wed, 01 Apr 2020 02:58:31 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=6nih=5R=gmail.com=razvand@srs-us1.protection.inumbo.net>)
 id 1jJTaI-00050s-89
 for minios-devel@lists.xen.org; Wed, 01 Apr 2020 02:58:30 +0000
X-Inumbo-ID: a9a2c268-73c4-11ea-b58d-bc764e2007e4
Received: from mail-wm1-x342.google.com (unknown [2a00:1450:4864:20::342])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id a9a2c268-73c4-11ea-b58d-bc764e2007e4;
 Wed, 01 Apr 2020 02:58:29 +0000 (UTC)
Received: by mail-wm1-x342.google.com with SMTP id a81so5457630wmf.5
 for <minios-devel@lists.xen.org>; Tue, 31 Mar 2020 19:58:28 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=sender:from:to:cc:subject:references:date:in-reply-to:message-id
 :user-agent:mime-version;
 bh=D0ypAcfSfrzkKmozYezyHwOwDMGwg75yxQFoeYqx9FY=;
 b=hWEEKry+u3TwKAx3iwmkzdgb2o5qp0+t6ybMa+YsjrZnnWUaSIuJtQbdxrd2jFVp7m
 l5eZ4BB/RhbsdV2ALZuiIJNnfT55Hy0wblJDjPFtCFujUUKavcJl4tpiBDEBKUg3sNn3
 8MN2Uq/gDigrQpX7mE7pP9qH6m5ufj8WThFA0wqEjicj0foua3Yuo3MSAYidPMFfk24x
 10HeQbZOyUsFK2sWGyaCegrNNGNL+sOD+KyLVBT1ajpfWPWS3DqOk7s8sS1ZRHAMVg5r
 uTy9NHui98yjF7dyFbe+hvqPRnvrX1ov/eZ0spL2432+B/+KOZUUgqE+vqBwyvfoi3MT
 EVyA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:sender:from:to:cc:subject:references:date
 :in-reply-to:message-id:user-agent:mime-version;
 bh=D0ypAcfSfrzkKmozYezyHwOwDMGwg75yxQFoeYqx9FY=;
 b=i21VBFjy1QMhJ99G8gMXvYCyCgwjavp7xm1qtWCfgsMXGLMuT8vIcuFKdXgZ8NUNzW
 nQ2iGzwxS9ViQ5ePsRT9Uk+S+Njgw5yhmeG+BqMqJImyZNH6klcKMR6BSk/UQ0+dxmB7
 DKODI+ZD3kiktZNaxeO0d+SmpuG8deQilDg+hFDbibn6iWky3xQJPKFHDmLM30e1UscF
 +576XIsBg5RT2HwAkkkhK1+D/dVR8SrkqcanDCeGCGUdrUXjdXuB6S/xrcRIGIMN8c/D
 hxZOq72lw6kdSFkDwcYHKpftt7nXiNROFsiYp9vStuRAX/0NXFcI5fcAbuuHRYfr3RI9
 fKGw==
X-Gm-Message-State: AGi0PuawVdQNfeOulhmPB6b8DySFd12RaeMPscy6JDBf0/T5G+4GwEo+
 dz1U8sL9wxFqbry1j/b9nTi9ElGv5mQ=
X-Google-Smtp-Source: APiQypLIpRTP/p8VN+ReOmzRGiCVp2QUj9g0B1CQbvut7j28Ccl+AXKn5gQEmkDWsckaPRBFL14gKg==
X-Received: by 2002:a7b:c002:: with SMTP id c2mr1840483wmb.123.1585709908176; 
 Tue, 31 Mar 2020 19:58:28 -0700 (PDT)
Received: from localhost ([141.85.233.147])
 by smtp.gmail.com with ESMTPSA id u204sm739141wmg.40.2020.03.31.19.58.27
 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256);
 Tue, 31 Mar 2020 19:58:27 -0700 (PDT)
From: Razvan Deaconescu <razvan.deaconescu@cs.pub.ro>
To: Simon Kuenzer <simon.kuenzer@neclab.eu>
References: <20200325174136.18862-1-simon.kuenzer@neclab.eu>
 <20200325174136.18862-3-simon.kuenzer@neclab.eu>
Date: Wed, 01 Apr 2020 05:58:27 +0300
In-Reply-To: <20200325174136.18862-3-simon.kuenzer@neclab.eu> (Simon Kuenzer's
 message of "Wed, 25 Mar 2020 18:41:31 +0100")
Message-ID: <86v9mjud2k.fsf@drone.cs.pub.ro>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.2 (gnu/linux)
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT/LIBELF PATCH 2/7] Provide `README.md`,
 `COPYING.md`, `CONTRIBUTING.md`
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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
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>

UmV2aWV3ZWQtYnk6IFJhenZhbiBEZWFjb25lc2N1IDxyYXp2YW4uZGVhY29uZXNjdUBjcy5wdWIu
cm8+CgpTaW1vbiBLdWVuemVyIDxzaW1vbi5rdWVuemVyQG5lY2xhYi5ldT4gd3JpdGVzOgo+IFBy
b3ZpZGUgYFJFQURNRS5tZGAsIGBDT1BZSU5HLm1kYCwgYW5kIGBDT05UUklCVVRJTkcubWRgLgo+
Cj4gU2lnbmVkLW9mZi1ieTogU2ltb24gS3VlbnplciA8c2ltb24ua3VlbnplckBuZWNsYWIuZXU+
Cj4gLS0tCj4gIENPTlRSSUJVVElORy5tZCB8ICA0ICsrKysKPiAgQ09QWUlORy5tZCAgICAgIHwg
IDcgKysrKysrKwo+ICBSRUFETUUubWQgICAgICAgfCAxMCArKysrKysrKysrCj4gIDMgZmlsZXMg
Y2hhbmdlZCwgMjEgaW5zZXJ0aW9ucygrKQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgQ09OVFJJQlVU
SU5HLm1kCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBDT1BZSU5HLm1kCj4gIGNyZWF0ZSBtb2RlIDEw
MDY0NCBSRUFETUUubWQKPgo+IGRpZmYgLS1naXQgYS9DT05UUklCVVRJTkcubWQgYi9DT05UUklC
VVRJTkcubWQKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLjE0ZjZhYzYK
PiAtLS0gL2Rldi9udWxsCj4gKysrIGIvQ09OVFJJQlVUSU5HLm1kCj4gQEAgLTAsMCArMSw0IEBA
Cj4gK0NvbnRyaWJ1dGluZyB0byBVbmlrcmFmdAo+ICs9PT09PT09PT09PT09PT09PT09PT09PT0K
PiArCj4gK1BsZWFzZSByZWZlciB0byB0aGUgYENPTlRSSUJVVElORy5tZGAgZmlsZSBpbiB0aGUg
bWFpbiBVbmlrcmFmdCByZXBvc2l0b3J5Lgo+IGRpZmYgLS1naXQgYS9DT1BZSU5HLm1kIGIvQ09Q
WUlORy5tZAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uYTQyN2Y2NAo+
IC0tLSAvZGV2L251bGwKPiArKysgYi9DT1BZSU5HLm1kCj4gQEAgLTAsMCArMSw3IEBACj4gK0xp
Y2Vuc2UKPiArPT09PT09PQo+ICsKPiArbGliZWxmIGlzIGNvcHlyaWdodCBieSBpdHMgYXV0aG9y
cywgYW5kIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBgQlNECj4gK0xpY2Vuc2VgLiBQbGVhc2Ug
cmVhZCBgUkVBRE1FLmxpYmVsZnRvb2xjaGFpbmAgZm9yIG1vcmUgaW5mb3JtYXRpb24uCj4gKwo+
ICsgQlNEIExpY2Vuc2U6IGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxp
Y2Vuc2UucGhwCj4gZGlmZiAtLWdpdCBhL1JFQURNRS5tZCBiL1JFQURNRS5tZAo+IG5ldyBmaWxl
IG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uMTVmYWM4Nwo+IC0tLSAvZGV2L251bGwKPiAr
KysgYi9SRUFETUUubWQKPiBAQCAtMCwwICsxLDEwIEBACj4gKyMgbGliZWxmIGZvciBVbmlrcmFm
dAo+ICtUaGlzIGlzIGEgcG9ydCBvZiBsaWJlbGYgZnJvbSBvZmZpY2lhbCBFTEYgVG9vbCBDaGFp
biAwLjcuMQo+ICsKPiArUHJvamVjdDogaHR0cHM6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMv
ZWxmdG9vbGNoYWluLwo+ICtTb3VyY2VzOiBodHRwczovL2Rvd25sb2Fkcy5zb3VyY2Vmb3JnZS5u
ZXQvcHJvamVjdC9lbGZ0b29sY2hhaW4vU291cmNlcy9lbGZ0b29sY2hhaW4tMC43LjEvZWxmdG9v
bGNoYWluLTAuNy4xLnRhci5iejIKPiArCj4gKyMjIEZ1cnRoZXIgaW5mb3JtYXRpb24KPiArRnVy
dGhlciBpbmZvcm1hdGlvbiBhYm91dCBsaWJlbGYgY2FuIGJlIGZvdW5kIGluIGBSRUFETUUuZWxm
dG9vbGNoYWluYC4KPiArUGxlYXNlIHJlZmVyIHRvIHRoZSBgUkVBRE1FLm1kYCBhcyB3ZWxsIGFz
IHRoZSBkb2N1bWVudGF0aW9uIGluIHRoZSBgZG9jL2AKPiArc3ViZGlyZWN0b3J5IG9mIHRoZSBt
YWluIHVuaWtyYWZ0IHJlcG9zaXRvcnkuCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBs
aXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4v
bGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Wed Apr 01 02:58:38 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 01 Apr 2020 02:58: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 1jJTaQ-00051i-6X; Wed, 01 Apr 2020 02:58:38 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=6nih=5R=gmail.com=razvand@srs-us1.protection.inumbo.net>)
 id 1jJTaP-00051X-27
 for minios-devel@lists.xen.org; Wed, 01 Apr 2020 02:58:37 +0000
X-Inumbo-ID: adbb0fe0-73c4-11ea-9e09-bc764e2007e4
Received: from mail-wm1-x342.google.com (unknown [2a00:1450:4864:20::342])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id adbb0fe0-73c4-11ea-9e09-bc764e2007e4;
 Wed, 01 Apr 2020 02:58:35 +0000 (UTC)
Received: by mail-wm1-x342.google.com with SMTP id j19so5473502wmi.2
 for <minios-devel@lists.xen.org>; Tue, 31 Mar 2020 19:58:35 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=sender:from:to:cc:subject:references:date:in-reply-to:message-id
 :user-agent:mime-version;
 bh=UVLMexOzfxR5B0XOLvBlSClZmha37rweV3G/qDqHPjs=;
 b=RUjjuyXG7WxNsOl6DzuboewbNs9kLXDBZr+ffFawWiM/rsrRtwPh8fxGq/W7+qK+e/
 wI+hBoB7yhQPbN/Nwu8d6x2MKbX7mUrRuuxIXGaIAkC0q7oBnYVRbi7xYzKWdAEm47cX
 lC4noS69M47gz4qcRFU9V25Eer8KOxFmMel/yTLm5Lsqx9bsVyf+s5E4mrd1G/0Uok0e
 3P3lmPw7ytTMbvaaDpoDB2Yycs5PXroAO8VBDaEijKklpvqAoE/50rUy35VLRZQpxLH7
 tzZW1ATAspHQLAJo4W1tocpJD2rrCOb6z3int1KuxUGR0Z4Zi9IlC/UtcidUBl4h/Eqb
 5YuA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:sender:from:to:cc:subject:references:date
 :in-reply-to:message-id:user-agent:mime-version;
 bh=UVLMexOzfxR5B0XOLvBlSClZmha37rweV3G/qDqHPjs=;
 b=GkpQEJ8SuNc6DxEoynaejdur+n96aGwruWN4RoDxX/HJIdZCs/z0vCzOFvL0GITqt/
 Ld+CGZZZD/O7NtbR4C9dIB+rxvSTTxqeEupbjNnajtszaAXq0JmnwsDNvzOKD6oz1kal
 zCPDfEowLwOa7Q6JLYaZpcohGXkVuZ+IK/B7alM58yBsT+CCfIpNxktQU4IZszpV1foW
 hLXtQ0rTpqBeuGLMvxSIinnAjvANOac/4IsQkFGIqwOENs8k43AZJBPG8qXIp8P8pUGL
 f/ooDRrXOn1WI8xiGgSwpm0HWcGoBsCMkBv6/OkaDr9AX9nhE+02N4uDmPjkLPS+aZ9y
 JXxg==
X-Gm-Message-State: AGi0PubK08T54W7Uu774YVJ/2AOojXhg1tw6zrFEb1NWoPsMMD5o2DW7
 FM56vBQgl3quQoXRmX7lR9s=
X-Google-Smtp-Source: APiQypI+wVGj9Drdo2fPq26iQ9/Ae97KZD+clwpj7QNi1T5exe2L6tj7dPrdINii+p9QNwyr49Ql2A==
X-Received: by 2002:a1c:8108:: with SMTP id c8mr1871003wmd.50.1585709915002;
 Tue, 31 Mar 2020 19:58:35 -0700 (PDT)
Received: from localhost ([141.85.233.147])
 by smtp.gmail.com with ESMTPSA id v7sm971666wrs.96.2020.03.31.19.58.34
 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256);
 Tue, 31 Mar 2020 19:58:34 -0700 (PDT)
From: Razvan Deaconescu <razvan.deaconescu@cs.pub.ro>
To: Simon Kuenzer <simon.kuenzer@neclab.eu>
References: <20200325174136.18862-1-simon.kuenzer@neclab.eu>
 <20200325174136.18862-4-simon.kuenzer@neclab.eu>
Date: Wed, 01 Apr 2020 05:58:33 +0300
In-Reply-To: <20200325174136.18862-4-simon.kuenzer@neclab.eu> (Simon Kuenzer's
 message of "Wed, 25 Mar 2020 18:41:32 +0100")
Message-ID: <86r1x7ud2e.fsf@drone.cs.pub.ro>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.2 (gnu/linux)
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT/LIBELF PATCH 3/7] Add SLIST macro
 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: 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>

UmV2aWV3ZWQtYnk6IFJhenZhbiBEZWFjb25lc2N1IDxyYXp2YW4uZGVhY29uZXNjdUBjcy5wdWIu
cm8+CgpTaW1vbiBLdWVuemVyIDxzaW1vbi5rdWVuemVyQG5lY2xhYi5ldT4gd3JpdGVzOgo+IEFk
ZHMgbWlzc2luZyBgU0xJU1RgIG1hY3JvcyBzbyB0aGF0IGxpYmVsZiBjYW4gYmUgYnVpbHQKPiB3
aXRob3V0IGA8c3lzL3F1ZXVlcy5oPmAuCj4KPiBTaWduZWQtb2ZmLWJ5OiBTaW1vbiBLdWVuemVy
IDxzaW1vbi5rdWVuemVyQG5lY2xhYi5ldT4KPiAtLS0KPiAgX2VsZnRjLmggIHwgNTUgKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICBfbGli
ZWxmLmggfCAgMiArKwo+ICBlbGZfc2NuLmMgfCAgMiArKwo+ICAzIGZpbGVzIGNoYW5nZWQsIDU5
IGluc2VydGlvbnMoKykKPgo+IGRpZmYgLS1naXQgYS9fZWxmdGMuaCBiL19lbGZ0Yy5oCj4gaW5k
ZXggOTQyNzJlZi4uZjBmYTA0NiAxMDA2NDQKPiAtLS0gYS9fZWxmdGMuaAo+ICsrKyBiL19lbGZ0
Yy5oCj4gQEAgLTgzLDYgKzgzLDM1IEBACj4gIAkgICAgKHZhcikgPSAodHZhcikpCj4gICNlbmRp
Zgo+ICAKPiArI2lmbmRlZglTTElTVF9IRUFECj4gKyNkZWZpbmUJU0xJU1RfSEVBRChuYW1lLCB0
eXBlKQkJCQkJXAo+ICtzdHJ1Y3QgbmFtZSB7CQkJCQkJCVwKPiArCXN0cnVjdCB0eXBlICpzbGhf
Zmlyc3Q7CS8qIGZpcnN0IGVsZW1lbnQgKi8JCVwKPiArfQo+ICsjZW5kaWYKPiArCj4gKyNpZm5k
ZWYJU0xJU1RfRU5UUlkKPiArI2RlZmluZQlTTElTVF9FTlRSWSh0eXBlKQkJCQkJXAo+ICtzdHJ1
Y3QgewkJCQkJCQlcCj4gKwlzdHJ1Y3QgdHlwZSAqc2xlX25leHQ7CS8qIG5leHQgZWxlbWVudCAq
LwkJXAo+ICt9Cj4gKyNlbmRpZgo+ICsKPiArI2lmbmRlZglTTElTVF9GSVJTVAo+ICsjZGVmaW5l
CVNMSVNUX0ZJUlNUKGhlYWQpCSgoaGVhZCktPnNsaF9maXJzdCkKPiArI2VuZGlmCj4gKwo+ICsj
aWZuZGVmCVNMSVNUX05FWFQKPiArI2RlZmluZQlTTElTVF9ORVhUKGVsbSwgZmllbGQpCSgoZWxt
KS0+ZmllbGQuc2xlX25leHQpCj4gKyNlbmRpZgo+ICsKPiArI2lmbmRlZglTTElTVF9GT1JFQUNI
Cj4gKyNkZWZpbmUJU0xJU1RfRk9SRUFDSCh2YXIsIGhlYWQsIGZpZWxkKQkJCQlcCj4gKwlmb3Ig
KCh2YXIpID0gU0xJU1RfRklSU1QoKGhlYWQpKTsJCQlcCj4gKwkgICAgKHZhcik7CQkJCQkJXAo+
ICsJICAgICh2YXIpID0gU0xJU1RfTkVYVCgodmFyKSwgZmllbGQpKQo+ICsjZW5kaWYKPiArCj4g
ICNpZm5kZWYJU0xJU1RfRk9SRUFDSF9TQUZFCj4gICNkZWZpbmUJU0xJU1RfRk9SRUFDSF9TQUZF
KHZhciwgaGVhZCwgZmllbGQsIHR2YXIpCQlcCj4gIAlmb3IgKCh2YXIpID0gU0xJU1RfRklSU1Qo
KGhlYWQpKTsJCQlcCj4gQEAgLTkwLDYgKzExOSwzMiBAQAo+ICAJICAgICh2YXIpID0gKHR2YXIp
KQo+ICAjZW5kaWYKPiAgCj4gKyNpZm5kZWYJU0xJU1RfSU5JVAo+ICsjZGVmaW5lCVNMSVNUX0lO
SVQoaGVhZCkgZG8gewkJCQkJXAo+ICsJU0xJU1RfRklSU1QoKGhlYWQpKSA9IDA7CQkJCVwKPiAr
fSB3aGlsZSAoMCkKPiArI2VuZGlmCj4gKwo+ICsjaWZuZGVmCVNMSVNUX0lOU0VSVF9BRlRFUgo+
ICsjZGVmaW5lCVNMSVNUX0lOU0VSVF9BRlRFUihzbGlzdGVsbSwgZWxtLCBmaWVsZCkgZG8gewkJ
CVwKPiArCVNMSVNUX05FWFQoKGVsbSksIGZpZWxkKSA9IFNMSVNUX05FWFQoKHNsaXN0ZWxtKSwg
ZmllbGQpOwlcCj4gKwlTTElTVF9ORVhUKChzbGlzdGVsbSksIGZpZWxkKSA9IChlbG0pOwkJCQlc
Cj4gK30gd2hpbGUgKDApCj4gKyNlbmRpZgo+ICsKPiArI2lmbmRlZglTTElTVF9JTlNFUlRfSEVB
RAo+ICsjZGVmaW5lCVNMSVNUX0lOU0VSVF9IRUFEKGhlYWQsIGVsbSwgZmllbGQpIGRvIHsJCVwK
PiArCVNMSVNUX05FWFQoKGVsbSksIGZpZWxkKSA9IFNMSVNUX0ZJUlNUKChoZWFkKSk7CQlcCj4g
KwlTTElTVF9GSVJTVCgoaGVhZCkpID0gKGVsbSk7CQkJCVwKPiArfSB3aGlsZSAoMCkKPiArI2Vu
ZGlmCj4gKwo+ICsjaWZuZGVmCVNMSVNUX1JFTU9WRV9IRUFECj4gKyNkZWZpbmUJU0xJU1RfUkVN
T1ZFX0hFQUQoaGVhZCwgZmllbGQpIGRvIHsJCQkJXAo+ICsJU0xJU1RfRklSU1QoKGhlYWQpKSA9
IFNMSVNUX05FWFQoU0xJU1RfRklSU1QoKGhlYWQpKSwgZmllbGQpOwlcCj4gK30gd2hpbGUgKDAp
Cj4gKyNlbmRpZgo+ICsKPiAgI2lmbmRlZglTVEFJTFFfQ09OQ0FUCj4gICNkZWZpbmUJU1RBSUxR
X0NPTkNBVChoZWFkMSwgaGVhZDIpIGRvIHsJCQlcCj4gIAlpZiAoIVNUQUlMUV9FTVBUWSgoaGVh
ZDIpKSkgewkJCQlcCj4gZGlmZiAtLWdpdCBhL19saWJlbGYuaCBiL19saWJlbGYuaAo+IGluZGV4
IGJlNDUzMzUuLjczNGNiZTcgMTAwNjQ0Cj4gLS0tIGEvX2xpYmVsZi5oCj4gKysrIGIvX2xpYmVs
Zi5oCj4gQEAgLTI5LDcgKzI5LDkgQEAKPiAgI2lmbmRlZglfX0xJQkVMRl9IXwo+ICAjZGVmaW5l
CV9fTElCRUxGX0hfCj4gIAo+ICsjaWYgIWRlZmluZWQoX19VbmlrcmFmdF9fKQo+ICAjaW5jbHVk
ZSA8c3lzL3F1ZXVlLmg+Cj4gKyNlbmRpZgo+ICAKPiAgI2luY2x1ZGUgIl9saWJlbGZfY29uZmln
LmgiCj4gIAo+IGRpZmYgLS1naXQgYS9lbGZfc2NuLmMgYi9lbGZfc2NuLmMKPiBpbmRleCBkM2Uy
NzQ3Li40YmM0MDM1IDEwMDY0NAo+IC0tLSBhL2VsZl9zY24uYwo+ICsrKyBiL2VsZl9zY24uYwo+
IEBAIC0yNCw3ICsyNCw5IEBACj4gICAqIFNVQ0ggREFNQUdFLgo+ICAgKi8KPiAgCj4gKyNpZiAh
ZGVmaW5lZChfX1VuaWtyYWZ0X18pCj4gICNpbmNsdWRlIDxzeXMvcXVldWUuaD4KPiArI2VuZGlm
Cj4gIAo+ICAjaW5jbHVkZSA8YXNzZXJ0Lmg+Cj4gICNpbmNsdWRlIDxlcnJuby5oPgoKX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1h
aWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0
cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Wed Apr 01 02:58:46 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 01 Apr 2020 02:58: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 1jJTaY-00052Y-8E; Wed, 01 Apr 2020 02:58:46 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=6nih=5R=gmail.com=razvand@srs-us1.protection.inumbo.net>)
 id 1jJTaX-00052O-AU
 for minios-devel@lists.xen.org; Wed, 01 Apr 2020 02:58:45 +0000
X-Inumbo-ID: b292839a-73c4-11ea-b58d-bc764e2007e4
Received: from mail-wm1-x344.google.com (unknown [2a00:1450:4864:20::344])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id b292839a-73c4-11ea-b58d-bc764e2007e4;
 Wed, 01 Apr 2020 02:58:43 +0000 (UTC)
Received: by mail-wm1-x344.google.com with SMTP id t128so4971308wma.0
 for <minios-devel@lists.xen.org>; Tue, 31 Mar 2020 19:58:43 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=sender:from:to:cc:subject:references:date:in-reply-to:message-id
 :user-agent:mime-version;
 bh=Kmv25RmyTda5bI8V1QyR3bX5lzrfbQHxBfzvOdWKETc=;
 b=nqhfRyi7V7yvv6NWKaUQd4Wcy2VNycDgmiJpwN6KZR76YsmKdhngkA+xVsMl06Vgly
 lXXVsOVJY7XRrsC5zyFLj+/O4YHBG5pQ+oYuONaFQuAdfqiqklP7NO1Evm+K3uMXmzCc
 jXn4mUDEGLPeHKZKV3Mmn8cdE9v4XUNC2drMmKAlwNfr59kf6nEnTEFRlyjSXakUbZE/
 1bhP1EzqRgRtC71YMb3P+NxK3JoYd07y4Vs1M1eqNnW/zKiJ1RGtWcntp65WndlKNzMu
 EjdhjT+PoyYX+RQZHIy423dK5cGJAnD2mjPWAQMR9fp8WS7IaejUtPx42RB9LlwNA4dq
 UyCA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:sender:from:to:cc:subject:references:date
 :in-reply-to:message-id:user-agent:mime-version;
 bh=Kmv25RmyTda5bI8V1QyR3bX5lzrfbQHxBfzvOdWKETc=;
 b=AuvLuq0/YylaLMuKkp//7B0mBlRGRdZrNGIq1Tg3Iu1UH6ai3BJx2SrwYJGXjZdONv
 hazx46+x4VNQfCYY06zj5lJYTpLRAnMgeJb5kILgLPDhIBixNDcP7uP++6CpjLmPaf+W
 hWMMZbKG6rHqFL4uCdtmI8GXPpy0hXN5m8hoVYcfDJu1SiDnjLAEua23HYNCCQfDYGWt
 FWPUYrGYnKf1xhPerOmPzZcgQyAbMynqvzxV5O9bWvXdOGUz68vlc5n8bAf/j0dWrQzY
 RWMLPvT36HCF+7Y6XsJoo0mqnp5+iCrqoZhW8KlOxrH46kx0WirqbnKZzpKvPZJKnCz9
 3boQ==
X-Gm-Message-State: AGi0PuYcwIOnB6Cv7iV6DLauiiOK9EMhyVhe1IZNhMUw7Bqvm98AoTrX
 /goblklIgCvjWQCz6j6VM5ksH4jdLAE=
X-Google-Smtp-Source: APiQypKX2/a18eWgkRfnefrB++ZmNMly7y7naHw0Ua5fvpdoJSpEQYwrwadsXcS5Bu+yyvgBJGGpJg==
X-Received: by 2002:a1c:2e10:: with SMTP id u16mr1758791wmu.143.1585709923149; 
 Tue, 31 Mar 2020 19:58:43 -0700 (PDT)
Received: from localhost ([141.85.233.147])
 by smtp.gmail.com with ESMTPSA id i8sm1038376wrb.41.2020.03.31.19.58.42
 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256);
 Tue, 31 Mar 2020 19:58:42 -0700 (PDT)
From: Razvan Deaconescu <razvan.deaconescu@cs.pub.ro>
To: Simon Kuenzer <simon.kuenzer@neclab.eu>
References: <20200325174136.18862-1-simon.kuenzer@neclab.eu>
 <20200325174136.18862-5-simon.kuenzer@neclab.eu>
Date: Wed, 01 Apr 2020 05:58:41 +0300
In-Reply-To: <20200325174136.18862-5-simon.kuenzer@neclab.eu> (Simon Kuenzer's
 message of "Wed, 25 Mar 2020 18:41:33 +0100")
Message-ID: <86mu7vud26.fsf@drone.cs.pub.ro>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.2 (gnu/linux)
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT/LIBELF PATCH 4/7] Add `__Unikraft__`
 configuration
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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
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>

UmV2aWV3ZWQtYnk6IFJhenZhbiBEZWFjb25lc2N1IDxyYXp2YW4uZGVhY29uZXNjdUBjcy5wdWIu
cm8+CgpTaW1vbiBLdWVuemVyIDxzaW1vbi5rdWVuemVyQG5lY2xhYi5ldT4gd3JpdGVzOgo+IEFk
ZCBgX19VbmlrcmFmdF9fYCBhcyBhIHRhcmdldCB0byB0aGUgbGlicmFyeSBjb25maWd1cmF0aW9u
Ogo+IGBfbGliZWxmX2NvbmZpZy5oYAo+Cj4gU2lnbmVkLW9mZi1ieTogU2ltb24gS3VlbnplciA8
c2ltb24ua3VlbnplckBuZWNsYWIuZXU+Cj4gLS0tCj4gIF9lbGZ0Yy5oICAgICAgICAgfCAzNSAr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICBfbGliZWxmX2NvbmZpZy5oIHwg
NDUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gIDIgZmls
ZXMgY2hhbmdlZCwgODAgaW5zZXJ0aW9ucygrKQo+Cj4gZGlmZiAtLWdpdCBhL19lbGZ0Yy5oIGIv
X2VsZnRjLmgKPiBpbmRleCBmMGZhMDQ2Li4xOTM0MGNmIDEwMDY0NAo+IC0tLSBhL19lbGZ0Yy5o
Cj4gKysrIGIvX2VsZnRjLmgKPiBAQCAtMzc4LDYgKzM3OCwxNCBAQCBzdHJ1Y3QgbmFtZSB7CQkJ
CQkJCVwKPiAgI2VuZGlmCS8qIF9fR05VQ19fICovCj4gICNlbmRpZgo+ICAKPiArI2lmIGRlZmlu
ZWQoX19VbmlrcmFmdF9fKQo+ICsjaWYgZGVmaW5lZChfX0dOVUNfXykKPiArI2RlZmluZQlFTEZU
Q19WQ1NJRChJRCkJCV9fYXNtX18oIi5pZGVudFx0XCIiIElEICJcIiIpCj4gKyNlbHNlCj4gKyNk
ZWZpbmUJRUxGVENfVkNTSUQoSUQpCQkvKiovCj4gKyNlbmRpZgkvKiBfX0dOVUNfXyAqLwo+ICsj
ZW5kaWYKPiArCj4gICNlbmRpZgkvKiBFTEZUQ19WQ1NJRCAqLwo+ICAKPiAgLyoKPiBAQCAtNDE4
LDYgKzQyNiwxNSBAQCBleHRlcm4gY29uc3QgY2hhciAqX19wcm9nbmFtZTsKPiAgCj4gICNlbmRp
ZgkvKiBfX09wZW5CU0RfXyAqLwo+ICAKPiArCj4gKyNpZiBkZWZpbmVkKF9fVW5pa3JhZnRfXykK
PiArCj4gKyNpbmNsdWRlIDx1ay9jb25maWcuaD4KPiArCj4gKyNkZWZpbmUJRUxGVENfR0VUUFJP
R05BTUUoKQlVS19JTUFHRV9OQU1FCj4gKwo+ICsjZW5kaWYJLyogX19VbmlrcmFmdF9fICovCj4g
Kwo+ICAjZW5kaWYJLyogRUxGVENfR0VUUFJPR05BTUUgKi8KPiAgCj4gIAo+IEBAIC01MzYsNCAr
NTUzLDIyIEBAIGV4dGVybiBjb25zdCBjaGFyICpfX3Byb2duYW1lOwo+ICAKPiAgI2VuZGlmCS8q
IF9fT3BlbkJTRF9fICovCj4gIAo+ICsjaWYgZGVmaW5lZChfX1VuaWtyYWZ0X18pCj4gKwo+ICsj
aW5jbHVkZSA8dWsvZXNzZW50aWFscy5oPgo+ICsKPiArI2RlZmluZQlFTEZUQ19CWVRFX09SREVS
CQkJX19CWVRFX09SREVSCj4gKyNkZWZpbmUJRUxGVENfQllURV9PUkRFUl9MSVRUTEVfRU5ESUFO
CQlfX0xJVFRMRV9FTkRJQU4KPiArI2RlZmluZQlFTEZUQ19CWVRFX09SREVSX0JJR19FTkRJQU4J
CV9fQklHX0VORElBTgo+ICsKPiArI2RlZmluZQlFTEZUQ19IQVZFX01NQVAJCQkJMAo+ICsjZGVm
aW5lCUVMRlRDX0hBVkVfU1RSTU9ERQkJCTAKPiArCj4gKy8qIFdoZXRoZXIgd2UgbmVlZCB0byBz
dXBwbHkge2JlLGxlfTMyZGVjLiAqLwo+ICsjZGVmaW5lIEVMRlRDX05FRURfQllURU9SREVSX0VY
VEVOU0lPTlMJCTAKPiArCj4gKyNkZWZpbmUJcm91bmR1cDIJQUxJR05fVVAKPiArCj4gKyNlbmRp
ZgkvKiBfX1VuaWtyYWZ0X18gKi8KPiArCj4gICNlbmRpZgkvKiBfRUxGVENfSCAqLwo+IGRpZmYg
LS1naXQgYS9fbGliZWxmX2NvbmZpZy5oIGIvX2xpYmVsZl9jb25maWcuaAo+IGluZGV4IDFiOGYz
NWIuLjU3ZTZiMWQgMTAwNjQ0Cj4gLS0tIGEvX2xpYmVsZl9jb25maWcuaAo+ICsrKyBiL19saWJl
bGZfY29uZmlnLmgKPiBAQCAtMTgxLDMgKzE4MSw0OCBAQAo+ICAjZW5kaWYKPiAgCj4gICNlbmRp
ZiAvKiBkZWZpbmVkKF9fbGludXhfXykgfHwgZGVmaW5lZChfX0dOVV9fKSB8fCBkZWZpbmVkKF9f
R0xJQkNfXykgKi8KPiArCj4gKy8qCj4gKyAqIERlZmluaXRpb25zIGZvciBVbmlrcmFmdC4KPiAr
ICovCj4gKyNpZiBkZWZpbmVkIChfX1VuaWtyYWZ0X18pCj4gKwo+ICsjaW5jbHVkZSA8dWsvY29u
ZmlnLmg+Cj4gKwo+ICsvKgo+ICsgKiBEZWZpbmUgTElCRUxGX3tBUkNILEJZVEVPUkRFUixDTEFT
U30gYmFzZWQgb24gdGhlIG1hY2hpbmUgYXJjaGl0ZWN0dXJlLgo+ICsgKi8KPiArI2lmIChkZWZp
bmVkIENPTkZJR19BUkNIX1g4Nl8zMikKPiArI2RlZmluZQlMSUJFTEZfQ0xBU1MJCUVMRkNMQVNT
MzIKPiArI2RlZmluZQlMSUJFTEZfQVJDSAkJRU1fMzg2Cj4gKyNkZWZpbmUJTElCRUxGX0JZVEVP
UkRFUglFTEZEQVRBMkxTQgo+ICsKPiArI2VsaWYgKGRlZmluZWQgQ09ORklHX0FSQ0hfWDg2XzY0
KQo+ICsjZGVmaW5lCUxJQkVMRl9DTEFTUwkJRUxGQ0xBU1M2NAo+ICsjZGVmaW5lCUxJQkVMRl9B
UkNICQlFTV9YODZfNjQKPiArI2RlZmluZQlMSUJFTEZfQllURU9SREVSCUVMRkRBVEEyTFNCCj4g
Kwo+ICsjZWxpZiAoZGVmaW5lZCBDT05GSUdfQVJDSF9BUk1fMzIpCj4gKy8qIExpdHRsZS1FbmRp
YW4gQXJtICovCj4gKyNkZWZpbmUJTElCRUxGX0NMQVNTCQlFTEZDTEFTUzMyCj4gKyNkZWZpbmUJ
TElCRUxGX0FSQ0gJCUVNX0FSTQo+ICsjZGVmaW5lCUxJQkVMRl9CWVRFT1JERVIJRUxGREFUQTJM
U0IKPiArCj4gKyNlbGlmIChkZWZpbmVkIENPTkZJR19BUkNIX0FSTV82NCkKPiArI2RlZmluZQlM
SUJFTEZfQ0xBU1MJCUVMRkNMQVNTNjQKPiArI2RlZmluZQlMSUJFTEZfQVJDSAkJRU1fQUFSQ0g2
NAo+ICsjZGVmaW5lCUxJQkVMRl9CWVRFT1JERVIJRUxGREFUQTJMU0IKPiArCj4gKyNlbHNlCj4g
KyNlcnJvciAgTWlzc2luZyBlbGYtZm9ybWF0IGRlZmluaXRpb24gZm9yIHRhcmdldCBhcmNoaXRl
Y3R1cmUKPiArI2VuZGlmCj4gKwo+ICsjaWYJTElCRUxGX0NMQVNTID09IEVMRkNMQVNTMzIKPiAr
I2RlZmluZQlFbGZfTm90ZQkJRWxmMzJfTmhkcgo+ICsjZWxpZiAgIExJQkVMRl9DTEFTUyA9PSBF
TEZDTEFTUzY0Cj4gKyNkZWZpbmUJRWxmX05vdGUJCUVsZjY0X05oZHIKPiArI2Vsc2UKPiArI2Vy
cm9yICBMSUJFTEZfQ0xBU1MgbmVlZHMgdG8gYmUgb25lIG9mIEVMRkNMQVNTMzIgb3IgRUxGQ0xB
U1M2NAo+ICsjZW5kaWYKPiArCj4gKyNlbmRpZiAvKiBkZWZpbmVkKF9fVW5pa3JhZnRfXykgKi8K
Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1k
ZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBz
Oi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Wed Apr 01 02:58:55 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 01 Apr 2020 02:58: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 1jJTah-00053c-A9; Wed, 01 Apr 2020 02:58:55 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=6nih=5R=gmail.com=razvand@srs-us1.protection.inumbo.net>)
 id 1jJTaf-00053V-RB
 for minios-devel@lists.xen.org; Wed, 01 Apr 2020 02:58:53 +0000
X-Inumbo-ID: b7d5dc94-73c4-11ea-b4f4-bc764e2007e4
Received: from mail-wr1-x441.google.com (unknown [2a00:1450:4864:20::441])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id b7d5dc94-73c4-11ea-b4f4-bc764e2007e4;
 Wed, 01 Apr 2020 02:58:52 +0000 (UTC)
Received: by mail-wr1-x441.google.com with SMTP id j17so28683774wru.13
 for <minios-devel@lists.xen.org>; Tue, 31 Mar 2020 19:58:52 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=sender:from:to:cc:subject:references:date:in-reply-to:message-id
 :user-agent:mime-version;
 bh=gZEcx26gvBKMHwCkEK/0Foq6i2gJbqsto+6rYobZZVU=;
 b=b0INFzokJefAVXdu4FXxsU+qgbHS97yS4HevoGBhvWWAHJfO1MXjSbmKtVuGTTe5mc
 To1kuR1GYpr5Bwa47mXzn1DIZmx9IK/6w4DCS+x6O1fZhDTUl0+f6NFb3llN4pjnqJx3
 iB34N678kSBRZ0rmuPffPWLYw4JrMeIsqv3phZlGBJLBZTFV/fOzGsu0cOoV9P1ggVQT
 9bigxgQ0RygIkZo4Kur0yEceVMuoLcyhuNhNs7Pn8vyLgdRCqWH1WXNh/OuxB8bAhJDJ
 19gdYDrht5ivj8zKwCKnBiHvF1WkDGBu1roNUzeVUEXp4EWzUHWe053cH6XSq8tRhvEw
 zdIA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:sender:from:to:cc:subject:references:date
 :in-reply-to:message-id:user-agent:mime-version;
 bh=gZEcx26gvBKMHwCkEK/0Foq6i2gJbqsto+6rYobZZVU=;
 b=KhunJQ7aYNnfg3plmyYuUXRe8B6MMT+5nrUS30wNl3mbhrJKlnU4C3kpERLghWWjQZ
 u0dhslci42rTJArYGfqMjVGKYbLo2F4fxB5tBWnjlwWZhp62D0PzeJtSQMxDvEXYoBnN
 Fi16MYWEDHV5FLEqlYnlARiV+XiO1PO5Z5/16+GVFphBRav7Cw2c42ccs2CGEg9pzIN4
 c/HQR+a8wSOePjnJlp1ZXwrrAeYBw0cjgQSO9RIjbjQvrUtxNvqeZ0zv4K9BpWr4Q5uy
 5cKbk0kQyoVwnNixtQVp5XHw60OhonVBGG1coTCq7RxhsuGNub+zEyccgdQre/Owc18H
 zsRQ==
X-Gm-Message-State: ANhLgQ0HXUKEez2d0Yy9YviU0lXlnPa/4+W4xq2fImy6in1r+vmyynz0
 podyyBHNPGYriogn4Q7nBso=
X-Google-Smtp-Source: ADFU+vvVZfbuzU4XWupd3jG+SH2+tSPZDdnc2Qbs6JGA6xa3ig5/zPkFiN1FVLpI7gtN+DTWZIWvvA==
X-Received: by 2002:a5d:460f:: with SMTP id t15mr23627912wrq.413.1585709931910; 
 Tue, 31 Mar 2020 19:58:51 -0700 (PDT)
Received: from localhost ([141.85.233.147])
 by smtp.gmail.com with ESMTPSA id t10sm927397wrx.38.2020.03.31.19.58.51
 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256);
 Tue, 31 Mar 2020 19:58:51 -0700 (PDT)
From: Razvan Deaconescu <razvan.deaconescu@cs.pub.ro>
To: Simon Kuenzer <simon.kuenzer@neclab.eu>
References: <20200325174136.18862-1-simon.kuenzer@neclab.eu>
 <20200325174136.18862-7-simon.kuenzer@neclab.eu>
Date: Wed, 01 Apr 2020 05:58:50 +0300
In-Reply-To: <20200325174136.18862-7-simon.kuenzer@neclab.eu> (Simon Kuenzer's
 message of "Wed, 25 Mar 2020 18:41:35 +0100")
Message-ID: <86imijud1x.fsf@drone.cs.pub.ro>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.2 (gnu/linux)
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT/LIBELF PATCH 6/7] Provide
 `exportsyms.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: 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>

UmV2aWV3ZWQtYnk6IFJhenZhbiBEZWFjb25lc2N1IDxyYXp2YW4uZGVhY29uZXNjdUBjcy5wdWIu
cm8+CgpTaW1vbiBLdWVuemVyIDxzaW1vbi5rdWVuemVyQG5lY2xhYi5ldT4gd3JpdGVzOgo+IENv
bnZlcnRzIGBWZXJzaW9uLm1hcGAgdG8gYGV4cG9ydHN5bXMudWtgIHNvIHRoYXQgVW5pa3JhZnQn
cyBidWlsZAo+IHN5c3RlbSBjYW4gdXNlIGl0IHRvIG1hc2sgbGlicmFyeSBzeW1ib2xzLgo+Cj4g
U2lnbmVkLW9mZi1ieTogU2ltb24gS3VlbnplciA8c2ltb24ua3VlbnplckBuZWNsYWIuZXU+Cj4g
LS0tCj4gIFZlcnNpb24ubWFwICAgfCA5NiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KPiAgZXhwb3J0c3ltcy51ayB8IDg5ICsrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gIDIgZmlsZXMgY2hhbmdlZCwgODkg
aW5zZXJ0aW9ucygrKSwgOTYgZGVsZXRpb25zKC0pCj4gIGRlbGV0ZSBtb2RlIDEwMDY0NCBWZXJz
aW9uLm1hcAo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZXhwb3J0c3ltcy51awo+Cj4gZGlmZiAtLWdp
dCBhL1ZlcnNpb24ubWFwIGIvVmVyc2lvbi5tYXAKPiBkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
PiBpbmRleCBlNzFhNTkxLi4wMDAwMDAwCj4gLS0tIGEvVmVyc2lvbi5tYXAKPiArKysgL2Rldi9u
dWxsCj4gQEAgLTEsOTYgKzAsMCBAQAo+IC0vKiAkSWQ6IFZlcnNpb24ubWFwIDI1NzQgMjAxMi0w
OS0xMSAxNToxMTo1OVogamtvc2h5ICQgKi8KPiAtCj4gLVIxLjAgewo+IC1nbG9iYWw6Cj4gLQll
bGYzMl9jaGVja3N1bTsKPiAtCWVsZjMyX2ZzaXplOwo+IC0JZWxmMzJfZ2V0ZWhkcjsKPiAtCWVs
ZjMyX2dldHBoZHI7Cj4gLQllbGYzMl9nZXRzaGRyOwo+IC0JZWxmMzJfbmV3ZWhkcjsKPiAtCWVs
ZjMyX25ld3BoZHI7Cj4gLQllbGYzMl94bGF0ZXRvZjsKPiAtCWVsZjMyX3hsYXRldG9tOwo+IC0J
ZWxmNjRfY2hlY2tzdW07Cj4gLQllbGY2NF9mc2l6ZTsKPiAtCWVsZjY0X2dldGVoZHI7Cj4gLQll
bGY2NF9nZXRwaGRyOwo+IC0JZWxmNjRfZ2V0c2hkcjsKPiAtCWVsZjY0X25ld2VoZHI7Cj4gLQll
bGY2NF9uZXdwaGRyOwo+IC0JZWxmNjRfeGxhdGV0b2Y7Cj4gLQllbGY2NF94bGF0ZXRvbTsKPiAt
CWVsZl9iZWdpbjsKPiAtCWVsZl9jbnRsOwo+IC0JZWxmX2VuZDsKPiAtCWVsZl9lcnJtc2c7Cj4g
LQllbGZfZXJybm87Cj4gLQllbGZfZmlsbDsKPiAtCWVsZl9mbGFnYXJoZHI7Cj4gLQllbGZfZmxh
Z2RhdGE7Cj4gLQllbGZfZmxhZ2VoZHI7Cj4gLQllbGZfZmxhZ2VsZjsKPiAtCWVsZl9mbGFncGhk
cjsKPiAtCWVsZl9mbGFnc2NuOwo+IC0JZWxmX2ZsYWdzaGRyOwo+IC0JZWxmX2dldGFyaGRyOwo+
IC0JZWxmX2dldGFyc3ltOwo+IC0JZWxmX2dldGJhc2U7Cj4gLQllbGZfZ2V0ZGF0YTsKPiAtCWVs
Zl9nZXRpZGVudDsKPiAtCWVsZl9nZXRwaGRybnVtOwo+IC0JZWxmX2dldHBobnVtOwo+IC0JZWxm
X2dldHNjbjsKPiAtCWVsZl9nZXRzaGRybnVtOwo+IC0JZWxmX2dldHNoZHJzdHJuZHg7Cj4gLQll
bGZfZ2V0c2hudW07Cj4gLQllbGZfZ2V0c2hzdHJuZHg7Cj4gLQllbGZfaGFzaDsKPiAtCWVsZl9r
aW5kOwo+IC0JZWxmX21lbW9yeTsKPiAtCWVsZl9uZHhzY247Cj4gLQllbGZfbmV3ZGF0YTsKPiAt
CWVsZl9uZXdzY247Cj4gLQllbGZfbmV4dDsKPiAtCWVsZl9uZXh0c2NuOwo+IC0JZWxmX29wZW47
Cj4gLQllbGZfb3Blbm1lbW9yeTsKPiAtCWVsZl9yYW5kOwo+IC0JZWxmX3Jhd2RhdGE7Cj4gLQll
bGZfcmF3ZmlsZTsKPiAtCWVsZl9zZXRzaHN0cm5keDsKPiAtCWVsZl9zdHJwdHI7Cj4gLQllbGZf
dXBkYXRlOwo+IC0JZWxmX3ZlcnNpb247Cj4gLQlnZWxmX2NoZWNrc3VtOwo+IC0JZ2VsZl9mc2l6
ZTsKPiAtCWdlbGZfZ2V0Y2FwOwo+IC0JZ2VsZl9nZXRjbGFzczsKPiAtCWdlbGZfZ2V0ZHluOwo+
IC0JZ2VsZl9nZXRlaGRyOwo+IC0JZ2VsZl9nZXRtb3ZlOwo+IC0JZ2VsZl9nZXRwaGRyOwo+IC0J
Z2VsZl9nZXRyZWw7Cj4gLQlnZWxmX2dldHJlbGE7Cj4gLQlnZWxmX2dldHNoZHI7Cj4gLQlnZWxm
X2dldHN5bTsKPiAtCWdlbGZfZ2V0c3ltaW5mbzsKPiAtCWdlbGZfZ2V0c3ltc2huZHg7Cj4gLQln
ZWxmX25ld2VoZHI7Cj4gLQlnZWxmX25ld3BoZHI7Cj4gLQlnZWxmX3VwZGF0ZV9jYXA7Cj4gLQln
ZWxmX3VwZGF0ZV9keW47Cj4gLQlnZWxmX3VwZGF0ZV9laGRyOwo+IC0JZ2VsZl91cGRhdGVfbW92
ZTsKPiAtCWdlbGZfdXBkYXRlX3BoZHI7Cj4gLQlnZWxmX3VwZGF0ZV9yZWw7Cj4gLQlnZWxmX3Vw
ZGF0ZV9yZWxhOwo+IC0JZ2VsZl91cGRhdGVfc2hkcjsKPiAtCWdlbGZfdXBkYXRlX3N5bTsKPiAt
CWdlbGZfdXBkYXRlX3N5bWluZm87Cj4gLQlnZWxmX3VwZGF0ZV9zeW1zaG5keDsKPiAtCWdlbGZf
eGxhdGV0b2Y7Cj4gLQlnZWxmX3hsYXRldG9tOwo+IC1sb2NhbDoKPiAtCSo7Cj4gLX07Cj4gZGlm
ZiAtLWdpdCBhL2V4cG9ydHN5bXMudWsgYi9leHBvcnRzeW1zLnVrCj4gbmV3IGZpbGUgbW9kZSAx
MDA2NDQKPiBpbmRleCAwMDAwMDAwLi4xMjQzMjE2Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2V4
cG9ydHN5bXMudWsKPiBAQCAtMCwwICsxLDg5IEBACj4gK2VsZjMyX2NoZWNrc3VtCj4gK2VsZjMy
X2ZzaXplCj4gK2VsZjMyX2dldGVoZHIKPiArZWxmMzJfZ2V0cGhkcgo+ICtlbGYzMl9nZXRzaGRy
Cj4gK2VsZjMyX25ld2VoZHIKPiArZWxmMzJfbmV3cGhkcgo+ICtlbGYzMl94bGF0ZXRvZgo+ICtl
bGYzMl94bGF0ZXRvbQo+ICtlbGY2NF9jaGVja3N1bQo+ICtlbGY2NF9mc2l6ZQo+ICtlbGY2NF9n
ZXRlaGRyCj4gK2VsZjY0X2dldHBoZHIKPiArZWxmNjRfZ2V0c2hkcgo+ICtlbGY2NF9uZXdlaGRy
Cj4gK2VsZjY0X25ld3BoZHIKPiArZWxmNjRfeGxhdGV0b2YKPiArZWxmNjRfeGxhdGV0b20KPiAr
ZWxmX2JlZ2luCj4gK2VsZl9jbnRsCj4gK2VsZl9lbmQKPiArZWxmX2Vycm1zZwo+ICtlbGZfZXJy
bm8KPiArZWxmX2ZpbGwKPiArZWxmX2ZsYWdhcmhkcgo+ICtlbGZfZmxhZ2RhdGEKPiArZWxmX2Zs
YWdlaGRyCj4gK2VsZl9mbGFnZWxmCj4gK2VsZl9mbGFncGhkcgo+ICtlbGZfZmxhZ3Njbgo+ICtl
bGZfZmxhZ3NoZHIKPiArZWxmX2dldGFyaGRyCj4gK2VsZl9nZXRhcnN5bQo+ICtlbGZfZ2V0YmFz
ZQo+ICtlbGZfZ2V0ZGF0YQo+ICtlbGZfZ2V0aWRlbnQKPiArZWxmX2dldHBoZHJudW0KPiArZWxm
X2dldHBobnVtCj4gK2VsZl9nZXRzY24KPiArZWxmX2dldHNoZHJudW0KPiArZWxmX2dldHNoZHJz
dHJuZHgKPiArZWxmX2dldHNobnVtCj4gK2VsZl9nZXRzaHN0cm5keAo+ICtlbGZfaGFzaAo+ICtl
bGZfa2luZAo+ICtlbGZfbWVtb3J5Cj4gK2VsZl9uZHhzY24KPiArZWxmX25ld2RhdGEKPiArZWxm
X25ld3Njbgo+ICtlbGZfbmV4dAo+ICtlbGZfbmV4dHNjbgo+ICtlbGZfb3Blbgo+ICtlbGZfb3Bl
bm1lbW9yeQo+ICtlbGZfcmFuZAo+ICtlbGZfcmF3ZGF0YQo+ICtlbGZfcmF3ZmlsZQo+ICtlbGZf
c2V0c2hzdHJuZHgKPiArZWxmX3N0cnB0cgo+ICtlbGZfdXBkYXRlCj4gK2VsZl92ZXJzaW9uCj4g
K2dlbGZfY2hlY2tzdW0KPiArZ2VsZl9mc2l6ZQo+ICtnZWxmX2dldGNhcAo+ICtnZWxmX2dldGNs
YXNzCj4gK2dlbGZfZ2V0ZHluCj4gK2dlbGZfZ2V0ZWhkcgo+ICtnZWxmX2dldG1vdmUKPiArZ2Vs
Zl9nZXRwaGRyCj4gK2dlbGZfZ2V0cmVsCj4gK2dlbGZfZ2V0cmVsYQo+ICtnZWxmX2dldHNoZHIK
PiArZ2VsZl9nZXRzeW0KPiArZ2VsZl9nZXRzeW1pbmZvCj4gK2dlbGZfZ2V0c3ltc2huZHgKPiAr
Z2VsZl9uZXdlaGRyCj4gK2dlbGZfbmV3cGhkcgo+ICtnZWxmX3VwZGF0ZV9jYXAKPiArZ2VsZl91
cGRhdGVfZHluCj4gK2dlbGZfdXBkYXRlX2VoZHIKPiArZ2VsZl91cGRhdGVfbW92ZQo+ICtnZWxm
X3VwZGF0ZV9waGRyCj4gK2dlbGZfdXBkYXRlX3JlbAo+ICtnZWxmX3VwZGF0ZV9yZWxhCj4gK2dl
bGZfdXBkYXRlX3NoZHIKPiArZ2VsZl91cGRhdGVfc3ltCj4gK2dlbGZfdXBkYXRlX3N5bWluZm8K
PiArZ2VsZl91cGRhdGVfc3ltc2huZHgKPiArZ2VsZl94bGF0ZXRvZgo+ICtnZWxmX3hsYXRldG9t
CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3Mt
ZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRw
czovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Wed Apr 01 02:59:28 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 01 Apr 2020 02:59: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 1jJTbE-00055M-D4; Wed, 01 Apr 2020 02:59:28 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=6nih=5R=gmail.com=razvand@srs-us1.protection.inumbo.net>)
 id 1jJTbC-00055H-Sx
 for minios-devel@lists.xen.org; Wed, 01 Apr 2020 02:59:26 +0000
X-Inumbo-ID: cb6a1752-73c4-11ea-b4f4-bc764e2007e4
Received: from mail-wr1-x444.google.com (unknown [2a00:1450:4864:20::444])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id cb6a1752-73c4-11ea-b4f4-bc764e2007e4;
 Wed, 01 Apr 2020 02:59:25 +0000 (UTC)
Received: by mail-wr1-x444.google.com with SMTP id h15so28732776wrx.9
 for <minios-devel@lists.xen.org>; Tue, 31 Mar 2020 19:59:25 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=sender:from:to:cc:subject:references:date:in-reply-to:message-id
 :user-agent:mime-version;
 bh=FxPG0nf3uwWbbyKbfrr9EjllkblRSyw67mc5dO+I7ho=;
 b=rrTb25dtzzQgyPy9pPQb4sYSg8iG/+XD9XsU0lnZexpFRJsGew0WXhUPtDoFe7Yj4C
 EZO3JPw0964qMyh2tqh7KDzZKAxtwEZxreJ3kyV/hy8w9GxbwcmhhHF/y/LqCpFfnl84
 zv2TgFd/dpjZUKLXWVyg65m5mIGXNpf0AtTigcxi5yZ5keAsAOtCiTyE8hO5G1EkyM61
 qwLh78iXjBuJNuACqNVXdxt9nZC4R29cHhfsSztUy3yjzf7VnSiHFjJmWKkNb6anZtgz
 Mdm/eWA9PHMvUVIwqa+RC1pLPb7lbNIxL0b54dho3GJ/c4IEb7Jh386fbmgdHXMJyBvV
 HtOQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:sender:from:to:cc:subject:references:date
 :in-reply-to:message-id:user-agent:mime-version;
 bh=FxPG0nf3uwWbbyKbfrr9EjllkblRSyw67mc5dO+I7ho=;
 b=SHy8kQhEaNrfrvyyDG9ED3JKcgH6pGvQhF0QDc4UycV7glz/ZICpwQZcLT0RrU/x4W
 j9Rl89Ppmrp/GP+mdm4m40RDbCYm0G/nO8ubAnR2l4+QX1VxUYAHf9aLTO1yMOKQv/80
 iTdH81AOgjHn6rP35LyrxxyPnFb0OuimiJd9542bCzGnpk3/KYwpl5Uwnr2Aw+6LZ6eX
 rW45G4tH8r16OV7WccZqeFzIlUWVst4M3TDj5PLGF3AWhWe7W7vjxektAraC5uqp1LZ4
 pInvrxiVnSi7zZuxHKLrx1g8Pntxk2EjuNn3HRETaKkFyj6mUasSvOL+0E6xS3q5JPq5
 IULQ==
X-Gm-Message-State: AGi0PuaZ0UXVGf5sXOT4xRVdcHiX0/Ea2OI9z+7p48NKGftU7j+m4Jsl
 dDj3szTiNCUVnwt8vW0AcRI=
X-Google-Smtp-Source: APiQypIkLgtB+dtUocyVKOwUg6Pdj57j73DQtKLFG7kH6NhChfeqjHN9kVyfKyPwiosGEtcuhfyO6g==
X-Received: by 2002:a5d:61c2:: with SMTP id q2mr1848287wrv.152.1585709964812; 
 Tue, 31 Mar 2020 19:59:24 -0700 (PDT)
Received: from localhost ([141.85.233.147])
 by smtp.gmail.com with ESMTPSA id u22sm743151wmu.43.2020.03.31.19.59.24
 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256);
 Tue, 31 Mar 2020 19:59:24 -0700 (PDT)
From: Razvan Deaconescu <razvan.deaconescu@cs.pub.ro>
To: Simon Kuenzer <simon.kuenzer@neclab.eu>
References: <20200325174136.18862-1-simon.kuenzer@neclab.eu>
 <20200325174136.18862-8-simon.kuenzer@neclab.eu>
Date: Wed, 01 Apr 2020 05:59:23 +0300
In-Reply-To: <20200325174136.18862-8-simon.kuenzer@neclab.eu> (Simon Kuenzer's
 message of "Wed, 25 Mar 2020 18:41:36 +0100")
Message-ID: <86eet7ud10.fsf@drone.cs.pub.ro>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.2 (gnu/linux)
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT/LIBELF PATCH 7/7] Uncomment source
 files that depend on libvfscore
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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
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>

UmV2aWV3ZWQtYnk6IFJhenZhbiBEZWFjb25lc2N1IDxyYXp2YW4uZGVhY29uZXNjdUBjcy5wdWIu
cm8+CgpTaW1vbiBLdWVuemVyIDxzaW1vbi5rdWVuemVyQG5lY2xhYi5ldT4gd3JpdGVzOgo+IFRo
aXMgaXMgYSB0ZW1wb3Jhcnkgc29sdXRpb246IEJlY2F1c2Ugb2YgY3VycmVudCBpbmNvbXBhdGli
aWxpdGllcywKPiB1bmNvbW1lbnQgc291cmNlcyB0aGF0IGRlcGVuZCBvbiBsaWJ2ZnNjb3JlLiBB
cyBzb29uIGFzIHdlIGhhdmUgc29sdmVkCj4gdGhlIGluY29tcGF0aWJpbGl0aWVzLCB3ZSBjYW4g
YnJpbmcgdGhvc2Ugc291cmNlIGZpbGVzIGJhY2sgaW4uCj4KPiBTaWduZWQtb2ZmLWJ5OiBTaW1v
biBLdWVuemVyIDxzaW1vbi5rdWVuemVyQG5lY2xhYi5ldT4KPiAtLS0KPiAgTWFrZWZpbGUudWsg
fCA4ICsrKystLS0tCj4gIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRp
b25zKC0pCj4KPiBkaWZmIC0tZ2l0IGEvTWFrZWZpbGUudWsgYi9NYWtlZmlsZS51awo+IGluZGV4
IDEzZWE0NmMuLmQ3NjY5MDMgMTAwNjQ0Cj4gLS0tIGEvTWFrZWZpbGUudWsKPiArKysgYi9NYWtl
ZmlsZS51awo+IEBAIC01LDcgKzUsNyBAQCBDWFhJTkNMVURFUy0kKENPTkZJR19MSUJFTEYpCSs9
IC1JJChMSUJFTEZfQkFTRSkvaW5jbHVkZQo+ICBMSUJFTEZfQ0lOQ0xVREVTCQkrPSAtSSQoTElC
RUxGX0JBU0UpCj4gIAo+ICBMSUJFTEZfU1JDUy15ICs9ICQoTElCRUxGX0JBU0UpL2VsZi5jCj4g
LUxJQkVMRl9TUkNTLSQoQ09ORklHX0xJQlZGU0NPUkUpICs9ICQoTElCRUxGX0JBU0UpL2VsZl9i
ZWdpbi5jCj4gKyNMSUJFTEZfU1JDUy0kKENPTkZJR19MSUJWRlNDT1JFKSArPSAkKExJQkVMRl9C
QVNFKS9lbGZfYmVnaW4uYwo+ICBMSUJFTEZfU1JDUy15ICs9ICQoTElCRUxGX0JBU0UpL2VsZl9j
bnRsLmMKPiAgTElCRUxGX1NSQ1MteSArPSAkKExJQkVMRl9CQVNFKS9lbGZfZW5kLmMKPiAgTElC
RUxGX1NSQ1MteSArPSAkKExJQkVMRl9CQVNFKS9lbGZfZXJybXNnLmMKPiBAQCAtMjEsNyArMjEs
NyBAQCBMSUJFTEZfU1JDUy15ICs9ICQoTElCRUxGX0JBU0UpL2VsZl9oYXNoLmMKPiAgTElCRUxG
X1NSQ1MteSArPSAkKExJQkVMRl9CQVNFKS9lbGZfa2luZC5jCj4gIExJQkVMRl9TUkNTLXkgKz0g
JChMSUJFTEZfQkFTRSkvZWxmX21lbW9yeS5jCj4gIExJQkVMRl9TUkNTLXkgKz0gJChMSUJFTEZf
QkFTRSkvZWxmX25leHQuYwo+IC1MSUJFTEZfU1JDUy0kKENPTkZJR19MSUJWRlNDT1JFKSArPSAk
KExJQkVMRl9CQVNFKS9lbGZfb3Blbi5jCj4gKyNMSUJFTEZfU1JDUy0kKENPTkZJR19MSUJWRlND
T1JFKSArPSAkKExJQkVMRl9CQVNFKS9lbGZfb3Blbi5jCj4gIExJQkVMRl9TUkNTLXkgKz0gJChM
SUJFTEZfQkFTRSkvZWxmX3JhbmQuYwo+ICBMSUJFTEZfU1JDUy15ICs9ICQoTElCRUxGX0JBU0Up
L2VsZl9yYXdmaWxlLmMKPiAgTElCRUxGX1NSQ1MteSArPSAkKExJQkVMRl9CQVNFKS9lbGZfcGhu
dW0uYwo+IEBAIC0yOSw3ICsyOSw3IEBAIExJQkVMRl9TUkNTLXkgKz0gJChMSUJFTEZfQkFTRSkv
ZWxmX3NobnVtLmMKPiAgTElCRUxGX1NSQ1MteSArPSAkKExJQkVMRl9CQVNFKS9lbGZfc2hzdHJu
ZHguYwo+ICBMSUJFTEZfU1JDUy15ICs9ICQoTElCRUxGX0JBU0UpL2VsZl9zY24uYwo+ICBMSUJF
TEZfU1JDUy15ICs9ICQoTElCRUxGX0JBU0UpL2VsZl9zdHJwdHIuYwo+IC1MSUJFTEZfU1JDUy0k
KENPTkZJR19MSUJWRlNDT1JFKSArPSAkKExJQkVMRl9CQVNFKS9lbGZfdXBkYXRlLmMKPiArI0xJ
QkVMRl9TUkNTLSQoQ09ORklHX0xJQlZGU0NPUkUpICs9ICQoTElCRUxGX0JBU0UpL2VsZl91cGRh
dGUuYwo+ICBMSUJFTEZfU1JDUy15ICs9ICQoTElCRUxGX0JBU0UpL2VsZl92ZXJzaW9uLmMKPiAg
TElCRUxGX1NSQ1MteSArPSAkKExJQkVMRl9CQVNFKS9nZWxmX2NhcC5jCj4gIExJQkVMRl9TUkNT
LXkgKz0gJChMSUJFTEZfQkFTRSkvZ2VsZl9jaGVja3N1bS5jCj4gQEAgLTU1LDcgKzU1LDcgQEAg
TElCRUxGX1NSQ1MteSArPSAkKExJQkVMRl9CQVNFKS9saWJlbGZfZGF0YS5jCj4gIExJQkVMRl9T
UkNTLXkgKz0gJChMSUJFTEZfQkFTRSkvbGliZWxmX2VoZHIuYwo+ICBMSUJFTEZfU1JDUy15ICs9
ICQoTElCRUxGX0JBU0UpL2xpYmVsZl9leHRlbmRlZC5jCj4gIExJQkVMRl9TUkNTLXkgKz0gJChM
SUJFTEZfQkFTRSkvbGliZWxmX21lbW9yeS5jCj4gLUxJQkVMRl9TUkNTLSQoQ09ORklHX0xJQlZG
U0NPUkUpICs9ICQoTElCRUxGX0JBU0UpL2xpYmVsZl9vcGVuLmMKPiArI0xJQkVMRl9TUkNTLSQo
Q09ORklHX0xJQlZGU0NPUkUpICs9ICQoTElCRUxGX0JBU0UpL2xpYmVsZl9vcGVuLmMKPiAgTElC
RUxGX1NSQ1MteSArPSAkKExJQkVMRl9CQVNFKS9saWJlbGZfcGhkci5jCj4gIExJQkVMRl9TUkNT
LXkgKz0gJChMSUJFTEZfQkFTRSkvbGliZWxmX3NoZHIuYwo+ICBMSUJFTEZfU1JDUy15ICs9ICQo
TElCRUxGX0JBU0UpL2xpYmVsZl94bGF0ZS5jCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZl
bEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxt
YW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Wed Apr 01 02:59:36 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 01 Apr 2020 02:59: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 1jJTbM-00056G-G5; Wed, 01 Apr 2020 02:59:36 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=6nih=5R=gmail.com=razvand@srs-us1.protection.inumbo.net>)
 id 1jJTbL-000567-3A
 for minios-devel@lists.xen.org; Wed, 01 Apr 2020 02:59:35 +0000
X-Inumbo-ID: d0073a06-73c4-11ea-83d8-bc764e2007e4
Received: from mail-wr1-x443.google.com (unknown [2a00:1450:4864:20::443])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id d0073a06-73c4-11ea-83d8-bc764e2007e4;
 Wed, 01 Apr 2020 02:59:33 +0000 (UTC)
Received: by mail-wr1-x443.google.com with SMTP id h9so28743773wrc.8
 for <minios-devel@lists.xen.org>; Tue, 31 Mar 2020 19:59:33 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=sender:from:to:cc:subject:references:date:in-reply-to:message-id
 :user-agent:mime-version;
 bh=k8jp4fH1j86iFCoIRX8RVjOG90VItJumDkF0v5jp/LU=;
 b=vcEoxWsb8fbvXQbhk6mooFr84+KkSBHATexmEgHxQvpQ6kH8ODpJkkE3uuwid28uE6
 WQ5a9q2g+0ur9iEb1XRSlyJLjOxN0AFv36gomb6P+owWdyDcojU9xuN1f1X4aXb10bi4
 e5QHci4mz6UV7XfQFv+pnqhU/EbtH1u3IuZtpz2d25uxes5LmRH/scN1+KdjH26mZSJD
 qPQCTERbmmvRvoS5P/p0wL6S5+UYU5wiTDPy1Gwg+7/BN2+ORTFZzxYPJhZ4d11Xu7Yw
 pN4/Too/2vNNiEZhYvVeoz3wQTkE4tq+Fuzt8Ps/WBcBTyN8p81eXWKGOOI+RJw3h2t9
 Q/ag==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:sender:from:to:cc:subject:references:date
 :in-reply-to:message-id:user-agent:mime-version;
 bh=k8jp4fH1j86iFCoIRX8RVjOG90VItJumDkF0v5jp/LU=;
 b=L2TuBGrzlhpy8FBGkPiHAxUnFJ5Jwz7eLm3kjQQp1peXc8eaNQbzgrm9X4E3yELY5t
 IXt2Un/Bsd7CHnprAuLHJ/kKbeOM1flPjf0ybHDsxkrERdAHDMkXSGVMctV5y5XHZxJW
 xBZ/fp3k6fFbM/ezDx+DODXCxET+p9Dfd0uPw9hNnVUpadSwXX2O0I0KelwAcj82HBNK
 4i7vPQtHtMMXuDFwJ9F5p6JPioCLvPIwbeSPY9sP1ZPm9BGpGRuWdTzNpg3dT5kBMHK9
 Na8igjtKRzYn2PbzU/61PVWkfV+KWg0XWxhg8uvvi6UmT5yq/YHESYmQVaUkW4dkxKmd
 8lpw==
X-Gm-Message-State: ANhLgQ3yw8Xlnt4CbcOzCzrbVl9UsPLKMEPPEK6W2Wg36hknuNdKb80m
 EsJVVDaYO0ZfbcllJ+7Oxps=
X-Google-Smtp-Source: ADFU+vvnn6TC9wHsZZFFS14MkYkKP0Mg2NwBo0jpQifSWECIsT9LedAybhICnvwhg/RBxDnZS4+0dg==
X-Received: by 2002:adf:e901:: with SMTP id f1mr23095407wrm.75.1585709972582; 
 Tue, 31 Mar 2020 19:59:32 -0700 (PDT)
Received: from localhost ([141.85.233.147])
 by smtp.gmail.com with ESMTPSA id g128sm764474wmf.27.2020.03.31.19.59.32
 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256);
 Tue, 31 Mar 2020 19:59:32 -0700 (PDT)
From: Razvan Deaconescu <razvan.deaconescu@cs.pub.ro>
To: Simon Kuenzer <simon.kuenzer@neclab.eu>
References: <20200325174136.18862-1-simon.kuenzer@neclab.eu>
 <20200325174136.18862-6-simon.kuenzer@neclab.eu>
Date: Wed, 01 Apr 2020 05:59:31 +0300
In-Reply-To: <20200325174136.18862-6-simon.kuenzer@neclab.eu> (Simon Kuenzer's
 message of "Wed, 25 Mar 2020 18:41:34 +0100")
Message-ID: <86a73vud0s.fsf@drone.cs.pub.ro>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.2 (gnu/linux)
MIME-Version: 1.0
Subject: Re: [Minios-devel] [UNIKRAFT/LIBELF PATCH 5/7] Integrate to
 Unikraft build 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: 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>

UmV2aWV3ZWQtYnk6IFJhenZhbiBEZWFjb25lc2N1IDxyYXp2YW4uZGVhY29uZXNjdUBjcy5wdWIu
cm8+CgpTaW1vbiBLdWVuemVyIDxzaW1vbi5rdWVuemVyQG5lY2xhYi5ldT4gd3JpdGVzOgo+IEFk
ZHMgbmVjZXNzYXJ5IGZpbGVzIHRvIGludGVncmF0ZSB0aGUgbGlicmFyeSB0byBVbmlrcmFmdCdz
IGJ1aWxkCj4gc3lzdGVtOiBgQ29uZmlnLnVrYCwgYE1ha2VmaWxlLnVrYAo+Cj4gU2lnbmVkLW9m
Zi1ieTogU2ltb24gS3VlbnplciA8c2ltb24ua3VlbnplckBuZWNsYWIuZXU+Cj4gLS0tCj4gIENv
bmZpZy51ayAgIHwgIDcgKysrKysrCj4gIE1ha2VmaWxlLnVrIHwgNjggKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgMiBmaWxlcyBjaGFuZ2Vk
LCA3NSBpbnNlcnRpb25zKCspCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBDb25maWcudWsKPiAgY3Jl
YXRlIG1vZGUgMTAwNjQ0IE1ha2VmaWxlLnVrCj4KPiBkaWZmIC0tZ2l0IGEvQ29uZmlnLnVrIGIv
Q29uZmlnLnVrCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi41Mjc2ZTI4
Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL0NvbmZpZy51awo+IEBAIC0wLDAgKzEsNyBAQAo+ICtj
b25maWcgTElCRUxGCj4gKwlib29sICJsaWJlbGY6IEVMRiBhY2Nlc3MgbGlicmFyeSIKPiArCWRl
ZmF1bHQgbgo+ICsJc2VsZWN0IExJQk5PTElCQyBpZiAhSEFWRV9MSUJDCj4gKwlzZWxlY3QgTElC
VUtUSU1FIGlmICFIQVZFX0xJQkMKPiArCWhlbHAKPiArCQlsaWJlbGYgZnJvbSBFTEYgVG9vbCBD
aGFpbgo+IGRpZmYgLS1naXQgYS9NYWtlZmlsZS51ayBiL01ha2VmaWxlLnVrCj4gbmV3IGZpbGUg
bW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi4xM2VhNDZjCj4gLS0tIC9kZXYvbnVsbAo+ICsr
KyBiL01ha2VmaWxlLnVrCj4gQEAgLTAsMCArMSw2OCBAQAo+ICskKGV2YWwgJChjYWxsIGFkZGxp
Yl9zLGxpYmVsZiwkKENPTkZJR19MSUJFTEYpKSkKPiArCj4gK0NJTkNMVURFUy0kKENPTkZJR19M
SUJFTEYpCSs9IC1JJChMSUJFTEZfQkFTRSkvaW5jbHVkZQo+ICtDWFhJTkNMVURFUy0kKENPTkZJ
R19MSUJFTEYpCSs9IC1JJChMSUJFTEZfQkFTRSkvaW5jbHVkZQo+ICtMSUJFTEZfQ0lOQ0xVREVT
CQkrPSAtSSQoTElCRUxGX0JBU0UpCj4gKwo+ICtMSUJFTEZfU1JDUy15ICs9ICQoTElCRUxGX0JB
U0UpL2VsZi5jCj4gK0xJQkVMRl9TUkNTLSQoQ09ORklHX0xJQlZGU0NPUkUpICs9ICQoTElCRUxG
X0JBU0UpL2VsZl9iZWdpbi5jCj4gK0xJQkVMRl9TUkNTLXkgKz0gJChMSUJFTEZfQkFTRSkvZWxm
X2NudGwuYwo+ICtMSUJFTEZfU1JDUy15ICs9ICQoTElCRUxGX0JBU0UpL2VsZl9lbmQuYwo+ICtM
SUJFTEZfU1JDUy15ICs9ICQoTElCRUxGX0JBU0UpL2VsZl9lcnJtc2cuYwo+ICtMSUJFTEZfU1JD
Uy15ICs9ICQoTElCRUxGX0JBU0UpL2VsZl9lcnJuby5jCj4gK0xJQkVMRl9TUkNTLXkgKz0gJChM
SUJFTEZfQkFTRSkvZWxmX2RhdGEuYwo+ICtMSUJFTEZfU1JDUy15ICs9ICQoTElCRUxGX0JBU0Up
L2VsZl9maWxsLmMKPiArTElCRUxGX1NSQ1MteSArPSAkKExJQkVMRl9CQVNFKS9lbGZfZmxhZy5j
Cj4gK0xJQkVMRl9TUkNTLXkgKz0gJChMSUJFTEZfQkFTRSkvZWxmX2dldGFyaGRyLmMKPiArTElC
RUxGX1NSQ1MteSArPSAkKExJQkVMRl9CQVNFKS9lbGZfZ2V0YXJzeW0uYwo+ICtMSUJFTEZfU1JD
Uy15ICs9ICQoTElCRUxGX0JBU0UpL2VsZl9nZXRiYXNlLmMKPiArTElCRUxGX1NSQ1MteSArPSAk
KExJQkVMRl9CQVNFKS9lbGZfZ2V0aWRlbnQuYwo+ICtMSUJFTEZfU1JDUy15ICs9ICQoTElCRUxG
X0JBU0UpL2VsZl9oYXNoLmMKPiArTElCRUxGX1NSQ1MteSArPSAkKExJQkVMRl9CQVNFKS9lbGZf
a2luZC5jCj4gK0xJQkVMRl9TUkNTLXkgKz0gJChMSUJFTEZfQkFTRSkvZWxmX21lbW9yeS5jCj4g
K0xJQkVMRl9TUkNTLXkgKz0gJChMSUJFTEZfQkFTRSkvZWxmX25leHQuYwo+ICtMSUJFTEZfU1JD
Uy0kKENPTkZJR19MSUJWRlNDT1JFKSArPSAkKExJQkVMRl9CQVNFKS9lbGZfb3Blbi5jCj4gK0xJ
QkVMRl9TUkNTLXkgKz0gJChMSUJFTEZfQkFTRSkvZWxmX3JhbmQuYwo+ICtMSUJFTEZfU1JDUy15
ICs9ICQoTElCRUxGX0JBU0UpL2VsZl9yYXdmaWxlLmMKPiArTElCRUxGX1NSQ1MteSArPSAkKExJ
QkVMRl9CQVNFKS9lbGZfcGhudW0uYwo+ICtMSUJFTEZfU1JDUy15ICs9ICQoTElCRUxGX0JBU0Up
L2VsZl9zaG51bS5jCj4gK0xJQkVMRl9TUkNTLXkgKz0gJChMSUJFTEZfQkFTRSkvZWxmX3Noc3Ry
bmR4LmMKPiArTElCRUxGX1NSQ1MteSArPSAkKExJQkVMRl9CQVNFKS9lbGZfc2NuLmMKPiArTElC
RUxGX1NSQ1MteSArPSAkKExJQkVMRl9CQVNFKS9lbGZfc3RycHRyLmMKPiArTElCRUxGX1NSQ1Mt
JChDT05GSUdfTElCVkZTQ09SRSkgKz0gJChMSUJFTEZfQkFTRSkvZWxmX3VwZGF0ZS5jCj4gK0xJ
QkVMRl9TUkNTLXkgKz0gJChMSUJFTEZfQkFTRSkvZWxmX3ZlcnNpb24uYwo+ICtMSUJFTEZfU1JD
Uy15ICs9ICQoTElCRUxGX0JBU0UpL2dlbGZfY2FwLmMKPiArTElCRUxGX1NSQ1MteSArPSAkKExJ
QkVMRl9CQVNFKS9nZWxmX2NoZWNrc3VtLmMKPiArTElCRUxGX1NSQ1MteSArPSAkKExJQkVMRl9C
QVNFKS9nZWxmX2R5bi5jCj4gK0xJQkVMRl9TUkNTLXkgKz0gJChMSUJFTEZfQkFTRSkvZ2VsZl9l
aGRyLmMKPiArTElCRUxGX1NSQ1MteSArPSAkKExJQkVMRl9CQVNFKS9nZWxmX2dldGNsYXNzLmMK
PiArTElCRUxGX1NSQ1MteSArPSAkKExJQkVMRl9CQVNFKS9nZWxmX2ZzaXplLmMKPiArTElCRUxG
X1NSQ1MteSArPSAkKExJQkVMRl9CQVNFKS9nZWxmX21vdmUuYwo+ICtMSUJFTEZfU1JDUy15ICs9
ICQoTElCRUxGX0JBU0UpL2dlbGZfcGhkci5jCj4gK0xJQkVMRl9TUkNTLXkgKz0gJChMSUJFTEZf
QkFTRSkvZ2VsZl9yZWwuYwo+ICtMSUJFTEZfU1JDUy15ICs9ICQoTElCRUxGX0JBU0UpL2dlbGZf
cmVsYS5jCj4gK0xJQkVMRl9TUkNTLXkgKz0gJChMSUJFTEZfQkFTRSkvZ2VsZl9zaGRyLmMKPiAr
TElCRUxGX1NSQ1MteSArPSAkKExJQkVMRl9CQVNFKS9nZWxmX3N5bS5jCj4gK0xJQkVMRl9TUkNT
LXkgKz0gJChMSUJFTEZfQkFTRSkvZ2VsZl9zeW1pbmZvLmMKPiArTElCRUxGX1NSQ1MteSArPSAk
KExJQkVMRl9CQVNFKS9nZWxmX3N5bXNobmR4LmMKPiArTElCRUxGX1NSQ1MteSArPSAkKExJQkVM
Rl9CQVNFKS9nZWxmX3hsYXRlLmMKPiArTElCRUxGX1NSQ1MteSArPSAkKExJQkVMRl9CQVNFKS9s
aWJlbGZfYWxpZ24uYwo+ICtMSUJFTEZfU1JDUy15ICs9ICQoTElCRUxGX0JBU0UpL2xpYmVsZl9h
bGxvY2F0ZS5jCj4gK0xJQkVMRl9TUkNTLXkgKz0gJChMSUJFTEZfQkFTRSkvbGliZWxmX2FyLmMK
PiArTElCRUxGX1NSQ1MteSArPSAkKExJQkVMRl9CQVNFKS9saWJlbGZfYXJfdXRpbC5jCj4gK0xJ
QkVMRl9TUkNTLXkgKz0gJChMSUJFTEZfQkFTRSkvbGliZWxmX2NoZWNrc3VtLmMKPiArTElCRUxG
X1NSQ1MteSArPSAkKExJQkVMRl9CQVNFKS9saWJlbGZfZGF0YS5jCj4gK0xJQkVMRl9TUkNTLXkg
Kz0gJChMSUJFTEZfQkFTRSkvbGliZWxmX2VoZHIuYwo+ICtMSUJFTEZfU1JDUy15ICs9ICQoTElC
RUxGX0JBU0UpL2xpYmVsZl9leHRlbmRlZC5jCj4gK0xJQkVMRl9TUkNTLXkgKz0gJChMSUJFTEZf
QkFTRSkvbGliZWxmX21lbW9yeS5jCj4gK0xJQkVMRl9TUkNTLSQoQ09ORklHX0xJQlZGU0NPUkUp
ICs9ICQoTElCRUxGX0JBU0UpL2xpYmVsZl9vcGVuLmMKPiArTElCRUxGX1NSQ1MteSArPSAkKExJ
QkVMRl9CQVNFKS9saWJlbGZfcGhkci5jCj4gK0xJQkVMRl9TUkNTLXkgKz0gJChMSUJFTEZfQkFT
RSkvbGliZWxmX3NoZHIuYwo+ICtMSUJFTEZfU1JDUy15ICs9ICQoTElCRUxGX0JBU0UpL2xpYmVs
Zl94bGF0ZS5jCj4gKwo+ICsjIE1hY3JvLXByb2Nlc3NlZCBzb3VyY2VzCj4gK0xJQkVMRl9NNEZM
QUdTICs9IC1EU1JDRElSPSQoTElCRUxGX0JBU0UpCj4gKwo+ICtMSUJFTEZfU1JDUy15ICs9ICQo
TElCRUxGX0JBU0UpL2xpYmVsZl9mc2l6ZS5tND4uYwo+ICtMSUJFTEZfU1JDUy15ICs9ICQoTElC
RUxGX0JBU0UpL2xpYmVsZl9tc2l6ZS5tND4uYwo+ICtMSUJFTEZfU1JDUy15ICs9ICQoTElCRUxG
X0JBU0UpL2xpYmVsZl9jb252ZXJ0Lm00Pi5jCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZl
bEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxt
YW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Wed Apr 01 19:39:50 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 01 Apr 2020 19:39: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 1jJjDH-0006cq-7P; Wed, 01 Apr 2020 19:39:47 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=ocPN=5R=gmail.com=felipehuici@srs-us1.protection.inumbo.net>)
 id 1jJjDG-0006ck-Nm
 for minios-devel@lists.xen.org; Wed, 01 Apr 2020 19:39:46 +0000
X-Inumbo-ID: 8a74819c-7450-11ea-b4f4-bc764e2007e4
Received: from mail-vs1-xe42.google.com (unknown [2607:f8b0:4864:20::e42])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 8a74819c-7450-11ea-b4f4-bc764e2007e4;
 Wed, 01 Apr 2020 19:39:46 +0000 (UTC)
Received: by mail-vs1-xe42.google.com with SMTP id u11so721294vsg.2
 for <minios-devel@lists.xen.org>; Wed, 01 Apr 2020 12:39:45 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=mime-version:references:in-reply-to:from:date:message-id:subject:to
 :cc; bh=f5/2JlDL22tLhNyYuev7N1rp2/y3OcBwlbppfqL/x28=;
 b=DHv19UXSL2ll6GSd1QfCOkEJdZ1skz7Gtlhx9IxwdTqxFI1n1a5y51tQh+OYQy+A3p
 FqYRpqvyliFqh/hTB4e44meWjoNKoeuvhHpaH5KVFuPiisIh8rQhw5qbQM2ujx6rORDg
 6+Mjsh92/50atXsmcjhVEFXYa7jnDYfbHFUTu23dqh4M6j8Bm0cHm4HPBiFGKKUAgEdj
 7jEPzxjQRdU3Z0YZUyXe+oZWZZUPzoEYHzR+lFOX55QZupuELd9sxUZ91UwumMSSgGPE
 E4o2HOcm9M7FQrDspIL8etfBRHdf+SJlhJSr0Z0hVychAQGwem2JY/Me/jVOr7V6eGLx
 OMwA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:mime-version:references:in-reply-to:from:date
 :message-id:subject:to:cc;
 bh=f5/2JlDL22tLhNyYuev7N1rp2/y3OcBwlbppfqL/x28=;
 b=IRxtzKT0SlLHRQOvqqoDlZqxIcNhhT94ksRY0qTY2maiX/xlyffeRm54RZ7sr+feoc
 F1uYSbPBuNkCkYe1vbnItcOegcu/cU+LbpaU5QUnvH4Tt7edPh0ChkjkP3DjlIPzL9/q
 aVNep2eHJzXLAlgB/A57T00yuEWvW1QaPUzIJDoAhCCedCuUOVSWjt92WD0bRKq20muJ
 m9IrB8H3Aog5UL3W5MDPQRQcpQi/uimz3dTSDq6sQ0q91Wv+Jbg+lQI1++c3m//fLfRj
 hh4lBLfuBjSG6BVhkXug9ntGyRJ4+DLKOvLx143pOfpt05aSE2cmIOYDdO7PloOfrtle
 sOVA==
X-Gm-Message-State: AGi0PuaCRhV7/i6JIGtC73L/ml5hk175IiglAMAyuZeywpHHlSqMdosR
 n64Ko6XR4ZtkCa5vH5LEDyxxr0PNkCSIzcKdw1emer4kMrk=
X-Google-Smtp-Source: APiQypLQ7RDVU3RvfbU9o6tjTRNA5tlYnfimX944yXBRuPSOElp2JROBmca0qMzpMBYPktGgwFMFhpdngSGgC1b1JXA=
X-Received: by 2002:a05:6102:349:: with SMTP id
 e9mr17573760vsa.232.1585769985298; 
 Wed, 01 Apr 2020 12:39:45 -0700 (PDT)
MIME-Version: 1.0
References: <20200331101024.31209-1-simon.kuenzer@neclab.eu>
In-Reply-To: <20200331101024.31209-1-simon.kuenzer@neclab.eu>
From: "felipehuici ." <felipehuici@gmail.com>
Date: Wed, 1 Apr 2020 21:39:34 +0200
Message-ID: <CAEX4t-M4gYpRe9WNmUbiAgCUhG7t51wNPrrS2V-z2kg1feu+yA@mail.gmail.com>
To: Simon Kuenzer <simon.kuenzer@neclab.eu>
Subject: Re: [Minios-devel] [UNIKRAFT PATCH] lib/nolibc: Provide abort()
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>, 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>

SGkgU2ltb24sIHRoaXMgcGF0Y2ggbG9va3MgZ29vZCwgdGhhbmtzLgoKUmV2aWV3ZWQtYnk6IEZl
bGlwZSBIdWljaSA8ZmVsaXBlLmh1aWNpQG5lY2xhYi5ldT4KCk9uIFR1ZSwgTWFyIDMxLCAyMDIw
IGF0IDEyOjEwIFBNIFNpbW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJAbmVjbGFiLmV1PiB3cm90
ZToKPgo+IFByb3ZpZGUgYHZvaWQgYWJvcnQodm9pZClgIGltcGxlbWVudGF0aW9uIHdpdGggYDxz
dGRsaWIuaD5gLgo+IFRoZSBmdW5jdGlvbiB0ZXJtaW5hdGVzIHRoZSBrZXJuZWwgZXhlY3V0aW9u
IHdpdGggY3Jhc2hlZAo+IHN0YXRlIGJ5IGNhbGxpbmcgYHVrcGxhdF9jcmFzaCgpYC4KPgo+IFNp
Z25lZC1vZmYtYnk6IFNpbW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJAbmVjbGFiLmV1Pgo+IC0t
LQo+ICBsaWIvbm9saWJjL2luY2x1ZGUvc3RkbGliLmggfCAzICsrKwo+ICBsaWIvbm9saWJjL3N0
ZGxpYi5jICAgICAgICAgfCA4ICsrKysrKysrCj4gIDIgZmlsZXMgY2hhbmdlZCwgMTEgaW5zZXJ0
aW9ucygrKQo+Cj4gZGlmZiAtLWdpdCBhL2xpYi9ub2xpYmMvaW5jbHVkZS9zdGRsaWIuaCBiL2xp
Yi9ub2xpYmMvaW5jbHVkZS9zdGRsaWIuaAo+IGluZGV4IDAyZGQ4NTAwLi5jZDY2NTFjNCAxMDA2
NDQKPiAtLS0gYS9saWIvbm9saWJjL2luY2x1ZGUvc3RkbGliLmgKPiArKysgYi9saWIvbm9saWJj
L2luY2x1ZGUvc3RkbGliLmgKPiBAQCAtMjgsNiArMjgsNyBAQAo+ICAjZGVmaW5lIF9fU1RETElC
X0hfXwo+Cj4gICNpbmNsdWRlIDx1ay9jb25maWcuaD4KPiArI2luY2x1ZGUgPHVrL2Vzc2VudGlh
bHMuaD4KPgo+ICAjaWZkZWYgX19jcGx1c3BsdXMKPiAgZXh0ZXJuICJDIiB7Cj4gQEAgLTg2LDYg
Kzg3LDggQEAgaW50IHBvc2l4X21lbWFsaWduKHZvaWQgKiptZW1wdHIsIHNpemVfdCBhbGlnbiwg
c2l6ZV90IHNpemUpOwo+ICB2b2lkICptZW1hbGlnbihzaXplX3QgYWxpZ24sIHNpemVfdCBzaXpl
KTsKPiAgI2VuZGlmIC8qIENPTkZJR19MSUJVS0FMTE9DICovCj4KPiArdm9pZCBhYm9ydCh2b2lk
KSBfX25vcmV0dXJuOwo+ICsKPiAgI2lmIENPTkZJR19MSUJQT1NJWF9QUk9DRVNTCj4gIGludCBz
eXN0ZW0oY29uc3QgY2hhciAqY29tbWFuZCk7Cj4gICNlbmRpZgo+IGRpZmYgLS1naXQgYS9saWIv
bm9saWJjL3N0ZGxpYi5jIGIvbGliL25vbGliYy9zdGRsaWIuYwo+IGluZGV4IGM4M2M2ZGU1Li41
Y2FiOWIyOCAxMDA2NDQKPiAtLS0gYS9saWIvbm9saWJjL3N0ZGxpYi5jCj4gKysrIGIvbGliL25v
bGliYy9zdGRsaWIuYwo+IEBAIC01Niw2ICs1Niw4IEBACj4gICNpbmNsdWRlIDxzdGRsaWIuaD4K
PiAgI2luY2x1ZGUgPGxpbWl0cy5oPgo+ICAjaW5jbHVkZSA8Y3R5cGUuaD4KPiArI2luY2x1ZGUg
PHVrL3ByaW50Lmg+Cj4gKyNpbmNsdWRlIDx1ay9wbGF0L2Jvb3RzdHJhcC5oPgo+Cj4gICNkZWZp
bmUgX19ERUNPTlNUKHR5cGUsIHZhcikgKCh0eXBlKSh1aW50cHRyX3QpKGNvbnN0IHZvaWQgKiko
dmFyKSkKPgo+IEBAIC00MTIsMyArNDE0LDkgQEAgaW50IGF0b2koY29uc3QgY2hhciAqcykKPgo+
ICAgICAgICAgcmV0dXJuIChpbnQpIGF0b2xsOwo+ICB9Cj4gKwo+ICt2b2lkIGFib3J0KHZvaWQp
Cj4gK3sKPiArICAgICAgIHVrX3ByX2NyaXQoIkFibm9ybWFsIHRlcm1pbmF0aW9uIVxuIik7Cj4g
KyAgICAgICB1a3BsYXRfY3Jhc2goKTsKPiArfQo+IC0tCj4gMi4yMC4xCj4KPgo+IF9fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gTWluaW9zLWRldmVsIG1h
aWxpbmcgbGlzdAo+IE1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwo+IGh0dHBzOi8v
bGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWwKCl9fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBt
YWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlz
dHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Wed Apr 01 19:45:11 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 01 Apr 2020 19:45: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 1jJjIU-0007L8-Md; Wed, 01 Apr 2020 19:45:10 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=ocPN=5R=gmail.com=felipehuici@srs-us1.protection.inumbo.net>)
 id 1jJjIT-0007L3-6u
 for minios-devel@lists.xen.org; Wed, 01 Apr 2020 19:45:09 +0000
X-Inumbo-ID: 4a9c454a-7451-11ea-9e09-bc764e2007e4
Received: from mail-vk1-xa44.google.com (unknown [2607:f8b0:4864:20::a44])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 4a9c454a-7451-11ea-9e09-bc764e2007e4;
 Wed, 01 Apr 2020 19:45:08 +0000 (UTC)
Received: by mail-vk1-xa44.google.com with SMTP id o124so235462vkc.4
 for <minios-devel@lists.xen.org>; Wed, 01 Apr 2020 12:45:08 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=mime-version:references:in-reply-to:from:date:message-id:subject:to
 :cc:content-transfer-encoding;
 bh=YvwmzQDeNADrmiVXV4EPb4UmYsocJnf9xStZd7Jg5ho=;
 b=OyxiDIpVpfK8ZYF80Z8k8efWHE9KWTHOYMRbkiXbwXfiwpwUWmNumDrCfIFppOgSx7
 OeSCnrdC6YsRy7UQzPYNz2hd3t5YDMY9mioEhcj5x4CjN+LBfa2tod+LDHZD0tpmdAS+
 4J5JoJ3pUoLrGdIzKHvdD+h7eBzA5rTR+gFEl2RtXrG+ymjq76AK669//pzUQdePpvjM
 5s7Tm/xvdlxiNeu7x3l8FueqNUdXWrfOjzroUKaelWRIxuB4868GXAxxvGt1Ya4g59t9
 MFlybbwDVKKSiQVAS/s77gXzkWEG7kbOcEeSUDogJ3piCrGMcxbF7Klh4EJ3JsjwIcwh
 3eGg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:mime-version:references:in-reply-to:from:date
 :message-id:subject:to:cc:content-transfer-encoding;
 bh=YvwmzQDeNADrmiVXV4EPb4UmYsocJnf9xStZd7Jg5ho=;
 b=ZuJ7YbQA0n9c2UIQUrWnrnAiZKL9MvLwDPO5b2S7YrsQ1T3wLpjR+SsCop0/duLNTF
 oHOkJ2LHqaYPpJXHaStsFPlXT0gdTg2DVSxwb9pYQ/gqEk2pRBnsomPjSL/hbyh8iCZI
 JdkGCxsoI0+yw1dd4zWOcapOempJDPXvRkqnfbDRDtRLcQBgw3i9SIvfqwIc37gYmnNc
 qBA131qxf9+xW5BYL1eu66qJjjoUL0qVNmXgU0RG2sx5wuYxN9dXI/bb81wJ8QUKIcqM
 wzbqpRx1uxAZNfx4yMRnwo0bzTvtfCoO3E6oyA2YLV07TGRazwYZxwzP5GtEtRDvV4gV
 VA1g==
X-Gm-Message-State: AGi0PuZ2ey/IHP37JVUc+iQM+qaJvp3NxKd4KzjboT3KPI/yWwJYBs0s
 Wr3TGk8Ag5nODz5gIUwJDYzTDR/8k/kOf5ynvMLQXk65
X-Google-Smtp-Source: APiQypKmHl+pg5Fs5FIYRKX0A5a0ZSKhrmY8uXumcdJqtn+ohlCfLQPEE+uDsYRVQ2+ffYBrjvuJ6i+Nn0tG94EaVoY=
X-Received: by 2002:a1f:ca04:: with SMTP id a4mr17820631vkg.65.1585770307679; 
 Wed, 01 Apr 2020 12:45:07 -0700 (PDT)
MIME-Version: 1.0
References: <20200331120319.16201-1-vlad_andrei.badoiu@stud.acs.upb.ro>
 <20200331120319.16201-2-vlad_andrei.badoiu@stud.acs.upb.ro>
In-Reply-To: <20200331120319.16201-2-vlad_andrei.badoiu@stud.acs.upb.ro>
From: "felipehuici ." <felipehuici@gmail.com>
Date: Wed, 1 Apr 2020 21:44:56 +0200
Message-ID: <CAEX4t-MpFyvYqTuwQyA7VTh24DDjqhN-qOTa1obrrBGB86yUQg@mail.gmail.com>
To: =?UTF-8?Q?Vlad=2DAndrei_B=C4=82DOIU?= <vlad_andrei.badoiu@stud.acs.upb.ro>
Subject: Re: [Minios-devel] [UNIKRAFT PATCH 1/2] lib/nolib: Add qsort
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>, 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>

SGkgVmxhZCwgYmVjYXVzZSBvZiBhIHJlY2VudGx5IHVwc3RyZWFtZWQgcGF0Y2gsIHRoaXMgbm8g
bG9uZ2VyCmNsZWFybHkgYXBwbHksIGNvdWxkIHlvdSBwbGVhc2UgcmViYXNlIGFuZCBzZW5kIC5h
IHYyPwoKVGhhbmtzIQoKLS0gRmVsaXBlCgpPbiBUdWUsIE1hciAzMSwgMjAyMCBhdCAyOjA0IFBN
IFZsYWQtQW5kcmVpIELEgkRPSVUKPHZsYWRfYW5kcmVpLmJhZG9pdUBzdHVkLmFjcy51cGIucm8+
IHdyb3RlOgo+Cj4gVGhpcyBxc29ydCBpbXBsZW1lbnRhdGlvbiBpcyBhbiBhZGFwdGVkIHZlcnNp
b24gb2YgYW5kcm9pZCBiaW9uaWMncwo+IHFzb3J0LiBJdCBpcyB0aGUgUXNvcnQgcm91dGluZSBm
cm9tIEJlbnRsZXkgJiBNY0lscm95J3MgIkVuZ2luZWVyaW5nCj4gYSBTb3J0IEZ1bmN0aW9uIi4K
Pgo+IFNpZ25lZC1vZmYtYnk6IFZsYWQtQW5kcmVpIELEgkRPSVUgPHZsYWRfYW5kcmVpLmJhZG9p
dUBzdHVkLmFjcy51cGIucm8+Cj4gLS0tCj4gIGxpYi9ub2xpYmMvTWFrZWZpbGUudWsgICAgICB8
ICAgMyArCj4gIGxpYi9ub2xpYmMvZXhwb3J0c3ltcy51ayAgICB8ICAgMSArCj4gIGxpYi9ub2xp
YmMvaW5jbHVkZS9zdGRsaWIuaCB8ICAgMyArCj4gIGxpYi9ub2xpYmMvcXNvcnQuYyAgICAgICAg
ICB8IDE1NyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgNCBmaWxlcyBj
aGFuZ2VkLCAxNjQgaW5zZXJ0aW9ucygrKQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL25vbGli
Yy9xc29ydC5jCj4KPiBkaWZmIC0tZ2l0IGEvbGliL25vbGliYy9NYWtlZmlsZS51ayBiL2xpYi9u
b2xpYmMvTWFrZWZpbGUudWsKPiBpbmRleCA3Y2IyZTdkMS4uOWQ0YTllYzMgMTAwNjQ0Cj4gLS0t
IGEvbGliL25vbGliYy9NYWtlZmlsZS51awo+ICsrKyBiL2xpYi9ub2xpYmMvTWFrZWZpbGUudWsK
PiBAQCAtMzUsNSArMzUsOCBAQCBMSUJOT0xJQkNfU1JDUy15ICs9ICQoTElCTk9MSUJDX0JBU0Up
L3NzY2FuZi5jCj4gIExJQk5PTElCQ19TUkNTLXkgKz0gJChMSUJOT0xJQkNfQkFTRSkvYXNwcmlu
dGYuYwo+ICBMSUJOT0xJQkNfU1JDUy0kKENPTkZJR19MSUJVS0FMTE9DKSArPSAkKExJQk5PTElC
Q19CQVNFKS9tYWxsb2MuYwo+Cj4gKwo+ICtMSUJOT0xJQkNfU1JDUy15ICs9ICQoTElCTk9MSUJD
X0JBU0UpL3Fzb3J0LmMKPiArCj4gICMgTG9jYWxpemUgaW50ZXJuYWwgc3ltYm9scyAoc3RhcnRp
bmcgd2l0aCBfXyopCj4gIExJQk5PTElCQ19PQkpDRkxBR1MteSArPSAtdyAtTCBfXyoKPiBkaWZm
IC0tZ2l0IGEvbGliL25vbGliYy9leHBvcnRzeW1zLnVrIGIvbGliL25vbGliYy9leHBvcnRzeW1z
LnVrCj4gaW5kZXggNjc1ZGFkYzEuLjY2M2E5YjBjIDEwMDY0NAo+IC0tLSBhL2xpYi9ub2xpYmMv
ZXhwb3J0c3ltcy51awo+ICsrKyBiL2xpYi9ub2xpYmMvZXhwb3J0c3ltcy51awo+IEBAIC00NSw2
ICs0NSw3IEBAIHN0cnRvdWwKPiAgc3RydG9sbAo+ICBzdHJ0b3VsbAo+ICBhdG9pCj4gK3Fzb3J0
Cj4KPiAgIyBzdHJpbmcKPiAgbWVtY3B5Cj4gZGlmZiAtLWdpdCBhL2xpYi9ub2xpYmMvaW5jbHVk
ZS9zdGRsaWIuaCBiL2xpYi9ub2xpYmMvaW5jbHVkZS9zdGRsaWIuaAo+IGluZGV4IDAyZGQ4NTAw
Li5iNzE3NWNlZCAxMDA2NDQKPiAtLS0gYS9saWIvbm9saWJjL2luY2x1ZGUvc3RkbGliLmgKPiAr
KysgYi9saWIvbm9saWJjL2luY2x1ZGUvc3RkbGliLmgKPiBAQCAtODYsNiArODYsOSBAQCBpbnQg
cG9zaXhfbWVtYWxpZ24odm9pZCAqKm1lbXB0ciwgc2l6ZV90IGFsaWduLCBzaXplX3Qgc2l6ZSk7
Cj4gIHZvaWQgKm1lbWFsaWduKHNpemVfdCBhbGlnbiwgc2l6ZV90IHNpemUpOwo+ICAjZW5kaWYg
LyogQ09ORklHX0xJQlVLQUxMT0MgKi8KPgo+ICt2b2lkIHFzb3J0KHZvaWQgKmJhc2UsIHNpemVf
dCBubWVtYiwgc2l6ZV90IHNpemUsCj4gKyAgICAgICAgICAgaW50ICgqY29tcGFyKShjb25zdCB2
b2lkICosIGNvbnN0IHZvaWQgKikpOwo+ICsKPiAgI2lmIENPTkZJR19MSUJQT1NJWF9QUk9DRVNT
Cj4gIGludCBzeXN0ZW0oY29uc3QgY2hhciAqY29tbWFuZCk7Cj4gICNlbmRpZgo+IGRpZmYgLS1n
aXQgYS9saWIvbm9saWJjL3Fzb3J0LmMgYi9saWIvbm9saWJjL3Fzb3J0LmMKPiBuZXcgZmlsZSBt
b2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwLi5kOGIzZGRjNQo+IC0tLSAvZGV2L251bGwKPiAr
KysgYi9saWIvbm9saWJjL3Fzb3J0LmMKPiBAQCAtMCwwICsxLDE1NyBAQAo+ICsvKiAgICAgJE9w
ZW5CU0Q6IHFzb3J0LmMsdiAxLjEwIDIwMDUvMDgvMDggMDg6MDU6MzcgZXNwaWUgRXhwICQgKi8K
PiArLyotCj4gKyAqIENvcHlyaWdodCAoYykgMTk5MiwgMTk5Mwo+ICsgKiAgICAgVGhlIFJlZ2Vu
dHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Cj4gKyAqCj4gKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAo+ICsgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKPiArICogYXJlIG1ldDoKPiAr
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKPiArICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgo+ICsgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAo+ICsgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCj4gKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCj4gKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2Yg
dGhlIFVuaXZlcnNpdHkgbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCj4gKyAqICAg
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20g
dGhpcyBzb2Z0d2FyZQo+ICsgKiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KPiArICoKPiArICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgUkVH
RU5UUyBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKPiArICogQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCj4g
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFCj4gKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIFJFR0VOVFMgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQo+ICsgKiBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTAo+ICsgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUwo+ICsgKiBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKPiArICog
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QKPiArICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQo+ICsgKiBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GCj4gKyAqIFNVQ0ggREFNQUdFLgo+ICsgKi8KPiArI2luY2x1ZGUgPHN5cy90eXBlcy5oPgo+
ICsjaW5jbHVkZSA8c3RkbGliLmg+Cj4gK3N0YXRpYyBpbmxpbmUgY2hhciAgICAgKm1lZDMoY2hh
ciAqLCBjaGFyICosIGNoYXIgKiwgaW50ICgqKQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqKSk7Cj4gK3N0YXRpYyBpbmxpbmUgdm9p
ZCAgICAgIHN3YXBmdW5jKGNoYXIgKiwgY2hhciAqLCBpbnQsIGludCk7Cj4gKyNkZWZpbmUgbWlu
KGEsIGIpICAgICAgKChhKSA8IChiKSA/IGEgOiBiKQo+ICsvKgo+ICsgKiBRc29ydCByb3V0aW5l
IGZyb20gQmVudGxleSAmIE1jSWxyb3kncyAiRW5naW5lZXJpbmcgYSBTb3J0IEZ1bmN0aW9uIi4K
PiArICovCj4gKyNkZWZpbmUgc3dhcGNvZGUoVFlQRSwgcGFybWksIHBhcm1qLCBuKSB7ICAgICAg
ICAgICAgICBcCj4gKyAgICAgICBsb25nIGkgPSAobikgLyBzaXplb2YoVFlQRSk7ICAgICAgICAg
ICAgICAgICAgICBcCj4gKyAgICAgICBUWVBFICpwaSA9IChUWVBFICopIChwYXJtaSk7ICAgICAg
ICAgICAgICAgICAgICBcCj4gKyAgICAgICBUWVBFICpwaiA9IChUWVBFICopIChwYXJtaik7ICAg
ICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAgICAgICAgIFRZUEUgICAgdCA9ICpwaTsg
ICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAgICAgICAgICpwaSsrID0gKnBqOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAgICAgICAgICpwaisrID0gdDsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICB9IHdoaWxlICgtLWkgPiAw
KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gK30KPiArI2RlZmluZSBTV0FQSU5J
VChhLCBlcykgKHN3YXB0eXBlID0gKChjaGFyICopYSAtIChjaGFyICopMCkgJSBzaXplb2YobG9u
ZykgfHwgXAo+ICsgICAgICAgZXMgJSBzaXplb2YobG9uZykgPyAyIDogZXMgPT0gc2l6ZW9mKGxv
bmcpID8gMCA6IDEpCj4gK3N0YXRpYyBpbmxpbmUgdm9pZAo+ICtzd2FwZnVuYyhjaGFyICphLCBj
aGFyICpiLCBpbnQgbiwgaW50IHN3YXB0eXBlKQo+ICt7Cj4gKyAgICAgICBpZiAoc3dhcHR5cGUg
PD0gMSkKPiArICAgICAgICAgICAgICAgc3dhcGNvZGUobG9uZywgYSwgYiwgbikKPiArICAgICAg
IGVsc2UKPiArICAgICAgICAgICAgICAgc3dhcGNvZGUoY2hhciwgYSwgYiwgbikKPiArfQo+ICsj
ZGVmaW5lIHN3YXAoYSwgYikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+
ICsgICAgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAo+ICsgICAgICAgICAgICAgICBpZiAoc3dhcHR5cGUgPT0gMCkgeyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCj4gKyAgICAgICAgICAgICAgICAgICAgICAgbG9uZyB0ID0gKihsb25nICop
KGEpOyAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICAgICAgICAgICAgICAgICAqKGxvbmcg
KikoYSkgPSAqKGxvbmcgKikoYik7ICAgICAgICAgICAgXAo+ICsgICAgICAgICAgICAgICAgICAg
ICAgICoobG9uZyAqKShiKSA9IHQ7ICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAg
ICAgICAgIH0gZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
PiArICAgICAgICAgICAgICAgICAgICAgICBzd2FwZnVuYyhhLCBiLCBlcywgc3dhcHR5cGUpOyAg
ICAgICAgICAgXAo+ICsgICAgICAgfSB3aGlsZSAoMCkKPiArCj4gKyNkZWZpbmUgdmVjc3dhcChh
LCBiLCBuKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAg
IGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAo+ICsgICAgICAgICAgICAgICBpZiAoKG4pID4gMCkgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCj4gKyAgICAgICAgICAgICAgICAgICAgICAgc3dhcGZ1bmMoYSwgYiwgbiwg
c3dhcHR5cGUpOyAgICAgICAgICAgIFwKPiArICAgICAgIH0gd2hpbGUgKDApCj4gK3N0YXRpYyBp
bmxpbmUgY2hhciAqCj4gK21lZDMoY2hhciAqYSwgY2hhciAqYiwgY2hhciAqYywgaW50ICgqY21w
KShjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKikpCj4gK3sKPiArICAgICAgIHJldHVybiBjbXAo
YSwgYikgPCAwID8KPiArICAgICAgICAgICAgICAgKGNtcChiLCBjKSA8IDAgPyBiIDogKGNtcChh
LCBjKSA8IDAgPyBjIDogYSkpCj4gKyAgICAgICAgICAgICAgIDogKGNtcChiLCBjKSA+IDAgPyBi
IDogKGNtcChhLCBjKSA8IDAgPyBhIDogYykpOwo+ICt9Cj4gK3ZvaWQKPiArcXNvcnQodm9pZCAq
YWEsIHNpemVfdCBuLCBzaXplX3QgZXMsIGludCAoKmNtcCkoY29uc3Qgdm9pZCAqLCBjb25zdCB2
b2lkICopKQo+ICt7Cj4gKyAgICAgICBjaGFyICpwYSwgKnBiLCAqcGMsICpwZCwgKnBsLCAqcG0s
ICpwbjsKPiArICAgICAgIGludCBkLCByLCBzd2FwdHlwZSwgc3dhcF9jbnQ7Cj4gKyAgICAgICBj
aGFyICphID0gYWE7Cj4gK2xvb3A6Cj4gKyAgICAgICBTV0FQSU5JVChhLCBlcyk7Cj4gKyAgICAg
ICBzd2FwX2NudCA9IDA7Cj4gKyAgICAgICBpZiAobiA8IDcpIHsKPiArICAgICAgICAgICAgICAg
Zm9yIChwbSA9IChjaGFyICopYSArIGVzOyBwbSA8IChjaGFyICopIGEgKyBuICogZXM7IHBtICs9
IGVzKQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGZvciAocGwgPSBwbTsgcGwgPiAoY2hhciAq
KSBhICYmIGNtcChwbCAtIGVzLCBwbCkgPiAwOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcGwgLT0gZXMpCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2FwKHBsLCBw
bCAtIGVzKTsKPiArICAgICAgICAgICAgICAgcmV0dXJuOwo+ICsgICAgICAgfQo+ICsgICAgICAg
cG0gPSAoY2hhciAqKWEgKyAobiAvIDIpICogZXM7Cj4gKyAgICAgICBpZiAobiA+IDcpIHsKPiAr
ICAgICAgICAgICAgICAgcGwgPSAoY2hhciAqKWE7Cj4gKyAgICAgICAgICAgICAgIHBuID0gKGNo
YXIgKilhICsgKG4gLSAxKSAqIGVzOwo+ICsgICAgICAgICAgICAgICBpZiAobiA+IDQwKSB7Cj4g
KyAgICAgICAgICAgICAgICAgICAgICAgZCA9IChuIC8gOCkgKiBlczsKPiArICAgICAgICAgICAg
ICAgICAgICAgICBwbCA9IG1lZDMocGwsIHBsICsgZCwgcGwgKyAyICogZCwgY21wKTsKPiArICAg
ICAgICAgICAgICAgICAgICAgICBwbSA9IG1lZDMocG0gLSBkLCBwbSwgcG0gKyBkLCBjbXApOwo+
ICsgICAgICAgICAgICAgICAgICAgICAgIHBuID0gbWVkMyhwbiAtIDIgKiBkLCBwbiAtIGQsIHBu
LCBjbXApOwo+ICsgICAgICAgICAgICAgICB9Cj4gKyAgICAgICAgICAgICAgIHBtID0gbWVkMyhw
bCwgcG0sIHBuLCBjbXApOwo+ICsgICAgICAgfQo+ICsgICAgICAgc3dhcChhLCBwbSk7Cj4gKyAg
ICAgICBwYSA9IHBiID0gKGNoYXIgKilhICsgZXM7Cj4gKwo+ICsgICAgICAgcGMgPSBwZCA9IChj
aGFyICopYSArIChuIC0gMSkgKiBlczsKPiArICAgICAgIGZvciAoOzspIHsKPiArICAgICAgICAg
ICAgICAgd2hpbGUgKHBiIDw9IHBjICYmIChyID0gY21wKHBiLCBhKSkgPD0gMCkgewo+ICsgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChyID09IDApIHsKPiArICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN3YXBfY250ID0gMTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN3YXAocGEsIHBiKTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhICs9IGVz
Owo+ICsgICAgICAgICAgICAgICAgICAgICAgIH0KPiArICAgICAgICAgICAgICAgICAgICAgICBw
YiArPSBlczsKPiArICAgICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICAgICB3aGlsZSAocGIg
PD0gcGMgJiYgKHIgPSBjbXAocGMsIGEpKSA+PSAwKSB7Cj4gKyAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKHIgPT0gMCkgewo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dhcF9j
bnQgPSAxOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dhcChwYywgcGQpOwo+
ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGQgLT0gZXM7Cj4gKyAgICAgICAgICAg
ICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICAgICAgICAgICAgIHBjIC09IGVzOwo+ICsgICAg
ICAgICAgICAgICB9Cj4gKyAgICAgICAgICAgICAgIGlmIChwYiA+IHBjKQo+ICsgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAgICAgICAgICBzd2FwKHBiLCBwYyk7Cj4gKyAg
ICAgICAgICAgICAgIHN3YXBfY250ID0gMTsKPiArICAgICAgICAgICAgICAgcGIgKz0gZXM7Cj4g
KyAgICAgICAgICAgICAgIHBjIC09IGVzOwo+ICsgICAgICAgfQo+ICsgICAgICAgaWYgKHN3YXBf
Y250ID09IDApIHsgIC8qIFN3aXRjaCB0byBpbnNlcnRpb24gc29ydCAqLwo+ICsgICAgICAgICAg
ICAgICBmb3IgKHBtID0gKGNoYXIgKikgYSArIGVzOyBwbSA8IChjaGFyICopIGEgKyBuICogZXM7
IHBtICs9IGVzKQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGZvciAocGwgPSBwbTsgcGwgPiAo
Y2hhciAqKSBhICYmIGNtcChwbCAtIGVzLCBwbCkgPiAwOwo+ICsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcGwgLT0gZXMpCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2Fw
KHBsLCBwbCAtIGVzKTsKPiArICAgICAgICAgICAgICAgcmV0dXJuOwo+ICsgICAgICAgfQo+ICsg
ICAgICAgcG4gPSAoY2hhciAqKWEgKyBuICogZXM7Cj4gKyAgICAgICByID0gbWluKHBhIC0gKGNo
YXIgKilhLCBwYiAtIHBhKTsKPiArICAgICAgIHZlY3N3YXAoYSwgcGIgLSByLCByKTsKPiArICAg
ICAgIHIgPSBtaW4ocGQgLSBwYywgcG4gLSBwZCAtIChpbnQpZXMpOwo+ICsgICAgICAgdmVjc3dh
cChwYiwgcG4gLSByLCByKTsKPiArICAgICAgIGlmICgociA9IHBiIC0gcGEpID4gKGludCllcykK
PiArICAgICAgICAgICAgICAgcXNvcnQoYSwgciAvIGVzLCBlcywgY21wKTsKPiArICAgICAgIGlm
ICgociA9IHBkIC0gcGMpID4gKGludCllcykgewo+ICsgICAgICAgICAgICAgICAvKiBJdGVyYXRl
IHJhdGhlciB0aGFuIHJlY3Vyc2UgdG8gc2F2ZSBzdGFjayBzcGFjZSAqLwo+ICsgICAgICAgICAg
ICAgICBhID0gcG4gLSByOwo+ICsgICAgICAgICAgICAgICBuID0gciAvIGVzOwo+ICsgICAgICAg
ICAgICAgICBnb3RvIGxvb3A7Cj4gKyAgICAgICB9Cj4gK30KPiAtLQo+IDIuMjAuMQo+Cj4KPiBf
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IE1pbmlvcy1k
ZXZlbCBtYWlsaW5nIGxpc3QKPiBNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKPiBo
dHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs
CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3Mt
ZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRw
czovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Wed Apr 01 19:47:03 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 01 Apr 2020 19:47: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 1jJjKI-0007Oy-Ti; Wed, 01 Apr 2020 19:47:02 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=ocPN=5R=gmail.com=felipehuici@srs-us1.protection.inumbo.net>)
 id 1jJjKH-0007Ot-EN
 for minios-devel@lists.xenproject.org; Wed, 01 Apr 2020 19:47:01 +0000
X-Inumbo-ID: 8dc18b8c-7451-11ea-b58d-bc764e2007e4
Received: from mail-ua1-x941.google.com (unknown [2607:f8b0:4864:20::941])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 8dc18b8c-7451-11ea-b58d-bc764e2007e4;
 Wed, 01 Apr 2020 19:47:00 +0000 (UTC)
Received: by mail-ua1-x941.google.com with SMTP id l18so275860uak.4
 for <minios-devel@lists.xenproject.org>; Wed, 01 Apr 2020 12:47:00 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=mime-version:references:in-reply-to:from:date:message-id:subject:to
 :cc; bh=MPpWiezU9eDRMz3AgNgns4oHx0c1FZbWh3uMLoGPTuI=;
 b=oDEiD7wrzR2HghdebACMfADF4varrZs4iHodbUeCDgpWKP7s1NaP42VwykUyOkphj+
 Ax0XanMW+9B9vYyhKoDeEoGdwEO6/vWBso5etGzdg2q7sRmzDZAlxXhmrvQCZCcs1wyU
 gzOPOAqMzGlcZwcumKRtRcdJPeiWjMYJycGXphi7sE6vklv8mjJG6WUMOTH5VL3mVtIC
 R0KpXPhw5LvAlJPm7yTdKmLYPWtyonh3j7xTL9/i5uGkyrt6Kd2/qSnBon1xzQ3WkQoP
 i1yrfhNId9u//NfQZ0udK8BsDPCs7OLBJpiqiJs9na32ekaOUfNeFmaDbO9QUCNG4dVw
 R+Cw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:mime-version:references:in-reply-to:from:date
 :message-id:subject:to:cc;
 bh=MPpWiezU9eDRMz3AgNgns4oHx0c1FZbWh3uMLoGPTuI=;
 b=BshhS/+mDpVxFvOnW0jfvJnbPlx/xZFHzjV/2yfxCaLXDVRBAHD+K1BHNtxkPfAFFs
 KMg7PVGgcFmmLXnKZgY60MyYcV8HceDnHS62ZJ5HyTS1BbGgFjA8ubM7ubhi4ZQ9MzdD
 5OrBMPtAGBN2SbCvp3UqN/vCkwCd7nemTYJ48VLzHbE3ZxGj9MQwJzu+8D0JWDE357YP
 kigEL8lQhnlfWqFW/f6HbIsdkqsNdCcz/S37ciV/HAhMjGnfGiZ0oI2ZEz0LYj4wfhjz
 ePy/tSN50z97Tck07Bl/L8dLU2VXcoPEsQAv2zfRsbm5GZd7EOcrESdavPGs5a0yRzI8
 507Q==
X-Gm-Message-State: AGi0PubpiowfL4FW2usxRVLtTKVdQz3JzpTpgslVLTny1VOznkGR1skK
 mlYLcupl2EVf49FdsXmNl/KLaaGz9J7m5Gdilas=
X-Google-Smtp-Source: APiQypIzTl/FhqIThQYtO4nhHobkOGlQrEBBYR+Kw3IMiX6zc9zADVLHuhcxvULAbKkZF55TRuQuoMP3Ozt47jIIjqU=
X-Received: by 2002:a9f:35e6:: with SMTP id u35mr34457uad.32.1585770420446;
 Wed, 01 Apr 2020 12:47:00 -0700 (PDT)
MIME-Version: 1.0
References: <20200327094821.31955-1-justin.he@arm.com>
In-Reply-To: <20200327094821.31955-1-justin.he@arm.com>
From: "felipehuici ." <felipehuici@gmail.com>
Date: Wed, 1 Apr 2020 21:46:49 +0200
Message-ID: <CAEX4t-NN1D5pfOXqLWoSyJOLiYs_8qC0y_z-Yt-DhHdt+iUf=A@mail.gmail.com>
To: Jia He <justin.he@arm.com>
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2 0/7] Support float point on
 arm64 kvm plat
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>, minios-devel@lists.xenproject.org,
 Kaly Xin <Kaly.Xin@arm.com>, Sharan Santhanam <Sharan.Santhanam@neclab.eu>,
 Santiago.Pagani@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>

SGkgSnVzdGluLCB0aGFua3Mgc28gbXVjaCBmb3IgdGhpcyBuZXcgc2VyaWVzISBPbmUgb2YgdGhl
IHBhdGNoZXMKZG9lc24ndCBhcHBseSBjbGVhbmx5LCBjb3VsZCBwbGVhc2UgZG8gYSBxdWljayBy
ZWJhc2UgYW5kIHN1Ym1pdCBhIG5ldwp2ZXJzaW9uPwoKVGhhbmtzIQoKLS0gRmVsaXBlCgpPbiBG
cmksIE1hciAyNywgMjAyMCBhdCAxMDo0OCBBTSBKaWEgSGUgPGp1c3Rpbi5oZUBhcm0uY29tPiB3
cm90ZToKPgo+IFRoaXMgc2VyaWVzIGlzIHRvIGVuYWJsZSB0aGUgZmxvYXQgcG9pbnQgc3VwcG9y
dCBvbiBhcm02NCBrdm0gcGxhdC4KPgo+IFRoZSBrZXkgcG9pbnQgaXMgdGhlIHBhdGNoIDMgYW5k
IDQKPgo+IFRlc3RlZCBvbiBhIFRodW5kWDIgcWVtdSB2aXJ0IGd1ZXN0IG1hY2hpbmUuCj4gcWVt
dSBjb21tYW5kIGxpbmU6L3Vzci9sb2NhbC9iaW4vcWVtdS1zeXN0ZW0tYWFyY2g2NCAgXAo+IC1t
YWNoaW5lIHZpcnQsZ2ljLXZlcnNpb249MiAtbSAxMDI0IC1jcHUgbWF4IC1uby1hY3BpIC1zbXAg
MSBcCj4gLWRpc3BsYXkgbm9uZSAgLW5vZ3JhcGhpYyAtbm9kZWZhdWx0cyAtc2VyaWFsIHN0ZGlv
IFwKPiAta2VybmVsIGJ1aWxkL2hlbGxvd29ybGRfa3ZtLWFybTY0Cj4KPiBJIGNyZWF0ZWQgYSBh
cHAgd2l0aCAyIHRocmVhZHMsIGFuZCB0aGVuIHByaW50IHRoZWlyIGxvY2FsIGRvdWJsZS9mbG9h
dAo+IHZhcmlhYmxlcy4gTG9va3MgZmluZSB0byBtZS4KPgo+IENoYW5nZXM6Cj4gdjI6IHJlbW92
ZSBSRkMgdGFnLgo+ICAgICB1dGlsaXplICdpc3InIHZhcmlhbnQgZmVhdHVyZSBpbnRyb2R1Y2Vk
IGJ5IFNpbW9uLCB0aGlzIGFkZHJlc3NlcyB0aGUKPiBtZ2VuZXJhbC1yZWdzLW9ubHkgaXNzdWUg
aW4gdjEuCj4gICAgIHJlZmFjdG9yIHRoZSBzYXZlL3Jlc3RvcmUgY29kZXMgZHVlIHRvIGxpY2Vu
c2UgaXNzdWUuCj4KPiBKaWEgSGUgKDcpOgo+ICAgcGxhdDogYnVpbGQ6IEFkZCBhIGNvbmZpZyBv
cHRpb24gdG8gZW5hYmxlIGZwIG9uIGFybTY0Cj4gICBidWlsZDogTGluayBsaWJnY2MgYXQgdGhl
IGVuZCBvZiB0aGUgbGluayBvcHRpb25zIGxpc3QKPiAgIHBsYXQva3ZtOiBhcm02NDogRW5hYmxl
IHRoZSBmcC9zaW1kIGF0IHRoZSBzdGFydGluZyBwb2ludAo+ICAgcGxhdC9hcm06IFN1cHBvcnQg
ZnAvc2ltZCBzYXZlL3Jlc3RvcmUgZHVyaW5nIGNvbnRleHQgc3dpdGNoCj4gICBhcmNoL2FybTY0
OiBEb24ndCBwYXNzIC1tZ2VuZXJhbC1yZWdzLW9ubHkgd2hlbiBDT05GSUdfRkxPQVRfUE9JTlQg
aXMKPiAgICAgeQo+ICAgYXJjaC9hcm02NDogRml4IC1tZnB1PW5vbmUgd2hlbiBub3Qgc3VwcG9y
dGluZyBmcHNpbWQKPiAgIGJ1aWxkOiBBZGQgJ2lzcicgdmFyaWFudCBmb3IgYXJtNjQga3ZtIHBs
YXQgc291cmNlIGZpbGVzIGNhbGxlZCB3aXRoaW4KPiAgICAgaXJxIGNvbnRleHQKPgo+ICBhcmNo
L2FybS9hcm02NC9NYWtlZmlsZS51ayAgICAgICAgICB8ICA3ICsrLQo+ICBwbGF0L0NvbmZpZy51
ayAgICAgICAgICAgICAgICAgICAgICB8ICA3ICsrKwo+ICBwbGF0L2NvbW1vbi9hcm0vdGhyZWFk
X3N0YXJ0NjQuUyAgICB8IDcyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gIHBsYXQv
Y29tbW9uL2luY2x1ZGUvYXJtL2FybTY0L2NwdS5oIHwgNDYgKysrKysrKysrKysrKysrKystCj4g
IHBsYXQva3ZtL0xpbmtlci51ayAgICAgICAgICAgICAgICAgIHwgIDIgKwo+ICBwbGF0L2t2bS9N
YWtlZmlsZS51ayAgICAgICAgICAgICAgICB8IDEwICsrLS0KPiAgcGxhdC9rdm0vYXJtL2VudHJ5
NjQuUyAgICAgICAgICAgICAgfCAgOCArKysrCj4gIDcgZmlsZXMgY2hhbmdlZCwgMTQzIGluc2Vy
dGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCj4KPiAtLQo+IDIuMTcuMQo+Cj4KPiBfX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IE1pbmlvcy1kZXZlbCBtYWls
aW5nIGxpc3QKPiBNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKPiBodHRwczovL2xp
c3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVsCgpfX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFp
bGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3Rz
LnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Thu Apr 02 04:13:15 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 02 Apr 2020 04:13: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 1jJrE8-0003XV-IN; Thu, 02 Apr 2020 04:13:12 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=X1HC=5S=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1jJrE7-0003XQ-8V
 for minios-devel@lists.xenproject.org; Thu, 02 Apr 2020 04:13:11 +0000
X-Inumbo-ID: 42752624-7498-11ea-b58d-bc764e2007e4
Received: from EUR03-DB5-obe.outbound.protection.outlook.com (unknown
 [40.107.4.44]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 42752624-7498-11ea-b58d-bc764e2007e4;
 Thu, 02 Apr 2020 04:13:09 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; 
 s=selector2-armh-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=Ansvm9uHYKIgzyOwX89b1aPHTosPH0JmmB4PzAlbsSU=;
 b=2uxGJ4Exr10HpBJ0hQ0kmnJRrE3ooFh1Vc+z6wnr+AwIcsreG43b3gdOutpq65PG9xqC0FY/y1YL0XXrlsHO1a6BlpZFg0EREwNY/bPLy38QZZBL/K1QAD+e850Srik5g500FEMpW2oHR7SrYErWVwesMBSYKzDMkXh+reeNFeE=
Received: from DB6PR07CA0008.eurprd07.prod.outlook.com (2603:10a6:6:2d::18) by
 AM5PR0801MB2020.eurprd08.prod.outlook.com (2603:10a6:203:4c::14) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2856.20; Thu, 2 Apr
 2020 04:13:07 +0000
Received: from DB5EUR03FT032.eop-EUR03.prod.protection.outlook.com
 (2603:10a6:6:2d:cafe::c3) by DB6PR07CA0008.outlook.office365.com
 (2603:10a6:6:2d::18) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2878.9 via Frontend
 Transport; Thu, 2 Apr 2020 04:13:07 +0000
Authentication-Results: spf=pass (sender IP is 63.35.35.123)
 smtp.mailfrom=arm.com; lists.xenproject.org; dkim=pass (signature was
 verified) header.d=armh.onmicrosoft.com;lists.xenproject.org;
 dmarc=bestguesspass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 63.35.35.123 as permitted sender) receiver=protection.outlook.com;
 client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com;
Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by
 DB5EUR03FT032.mail.protection.outlook.com (10.152.20.162) with
 Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.2856.17 via Frontend Transport; Thu, 2 Apr 2020 04:13:07 +0000
Received: ("Tessian outbound 1425309d4c0b:v50");
 Thu, 02 Apr 2020 04:13:07 +0000
X-CR-MTA-TID: 64aa7808
Received: from 4ffe075c01df.2
 by 64aa7808-outbound-1.mta.getcheckrecipient.com id
 F1835F57-76D7-406E-B9C0-2C020EC711D7.1; 
 Thu, 02 Apr 2020 04:13:02 +0000
Received: from EUR05-VI1-obe.outbound.protection.outlook.com
 by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 4ffe075c01df.2
 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384);
 Thu, 02 Apr 2020 04:13:02 +0000
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=RVPDndB+0+8xKf+TWmB6pRhwJfAZZGJBXNsTc/UEilSjw1SEtWExdKZ3a8Xm/65kE9WBdN3J88iyOVn2VNBhR1RCxxI2VT8btHj+v6ANtKOWTX7i4U7+lMCqC3SeDdjCcvA4576tALMYD5qyBdyLLl9EuHwzaLUARcRqFp564tKuko+yQsM3bMGz/SZO4Q+XjsQhPK2jBXzYGVLcwBBjANPw5VOGcHi0eZ36fNae8YFPiFBAdWVMNlfub7jCdNB82t8cBh5m39RMdwCQRw+77tMx8iFhkg/TojW6HskSO2uRLrCk6xqPle1NyaBQ4kuNxEnAzhfouwWKl1W3EAEw9Q==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; 
 s=arcselector9901;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=Ansvm9uHYKIgzyOwX89b1aPHTosPH0JmmB4PzAlbsSU=;
 b=cCpeALJeuj5cnMsmkuATR2gfo+XlbjkUdbJUcYhTWAk/Q6yu9UizeriQDAkY6gs7HgwYKRfBLUcoEzSluC34xXZT8mmokJ/NzviyOELDc+e56UIYrR83O57nDg2jNV1cIfxdIaSldr5jc1a+AzwuQPcaaOulsF01NSKs3+fr2GGQw+JpXx1VhuxQ3z2dhTgg5/PANiRn/HJbD0AbpKvFB6NX553o7jaHcKSRc9UJnVTQfdoai3oswIEp5lvFKBcG8/u6G7N1wVLrcNJO++p2h2+2qBNLJo9e0zaI7PsZWuH1KalymNdaHmFglqgMRtHu0KSR3dU/dJhgV0c23xIoOA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; 
 s=selector2-armh-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=Ansvm9uHYKIgzyOwX89b1aPHTosPH0JmmB4PzAlbsSU=;
 b=2uxGJ4Exr10HpBJ0hQ0kmnJRrE3ooFh1Vc+z6wnr+AwIcsreG43b3gdOutpq65PG9xqC0FY/y1YL0XXrlsHO1a6BlpZFg0EREwNY/bPLy38QZZBL/K1QAD+e850Srik5g500FEMpW2oHR7SrYErWVwesMBSYKzDMkXh+reeNFeE=
Received: from AM6PR08MB4069.eurprd08.prod.outlook.com (20.179.3.160) by
 AM6PR08MB5127.eurprd08.prod.outlook.com (10.255.120.16) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.2856.20; Thu, 2 Apr 2020 04:12:59 +0000
Received: from AM6PR08MB4069.eurprd08.prod.outlook.com
 ([fe80::60b6:c319:1c9b:8919]) by AM6PR08MB4069.eurprd08.prod.outlook.com
 ([fe80::60b6:c319:1c9b:8919%7]) with mapi id 15.20.2856.019; Thu, 2 Apr 2020
 04:12:59 +0000
From: Justin He <Justin.He@arm.com>
To: "felipehuici ." <felipehuici@gmail.com>
Thread-Topic: [Minios-devel] [UNIKRAFT PATCH v2 0/7] Support float point on
 arm64 kvm plat
Thread-Index: AQHWBBzo37Q5wKTjlEi3wISyKECOeahktFeAgACNRxA=
Date: Thu, 2 Apr 2020 04:12:59 +0000
Message-ID: <AM6PR08MB4069A34A11D44B9486845F47F7C60@AM6PR08MB4069.eurprd08.prod.outlook.com>
References: <20200327094821.31955-1-justin.he@arm.com>
 <CAEX4t-NN1D5pfOXqLWoSyJOLiYs_8qC0y_z-Yt-DhHdt+iUf=A@mail.gmail.com>
In-Reply-To: <CAEX4t-NN1D5pfOXqLWoSyJOLiYs_8qC0y_z-Yt-DhHdt+iUf=A@mail.gmail.com>
Accept-Language: en-US, zh-CN
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ts-tracking-id: 3e98c57f-5cbd-44ac-922b-d5d5cf6ebdd3.1
x-checkrecipientchecked: true
Authentication-Results-Original: 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-HT: Tenant
X-MS-Office365-Filtering-Correlation-Id: a5af7911-0d55-40cc-bad7-08d7d6bc25b4
x-ms-traffictypediagnostic: AM6PR08MB5127:|AM6PR08MB5127:|AM5PR0801MB2020:
x-ms-exchange-transport-forked: True
X-Microsoft-Antispam-PRVS: <AM5PR0801MB2020F911D8D2E605B3205683F7C60@AM5PR0801MB2020.eurprd08.prod.outlook.com>
x-checkrecipientrouted: true
nodisclaimer: true
x-ms-oob-tlc-oobclassifiers: OLM:6790;OLM:8882;
x-forefront-prvs: 0361212EA8
X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en;
 SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM6PR08MB4069.eurprd08.prod.outlook.com;
 PTR:; CAT:NONE; SFTY:;
 SFS:(10009020)(4636009)(346002)(396003)(376002)(39860400002)(366004)(136003)(76116006)(5660300002)(8936002)(186003)(966005)(66556008)(54906003)(66946007)(64756008)(66446008)(66476007)(52536014)(7696005)(4326008)(26005)(53546011)(6506007)(6916009)(316002)(55236004)(71200400001)(81166006)(81156014)(33656002)(478600001)(9686003)(86362001)(8676002)(2906002)(55016002);
 DIR:OUT; SFP:1101; 
received-spf: None (protection.outlook.com: arm.com does not designate
 permitted sender hosts)
X-MS-Exchange-SenderADCheck: 1
X-Microsoft-Antispam-Untrusted: BCL:0;
X-Microsoft-Antispam-Message-Info-Original: F9/mAXIUwREUqR3Fa9ihRuN04BXuCERRYiLh383K6A6WVchoFrn0kiU4Z4ZxcjlwrsAp5tpO0KQmpIsMk+f61CN4dtw9eOI7ceI9JTrHAaRHZ3gtATiVEMKbwzfK1DVhWBHePMhk15g8XuU/WMKFcyKnwtXKfHOdW6T2h0Hqk7IltdTTEqYwoC95O+JtR+RhxBdj4TuisaRGqmwwN+MjCZIafINrpiN8KYE0IpUz7iiX0YZPDjviUsrRQnnxch1n1c2btj2vp6CRgKwpE4CzrYDnAdRi+Hs2H4z7+EzcP/cw/o98ab0uMumio27lALtBaPl8G9zWdMtMCLxIPi09Y0Sqy83IL2Hiqm516mTfAHc/NBclm49vWWe2PhbmicHh0gJi37fukuYFgT3OtA2VQbi9ctuBFzTWhrn2FRnpthaHqvF2Par2OfN7W7qCplEAaACT4yeDXFbcD0mnOe0cJKDiCgauF+bPAgK60D6BSZN1Hyivb7IC6k0OUmNGgRtYIrBwnFsA3qIC9oqe2gggBQ==
x-ms-exchange-antispam-messagedata: 0R4PLijlWN+EYYOxudHfo/wn5opnDVTmgX5Cm6EwTgYf2aypkC+73Uew9veYZfdYGv0OPYRqJhEsgy2PihBLXKiioW7RUoMdn4H4lhaLC0ZbUJGTYZHtiJwHU29HZ0HHuoPWVEqnY0GHR9qa1UiLYg==
MIME-Version: 1.0
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB5127
Original-Authentication-Results: spf=none (sender IP is )
 smtp.mailfrom=Justin.He@arm.com; 
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB5EUR03FT032.eop-EUR03.prod.protection.outlook.com
X-Forefront-Antispam-Report: CIP:63.35.35.123; CTRY:IE; LANG:en; SCL:1; SRV:;
 IPV:CAL; SFV:NSPM; H:64aa7808-outbound-1.mta.getcheckrecipient.com;
 PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com; CAT:NONE; SFTY:;
 SFS:(10009020)(4636009)(376002)(346002)(39860400002)(136003)(396003)(46966005)(6506007)(26005)(55016002)(966005)(9686003)(2906002)(478600001)(336012)(33656002)(81156014)(26826003)(8936002)(81166006)(8676002)(107886003)(70586007)(5660300002)(52536014)(4326008)(53546011)(316002)(186003)(54906003)(86362001)(82740400003)(356004)(7696005)(70206006)(47076004)(6862004);
 DIR:OUT; SFP:1101; 
X-MS-Office365-Filtering-Correlation-Id-Prvs: 97c20051-52fa-4f23-097f-08d7d6bc2131
X-Forefront-PRVS: 0361212EA8
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info: uNR+f8zFoKKeAw7ZO3Cf68o/vTvBj6K3FotA6CWhtJPIPVDEREAdYgEOgEJdqES51CzHLhTOcFONrLl4z/ozWdVlswq+2cpvU1vMEX6yDIN+2jg8Fqk76TD88A6mAqzALY+9Cg+l8MHhrbwwxKjDEATx/aefMdgezte9bISW+QYrFm51rHhXLDSGRNwn54FqUD+ES1sJUTEaIqGzR2H0DHFlhi4sYL0jSMgUD1tuX2z8NxyxuUnQOXvQB0FxNdE/zJXb0588CXuhbnqmg7hP7rGnn6FxpqnjbHtnLMwKK/QKMZ5W+Y0f803nEcg/ku+RseXp03WanU1CgiBPXgvPzdVvvbYwJc6tSfBkI9/TFzaN71DWNW0xYdGchK8t+8kB8n66YeoMPPvddTSHCwom7/K2TawxOG0JdCm0h6sbeCDrHCk8/24+W1HOtTKl8B4I01pIKFBdMZb6dYlw2jMeqZwtY4VM20K0t+im6Tn16yRf68q9bcX8/+m7iUF1V6apCvzH5/uRoFLv9DSV9A/vW52HNygP9D/E9nX+8V4mkvhylNQTN+HHcnFOXUnL8JTYHYgc47IzNCavbz2AB1zOVxK1aVTEu58jY+rpTXE02/w=
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Apr 2020 04:13:07.0951 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: a5af7911-0d55-40cc-bad7-08d7d6bc25b4
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[63.35.35.123];
 Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com]
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR0801MB2020
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2 0/7] Support float point on
 arm64 kvm plat
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>,
 "minios-devel@lists.xenproject.org" <minios-devel@lists.xenproject.org>,
 Kaly Xin <Kaly.Xin@arm.com>, Sharan Santhanam <Sharan.Santhanam@neclab.eu>,
 "Santiago.Pagani@neclab.eu" <Santiago.Pagani@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>

SGkgRmVsaXBlLA0KU3VyZSBJIHdpbGwgcmViYXNlIGl0IGluIHYzDQotLQ0KQ2hlZXJzLA0KSnVz
dGluIChKaWEgSGUpDQoNCg0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206
IGZlbGlwZWh1aWNpIC4gPGZlbGlwZWh1aWNpQGdtYWlsLmNvbT4NCj4gU2VudDogVGh1cnNkYXks
IEFwcmlsIDIsIDIwMjAgMzo0NyBBTQ0KPiBUbzogSnVzdGluIEhlIDxKdXN0aW4uSGVAYXJtLmNv
bT4NCj4gQ2M6IG1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZzsgU2ltb24gS3Vlbnpl
cg0KPiA8c2ltb24ua3VlbnplckBuZWNsYWIuZXU+OyBTYW50aWFnby5QYWdhbmlAbmVjbGFiLmV1
OyBGZWxpcGUgSHVpY2kNCj4gPGZlbGlwZS5odWljaUBuZWNsYWIuZXU+OyBLYWx5IFhpbiA8S2Fs
eS5YaW5AYXJtLmNvbT47IFNoYXJhbiBTYW50aGFuYW0NCj4gPFNoYXJhbi5TYW50aGFuYW1AbmVj
bGFiLmV1Pg0KPiBTdWJqZWN0OiBSZTogW01pbmlvcy1kZXZlbF0gW1VOSUtSQUZUIFBBVENIIHYy
IDAvN10gU3VwcG9ydCBmbG9hdCBwb2ludCBvbg0KPiBhcm02NCBrdm0gcGxhdA0KPg0KPiBIaSBK
dXN0aW4sIHRoYW5rcyBzbyBtdWNoIGZvciB0aGlzIG5ldyBzZXJpZXMhIE9uZSBvZiB0aGUgcGF0
Y2hlcw0KPiBkb2Vzbid0IGFwcGx5IGNsZWFubHksIGNvdWxkIHBsZWFzZSBkbyBhIHF1aWNrIHJl
YmFzZSBhbmQgc3VibWl0IGEgbmV3DQo+IHZlcnNpb24/DQo+DQo+IFRoYW5rcyENCj4NCj4gLS0g
RmVsaXBlDQo+DQo+IE9uIEZyaSwgTWFyIDI3LCAyMDIwIGF0IDEwOjQ4IEFNIEppYSBIZSA8anVz
dGluLmhlQGFybS5jb20+IHdyb3RlOg0KPiA+DQo+ID4gVGhpcyBzZXJpZXMgaXMgdG8gZW5hYmxl
IHRoZSBmbG9hdCBwb2ludCBzdXBwb3J0IG9uIGFybTY0IGt2bSBwbGF0Lg0KPiA+DQo+ID4gVGhl
IGtleSBwb2ludCBpcyB0aGUgcGF0Y2ggMyBhbmQgNA0KPiA+DQo+ID4gVGVzdGVkIG9uIGEgVGh1
bmRYMiBxZW11IHZpcnQgZ3Vlc3QgbWFjaGluZS4NCj4gPiBxZW11IGNvbW1hbmQgbGluZTovdXNy
L2xvY2FsL2Jpbi9xZW11LXN5c3RlbS1hYXJjaDY0ICBcDQo+ID4gLW1hY2hpbmUgdmlydCxnaWMt
dmVyc2lvbj0yIC1tIDEwMjQgLWNwdSBtYXggLW5vLWFjcGkgLXNtcCAxIFwNCj4gPiAtZGlzcGxh
eSBub25lICAtbm9ncmFwaGljIC1ub2RlZmF1bHRzIC1zZXJpYWwgc3RkaW8gXA0KPiA+IC1rZXJu
ZWwgYnVpbGQvaGVsbG93b3JsZF9rdm0tYXJtNjQNCj4gPg0KPiA+IEkgY3JlYXRlZCBhIGFwcCB3
aXRoIDIgdGhyZWFkcywgYW5kIHRoZW4gcHJpbnQgdGhlaXIgbG9jYWwgZG91YmxlL2Zsb2F0DQo+
ID4gdmFyaWFibGVzLiBMb29rcyBmaW5lIHRvIG1lLg0KPiA+DQo+ID4gQ2hhbmdlczoNCj4gPiB2
MjogcmVtb3ZlIFJGQyB0YWcuDQo+ID4gICAgIHV0aWxpemUgJ2lzcicgdmFyaWFudCBmZWF0dXJl
IGludHJvZHVjZWQgYnkgU2ltb24sIHRoaXMgYWRkcmVzc2VzIHRoZQ0KPiA+IG1nZW5lcmFsLXJl
Z3Mtb25seSBpc3N1ZSBpbiB2MS4NCj4gPiAgICAgcmVmYWN0b3IgdGhlIHNhdmUvcmVzdG9yZSBj
b2RlcyBkdWUgdG8gbGljZW5zZSBpc3N1ZS4NCj4gPg0KPiA+IEppYSBIZSAoNyk6DQo+ID4gICBw
bGF0OiBidWlsZDogQWRkIGEgY29uZmlnIG9wdGlvbiB0byBlbmFibGUgZnAgb24gYXJtNjQNCj4g
PiAgIGJ1aWxkOiBMaW5rIGxpYmdjYyBhdCB0aGUgZW5kIG9mIHRoZSBsaW5rIG9wdGlvbnMgbGlz
dA0KPiA+ICAgcGxhdC9rdm06IGFybTY0OiBFbmFibGUgdGhlIGZwL3NpbWQgYXQgdGhlIHN0YXJ0
aW5nIHBvaW50DQo+ID4gICBwbGF0L2FybTogU3VwcG9ydCBmcC9zaW1kIHNhdmUvcmVzdG9yZSBk
dXJpbmcgY29udGV4dCBzd2l0Y2gNCj4gPiAgIGFyY2gvYXJtNjQ6IERvbid0IHBhc3MgLW1nZW5l
cmFsLXJlZ3Mtb25seSB3aGVuIENPTkZJR19GTE9BVF9QT0lOVA0KPiBpcw0KPiA+ICAgICB5DQo+
ID4gICBhcmNoL2FybTY0OiBGaXggLW1mcHU9bm9uZSB3aGVuIG5vdCBzdXBwb3J0aW5nIGZwc2lt
ZA0KPiA+ICAgYnVpbGQ6IEFkZCAnaXNyJyB2YXJpYW50IGZvciBhcm02NCBrdm0gcGxhdCBzb3Vy
Y2UgZmlsZXMgY2FsbGVkIHdpdGhpbg0KPiA+ICAgICBpcnEgY29udGV4dA0KPiA+DQo+ID4gIGFy
Y2gvYXJtL2FybTY0L01ha2VmaWxlLnVrICAgICAgICAgIHwgIDcgKystDQo+ID4gIHBsYXQvQ29u
ZmlnLnVrICAgICAgICAgICAgICAgICAgICAgIHwgIDcgKysrDQo+ID4gIHBsYXQvY29tbW9uL2Fy
bS90aHJlYWRfc3RhcnQ2NC5TICAgIHwgNzINCj4gKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysNCj4gPiAgcGxhdC9jb21tb24vaW5jbHVkZS9hcm0vYXJtNjQvY3B1LmggfCA0NiArKysrKysr
KysrKysrKysrKy0NCj4gPiAgcGxhdC9rdm0vTGlua2VyLnVrICAgICAgICAgICAgICAgICAgfCAg
MiArDQo+ID4gIHBsYXQva3ZtL01ha2VmaWxlLnVrICAgICAgICAgICAgICAgIHwgMTAgKystLQ0K
PiA+ICBwbGF0L2t2bS9hcm0vZW50cnk2NC5TICAgICAgICAgICAgICB8ICA4ICsrKysNCj4gPiAg
NyBmaWxlcyBjaGFuZ2VkLCAxNDMgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkNCj4gPg0K
PiA+IC0tDQo+ID4gMi4xNy4xDQo+ID4NCj4gPg0KPiA+IF9fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fDQo+ID4gTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdA0K
PiA+IE1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZw0KPiA+IGh0dHBzOi8vbGlzdHMu
eGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWwNCklNUE9SVEFOVCBO
T1RJQ0U6IFRoZSBjb250ZW50cyBvZiB0aGlzIGVtYWlsIGFuZCBhbnkgYXR0YWNobWVudHMgYXJl
IGNvbmZpZGVudGlhbCBhbmQgbWF5IGFsc28gYmUgcHJpdmlsZWdlZC4gSWYgeW91IGFyZSBub3Qg
dGhlIGludGVuZGVkIHJlY2lwaWVudCwgcGxlYXNlIG5vdGlmeSB0aGUgc2VuZGVyIGltbWVkaWF0
ZWx5IGFuZCBkbyBub3QgZGlzY2xvc2UgdGhlIGNvbnRlbnRzIHRvIGFueSBvdGhlciBwZXJzb24s
IHVzZSBpdCBmb3IgYW55IHB1cnBvc2UsIG9yIHN0b3JlIG9yIGNvcHkgdGhlIGluZm9ybWF0aW9u
IGluIGFueSBtZWRpdW0uIFRoYW5rIHlvdS4NCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVs
QGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1h
bi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Thu Apr 02 04:18:59 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 02 Apr 2020 04:18: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 1jJrJj-0003e1-1f; Thu, 02 Apr 2020 04:18:59 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=X1HC=5S=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1jJrJh-0003dr-FZ
 for minios-devel@lists.xenproject.org; Thu, 02 Apr 2020 04:18:57 +0000
X-Inumbo-ID: 117eca88-7499-11ea-83d8-bc764e2007e4
Received: from foss.arm.com (unknown [217.140.110.172])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTP
 id 117eca88-7499-11ea-83d8-bc764e2007e4;
 Thu, 02 Apr 2020 04:18:56 +0000 (UTC)
Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14])
 by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id C62F1101E;
 Wed,  1 Apr 2020 21:18:55 -0700 (PDT)
Received: from localhost.localdomain (entos-thunderx2-02.shanghai.arm.com
 [10.169.138.57])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id A7BEC3F71E;
 Wed,  1 Apr 2020 21:18:53 -0700 (PDT)
From: Jia He <justin.he@arm.com>
To: minios-devel@lists.xenproject.org, Simon Kuenzer <simon.kuenzer@neclab.eu>,
 Felipe Huici <felipe.huici@neclab.eu>
Date: Thu,  2 Apr 2020 12:18:27 +0800
Message-Id: <20200402041833.141738-2-justin.he@arm.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20200402041833.141738-1-justin.he@arm.com>
References: <20200402041833.141738-1-justin.he@arm.com>
Subject: [Minios-devel] [UNIKRAFT PATCH v3 1/7] plat: build: Add a config
 option to enable fp on 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: Kaly Xin <Kaly.Xin@arm.com>, nd@arm.com, Jia He <justin.he@arm.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>

VGhpcyBjb25maWcgaXMgdG8gZW5hYmxlIHRoZSBzdXBwb3J0IGZvciBhcm02NCBmcCBmZWF0dXJl
LiBGcCBpcyBmb3IKYXBwbGljYXRpb24gb25seSwgbmV2ZXIgZm9yIFVua3JhZnQga2VybmVsIGl0
c2VsZi4KClRoaXMgY29uZmlnIGlzICduJyBieSBkZWZhdWx0IHNpbmNlIHRoZXJlIGlzIHNvbWUg
b3ZlcmhlYWQgZHVyaW5nIGNvbnRleHQKc3dpdGNoLgoKU2lnbmVkLW9mZi1ieTogSmlhIEhlIDxq
dXN0aW4uaGVAYXJtLmNvbT4KLS0tCiBwbGF0L0NvbmZpZy51ayB8IDcgKysrKysrKwogMSBmaWxl
IGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL3BsYXQvQ29uZmlnLnVrIGIv
cGxhdC9Db25maWcudWsKaW5kZXggMGViNWExMC4uZjU1NWYxNyAxMDA2NDQKLS0tIGEvcGxhdC9D
b25maWcudWsKKysrIGIvcGxhdC9Db25maWcudWsKQEAgLTIxLDMgKzIxLDEwIEBAIGNvbmZpZyBI
WgogCWhlbHAKIAkJQ29uZmlndXJlIHRoZSB0aW1lciBpbnRlcnJ1cHQgZnJlcXVlbmN5LgogCQlP
bmx5IGNoYW5nZSB0aGlzIGlmIHlvdSBrbm93IHdoYXQgeW91J3JlIGRvaW5nLgorCitjb25maWcg
RkxPQVRfUE9JTlQKKwlib29sICJhcm02NCBmbG9hdGluZyBwb2ludCBzdXBwb3J0IGluIGFwcGxp
Y2F0aW9uIgorCWRlZmF1bHQgbgorCWRlcGVuZHMgb24gQVJDSF9BUk1fNjQKKwloZWxwCisJCUVu
YWJsZSBzdXBwb3J0IEZQVSB1c2FnZSBpbiBhcHBsaWNhdGlvbgotLSAKMi4xNy4xCgoKX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1h
aWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0
cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Thu Apr 02 04:18:59 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 02 Apr 2020 04:18: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 1jJrJj-0003e7-30; Thu, 02 Apr 2020 04:18: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=X1HC=5S=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1jJrJh-0003ds-KP
 for minios-devel@lists.xenproject.org; Thu, 02 Apr 2020 04:18:57 +0000
X-Inumbo-ID: 0ffa03e4-7499-11ea-bb78-12813bfff9fa
Received: from foss.arm.com (unknown [217.140.110.172])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTP
 id 0ffa03e4-7499-11ea-bb78-12813bfff9fa;
 Thu, 02 Apr 2020 04:18:53 +0000 (UTC)
Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14])
 by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 4530230E;
 Wed,  1 Apr 2020 21:18:53 -0700 (PDT)
Received: from localhost.localdomain (entos-thunderx2-02.shanghai.arm.com
 [10.169.138.57])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 4080E3F71E;
 Wed,  1 Apr 2020 21:18:51 -0700 (PDT)
From: Jia He <justin.he@arm.com>
To: minios-devel@lists.xenproject.org, Simon Kuenzer <simon.kuenzer@neclab.eu>,
 Felipe Huici <felipe.huici@neclab.eu>
Date: Thu,  2 Apr 2020 12:18:26 +0800
Message-Id: <20200402041833.141738-1-justin.he@arm.com>
X-Mailer: git-send-email 2.17.1
Subject: [Minios-devel] [UNIKRAFT PATCH v3 0/7] Support float point on arm64
 kvm plat
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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: Kaly Xin <Kaly.Xin@arm.com>, nd@arm.com, Jia He <justin.he@arm.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>

VGhpcyBzZXJpZXMgaXMgdG8gZW5hYmxlIHRoZSBmbG9hdCBwb2ludCBzdXBwb3J0IG9uIGFybTY0
IGt2bSBwbGF0LgoKVGhlIGtleSBwb2ludCBpcyB0aGUgcGF0Y2ggMyBhbmQgNAoKVGVzdGVkIG9u
IGEgVGh1bmRYMiBxZW11IHZpcnQgZ3Vlc3QgbWFjaGluZS4KcWVtdSBjb21tYW5kIGxpbmU6L3Vz
ci9sb2NhbC9iaW4vcWVtdS1zeXN0ZW0tYWFyY2g2NCAgXAotbWFjaGluZSB2aXJ0LGdpYy12ZXJz
aW9uPTIgLW0gMTAyNCAtY3B1IG1heCAtbm8tYWNwaSAtc21wIDEgXAotZGlzcGxheSBub25lICAt
bm9ncmFwaGljIC1ub2RlZmF1bHRzIC1zZXJpYWwgc3RkaW8gXAota2VybmVsIGJ1aWxkL2hlbGxv
d29ybGRfa3ZtLWFybTY0CgpJIGNyZWF0ZWQgYSBhcHAgd2l0aCAyIHRocmVhZHMsIGFuZCB0aGVu
IHByaW50IHRoZWlyIGxvY2FsIGRvdWJsZS9mbG9hdAp2YXJpYWJsZXMuIExvb2tzIGZpbmUgdG8g
bWUuCgpDaGFuZ2VzOgp2MzogcmViYXNlIHRvIGxhdGVzdCBzdGFnaW5nIGJyYW5jaAp2MjogcmVt
b3ZlIFJGQyB0YWcuCiAtIHV0aWxpemUgJ2lzcicgdmFyaWFudCBmZWF0dXJlIGludHJvZHVjZWQg
YnkgU2ltb24sIHRoaXMgYWRkcmVzc2VzIHRoZQptZ2VuZXJhbC1yZWdzLW9ubHkgaXNzdWUgaW4g
djEuCiAtIHJlZmFjdG9yIHRoZSBzYXZlL3Jlc3RvcmUgY29kZXMgZHVlIHRvIGxpY2Vuc2UgaXNz
dWUuCgpKaWEgSGUgKDcpOgogIHBsYXQ6IGJ1aWxkOiBBZGQgYSBjb25maWcgb3B0aW9uIHRvIGVu
YWJsZSBmcCBvbiBhcm02NAogIGJ1aWxkOiBMaW5rIGxpYmdjYyBhdCB0aGUgZW5kIG9mIHRoZSBs
aW5rIG9wdGlvbnMgbGlzdAogIHBsYXQva3ZtOiBhcm02NDogRW5hYmxlIHRoZSBmcC9zaW1kIGF0
IHRoZSBzdGFydGluZyBwb2ludAogIHBsYXQvYXJtOiBTdXBwb3J0IGZwL3NpbWQgc2F2ZS9yZXN0
b3JlIGR1cmluZyBjb250ZXh0IHN3aXRjaAogIGFyY2gvYXJtNjQ6IERvbid0IHBhc3MgLW1nZW5l
cmFsLXJlZ3Mtb25seSB3aGVuIENPTkZJR19GTE9BVF9QT0lOVCBpcwogICAgeQogIGFyY2gvYXJt
NjQ6IEZpeCAtbWZwdT1ub25lIHdoZW4gbm90IHN1cHBvcnRpbmcgZnBzaW1kCiAgYnVpbGQ6IEFk
ZCAnaXNyJyB2YXJpYW50IGZvciBhcm02NCBrdm0gcGxhdCBzb3VyY2UgZmlsZXMgY2FsbGVkIHdp
dGhpbgogICAgaXJxIGNvbnRleHQKCiBhcmNoL2FybS9hcm02NC9NYWtlZmlsZS51ayAgICAgICAg
ICB8ICA3ICsrLQogcGxhdC9Db25maWcudWsgICAgICAgICAgICAgICAgICAgICAgfCAgNyArKysK
IHBsYXQvY29tbW9uL2FybS90aHJlYWRfc3RhcnQ2NC5TICAgIHwgNzIgKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysKIHBsYXQvY29tbW9uL2luY2x1ZGUvYXJtL2FybTY0L2NwdS5oIHwgNDYg
KysrKysrKysrKysrKysrKystCiBwbGF0L2t2bS9MaW5rZXIudWsgICAgICAgICAgICAgICAgICB8
ICAyICsKIHBsYXQva3ZtL01ha2VmaWxlLnVrICAgICAgICAgICAgICAgIHwgMTAgKystLQogcGxh
dC9rdm0vYXJtL2VudHJ5NjQuUyAgICAgICAgICAgICAgfCAgOCArKysrCiA3IGZpbGVzIGNoYW5n
ZWQsIDE0MyBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQoKLS0gCjIuMTcuMQoKCl9fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBt
YWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlz
dHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Thu Apr 02 04:19:04 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 02 Apr 2020 04:19: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 1jJrJo-0003fC-4l; Thu, 02 Apr 2020 04:19:04 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=X1HC=5S=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1jJrJm-0003et-B3
 for minios-devel@lists.xenproject.org; Thu, 02 Apr 2020 04:19:02 +0000
X-Inumbo-ID: 130a4cd8-7499-11ea-83d8-bc764e2007e4
Received: from foss.arm.com (unknown [217.140.110.172])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTP
 id 130a4cd8-7499-11ea-83d8-bc764e2007e4;
 Thu, 02 Apr 2020 04:18:58 +0000 (UTC)
Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14])
 by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 73C9F30E;
 Wed,  1 Apr 2020 21:18:58 -0700 (PDT)
Received: from localhost.localdomain (entos-thunderx2-02.shanghai.arm.com
 [10.169.138.57])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 4CC703F71E;
 Wed,  1 Apr 2020 21:18:56 -0700 (PDT)
From: Jia He <justin.he@arm.com>
To: minios-devel@lists.xenproject.org, Simon Kuenzer <simon.kuenzer@neclab.eu>,
 Felipe Huici <felipe.huici@neclab.eu>
Date: Thu,  2 Apr 2020 12:18:28 +0800
Message-Id: <20200402041833.141738-3-justin.he@arm.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20200402041833.141738-1-justin.he@arm.com>
References: <20200402041833.141738-1-justin.he@arm.com>
Subject: [Minios-devel] [UNIKRAFT PATCH v3 2/7] build: Link libgcc at the
 end of the link options list
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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: Kaly Xin <Kaly.Xin@arm.com>, nd@arm.com, Jia He <justin.he@arm.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>

VG8gdXNlIG5ld2xpYiBvbiBhcm02NCBwbGF0IGt2bSwgbGliZ2NjIHNob3VsZCBiZSBsaW5rZWQg
YXQgdGhlIGVuZCBvZgp0aGUgb3B0aW9ucyBsaXN0LCBvdGhlcndpc2UgaXQgd2lsbCBiZSBpZ25v
cmVkIGR1ZSB0byAtc3RkbGliLgoKV2l0aG91dCB0aGlzIHBhdGNoLCB0aGVyZSB3aWxsIGJlIGEg
bGlua2luZyBlcnJvciBvbiBhcm0ga3ZtIHBsYXQ6CnN5c2xvZy5jOigudGV4dCsweDdkNWNjKTog
dW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgX19mbG9hdHNpdGYnCnN5c2xvZy5jOigudGV4dCsweDdk
NWNjKTogcmVsb2NhdGlvbiB0cnVuY2F0ZWQgdG8gZml0OiBSX0FBUkNINjRfQ0FMTDI2IGFnYWlu
c3QgdW5kZWZpbmVkIHN5bWJvbCBgX19mbG9hdHNpdGYnCi9yb290L2hqL1VLL3VuaWtyYWZ0X3Vw
c3RyZWFtL2FwcHMvaGVsbG93b3JsZC9idWlsZC9oZWxsb3dvcmxkX2t2bS1hcm02NC5vOiBJbiBm
dW5jdGlvbiBgX19pZWVlNzU0X2h5cG90bCc6CnN5c2xvZy5jOigudGV4dCsweDk5NDM0KTogdW5k
ZWZpbmVkIHJlZmVyZW5jZSB0byBgX19tdWx0ZjMnCnN5c2xvZy5jOigudGV4dCsweDk5NDM0KTog
cmVsb2NhdGlvbiB0cnVuY2F0ZWQgdG8gZml0OiBSX0FBUkNINjRfQ0FMTDI2IGFnYWluc3QgdW5k
ZWZpbmVkIHN5bWJvbCBgX19tdWx0ZjMnCnN5c2xvZy5jOigudGV4dCsweDk5NDQ0KTogdW5kZWZp
bmVkIHJlZmVyZW5jZSB0byBgX19tdWx0ZjMnCnN5c2xvZy5jOigudGV4dCsweDk5NDQ0KTogYWRk
aXRpb25hbCByZWxvY2F0aW9uIG92ZXJmbG93cyBvbWl0dGVkIGZyb20gdGhlIG91dHB1dApzeXNs
b2cuYzooLnRleHQrMHg5OTQ1MCk6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYF9fYWRkdGYzJwov
cm9vdC9oai9VSy91bmlrcmFmdF91cHN0cmVhbS9hcHBzL2hlbGxvd29ybGQvYnVpbGQvaGVsbG93
b3JsZF9rdm0tYXJtNjQubzogSW4gZnVuY3Rpb24gYHNxcnRsJzoKc3lzbG9nLmM6KC50ZXh0KzB4
YjEyYzApOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBfX3RydW5jdGZkZjInCnN5c2xvZy5jOigu
dGV4dCsweGIxMmM4KTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgX19leHRlbmRkZnRmMicKCkFi
b3ZlIHVuZGVmaW5lZCBzeW1ib2xzIGFyZSBhdCBsaWJnY2MuYQoKU2lnbmVkLW9mZi1ieTogSmlh
IEhlIDxqdXN0aW4uaGVAYXJtLmNvbT4KLS0tCiBwbGF0L2t2bS9MaW5rZXIudWsgfCAyICsrCiAx
IGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvcGxhdC9rdm0vTGlu
a2VyLnVrIGIvcGxhdC9rdm0vTGlua2VyLnVrCmluZGV4IDVlNDIxOTMuLjY1YTVmOGUgMTAwNjQ0
Ci0tLSBhL3BsYXQva3ZtL0xpbmtlci51aworKysgYi9wbGF0L2t2bS9MaW5rZXIudWsKQEAgLTIs
NiArMiw3IEBAIGlmZXEgKHg4Nl82NCwkKENPTkZJR19VS19BUkNIKSkKIEtWTV9MREZMQUdTLXkg
Kz0gLVdsLC1tLGVsZl94ODZfNjQKIGVsc2UgaWZlcSAoYXJtNjQsJChDT05GSUdfVUtfQVJDSCkp
CiBLVk1fTERGTEFHUy15CSArPSAtV2wsLW0sYWFyY2g2NGVsZgorS1ZNX0xJTktfTElCR0NDX0ZM
QUcJOj0gLWxnY2MKIGVuZGlmCiAKIApAQCAtMjYsNiArMjcsNyBAQCAkKEtWTV9ERUJVR19JTUFH
RSk6ICQoS1ZNX0FMSUJTKSAkKEtWTV9BTElCUy15KSAkKEtWTV9PTElCUykgJChLVk1fT0xJQlMt
eSkgXAogCQkJLVdsJChjb21tYSktLXN0YXJ0LWdyb3VwIFwKIAkJCSQoS1ZNX0FMSUJTKSAkKEtW
TV9BTElCUy15KSBcCiAJCQkkKFVLX0FMSUJTKSAkKFVLX0FMSUJTLXkpIFwKKwkJCSQoS1ZNX0xJ
TktfTElCR0NDX0ZMQUcpIFwKIAkJCS1XbCQoY29tbWEpLS1lbmQtZ3JvdXAgXAogCQkJLW8gJChL
Vk1fSU1BR0UpLmxkLm8pCiAJJChjYWxsIGJ1aWxkX2NtZCxPQkpDT1BZLCwkKEtWTV9JTUFHRSku
byxcCi0tIAoyLjE3LjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5w
cm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8v
bWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Thu Apr 02 04:19:04 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 02 Apr 2020 04:19: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 1jJrJo-0003fI-6C; Thu, 02 Apr 2020 04:19: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=X1HC=5S=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1jJrJm-0003ev-Gj
 for minios-devel@lists.xenproject.org; Thu, 02 Apr 2020 04:19:02 +0000
X-Inumbo-ID: 148eeaaa-7499-11ea-bb78-12813bfff9fa
Received: from foss.arm.com (unknown [217.140.110.172])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTP
 id 148eeaaa-7499-11ea-bb78-12813bfff9fa;
 Thu, 02 Apr 2020 04:19:01 +0000 (UTC)
Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14])
 by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id F2A06101E;
 Wed,  1 Apr 2020 21:19:00 -0700 (PDT)
Received: from localhost.localdomain (entos-thunderx2-02.shanghai.arm.com
 [10.169.138.57])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id E9BBC3F71E;
 Wed,  1 Apr 2020 21:18:58 -0700 (PDT)
From: Jia He <justin.he@arm.com>
To: minios-devel@lists.xenproject.org, Simon Kuenzer <simon.kuenzer@neclab.eu>,
 Felipe Huici <felipe.huici@neclab.eu>
Date: Thu,  2 Apr 2020 12:18:29 +0800
Message-Id: <20200402041833.141738-4-justin.he@arm.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20200402041833.141738-1-justin.he@arm.com>
References: <20200402041833.141738-1-justin.he@arm.com>
Subject: [Minios-devel] [UNIKRAFT PATCH v3 3/7] plat/kvm: arm64: Enable the
 fp/simd at the starting point
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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: Kaly Xin <Kaly.Xin@arm.com>, nd@arm.com, Jia He <justin.he@arm.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>

V3JpdGUgdGhlIHN5cyByZWcgdG8gZW5hYmxlIHRoZSBmcC9zaW1kIGZlYXR1cmUsIG90aGVyd2lz
ZSBpdCB3aWxsCmNhdXNlIGZsb2F0aW5nIHBvaW50L3NpbWQgZXhjZXB0aW9uIHdoZW4gdG91Y2hp
bmcgcTAtcTMxLgoKU2lnbmVkLW9mZi1ieTogSmlhIEhlIDxqdXN0aW4uaGVAYXJtLmNvbT4KLS0t
CiBwbGF0L2t2bS9hcm0vZW50cnk2NC5TIHwgOCArKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDgg
aW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL3BsYXQva3ZtL2FybS9lbnRyeTY0LlMgYi9wbGF0
L2t2bS9hcm0vZW50cnk2NC5TCmluZGV4IDM1OWEzMTAuLjFlMzIyNjggMTAwNjQ0Ci0tLSBhL3Bs
YXQva3ZtL2FybS9lbnRyeTY0LlMKKysrIGIvcGxhdC9rdm0vYXJtL2VudHJ5NjQuUwpAQCAtMzYs
NiArMzYsNyBAQAogI2luY2x1ZGUgPGt2bS1hcm0vbW0uaD4KICNpbmNsdWRlIDxhcm0vY3B1X2Rl
ZnMuaD4KICNpbmNsdWRlIDx1ay9wbGF0L2NvbW1vbi9zZWN0aW9ucy5oPgorI2luY2x1ZGUgPHVr
L2NvbmZpZy5oPgogCiAuZ2xvYmFsIHBhZ2VfdGFibGVfc2l6ZQogLmRhdGEKQEAgLTQ5LDYgKzUw
LDEzIEBAIHBhZ2VfdGFibGVfc2l6ZToKIAogLnRleHQKIEVOVFJZKF9saWJrdm1wbGF0X2VudHJ5
KQorI2lmZGVmIENPTkZJR19GTE9BVF9QT0lOVAorCS8qIEVuYWJsZSBmcC9zaW1kIHN1cHBvcnQg
Ki8KKwlsZHIgICAgICAgIHgwLCA9KDMgPDwgMjApCisJbXNyICAgICAgICBjcGFjcl9lbDEsIHgw
CisJaXNiCisjZW5kaWYKKwogCS8qIENhbGN1bGF0ZSB0aGUgaW1hZ2Ugc2l6ZSAqLwogCWxkciB4
MjUsID1fZHRiCiAJbGRyIHgyNiwgPV9lbmQKLS0gCjIuMTcuMQoKCl9fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QK
TWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVj
dC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Thu Apr 02 04:19:09 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 02 Apr 2020 04:19: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 1jJrJt-0003h4-9M; Thu, 02 Apr 2020 04:19: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=X1HC=5S=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1jJrJr-0003gX-Hp
 for minios-devel@lists.xenproject.org; Thu, 02 Apr 2020 04:19:07 +0000
X-Inumbo-ID: 17d0d1ce-7499-11ea-bb78-12813bfff9fa
Received: from foss.arm.com (unknown [217.140.110.172])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTP
 id 17d0d1ce-7499-11ea-bb78-12813bfff9fa;
 Thu, 02 Apr 2020 04:19:06 +0000 (UTC)
Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14])
 by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 74178101E;
 Wed,  1 Apr 2020 21:19:06 -0700 (PDT)
Received: from localhost.localdomain (entos-thunderx2-02.shanghai.arm.com
 [10.169.138.57])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 000433F71E;
 Wed,  1 Apr 2020 21:19:03 -0700 (PDT)
From: Jia He <justin.he@arm.com>
To: minios-devel@lists.xenproject.org, Simon Kuenzer <simon.kuenzer@neclab.eu>,
 Felipe Huici <felipe.huici@neclab.eu>
Date: Thu,  2 Apr 2020 12:18:31 +0800
Message-Id: <20200402041833.141738-6-justin.he@arm.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20200402041833.141738-1-justin.he@arm.com>
References: <20200402041833.141738-1-justin.he@arm.com>
Subject: [Minios-devel] [UNIKRAFT PATCH v3 5/7] arch/arm64: Don't pass
 -mgeneral-regs-only when CONFIG_FLOAT_POINT is y
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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: Kaly Xin <Kaly.Xin@arm.com>, nd@arm.com, Jia He <justin.he@arm.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>

U3VwcG9ydCBDT05GSUdfRkxPQVRfUE9JTlQgaW4gVW5pa3JhZnQgYXBwIHdpbGwgdGFrZSBzb21l
IG92ZXJoZWFkIGR1cmluZwpjb250ZXh0IHN3aXRjaC4gSGVuY2Ugc3RpbGwgdXNlIC1tZ2VuZXJh
bC1yZWdzLW9ubHkgd2hlbgpDT05GSUdfRkxPQVRfUE9JTlQgaXMgJ24nCgpTaWduZWQtb2ZmLWJ5
OiBKaWEgSGUgPGp1c3Rpbi5oZUBhcm0uY29tPgotLS0KIGFyY2gvYXJtL2FybTY0L01ha2VmaWxl
LnVrIHwgNSArKysrKwogMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdp
dCBhL2FyY2gvYXJtL2FybTY0L01ha2VmaWxlLnVrIGIvYXJjaC9hcm0vYXJtNjQvTWFrZWZpbGUu
dWsKaW5kZXggNzdlNTIwNC4uYWY2NDMyYyAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vYXJtNjQvTWFr
ZWZpbGUudWsKKysrIGIvYXJjaC9hcm0vYXJtNjQvTWFrZWZpbGUudWsKQEAgLTMsNyArMywxMiBA
QAogIyB3ZSBzaG91bGQgbm90IGVuYWJsZSB0aGUgRlAgJiBTSU1EIGFjY2VzcyBmb3Iga2VybmVs
LiBBcyBHQ0Mgd2lsbAogIyB0aGUgRlAgJiBTSU1EIHJlZ2lzdGVycyB0byBwYXNzIHBhcmFtZXRl
cnMsIHdlIHVzZSAtbWdlbmVyYWwtcmVncy1vbmx5CiAjIGZsYWcgdG8gZm9yY2UgR0NDIHRvIHVz
ZSBnZW5lcmljIHJlZ2lzdGVycworaWZlcSAoJChDT05GSUdfRkxPQVRfUE9JTlQpLHkpCitBUkNI
RkxBR1MgICAgICs9IC1EX19BUk1fNjRfXworZWxzZQogQVJDSEZMQUdTICAgICArPSAtRF9fQVJN
XzY0X18gLW1nZW5lcmFsLXJlZ3Mtb25seQorZW5kaWYKKwogSVNSX0FSQ0hGTEFHUyArPSAtRF9f
QVJNXzY0X18gLW1nZW5lcmFsLXJlZ3Mtb25seQogCiAjIERpc2FibGUgRlBVIGZvciB0cmFwL2V4
Y2VwdGlvbi9pbnRlcnJ1cHQgaGFuZGxlcnMKLS0gCjIuMTcuMQoKCl9fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QK
TWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVj
dC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Thu Apr 02 04:19:09 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 02 Apr 2020 04:19: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 1jJrJt-0003gx-7u; Thu, 02 Apr 2020 04:19:09 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=X1HC=5S=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1jJrJr-0003gP-BC
 for minios-devel@lists.xenproject.org; Thu, 02 Apr 2020 04:19:07 +0000
X-Inumbo-ID: 15fd0f70-7499-11ea-b4f4-bc764e2007e4
Received: from foss.arm.com (unknown [217.140.110.172])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTP
 id 15fd0f70-7499-11ea-b4f4-bc764e2007e4;
 Thu, 02 Apr 2020 04:19:03 +0000 (UTC)
Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14])
 by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 78F06101E;
 Wed,  1 Apr 2020 21:19:03 -0700 (PDT)
Received: from localhost.localdomain (entos-thunderx2-02.shanghai.arm.com
 [10.169.138.57])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 6A16B3F71E;
 Wed,  1 Apr 2020 21:19:01 -0700 (PDT)
From: Jia He <justin.he@arm.com>
To: minios-devel@lists.xenproject.org, Simon Kuenzer <simon.kuenzer@neclab.eu>,
 Felipe Huici <felipe.huici@neclab.eu>
Date: Thu,  2 Apr 2020 12:18:30 +0800
Message-Id: <20200402041833.141738-5-justin.he@arm.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20200402041833.141738-1-justin.he@arm.com>
References: <20200402041833.141738-1-justin.he@arm.com>
Subject: [Minios-devel] [UNIKRAFT PATCH v3 4/7] plat/arm: Support fp/simd
 save/restore during context switch
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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: Kaly Xin <Kaly.Xin@arm.com>, nd@arm.com, Jia He <justin.he@arm.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>

RmxvYXRpbmcgcG9pbnQgZmVhdHVyZSBpcyB1c2VmdWwgZm9yIHNvbWUgYXBwbGljYXRpb25zLiBX
ZSBzaG91bGQKc2F2ZS9yZXN0b3JlIGZwIHJlZ2lzdGVycyBkdXJpbmcgY29udGV4dCBzd2l0Y2gu
CgpTaWduZWQtb2ZmLWJ5OiBKaWEgSGUgPGp1c3Rpbi5oZUBhcm0uY29tPgotLS0KIHBsYXQvY29t
bW9uL2FybS90aHJlYWRfc3RhcnQ2NC5TICAgIHwgNzIgKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysKIHBsYXQvY29tbW9uL2luY2x1ZGUvYXJtL2FybTY0L2NwdS5oIHwgNDYgKysrKysrKysr
KysrKysrKystCiAyIGZpbGVzIGNoYW5nZWQsIDExNiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9u
cygtKQoKZGlmZiAtLWdpdCBhL3BsYXQvY29tbW9uL2FybS90aHJlYWRfc3RhcnQ2NC5TIGIvcGxh
dC9jb21tb24vYXJtL3RocmVhZF9zdGFydDY0LlMKaW5kZXggOWE4MGY2Mi4uNDk1MDQwYyAxMDA2
NDQKLS0tIGEvcGxhdC9jb21tb24vYXJtL3RocmVhZF9zdGFydDY0LlMKKysrIGIvcGxhdC9jb21t
b24vYXJtL3RocmVhZF9zdGFydDY0LlMKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlIDx1ay9w
bGF0L2NvbW1vbi9zd19jdHguaD4KICNpbmNsdWRlIDx1ay9hcmNoL2xjcHUuaD4KICNpbmNsdWRl
IDx1ay9hc20uaD4KKyNpbmNsdWRlIDx1ay9jb25maWcuaD4KIAogLyoKICAqIFRocmVhZCBzdGFj
ayBtZW1vcnkgbGF5b3V0OgpAQCAtMTIxLDMgKzEyMiw3NCBAQCByZXN0b3JlX3BvaW50OgogCWFk
ZCBzcCwgeDIsICNfX0NBTExFRV9TQVZFRF9TSVpFCiAJcmV0CiBFTkRQUk9DKGFzbV9zd19jdHhf
c3dpdGNoKQorCisjaWZkZWYgQ09ORklHX0ZMT0FUX1BPSU5UCisvKgorICogU2F2ZSB0aGUgRlAg
cmVnaXN0ZXJzLgorICoKKyAqIHgwIC0gcG9pbnRlciB0byBzdHJ1Y3QgZnBzaW1kX3N0YXRlCisg
Ki8KK0VOVFJZKGZwc2ltZF9zYXZlX3N0YXRlKQorCXN0cAlxMCwgcTEsIFt4MCwgIzE2ICogMF0K
KwlzdHAJcTIsIHEzLCBbeDAsICMxNiAqIDJdCisJc3RwCXE0LCBxNSwgW3gwLCAjMTYgKiA0XQor
CXN0cAlxNiwgcTcsIFt4MCwgIzE2ICogNl0KKwlzdHAJcTgsIHE5LCBbeDAsICMxNiAqIDhdCisJ
c3RwCXExMCwgcTExLCBbeDAsICMxNiAqIDEwXQorCXN0cAlxMTIsIHExMywgW3gwLCAjMTYgKiAx
Ml0KKwlzdHAJcTE0LCBxMTUsIFt4MCwgIzE2ICogMTRdCisJc3RwCXExNiwgcTE3LCBbeDAsICMx
NiAqIDE2XQorCXN0cAlxMTgsIHExOSwgW3gwLCAjMTYgKiAxOF0KKwlzdHAJcTIwLCBxMjEsIFt4
MCwgIzE2ICogMjBdCisJc3RwCXEyMiwgcTIzLCBbeDAsICMxNiAqIDIyXQorCXN0cAlxMjQsIHEy
NSwgW3gwLCAjMTYgKiAyNF0KKwlzdHAJcTI2LCBxMjcsIFt4MCwgIzE2ICogMjZdCisJc3RwCXEy
OCwgcTI5LCBbeDAsICMxNiAqIDI4XQorCXN0cAlxMzAsIHEzMSwgW3gwLCAjMTYgKiAzMF0hCisJ
bXJzCXg4LCBmcHNyCisJc3RyCXc4LCBbeDAsICMxNiAqIDJdCisJbXJzCXg4LCBmcGNyCisJc3Ry
CXc4LCBbeDAsICMxNiAqIDIgKyA0XQorCisJcmV0CitFTkRQUk9DKGZwc2ltZF9zYXZlX3N0YXRl
KQorCisvKgorICogTG9hZCB0aGUgRlAgcmVnaXN0ZXJzLgorICoKKyAqIHgwIC0gcG9pbnRlciB0
byBzdHJ1Y3QgZnBzaW1kX3N0YXRlCisgKi8KK0VOVFJZKGZwc2ltZF9yZXN0b3JlX3N0YXRlKQor
CWxkcAlxMCwgcTEsIFt4MCwgIzE2ICogMF0KKwlsZHAJcTIsIHEzLCBbeDAsICMxNiAqIDJdCisJ
bGRwCXE0LCBxNSwgW3gwLCAjMTYgKiA0XQorCWxkcAlxNiwgcTcsIFt4MCwgIzE2ICogNl0KKwls
ZHAJcTgsIHE5LCBbeDAsICMxNiAqIDhdCisJbGRwCXExMCwgcTExLCBbeDAsICMxNiAqIDEwXQor
CWxkcAlxMTIsIHExMywgW3gwLCAjMTYgKiAxMl0KKwlsZHAJcTE0LCBxMTUsIFt4MCwgIzE2ICog
MTRdCisJbGRwCXExNiwgcTE3LCBbeDAsICMxNiAqIDE2XQorCWxkcAlxMTgsIHExOSwgW3gwLCAj
MTYgKiAxOF0KKwlsZHAJcTIwLCBxMjEsIFt4MCwgIzE2ICogMjBdCisJbGRwCXEyMiwgcTIzLCBb
eDAsICMxNiAqIDIyXQorCWxkcAlxMjQsIHEyNSwgW3gwLCAjMTYgKiAyNF0KKwlsZHAJcTI2LCBx
MjcsIFt4MCwgIzE2ICogMjZdCisJbGRwCXEyOCwgcTI5LCBbeDAsICMxNiAqIDI4XQorCWxkcAlx
MzAsIHEzMSwgW3gwLCAjMTYgKiAzMF0hCisJbGRyCXc4LCBbeDAsICMxNiAqIDJdCisJbXNyCWZw
c3IsIHg4CisJbGRyCXc4LCBbeDAsICMxNiAqIDIgKyA0XQorCisJLyoKKwkgKiBXcml0ZXMgdG8g
ZnBjciBtYXkgYmUgc2VsZi1zeW5jaHJvbmlzaW5nLCBzbyBhdm9pZCByZXN0b3JpbmcKKwkgKiB0
aGUgcmVnaXN0ZXIgaWYgaXQgaGFzbid0IGNoYW5nZWQuCisJICovCisJbXJzCXgwLCBmcGNyCisJ
Y21wCXgwLCB4OAorCWIuZXEJOTk5OWYKKwltc3IJZnBjciwgeDgKKworOTk5OToKKwlyZXQKK0VO
RFBST0MoZnBzaW1kX3Jlc3RvcmVfc3RhdGUpCisjZW5kaWYgLyogQ09ORklHX0ZMT0FUX1BPSU5U
KSAqLwpkaWZmIC0tZ2l0IGEvcGxhdC9jb21tb24vaW5jbHVkZS9hcm0vYXJtNjQvY3B1LmggYi9w
bGF0L2NvbW1vbi9pbmNsdWRlL2FybS9hcm02NC9jcHUuaAppbmRleCAxMjI3MjdhLi43MTA5MGIy
IDEwMDY0NAotLS0gYS9wbGF0L2NvbW1vbi9pbmNsdWRlL2FybS9hcm02NC9jcHUuaAorKysgYi9w
bGF0L2NvbW1vbi9pbmNsdWRlL2FybS9hcm02NC9jcHUuaApAQCAtMTE2LDYgKzExNiw0NyBAQCB2
b2lkIGhhbHQodm9pZCk7CiB2b2lkIHJlc2V0KHZvaWQpOwogdm9pZCBzeXN0ZW1fb2ZmKHZvaWQp
OwogCisjaWZkZWYgQ09ORklHX0ZMT0FUX1BPSU5UCitzdHJ1Y3QgdXNlcl9mcHNpbWRfc3RhdGUg
eworCV9fdTY0CQl2cmVnc1szMiAqIDJdOworCV9fdTMyCQlmcHNyOworCV9fdTMyCQlmcGNyOwor
CV9fdTMyCQlfX3Jlc2VydmVkWzJdOworfTsKKworZXh0ZXJuIHZvaWQgZnBzaW1kX3NhdmVfc3Rh
dGUodWludHB0cl90IHB0cik7CitleHRlcm4gdm9pZCBmcHNpbWRfcmVzdG9yZV9zdGF0ZSh1aW50
cHRyX3QgcHRyKTsKKworc3RhdGljIGlubGluZSB2b2lkIHNhdmVfZXh0cmVncyhzdHJ1Y3Qgc3df
Y3R4ICpjdHgpCit7CisJZnBzaW1kX3NhdmVfc3RhdGUoY3R4LT5leHRyZWdzKTsKK30KKworc3Rh
dGljIGlubGluZSB2b2lkIHJlc3RvcmVfZXh0cmVncyhzdHJ1Y3Qgc3dfY3R4ICpjdHgpCit7CisJ
ZnBzaW1kX3Jlc3RvcmVfc3RhdGUoY3R4LT5leHRyZWdzKTsKK30KKworc3RhdGljIGlubGluZSBz
dHJ1Y3Qgc3dfY3R4ICphcmNoX2FsbG9jX3N3X2N0eChzdHJ1Y3QgdWtfYWxsb2MgKmFsbG9jYXRv
cikKK3sKKwlzdHJ1Y3Qgc3dfY3R4ICpjdHg7CisKKwljdHggPSAoc3RydWN0IHN3X2N0eCAqKXVr
X21hbGxvYyhhbGxvY2F0b3IsIHNpemVvZihzdHJ1Y3Qgc3dfY3R4KSk7CisJaWYgKGN0eCkKKwkJ
Y3R4LT5leHRyZWdzID0gKHVpbnRwdHJfdCl1a19tYWxsb2MoYWxsb2NhdG9yLAorCQkJCQlzaXpl
b2Yoc3RydWN0IHVzZXJfZnBzaW1kX3N0YXRlKSk7CisKKwl1a19wcl9kZWJ1ZygiQWxsb2NhdGlu
ZyAlbHUgYnl0ZXMgZm9yIHN3IGN0eCBhdCAlcCwgZXh0cmVncyBhdCAlcFxuIiwKKwkJCXNpemVv
ZihzdHJ1Y3Qgc3dfY3R4KSwgY3R4LCAodm9pZCAqKWN0eC0+ZXh0cmVncyk7CisKKwlyZXR1cm4g
Y3R4OworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgYXJjaF9pbml0X2V4dHJlZ3Moc3RydWN0IHN3
X2N0eCAqY3R4IF9fdW51c2VkKQoreworfQorCisjZWxzZSAvKiAhQ09ORklHX0ZMT0FUX1BPSU5U
ICovCiBzdGF0aWMgaW5saW5lIHZvaWQgc2F2ZV9leHRyZWdzKHN0cnVjdCBzd19jdHggKmN0eCBf
X3VudXNlZCkKIHsKIH0KQEAgLTEyOCw5ICsxNjksOSBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBz
d19jdHggKmFyY2hfYWxsb2Nfc3dfY3R4KHN0cnVjdCB1a19hbGxvYyAqYWxsb2NhdG9yKQogewog
CXN0cnVjdCBzd19jdHggKmN0eDsKIAotCWN0eCA9IHVrX21hbGxvYyhhbGxvY2F0b3IsIHNpemVv
ZihzdHJ1Y3Qgc3dfY3R4KSk7CisJY3R4ID0gKHN0cnVjdCBzd19jdHggKil1a19tYWxsb2MoYWxs
b2NhdG9yLCBzaXplb2Yoc3RydWN0IHN3X2N0eCkpOwogCXVrX3ByX2RlYnVnKCJBbGxvY2F0aW5n
ICVsdSBieXRlcyBmb3Igc3cgY3R4IGF0ICVwXG4iLAotCQkgICBzaXplb2Yoc3RydWN0IHN3X2N0
eCksIGN0eCk7CisJCXNpemVvZihzdHJ1Y3Qgc3dfY3R4KSwgY3R4KTsKIAogCXJldHVybiBjdHg7
CiB9CkBAIC0xNDAsNCArMTgxLDUgQEAgc3RhdGljIGlubGluZSB2b2lkIGFyY2hfaW5pdF9leHRy
ZWdzKHN0cnVjdCBzd19jdHggKmN0eCkKIAljdHgtPmV4dHJlZ3MgPSAodWludHB0cl90KWN0eCAr
IHNpemVvZihzdHJ1Y3Qgc3dfY3R4KTsKIH0KIAorI2VuZGlmIC8qIENPTkZJR19GTE9BVF9QT0lO
VCAqLwogI2VuZGlmIC8qIF9fUExBVF9DT01NT05fQVJNNjRfQ1BVX0hfXyAqLwotLSAKMi4xNy4x
CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9z
LWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0
cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Thu Apr 02 04:19:14 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 02 Apr 2020 04:19: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 1jJrJy-0003ij-BA; Thu, 02 Apr 2020 04:19:14 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=X1HC=5S=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1jJrJw-0003iE-By
 for minios-devel@lists.xenproject.org; Thu, 02 Apr 2020 04:19:12 +0000
X-Inumbo-ID: 19d5ca38-7499-11ea-b58d-bc764e2007e4
Received: from foss.arm.com (unknown [217.140.110.172])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTP
 id 19d5ca38-7499-11ea-b58d-bc764e2007e4;
 Thu, 02 Apr 2020 04:19:10 +0000 (UTC)
Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14])
 by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id D70DD11FB;
 Wed,  1 Apr 2020 21:19:09 -0700 (PDT)
Received: from localhost.localdomain (entos-thunderx2-02.shanghai.arm.com
 [10.169.138.57])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 06BD73F71E;
 Wed,  1 Apr 2020 21:19:06 -0700 (PDT)
From: Jia He <justin.he@arm.com>
To: minios-devel@lists.xenproject.org, Simon Kuenzer <simon.kuenzer@neclab.eu>,
 Felipe Huici <felipe.huici@neclab.eu>
Date: Thu,  2 Apr 2020 12:18:32 +0800
Message-Id: <20200402041833.141738-7-justin.he@arm.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20200402041833.141738-1-justin.he@arm.com>
References: <20200402041833.141738-1-justin.he@arm.com>
Subject: [Minios-devel] [UNIKRAFT PATCH v3 6/7] arch/arm64: Fix -mfpu=none
 when not supporting fpsimd
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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: Kaly Xin <Kaly.Xin@arm.com>, nd@arm.com, Jia He <justin.he@arm.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>

VGhlcmUgaXMgbm8gLW1mcHU9bm9uZSBjb21waWxhdGlvbiBmbGFnIGZvciBnY2Mgb24gYXJtLiBU
eXBpY2FsbHkgd2UKZG9uJ3QgZGlzYWJsZSBodyBzdXBwb3J0IGZvciBmcCwgbWVyZWx5IHVzaW5n
IC1tZ2VuZXJhbC1yZWdzLW9ubHkgdG8KY2hlY2sgaXQgZHVyaW5nIGNvbXBpbGF0aW9uLgoKU2ln
bmVkLW9mZi1ieTogSmlhIEhlIDxqdXN0aW4uaGVAYXJtLmNvbT4KLS0tCiBhcmNoL2FybS9hcm02
NC9NYWtlZmlsZS51ayB8IDQgKy0tLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAz
IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2FybTY0L01ha2VmaWxlLnVrIGIv
YXJjaC9hcm0vYXJtNjQvTWFrZWZpbGUudWsKaW5kZXggYWY2NDMyYy4uZjc3YjZkZiAxMDA2NDQK
LS0tIGEvYXJjaC9hcm0vYXJtNjQvTWFrZWZpbGUudWsKKysrIGIvYXJjaC9hcm0vYXJtNjQvTWFr
ZWZpbGUudWsKQEAgLTksMTAgKzksOCBAQCBlbHNlCiBBUkNIRkxBR1MgICAgICs9IC1EX19BUk1f
NjRfXyAtbWdlbmVyYWwtcmVncy1vbmx5CiBlbmRpZgogCi1JU1JfQVJDSEZMQUdTICs9IC1EX19B
Uk1fNjRfXyAtbWdlbmVyYWwtcmVncy1vbmx5Ci0KICMgRGlzYWJsZSBGUFUgZm9yIHRyYXAvZXhj
ZXB0aW9uL2ludGVycnVwdCBoYW5kbGVycwotSVNSX0FSQ0hGTEFHUyArPSAtbWZwdT1ub25lCitJ
U1JfQVJDSEZMQUdTICs9IC1EX19BUk1fNjRfXyAtbWdlbmVyYWwtcmVncy1vbmx5CiAKIENJTkNM
VURFUyAgICs9IC1JJChDT05GSUdfVUtfQkFTRSkvYXJjaC9hcm0vYXJtNjQvaW5jbHVkZQogQVNJ
TkNMVURFUyAgKz0gLUkkKENPTkZJR19VS19CQVNFKS9hcmNoL2FybS9hcm02NC9pbmNsdWRlCi0t
IAoyLjE3LjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
XwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0
Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9z
LWRldmVs

From minios-devel-bounces@lists.xenproject.org Thu Apr 02 04:19:19 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 02 Apr 2020 04:19: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 1jJrK3-0003jw-Cf; Thu, 02 Apr 2020 04:19:19 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=X1HC=5S=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1jJrK1-0003ja-CP
 for minios-devel@lists.xenproject.org; Thu, 02 Apr 2020 04:19:17 +0000
X-Inumbo-ID: 1b927fa6-7499-11ea-9e09-bc764e2007e4
Received: from foss.arm.com (unknown [217.140.110.172])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTP
 id 1b927fa6-7499-11ea-9e09-bc764e2007e4;
 Thu, 02 Apr 2020 04:19:13 +0000 (UTC)
Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14])
 by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id BC76111FB;
 Wed,  1 Apr 2020 21:19:12 -0700 (PDT)
Received: from localhost.localdomain (entos-thunderx2-02.shanghai.arm.com
 [10.169.138.57])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 737E83F71E;
 Wed,  1 Apr 2020 21:19:10 -0700 (PDT)
From: Jia He <justin.he@arm.com>
To: minios-devel@lists.xenproject.org, Simon Kuenzer <simon.kuenzer@neclab.eu>,
 Felipe Huici <felipe.huici@neclab.eu>
Date: Thu,  2 Apr 2020 12:18:33 +0800
Message-Id: <20200402041833.141738-8-justin.he@arm.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20200402041833.141738-1-justin.he@arm.com>
References: <20200402041833.141738-1-justin.he@arm.com>
Subject: [Minios-devel] [UNIKRAFT PATCH v3 7/7] build: Add 'isr' variant for
 arm64 kvm plat source files called within irq context
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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: Kaly Xin <Kaly.Xin@arm.com>, nd@arm.com, Jia He <justin.he@arm.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>

J2lzcicgdmFyaWFudCBpcyB0byBiZSBjYWxsZWQgd2l0aGluIGludGVycnVwdCBzYWZlIGNvbnRl
eHQuIFR5cGljYWxseSwKdHJhcHMvZXhjZXB0aW9uL2NvbnRleHQtc3dpdGNoIG5lZWQgdG8gYmUg
YWRkZWQgdGhpcyB2YXJpYW50LgpPbiBhcm0sIC1tZ2VuZXJhbC1yZWdzLW9ubHkgaXMgcGFzc2Vk
IHRvIGZvcmJpZCB0aGUgY29tcGlsZXIgdG8gdXNlIGVuaGFuY2VkCkNQVSBmdW5jdGlvbnMgdGhh
dCBhcmUgbm90IHNhdmVkIHdpdGhpbiBpbnRlcnJ1cHQgY29udGV4dCAoZS5nLiwgZmxvYXRpbmcK
cG9pbnQgdW5pdHMsIHZlY3RvciB1bml0cykuCgpTaWduZWQtb2ZmLWJ5OiBKaWEgSGUgPGp1c3Rp
bi5oZUBhcm0uY29tPgotLS0KIHBsYXQva3ZtL01ha2VmaWxlLnVrIHwgMTAgKysrKystLS0tLQog
MSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1n
aXQgYS9wbGF0L2t2bS9NYWtlZmlsZS51ayBiL3BsYXQva3ZtL01ha2VmaWxlLnVrCmluZGV4IGE2
ZDZmNWUuLjI2MDk0MGEgMTAwNjQ0Ci0tLSBhL3BsYXQva3ZtL01ha2VmaWxlLnVrCisrKyBiL3Bs
YXQva3ZtL01ha2VmaWxlLnVrCkBAIC04MiwxNiArODIsMTYgQEAgTElCS1ZNUExBVF9TUkNTLSQo
Q09ORklHX0FSQ0hfQVJNXzY0KSArPSAkKFVLX1BMQVRfQ09NTU9OX0JBU0UpL2FybS9jYWNoZTY0
LlN8Y28KIExJQktWTVBMQVRfU1JDUy0kKENPTkZJR19BUkNIX0FSTV82NCkgKz0gJChVS19QTEFU
X0NPTU1PTl9CQVNFKS9hcm0vcHNjaV9hcm02NC5TfGNvbW1vbgogTElCS1ZNUExBVF9TUkNTLSQo
Q09ORklHX0FSQ0hfQVJNXzY0KSArPSAkKFVLX1BMQVRfQ09NTU9OX0JBU0UpL2FybS90aW1lLmN8
Y29tbW9uCiBMSUJLVk1QTEFUX1NSQ1MtJChDT05GSUdfQVJDSF9BUk1fNjQpICs9ICQoVUtfUExB
VF9DT01NT05fQkFTRSkvYXJtL2dlbmVyaWNfdGltZXIuY3xjb21tb24KLUxJQktWTVBMQVRfU1JD
Uy0kKENPTkZJR19BUkNIX0FSTV82NCkgKz0gJChVS19QTEFUX0NPTU1PTl9CQVNFKS9hcm0vdHJh
cHMuY3xjb21tb24KK0xJQktWTVBMQVRfU1JDUy0kKENPTkZJR19BUkNIX0FSTV82NCkgKz0gJChV
S19QTEFUX0NPTU1PTl9CQVNFKS9hcm0vdHJhcHMuY3xpc3IKIGlmZXEgKCQoQ09ORklHX0hBVkVf
U0NIRUQpLHkpCi1MSUJLVk1QTEFUX1NSQ1MtJChDT05GSUdfQVJDSF9BUk1fNjQpICs9ICQoVUtf
UExBVF9DT01NT05fQkFTRSkvYXJtL3RocmVhZF9zdGFydDY0LlN8Y29tbW9uCitMSUJLVk1QTEFU
X1NSQ1MtJChDT05GSUdfQVJDSF9BUk1fNjQpICs9ICQoVUtfUExBVF9DT01NT05fQkFTRSkvYXJt
L3RocmVhZF9zdGFydDY0LlN8aXNyCiBMSUJLVk1QTEFUX1NSQ1MtJChDT05GSUdfQVJDSF9BUk1f
NjQpICs9ICQoVUtfUExBVF9DT01NT05fQkFTRSkvdGhyZWFkLmN8Y29tbW9uCiBMSUJLVk1QTEFU
X1NSQ1MtJChDT05GSUdfQVJDSF9BUk1fNjQpICs9ICQoVUtfUExBVF9DT01NT05fQkFTRSkvc3df
Y3R4LmN8Y29tbW9uCiBlbmRpZgogTElCS1ZNUExBVF9TUkNTLSQoQ09ORklHX0FSQ0hfQVJNXzY0
KSArPSAkKExJQktWTVBMQVRfQkFTRSkvYXJtL21lbW9yeS5jfGFybQotTElCS1ZNUExBVF9TUkNT
LSQoQ09ORklHX0FSQ0hfQVJNXzY0KSArPSAkKExJQktWTVBMQVRfQkFTRSkvYXJtL2VudHJ5NjQu
UwotTElCS1ZNUExBVF9TUkNTLSQoQ09ORklHX0FSQ0hfQVJNXzY0KSArPSAkKExJQktWTVBMQVRf
QkFTRSkvYXJtL2V4Y2VwdGlvbnMuUwotTElCS1ZNUExBVF9TUkNTLSQoQ09ORklHX0FSQ0hfQVJN
XzY0KSArPSAkKExJQktWTVBMQVRfQkFTRSkvYXJtL3BhZ2V0YWJsZTY0LlMKK0xJQktWTVBMQVRf
U1JDUy0kKENPTkZJR19BUkNIX0FSTV82NCkgKz0gJChMSUJLVk1QTEFUX0JBU0UpL2FybS9lbnRy
eTY0LlN8aXNyCitMSUJLVk1QTEFUX1NSQ1MtJChDT05GSUdfQVJDSF9BUk1fNjQpICs9ICQoTElC
S1ZNUExBVF9CQVNFKS9hcm0vZXhjZXB0aW9ucy5TfGlzcgorTElCS1ZNUExBVF9TUkNTLSQoQ09O
RklHX0FSQ0hfQVJNXzY0KSArPSAkKExJQktWTVBMQVRfQkFTRSkvYXJtL3BhZ2V0YWJsZTY0LlN8
aXNyCiBMSUJLVk1QTEFUX1NSQ1MtJChDT05GSUdfQVJDSF9BUk1fNjQpICs9ICQoTElCS1ZNUExB
VF9CQVNFKS9hcm0vc2V0dXAuYwogTElCS1ZNUExBVF9TUkNTLSQoQ09ORklHX0FSQ0hfQVJNXzY0
KSArPSAkKExJQktWTVBMQVRfQkFTRSkvYXJtL2xjcHUuYwogTElCS1ZNUExBVF9TUkNTLSQoQ09O
RklHX0FSQ0hfQVJNXzY0KSArPSAkKExJQktWTVBMQVRfQkFTRSkvYXJtL2ludGN0cmwuYwotLSAK
Mi4xNy4xCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
TWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5v
cmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1k
ZXZlbA==

From minios-devel-bounces@lists.xenproject.org Thu Apr 02 08:42:41 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 02 Apr 2020 08: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 1jJvQu-0001Za-1z; Thu, 02 Apr 2020 08:42:40 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=6nih=5R=gmail.com=razvand@srs-us1.protection.inumbo.net>)
 id 1jJThS-0005rS-2h
 for minios-devel@lists.xen.org; Wed, 01 Apr 2020 03:05:54 +0000
X-Inumbo-ID: b22aa166-73c5-11ea-b4f4-bc764e2007e4
Received: from mail-wr1-f52.google.com (unknown [209.85.221.52])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id b22aa166-73c5-11ea-b4f4-bc764e2007e4;
 Wed, 01 Apr 2020 03:05:52 +0000 (UTC)
Received: by mail-wr1-f52.google.com with SMTP id j17so28695844wru.13
 for <minios-devel@lists.xen.org>; Tue, 31 Mar 2020 20:05:52 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:mime-version:references:in-reply-to:from:date
 :message-id:subject:to:cc;
 bh=u5VaXRFKnpAKE+m0EAVM1ChEg2y0gIscVLIgrJLYuYs=;
 b=boI+Q0f4gUMKpbO91b9E5IVRCzNyptCm+AE4YAqrKchodDSjdCVsW0f5qX2YLwuKN1
 PN6jXBLiGjUFIRU8ctChFjLzI3xmqrhMNIBMK0l3OmgGRBFJpJ65vl7183P8Bon+ws9s
 jPG4gS9lHeUBjAnO0LYpfmvDXZjtMNoslcf4CQohFQ4njbJGkggKlUzFCBPFmEVACXVX
 qklylQ9iKG8Xo84e+PFp/cuG8uk4zEEa7/hddUEBtfAjp4VOJmHsAMdYA7Sm9EyFBvgO
 xERrQ45oK05qthtcIQTMtpLQ7ttRabDmds9outt2lYuPimBrW/yddA4ffKWFmYfggDtO
 lJ5A==
X-Gm-Message-State: ANhLgQ3+YxZRukp0lnss3kPPfeS66/WfQR+dmaAZWsGJMn9F5XcaqWzm
 3o83HdHChvuKxHSD5w2OSYN9ZvWKqtVokSLxNLrdmCFI
X-Google-Smtp-Source: ADFU+vviTx1Es3sLK3nPGdM+Wv5Lox9m1WT8u+G8A098S1VzdpzEmDzTnvF9B02CabZdwCDEMdAgQf3Z+ZAHaFdQLbg=
X-Received: by 2002:a5d:4081:: with SMTP id o1mr24439617wrp.114.1585710350400; 
 Tue, 31 Mar 2020 20:05:50 -0700 (PDT)
MIME-Version: 1.0
References: <20200325174136.18862-1-simon.kuenzer@neclab.eu>
 <20200325174136.18862-2-simon.kuenzer@neclab.eu>
In-Reply-To: <20200325174136.18862-2-simon.kuenzer@neclab.eu>
From: Razvan Deaconescu <razvan.deaconescu@cs.pub.ro>
Date: Wed, 1 Apr 2020 06:05:37 +0300
Message-ID: <CALe3bMVbTfuep5TemYg6t8zZZqcznxk6G01a0CD7WbHfQWJDqg@mail.gmail.com>
To: Simon Kuenzer <simon.kuenzer@neclab.eu>
X-Mailman-Approved-At: Thu, 02 Apr 2020 08:42:39 +0000
Subject: Re: [Minios-devel] [UNIKRAFT/LIBELF PATCH 1/7] Copy from official
 ELF Tool Chain (0.7.1)
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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
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>

UmV2aWV3ZWQtYnk6IFJhenZhbiBEZWFjb25lc2N1IDxyYXp2YW4uZGVhY29uZXNjdUBjcy5wdWIu
cm8+CgpPbiBXZWQsIE1hciAyNSwgMjAyMCBhdCA3OjQxIFBNIFNpbW9uIEt1ZW56ZXIgPHNpbW9u
Lmt1ZW56ZXJAbmVjbGFiLmV1PiB3cm90ZToKPiBVbm1vZGlmaWVkIGNvcHkgb2YgbGliZWxmIHNv
dXJjZXMgZnJvbSBvZmZpY2lhbCBFTEYgVG9vbCBDaGFpbiBwcm9qZWN0Ogo+IGh0dHBzOi8vZG93
bmxvYWRzLnNvdXJjZWZvcmdlLm5ldC9wcm9qZWN0L2VsZnRvb2xjaGFpbi9Tb3VyY2VzL2VsZnRv
b2xjaGFpbi0wLjcuMS9lbGZ0b29sY2hhaW4tMC43LjEudGFyLmJ6Mgo+Cj4gU2lnbmVkLW9mZi1i
eTogU2ltb24gS3VlbnplciA8c2ltb24ua3VlbnplckBuZWNsYWIuZXU+Cj4gLS0tCj4gIFJFQURN
RS5lbGZ0b29sY2hhaW4gICAgICB8ICAxMjcgKysKPiAgVmVyc2lvbi5tYXAgICAgICAgICAgICAg
IHwgICA5NiArKwo+ICBfZWxmdGMuaCAgICAgICAgICAgICAgICAgfCAgNDg0ICsrKysrKysKPiAg
X2xpYmVsZi5oICAgICAgICAgICAgICAgIHwgIDIzOSArKysrCj4gIF9saWJlbGZfYXIuaCAgICAg
ICAgICAgICB8ICAgNTcgKwo+ICBfbGliZWxmX2NvbmZpZy5oICAgICAgICAgfCAgMTgzICsrKwo+
ICBlbGYuYyAgICAgICAgICAgICAgICAgICAgfCAgIDQwICsKPiAgZWxmX2JlZ2luLmMgICAgICAg
ICAgICAgIHwgICA5MSArKwo+ICBlbGZfY250bC5jICAgICAgICAgICAgICAgfCAgIDU4ICsKPiAg
ZWxmX2RhdGEuYyAgICAgICAgICAgICAgIHwgIDI3NiArKysrCj4gIGVsZl9lbmQuYyAgICAgICAg
ICAgICAgICB8ICAgOTUgKysKPiAgZWxmX2Vycm1zZy5jICAgICAgICAgICAgIHwgICA4MyArKwo+
ICBlbGZfZXJybm8uYyAgICAgICAgICAgICAgfCAgIDQxICsKPiAgZWxmX2ZpbGwuYyAgICAgICAg
ICAgICAgIHwgICAzNyArCj4gIGVsZl9mbGFnLmMgICAgICAgICAgICAgICB8ICAxOTYgKysrCj4g
IGVsZl9nZXRhcmhkci5jICAgICAgICAgICB8ICAgNDUgKwo+ICBlbGZfZ2V0YXJzeW0uYyAgICAg
ICAgICAgfCAgIDU2ICsKPiAgZWxmX2dldGJhc2UuYyAgICAgICAgICAgIHwgICA0NiArCj4gIGVs
Zl9nZXRpZGVudC5jICAgICAgICAgICB8ICAgNjYgKwo+ICBlbGZfaGFzaC5jICAgICAgICAgICAg
ICAgfCAgIDU0ICsKPiAgZWxmX2tpbmQuYyAgICAgICAgICAgICAgIHwgICA0MiArCj4gIGVsZl9t
ZW1vcnkuYyAgICAgICAgICAgICB8ICAgNDcgKwo+ICBlbGZfbmV4dC5jICAgICAgICAgICAgICAg
fCAgIDY0ICsKPiAgZWxmX29wZW4uYyAgICAgICAgICAgICAgIHwgICA2NyArCj4gIGVsZl9waG51
bS5jICAgICAgICAgICAgICB8ICAgNjUgKwo+ICBlbGZfcmFuZC5jICAgICAgICAgICAgICAgfCAg
IDU3ICsKPiAgZWxmX3Jhd2ZpbGUuYyAgICAgICAgICAgIHwgICA1MSArCj4gIGVsZl9zY24uYyAg
ICAgICAgICAgICAgICB8ICAyMzUgKysrKwo+ICBlbGZfc2hudW0uYyAgICAgICAgICAgICAgfCAg
IDY1ICsKPiAgZWxmX3Noc3RybmR4LmMgICAgICAgICAgIHwgICA4MCArKwo+ICBlbGZfc3RycHRy
LmMgICAgICAgICAgICAgfCAgMTMyICsrCj4gIGVsZl90eXBlcy5tNCAgICAgICAgICAgICB8ICAz
MDkgKysrKysKPiAgZWxmX3VwZGF0ZS5jICAgICAgICAgICAgIHwgMTIxNSArKysrKysrKysrKysr
KysrKwo+ICBlbGZfdmVyc2lvbi5jICAgICAgICAgICAgfCAgIDUwICsKPiAgZ2VsZl9jYXAuYyAg
ICAgICAgICAgICAgIHwgIDE1MCArKysKPiAgZ2VsZl9jaGVja3N1bS5jICAgICAgICAgIHwgICA1
NiArCj4gIGdlbGZfZHluLmMgICAgICAgICAgICAgICB8ICAxNTIgKysrCj4gIGdlbGZfZWhkci5j
ICAgICAgICAgICAgICB8ICAxNjcgKysrCj4gIGdlbGZfZnNpemUuYyAgICAgICAgICAgICB8ICAg
NjAgKwo+ICBnZWxmX2dldGNsYXNzLmMgICAgICAgICAgfCAgIDM3ICsKPiAgZ2VsZl9tb3ZlLmMg
ICAgICAgICAgICAgIHwgIDE1OSArKysKPiAgZ2VsZl9waGRyLmMgICAgICAgICAgICAgIHwgIDE3
NyArKysKPiAgZ2VsZl9yZWwuYyAgICAgICAgICAgICAgIHwgIDE2MiArKysKPiAgZ2VsZl9yZWxh
LmMgICAgICAgICAgICAgIHwgIDE2NSArKysKPiAgZ2VsZl9zaGRyLmMgICAgICAgICAgICAgIHwg
IDEzMCArKwo+ICBnZWxmX3N5bS5jICAgICAgICAgICAgICAgfCAgMTU5ICsrKwo+ICBnZWxmX3N5
bWluZm8uYyAgICAgICAgICAgfCAgMTUyICsrKwo+ICBnZWxmX3N5bXNobmR4LmMgICAgICAgICAg
fCAgMTM3ICsrCj4gIGdlbGZfeGxhdGUuYyAgICAgICAgICAgICB8ICAgNzkgKysKPiAgaW5jbHVk
ZS9lbGZkZWZpbml0aW9ucy5oIHwgMjcwMCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKwo+ICBpbmNsdWRlL2dlbGYuaCAgICAgICAgICAgfCAgMTEwICsrCj4gIGluY2x1ZGUv
bGliZWxmLmggICAgICAgICB8ICAyNTYgKysrKwo+ICBsaWJlbGZfYWxpZ24uYyAgICAgICAgICAg
fCAgMTM1ICsrCj4gIGxpYmVsZl9hbGxvY2F0ZS5jICAgICAgICB8ICAyMTAgKysrCj4gIGxpYmVs
Zl9hci5jICAgICAgICAgICAgICB8ICA0NjYgKysrKysrKwo+ICBsaWJlbGZfYXJfdXRpbC5jICAg
ICAgICAgfCAgMzYwICsrKysrCj4gIGxpYmVsZl9jaGVja3N1bS5jICAgICAgICB8ICAgOTggKysK
PiAgbGliZWxmX2NvbnZlcnQubTQgICAgICAgIHwgMTA4NyArKysrKysrKysrKysrKysKPiAgbGli
ZWxmX2RhdGEuYyAgICAgICAgICAgIHwgIDEwMSArKwo+ICBsaWJlbGZfZWhkci5jICAgICAgICAg
ICAgfCAgMjA0ICsrKwo+ICBsaWJlbGZfZXh0ZW5kZWQuYyAgICAgICAgfCAgMTM0ICsrCj4gIGxp
YmVsZl9mc2l6ZS5tNCAgICAgICAgICB8ICAxNTkgKysrCj4gIGxpYmVsZl9tZW1vcnkuYyAgICAg
ICAgICB8ICAgOTYgKysKPiAgbGliZWxmX21zaXplLm00ICAgICAgICAgIHwgIDEwNiArKwo+ICBs
aWJlbGZfb3Blbi5jICAgICAgICAgICAgfCAgMjQ5ICsrKysKPiAgbGliZWxmX3BoZHIuYyAgICAg
ICAgICAgIHwgIDE1MyArKysKPiAgbGliZWxmX3NoZHIuYyAgICAgICAgICAgIHwgICA1NCArCj4g
IGxpYmVsZl94bGF0ZS5jICAgICAgICAgICB8ICAxNDggKysrCj4gIDY4IGZpbGVzIGNoYW5nZWQs
IDEzNjE3IGluc2VydGlvbnMoKykKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IFJFQURNRS5lbGZ0b29s
Y2hhaW4KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IFZlcnNpb24ubWFwCj4gIGNyZWF0ZSBtb2RlIDEw
MDY0NCBfZWxmdGMuaAo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgX2xpYmVsZi5oCj4gIGNyZWF0ZSBt
b2RlIDEwMDY0NCBfbGliZWxmX2FyLmgKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IF9saWJlbGZfY29u
ZmlnLmgKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGVsZi5jCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBl
bGZfYmVnaW4uYwo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZWxmX2NudGwuYwo+ICBjcmVhdGUgbW9k
ZSAxMDA2NDQgZWxmX2RhdGEuYwo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZWxmX2VuZC5jCj4gIGNy
ZWF0ZSBtb2RlIDEwMDY0NCBlbGZfZXJybXNnLmMKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGVsZl9l
cnJuby5jCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBlbGZfZmlsbC5jCj4gIGNyZWF0ZSBtb2RlIDEw
MDY0NCBlbGZfZmxhZy5jCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBlbGZfZ2V0YXJoZHIuYwo+ICBj
cmVhdGUgbW9kZSAxMDA2NDQgZWxmX2dldGFyc3ltLmMKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGVs
Zl9nZXRiYXNlLmMKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGVsZl9nZXRpZGVudC5jCj4gIGNyZWF0
ZSBtb2RlIDEwMDY0NCBlbGZfaGFzaC5jCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBlbGZfa2luZC5j
Cj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBlbGZfbWVtb3J5LmMKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0
IGVsZl9uZXh0LmMKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGVsZl9vcGVuLmMKPiAgY3JlYXRlIG1v
ZGUgMTAwNjQ0IGVsZl9waG51bS5jCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBlbGZfcmFuZC5jCj4g
IGNyZWF0ZSBtb2RlIDEwMDY0NCBlbGZfcmF3ZmlsZS5jCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBl
bGZfc2NuLmMKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGVsZl9zaG51bS5jCj4gIGNyZWF0ZSBtb2Rl
IDEwMDY0NCBlbGZfc2hzdHJuZHguYwo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZWxmX3N0cnB0ci5j
Cj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBlbGZfdHlwZXMubTQKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0
IGVsZl91cGRhdGUuYwo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZWxmX3ZlcnNpb24uYwo+ICBjcmVh
dGUgbW9kZSAxMDA2NDQgZ2VsZl9jYXAuYwo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZ2VsZl9jaGVj
a3N1bS5jCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBnZWxmX2R5bi5jCj4gIGNyZWF0ZSBtb2RlIDEw
MDY0NCBnZWxmX2VoZHIuYwo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZ2VsZl9mc2l6ZS5jCj4gIGNy
ZWF0ZSBtb2RlIDEwMDY0NCBnZWxmX2dldGNsYXNzLmMKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGdl
bGZfbW92ZS5jCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBnZWxmX3BoZHIuYwo+ICBjcmVhdGUgbW9k
ZSAxMDA2NDQgZ2VsZl9yZWwuYwo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZ2VsZl9yZWxhLmMKPiAg
Y3JlYXRlIG1vZGUgMTAwNjQ0IGdlbGZfc2hkci5jCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBnZWxm
X3N5bS5jCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBnZWxmX3N5bWluZm8uYwo+ICBjcmVhdGUgbW9k
ZSAxMDA2NDQgZ2VsZl9zeW1zaG5keC5jCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBnZWxmX3hsYXRl
LmMKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvZWxmZGVmaW5pdGlvbnMuaAo+ICBjcmVh
dGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9nZWxmLmgKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1
ZGUvbGliZWxmLmgKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmVsZl9hbGlnbi5jCj4gIGNyZWF0
ZSBtb2RlIDEwMDY0NCBsaWJlbGZfYWxsb2NhdGUuYwo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgbGli
ZWxmX2FyLmMKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmVsZl9hcl91dGlsLmMKPiAgY3JlYXRl
IG1vZGUgMTAwNjQ0IGxpYmVsZl9jaGVja3N1bS5jCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJl
bGZfY29udmVydC5tNAo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliZWxmX2RhdGEuYwo+ICBjcmVh
dGUgbW9kZSAxMDA2NDQgbGliZWxmX2VoZHIuYwo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliZWxm
X2V4dGVuZGVkLmMKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmVsZl9mc2l6ZS5tNAo+ICBjcmVh
dGUgbW9kZSAxMDA2NDQgbGliZWxmX21lbW9yeS5jCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJl
bGZfbXNpemUubTQKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmVsZl9vcGVuLmMKPiAgY3JlYXRl
IG1vZGUgMTAwNjQ0IGxpYmVsZl9waGRyLmMKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmVsZl9z
aGRyLmMKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmVsZl94bGF0ZS5jCj4KPiBkaWZmIC0tZ2l0
IGEvUkVBRE1FLmVsZnRvb2xjaGFpbiBiL1JFQURNRS5lbGZ0b29sY2hhaW4KPiBuZXcgZmlsZSBt
b2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLmM5YWIwNzIKPiAtLS0gL2Rldi9udWxsCj4gKysr
IGIvUkVBRE1FLmVsZnRvb2xjaGFpbgo+IEBAIC0wLDAgKzEsMTI3IEBACj4gK1RoZSBFbGZ0b29s
Y2hhaW4gUHJvamVjdAo+ICs9PT09PT09PT09PT09PT09PT09PT09PT0KPiArCj4gKy4uIGNvbnRl
bnRzOjoKPiArLi4KPiArCj4gK0Rlc2NyaXB0aW9uCj4gKy0tLS0tLS0tLS0tCj4gKwo+ICtUaGlz
IHNvZnR3YXJlIGltcGxlbWVudHMgZXNzZW50aWFsIGNvbXBpbGF0aW9uIHRvb2xzIGFuZCBsaWJy
YXJpZXMgZm9yOgo+ICsKPiArLSBtYW5hZ2luZyBwcm9ncmFtIG9iamVjdHMgY29uZm9ybWluZyB0
byB0aGUgRUxGXyBvYmplY3QgZm9ybWF0LCBhbmQKPiArLSBmb3IgbWFuYWdpbmcgRFdBUkZfIGRl
YnVnZ2luZyBpbmZvcm1hdGlvbiBpbiBFTEYgb2JqZWN0cy4KPiArCj4gK1RoZSBwcm9qZWN0IGN1
cnJlbnRseSBpbXBsZW1lbnRzIHRoZSBmb2xsb3dpbmcgdXRpbGl0aWVzIGFuZAo+ICtsaWJyYXJp
ZXM6Cj4gKwo+ICsgICAgPT09PT09PT09PT0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KPiArICAgIE5hbWUgICAgICAgIERlc2NyaXB0aW9uCj4gKyAgICA9PT09
PT09PT09PSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo+ICsg
ICAgYXIgICAgICAgICAgQXJjaGl2ZSBtYW5hZ2VyLgo+ICsgICAgYWRkcjJsaW5lICAgRGVidWcg
dG9vbC4KPiArICAgIGJyYW5kZWxmICAgIE1hbmFnZSB0aGUgRUxGIGJyYW5kIG9uIGV4ZWN1dGFi
bGVzLgo+ICsgICAgYysrZmlsdCAgICAgVHJhbnNsYXRlIGVuY29kZWQgc3ltYm9scy4KPiArICAg
IGVsZmNvcHkgICAgIENvcHkgYW5kIHRyYW5zbGF0ZSBiZXR3ZWVuIG9iamVjdCBmb3JtYXRzLgo+
ICsgICAgZWxmZHVtcCAgICAgRGlhZ25vc3RpYyB0b29sLgo+ICsgICAgZmluZHRleHRyZWwgRmlu
ZCB1bmRlc2lyZWQgdGV4dCByZWxvY2F0aW9ucy4KPiArICAgIGxpYmR3YXJmICAgIERXQVJGIGFj
Y2VzcyBsaWJyYXJ5Lgo+ICsgICAgbGliZWxmICAgICAgRUxGIGFjY2VzcyBsaWJyYXJ5Lgo+ICsg
ICAgbWNzICAgICAgICAgTWFuYWdlIGNvbW1lbnQgc2VjdGlvbnMuCj4gKyAgICBubSAgICAgICAg
ICBMaXN0IHN5bWJvbHMgaW4gYW4gRUxGIG9iamVjdC4KPiArICAgIHJhbmxpYiAgICAgIEFkZCBh
cmNoaXZlIHN5bWJvbCB0YWJsZXMgdG8gYW4gYXJjaGl2ZS4KPiArICAgIHJlYWRlbGYgICAgIERp
c3BsYXkgRUxGIGluZm9ybWF0aW9uLgo+ICsgICAgc2l6ZSAgICAgICAgTGlzdCBvYmplY3Qgc2l6
ZXMuCj4gKyAgICBzdHJpbmdzICAgICBFeHRyYWN0IHByaW50YWJsZSBzdHJpbmdzLgo+ICsgICAg
c3RyaXAgICAgICAgRGlzY2FyZCBpbmZvcm1hdGlvbiBmcm9tIEVMRiBvYmplY3RzLgo+ICsgICAg
PT09PT09PT09PT0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
PiArCj4gKy4uIF9FTEY6IGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRXhlY3V0YWJsZV9h
bmRfTGlua2FibGVfRm9ybWF0Cj4gKy4uIF9EV0FSRjogaHR0cDovL3d3dy5kd2FyZnN0ZC5vcmcv
Cj4gKwo+ICsKPiArUHJvamVjdCBEb2N1bWVudGF0aW9uCj4gKy0tLS0tLS0tLS0tLS0tLS0tLS0t
LQo+ICsKPiArLSBSZWxlYXNlIG5vdGVzIGZvciByZWxlYXNlZCB2ZXJzaW9ucyBvZiB0aGlzIHNv
ZnR3YXJlIGFyZSBwcmVzZW50IGluCj4gKyAgdGhlIGZpbGUgYGBSRUxFQVNFLU5PVEVTYGAgaW4g
dGhlIGN1cnJlbnQgZGlyZWN0b3J5Lgo+ICstIFRoZSBmaWxlIGBgSU5TVEFMTGBgIGluIHRoZSBj
dXJyZW50IGRpcmVjdG9yeSBjb250YWlucyBpbnN0cnVjdGlvbnMKPiArICBvbiBidWlsZGluZyBh
bmQgaW5zdGFsbGluZyB0aGlzIHNvZnR3YXJlLgo+ICstIFJlZmVyZW5jZSBkb2N1bWVudGF0aW9u
IGluIHRoZSBmb3JtIG9mIG1hbnVhbCBwYWdlcyBpcyBwcm92aWRlZCBmb3IKPiArICB0aGUgdXRp
bGl0aWVzIGFuZCBsaWJyYXJpZXMgZGV2ZWxvcGVkIGJ5IHRoZSBwcm9qZWN0Lgo+ICstIEFkZGl0
aW9uYWwgdHV0b3JpYWwgZG9jdW1lbnRhdGlvbiBpcyBwcmVzZW50IGluIHRoZQo+ICsgIGBgZG9j
dW1lbnRhdGlvbmBgIGRpcmVjdG9yeS4KPiArCj4gKwo+ICtUcmFja2luZyBPbmdvaW5nIERldmVs
b3BtZW50Cj4gKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiArCj4gK1RoZSBwcm9qZWN0
IHVzZXMgc3VidmVyc2lvbl8gZm9yIGl0cyB2ZXJzaW9uIGNvbnRyb2wgc3lzdGVtLgo+ICsKPiAr
VGhlIHN1YnZlcnNpb24gYnJhbmNoIGZvciB0aGUgY3VycmVudCBzZXQgb2Ygc291cmNlcyBtYXkg
YmUgYWNjZXNzZWQKPiArYXQgdGhlIGZvbGxvd2luZyBVUkw6Cj4gKwo+ICsgIGh0dHBzOi8vZWxm
dG9vbGNoYWluLnN2bi5zb3VyY2Vmb3JnZS5uZXQvc3Zucm9vdC9lbGZ0b29sY2hhaW4vdHJ1bmsK
PiArCj4gK1RoZSBwcm9qZWN0J3Mgc291cmNlIHRyZWUgbWF5IGJlIGNoZWNrZWQgb3V0IGZyb20g
aXRzIHJlcG9zaXRvcnkgYnkKPiArdXNpbmcgdGhlIGBgc3ZuIGNoZWNrb3V0YGAgY29tbWFuZDo6
Cj4gKwo+ICsgICAgJSBzdm4gY2hlY2tvdXQgaHR0cHM6Ly9lbGZ0b29sY2hhaW4uc3ZuLnNvdXJj
ZWZvcmdlLm5ldC9zdm5yb290L2VsZnRvb2xjaGFpbi90cnVuawo+ICsKPiArQ2hlY2tlZC1vdXQg
c291cmNlcyBtYXkgYmUga2VwdCB1cHRvLWRhdGUgYnkgcnVubmluZyBgYHN2biB1cGRhdGVgYAo+
ICtpbnNpZGUgdGhlIHNvdXJjZSBkaXJlY3Rvcnk6Ogo+ICsKPiArICAgJSBzdm4gdXBkYXRlCj4g
Kwo+ICsKPiArSW5zdHJ1Y3Rpb25zIG9uIGJ1aWxkaW5nIGFuZCBpbnN0YWxsaW5nIHRoZSBzb2Z0
d2FyZSBhcmUgZ2l2ZW4gaW4gdGhlCj4gK2ZpbGUgYGBJTlNUQUxMYGAgaW4gdGhlIGN1cnJlbnQg
ZGlyZWN0b3J5Lgo+ICsKPiArLi4gX1N1YnZlcnNpb246Cj4gKwo+ICtEb3dubG9hZGluZyBSZWxl
YXNlZCBTb2Z0d2FyZQo+ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICsKPiArUmVs
ZWFzZWQgdmVyc2lvbnMgb2YgdGhlIHByb2plY3QncyBzb2Z0d2FyZSBtYXkgYWxzbyBiZSBkb3du
bG9hZGVkCj4gK2Zyb20gU291cmNlRm9yZ2UncyBgZmlsZSByZWxlYXNlIHN5c3RlbWBfLgo+ICsK
PiArLi4gX2ZpbGUgcmVsZWFzZSBzeXN0ZW06IGh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVj
dHMvZWxmdG9vbGNoYWluL2ZpbGVzLwo+ICsKPiArQ29weXJpZ2h0IGFuZCBMaWNlbnNlCj4gKy0t
LS0tLS0tLS0tLS0tLS0tLS0tLQo+ICsKPiArVGhpcyBjb2RlIGlzIGNvcHlyaWdodCBpdHMgYXV0
aG9ycywgYW5kIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBgQlNECj4gK0xpY2Vuc2VgXy4KPiAr
Cj4gKy4uIF9CU0QgTGljZW5zZTogaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9i
c2QtbGljZW5zZS5waHAKPiArCj4gKwo+ICtEZXZlbG9wZXIgQ29tbXVuaXR5Cj4gKy0tLS0tLS0t
LS0tLS0tLS0tLS0KPiArCj4gK1RoZSBwcm9qZWN0J3MgZGV2ZWxvcGVycyBtYXkgYmUgY29udGFj
dGVkIHVzaW5nIHRoZSBtYWlsaW5nIGxpc3Q6Cj4gK2BgPGVsZnRvb2xjaGFpbi1kZXZlbG9wZXJz
QGxpc3RzLnNvdXJjZWZvcmdlLm5ldD5gYC4KPiArCj4gKwo+ICtSZXBvcnRpbmcgQnVncwo+ICst
LS0tLS0tLS0tLS0tLQo+ICsKPiArUGxlYXNlIHVzZSBvdXIgYFRyYWMgaW5zdGFuY2VgXyBmb3Ig
dmlld2luZyBleGlzdGluZyBidWcgcmVwb3J0cyBhbmQKPiArZm9yIHN1Ym1pdHRpbmcgbmV3IGJ1
ZyByZXBvcnRzLgo+ICsKPiArLi4gX2BUcmFjIGluc3RhbmNlYDogaHR0cDovL3NvdXJjZWZvcmdl
Lm5ldC9hcHBzL3RyYWMvZWxmdG9vbGNoYWluL3JlcG9ydAo+ICsKPiArCj4gK0FkZGl0aW9uYWwg
SW5mb3JtYXRpb24KPiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICsKPiArQWRkaXRpb25hbCBp
bmZvcm1hdGlvbiBhYm91dCB0aGUgcHJvamVjdCBtYXkgYmUgZm91bmQgb24gdGhlIGBwcm9qZWN0
Cj4gK3dlYnNpdGVgXy4KPiArCj4gKy4uIF9wcm9qZWN0IHdlYnNpdGU6ICBodHRwOi8vZWxmdG9v
bGNoYWluLnNvdXJjZWZvcmdlLm5ldC8KPiArCj4gKy4uICRJZDogUkVBRE1FIDIxNDYgMjAxMS0x
MS0xMSAwOTozOTowMFogamtvc2h5ICQKPiArCj4gKy4uIExvY2FsIFZhcmlhYmxlczoKPiArLi4g
bW9kZTogcnN0Cj4gKy4uIEVuZDoKPiBkaWZmIC0tZ2l0IGEvVmVyc2lvbi5tYXAgYi9WZXJzaW9u
Lm1hcAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uZTcxYTU5MQo+IC0t
LSAvZGV2L251bGwKPiArKysgYi9WZXJzaW9uLm1hcAo+IEBAIC0wLDAgKzEsOTYgQEAKPiArLyog
JElkOiBWZXJzaW9uLm1hcCAyNTc0IDIwMTItMDktMTEgMTU6MTE6NTlaIGprb3NoeSAkICovCj4g
Kwo+ICtSMS4wIHsKPiArZ2xvYmFsOgo+ICsgICAgICAgZWxmMzJfY2hlY2tzdW07Cj4gKyAgICAg
ICBlbGYzMl9mc2l6ZTsKPiArICAgICAgIGVsZjMyX2dldGVoZHI7Cj4gKyAgICAgICBlbGYzMl9n
ZXRwaGRyOwo+ICsgICAgICAgZWxmMzJfZ2V0c2hkcjsKPiArICAgICAgIGVsZjMyX25ld2VoZHI7
Cj4gKyAgICAgICBlbGYzMl9uZXdwaGRyOwo+ICsgICAgICAgZWxmMzJfeGxhdGV0b2Y7Cj4gKyAg
ICAgICBlbGYzMl94bGF0ZXRvbTsKPiArICAgICAgIGVsZjY0X2NoZWNrc3VtOwo+ICsgICAgICAg
ZWxmNjRfZnNpemU7Cj4gKyAgICAgICBlbGY2NF9nZXRlaGRyOwo+ICsgICAgICAgZWxmNjRfZ2V0
cGhkcjsKPiArICAgICAgIGVsZjY0X2dldHNoZHI7Cj4gKyAgICAgICBlbGY2NF9uZXdlaGRyOwo+
ICsgICAgICAgZWxmNjRfbmV3cGhkcjsKPiArICAgICAgIGVsZjY0X3hsYXRldG9mOwo+ICsgICAg
ICAgZWxmNjRfeGxhdGV0b207Cj4gKyAgICAgICBlbGZfYmVnaW47Cj4gKyAgICAgICBlbGZfY250
bDsKPiArICAgICAgIGVsZl9lbmQ7Cj4gKyAgICAgICBlbGZfZXJybXNnOwo+ICsgICAgICAgZWxm
X2Vycm5vOwo+ICsgICAgICAgZWxmX2ZpbGw7Cj4gKyAgICAgICBlbGZfZmxhZ2FyaGRyOwo+ICsg
ICAgICAgZWxmX2ZsYWdkYXRhOwo+ICsgICAgICAgZWxmX2ZsYWdlaGRyOwo+ICsgICAgICAgZWxm
X2ZsYWdlbGY7Cj4gKyAgICAgICBlbGZfZmxhZ3BoZHI7Cj4gKyAgICAgICBlbGZfZmxhZ3NjbjsK
PiArICAgICAgIGVsZl9mbGFnc2hkcjsKPiArICAgICAgIGVsZl9nZXRhcmhkcjsKPiArICAgICAg
IGVsZl9nZXRhcnN5bTsKPiArICAgICAgIGVsZl9nZXRiYXNlOwo+ICsgICAgICAgZWxmX2dldGRh
dGE7Cj4gKyAgICAgICBlbGZfZ2V0aWRlbnQ7Cj4gKyAgICAgICBlbGZfZ2V0cGhkcm51bTsKPiAr
ICAgICAgIGVsZl9nZXRwaG51bTsKPiArICAgICAgIGVsZl9nZXRzY247Cj4gKyAgICAgICBlbGZf
Z2V0c2hkcm51bTsKPiArICAgICAgIGVsZl9nZXRzaGRyc3RybmR4Owo+ICsgICAgICAgZWxmX2dl
dHNobnVtOwo+ICsgICAgICAgZWxmX2dldHNoc3RybmR4Owo+ICsgICAgICAgZWxmX2hhc2g7Cj4g
KyAgICAgICBlbGZfa2luZDsKPiArICAgICAgIGVsZl9tZW1vcnk7Cj4gKyAgICAgICBlbGZfbmR4
c2NuOwo+ICsgICAgICAgZWxmX25ld2RhdGE7Cj4gKyAgICAgICBlbGZfbmV3c2NuOwo+ICsgICAg
ICAgZWxmX25leHQ7Cj4gKyAgICAgICBlbGZfbmV4dHNjbjsKPiArICAgICAgIGVsZl9vcGVuOwo+
ICsgICAgICAgZWxmX29wZW5tZW1vcnk7Cj4gKyAgICAgICBlbGZfcmFuZDsKPiArICAgICAgIGVs
Zl9yYXdkYXRhOwo+ICsgICAgICAgZWxmX3Jhd2ZpbGU7Cj4gKyAgICAgICBlbGZfc2V0c2hzdHJu
ZHg7Cj4gKyAgICAgICBlbGZfc3RycHRyOwo+ICsgICAgICAgZWxmX3VwZGF0ZTsKPiArICAgICAg
IGVsZl92ZXJzaW9uOwo+ICsgICAgICAgZ2VsZl9jaGVja3N1bTsKPiArICAgICAgIGdlbGZfZnNp
emU7Cj4gKyAgICAgICBnZWxmX2dldGNhcDsKPiArICAgICAgIGdlbGZfZ2V0Y2xhc3M7Cj4gKyAg
ICAgICBnZWxmX2dldGR5bjsKPiArICAgICAgIGdlbGZfZ2V0ZWhkcjsKPiArICAgICAgIGdlbGZf
Z2V0bW92ZTsKPiArICAgICAgIGdlbGZfZ2V0cGhkcjsKPiArICAgICAgIGdlbGZfZ2V0cmVsOwo+
ICsgICAgICAgZ2VsZl9nZXRyZWxhOwo+ICsgICAgICAgZ2VsZl9nZXRzaGRyOwo+ICsgICAgICAg
Z2VsZl9nZXRzeW07Cj4gKyAgICAgICBnZWxmX2dldHN5bWluZm87Cj4gKyAgICAgICBnZWxmX2dl
dHN5bXNobmR4Owo+ICsgICAgICAgZ2VsZl9uZXdlaGRyOwo+ICsgICAgICAgZ2VsZl9uZXdwaGRy
Owo+ICsgICAgICAgZ2VsZl91cGRhdGVfY2FwOwo+ICsgICAgICAgZ2VsZl91cGRhdGVfZHluOwo+
ICsgICAgICAgZ2VsZl91cGRhdGVfZWhkcjsKPiArICAgICAgIGdlbGZfdXBkYXRlX21vdmU7Cj4g
KyAgICAgICBnZWxmX3VwZGF0ZV9waGRyOwo+ICsgICAgICAgZ2VsZl91cGRhdGVfcmVsOwo+ICsg
ICAgICAgZ2VsZl91cGRhdGVfcmVsYTsKPiArICAgICAgIGdlbGZfdXBkYXRlX3NoZHI7Cj4gKyAg
ICAgICBnZWxmX3VwZGF0ZV9zeW07Cj4gKyAgICAgICBnZWxmX3VwZGF0ZV9zeW1pbmZvOwo+ICsg
ICAgICAgZ2VsZl91cGRhdGVfc3ltc2huZHg7Cj4gKyAgICAgICBnZWxmX3hsYXRldG9mOwo+ICsg
ICAgICAgZ2VsZl94bGF0ZXRvbTsKPiArbG9jYWw6Cj4gKyAgICAgICAqOwo+ICt9Owo+IGRpZmYg
LS1naXQgYS9fZWxmdGMuaCBiL19lbGZ0Yy5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRl
eCAwMDAwMDAwLi45NDI3MmVmCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL19lbGZ0Yy5oCj4gQEAg
LTAsMCArMSw0ODQgQEAKPiArLyotCj4gKyAqIENvcHlyaWdodCAoYykgMjAwOSBKb3NlcGggS29z
aHkKPiArICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KPiArICoKPiArICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cj4gKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwo+ICsgKiBhcmUgbWV0Ogo+ICsgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAo+ICsgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCj4g
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Cj4gKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKPiArICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
PiArICoKPiArICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBD
T05UUklCVVRPUlMgYGBBUyBJUycnIEFORAo+ICsgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKPiArICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UKPiArICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
QVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKPiArICogRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwK
PiArICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMKPiArICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCj4gKyAqIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUCj4gKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKPiArICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgo+ICsgKiBT
VUNIIERBTUFHRS4KPiArICoKPiArICogJElkOiBfZWxmdGMuaCAzMjQ0IDIwMTUtMDgtMzEgMTk6
NTM6MDhaIGVtYXN0ZSAkCj4gKyAqLwo+ICsKPiArLyoqCj4gKyAqKiBNaXNjZWxsYW5vdXMgZGVm
aW5pdGlvbnMgbmVlZGVkIGJ5IG11bHRpcGxlIGNvbXBvbmVudHMuCj4gKyAqKi8KPiArCj4gKyNp
Zm5kZWYgICAgICAgIF9FTEZUQ19ICj4gKyNkZWZpbmUgICAgICAgIF9FTEZUQ19ICj4gKwo+ICsj
aWZuZGVmICAgICAgICBOVUxMCj4gKyNkZWZpbmUgTlVMTCAgICgodm9pZCAqKSAwKQo+ICsjZW5k
aWYKPiArCj4gKyNpZm5kZWYgICAgICAgIG9mZnNldG9mCj4gKyNkZWZpbmUgICAgICAgIG9mZnNl
dG9mKFQsIE0pICAgICAgICAgICgoaW50KSAmKChUKikgMCkgLT4gTSkKPiArI2VuZGlmCj4gKwo+
ICsvKiAtLVFVRVVFLU1BQ1JPUy0tIFtbICovCj4gKwo+ICsvKgo+ICsgKiBTdXBwbHkgbWFjcm9z
IG1pc3NpbmcgZnJvbSA8c3lzL3F1ZXVlLmg+Cj4gKyAqLwo+ICsKPiArLyoKPiArICogQ29weXJp
Z2h0IChjKSAxOTkxLCAxOTkzCj4gKyAqICAgICBUaGUgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0
eSBvZiBDYWxpZm9ybmlhLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KPiArICoKPiArICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Cj4gKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwo+ICsgKiBhcmUgbWV0Ogo+ICsgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAo+ICsgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCj4gKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cj4gKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKPiArICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KPiArICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgVW5pdmVyc2l0eSBub3Ig
dGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKPiArICogICAgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCj4gKyAq
ICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgo+ICsgKgo+ICsg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBSRUdFTlRTIEFORCBDT05UUklCVVRP
UlMgYGBBUyBJUycnIEFORAo+ICsgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKPiArICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UKPiArICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgUkVHRU5UUyBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFCj4gKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCj4gKyAqIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTCj4gKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQo+ICsgKiBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAo+
ICsgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZCj4gKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKPiArICogU1VDSCBEQU1B
R0UuCj4gKyAqLwo+ICsKPiArI2lmbmRlZiAgICAgICAgTElTVF9GT1JFQUNIX1NBRkUKPiArI2Rl
ZmluZSAgICAgICAgTElTVF9GT1JFQUNIX1NBRkUodmFyLCBoZWFkLCBmaWVsZCwgdHZhcikgICAg
ICAgICAgICAgICBcCj4gKyAgICAgICBmb3IgKCh2YXIpID0gTElTVF9GSVJTVCgoaGVhZCkpOyAg
ICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICAgICAodmFyKSAmJiAoKHR2YXIpID0g
TElTVF9ORVhUKCh2YXIpLCBmaWVsZCksIDEpOyAgICAgXAo+ICsgICAgICAgICAgICh2YXIpID0g
KHR2YXIpKQo+ICsjZW5kaWYKPiArCj4gKyNpZm5kZWYgICAgICAgIFNMSVNUX0ZPUkVBQ0hfU0FG
RQo+ICsjZGVmaW5lICAgICAgICBTTElTVF9GT1JFQUNIX1NBRkUodmFyLCBoZWFkLCBmaWVsZCwg
dHZhcikgICAgICAgICAgICAgIFwKPiArICAgICAgIGZvciAoKHZhcikgPSBTTElTVF9GSVJTVCgo
aGVhZCkpOyAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgICAgICh2YXIpICYmICgo
dHZhcikgPSBTTElTVF9ORVhUKCh2YXIpLCBmaWVsZCksIDEpOyAgICBcCj4gKyAgICAgICAgICAg
KHZhcikgPSAodHZhcikpCj4gKyNlbmRpZgo+ICsKPiArI2lmbmRlZiAgICAgICAgU1RBSUxRX0NP
TkNBVAo+ICsjZGVmaW5lICAgICAgICBTVEFJTFFfQ09OQ0FUKGhlYWQxLCBoZWFkMikgZG8geyAg
ICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgIGlmICghU1RBSUxRX0VNUFRZKChoZWFk
MikpKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgICAgICAgICAqKGhl
YWQxKS0+c3RxaF9sYXN0ID0gKGhlYWQyKS0+c3RxaF9maXJzdDsgICAgICBcCj4gKyAgICAgICAg
ICAgICAgIChoZWFkMSktPnN0cWhfbGFzdCA9IChoZWFkMiktPnN0cWhfbGFzdDsgICAgICAgIFwK
PiArICAgICAgICAgICAgICAgU1RBSUxRX0lOSVQoKGhlYWQyKSk7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAo+ICsgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCj4gK30gd2hpbGUgKC8qQ09OU1RDT05EKi8wKQo+ICsjZW5k
aWYKPiArCj4gKyNpZm5kZWYgICAgICAgIFNUQUlMUV9FTVBUWQo+ICsjZGVmaW5lICAgICAgICBT
VEFJTFFfRU1QVFkoaGVhZCkgICAgICAoKGhlYWQpLT5zdHFoX2ZpcnN0ID09IE5VTEwpCj4gKyNl
bmRpZgo+ICsKPiArI2lmbmRlZiAgICAgICAgU1RBSUxRX0VOVFJZCj4gKyNkZWZpbmUgICAgICAg
IFNUQUlMUV9FTlRSWSh0eXBlKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAo+ICtzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCj4gKyAgICAgICBzdHJ1Y3QgdHlwZSAqc3RxZV9uZXh0OyAvKiBuZXh0IGVs
ZW1lbnQgKi8gICAgICAgICAgICAgIFwKPiArfQo+ICsjZW5kaWYKPiArCj4gKyNpZm5kZWYgICAg
ICAgIFNUQUlMUV9GSVJTVAo+ICsjZGVmaW5lICAgICAgICBTVEFJTFFfRklSU1QoaGVhZCkgICAg
ICAoKGhlYWQpLT5zdHFoX2ZpcnN0KQo+ICsjZW5kaWYKPiArCj4gKyNpZm5kZWYgICAgICAgIFNU
QUlMUV9IRUFECj4gKyNkZWZpbmUgICAgICAgIFNUQUlMUV9IRUFEKG5hbWUsIHR5cGUpICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICtzdHJ1Y3QgbmFtZSB7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICBzdHJ1Y3Qg
dHlwZSAqc3RxaF9maXJzdDsgLyogZmlyc3QgZWxlbWVudCAqLyAgICAgICAgICAgIFwKPiArICAg
ICAgIHN0cnVjdCB0eXBlICoqc3RxaF9sYXN0OyAvKiBhZGRyIG9mIGxhc3QgbmV4dCBlbGVtZW50
ICovIFwKPiArfQo+ICsjZW5kaWYKPiArCj4gKyNpZm5kZWYgICAgICAgIFNUQUlMUV9IRUFEX0lO
SVRJQUxJWkVSCj4gKyNkZWZpbmUgICAgICAgIFNUQUlMUV9IRUFEX0lOSVRJQUxJWkVSKGhlYWQp
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgeyBOVUxMLCAmKGhlYWQpLnN0
cWhfZmlyc3QgfQo+ICsjZW5kaWYKPiArCj4gKyNpZm5kZWYgICAgICAgIFNUQUlMUV9GT1JFQUNI
Cj4gKyNkZWZpbmUgICAgICAgIFNUQUlMUV9GT1JFQUNIKHZhciwgaGVhZCwgZmllbGQpICAgICAg
ICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgZm9yICgodmFyKSA9ICgoaGVhZCktPnN0cWhf
Zmlyc3QpOyAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAgICAgICAgICh2YXIpOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICAgICAg
ICAgKHZhcikgPSAoKHZhciktPmZpZWxkLnN0cWVfbmV4dCkpCj4gKyNlbmRpZgo+ICsKPiArI2lm
bmRlZiAgICAgICAgU1RBSUxRX0ZPUkVBQ0hfU0FGRQo+ICsjZGVmaW5lIFNUQUlMUV9GT1JFQUNI
X1NBRkUodmFyLCBoZWFkLCBmaWVsZCwgdHZhcikgICAgICAgICAgICBcCj4gKyAgICAgICBmb3Ig
KCh2YXIpID0gU1RBSUxRX0ZJUlNUKChoZWFkKSk7ICAgICAgICAgICAgICAgICAgICAgIFwKPiAr
ICAgICAgICAgICAodmFyKSAmJiAoKHR2YXIpID0gU1RBSUxRX05FWFQoKHZhciksIGZpZWxkKSwg
MSk7ICAgXAo+ICsgICAgICAgICAgICh2YXIpID0gKHR2YXIpKQo+ICsjZW5kaWYKPiArCj4gKyNp
Zm5kZWYgICAgICAgIFNUQUlMUV9JTklUCj4gKyNkZWZpbmUgICAgICAgIFNUQUlMUV9JTklUKGhl
YWQpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgKGhl
YWQpLT5zdHFoX2ZpcnN0ID0gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4g
KyAgICAgICAoaGVhZCktPnN0cWhfbGFzdCA9ICYoaGVhZCktPnN0cWhfZmlyc3Q7ICAgICAgICAg
ICAgICAgIFwKPiArfSB3aGlsZSAoLypDT05TVENPTkQqLzApCj4gKyNlbmRpZgo+ICsKPiArI2lm
bmRlZiAgICAgICAgU1RBSUxRX0lOU0VSVF9IRUFECj4gKyNkZWZpbmUgICAgICAgIFNUQUlMUV9J
TlNFUlRfSEVBRChoZWFkLCBlbG0sIGZpZWxkKSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICBc
Cj4gKyAgICAgICBpZiAoKChlbG0pLT5maWVsZC5zdHFlX25leHQgPSAoaGVhZCktPnN0cWhfZmly
c3QpID09IE5VTEwpICAgICAgXAo+ICsgICAgICAgICAgICAgICAoaGVhZCktPnN0cWhfbGFzdCA9
ICYoZWxtKS0+ZmllbGQuc3RxZV9uZXh0OyAgICAgICAgICAgIFwKPiArICAgICAgIChoZWFkKS0+
c3RxaF9maXJzdCA9IChlbG0pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
Cj4gK30gd2hpbGUgKC8qQ09OU1RDT05EKi8wKQo+ICsjZW5kaWYKPiArCj4gKyNpZm5kZWYgICAg
ICAgIFNUQUlMUV9JTlNFUlRfVEFJTAo+ICsjZGVmaW5lICAgICAgICBTVEFJTFFfSU5TRVJUX1RB
SUwoaGVhZCwgZWxtLCBmaWVsZCkgZG8geyAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAg
ICAgKGVsbSktPmZpZWxkLnN0cWVfbmV4dCA9IE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKPiArICAgICAgICooaGVhZCktPnN0cWhfbGFzdCA9IChlbG0pOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAoaGVhZCktPnN0cWhfbGFz
dCA9ICYoZWxtKS0+ZmllbGQuc3RxZV9uZXh0OyAgICAgICAgICAgICAgICAgICAgXAo+ICt9IHdo
aWxlICgvKkNPTlNUQ09ORCovMCkKPiArI2VuZGlmCj4gKwo+ICsjaWZuZGVmICAgICAgICBTVEFJ
TFFfSU5TRVJUX0FGVEVSCj4gKyNkZWZpbmUgICAgICAgIFNUQUlMUV9JTlNFUlRfQUZURVIoaGVh
ZCwgbGlzdGVsbSwgZWxtLCBmaWVsZCkgZG8geyAgICAgICAgICAgICBcCj4gKyAgICAgICBpZiAo
KChlbG0pLT5maWVsZC5zdHFlX25leHQgPSAobGlzdGVsbSktPmZpZWxkLnN0cWVfbmV4dCkgPT0g
TlVMTClcCj4gKyAgICAgICAgICAgICAgIChoZWFkKS0+c3RxaF9sYXN0ID0gJihlbG0pLT5maWVs
ZC5zdHFlX25leHQ7ICAgICAgICAgICAgXAo+ICsgICAgICAgKGxpc3RlbG0pLT5maWVsZC5zdHFl
X25leHQgPSAoZWxtKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArfSB3aGlsZSAo
LypDT05TVENPTkQqLzApCj4gKyNlbmRpZgo+ICsKPiArI2lmbmRlZiAgICAgICAgU1RBSUxRX0xB
U1QKPiArI2RlZmluZSBTVEFJTFFfTEFTVChoZWFkLCB0eXBlLCBmaWVsZCkgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAoU1RBSUxRX0VNUFRZKChoZWFkKSkgPyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICAgICBOVUxMIDogKChz
dHJ1Y3QgdHlwZSAqKSh2b2lkICopICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAg
ICAgICAgICAgKChjaGFyICopKChoZWFkKS0+c3RxaF9sYXN0KSAtIG9mZnNldG9mKHN0cnVjdCB0
eXBlLCBmaWVsZCkpKSkKPiArI2VuZGlmCj4gKwo+ICsjaWZuZGVmICAgICAgICBTVEFJTFFfTkVY
VAo+ICsjZGVmaW5lICAgICAgICBTVEFJTFFfTkVYVChlbG0sIGZpZWxkKSAoKGVsbSktPmZpZWxk
LnN0cWVfbmV4dCkKPiArI2VuZGlmCj4gKwo+ICsjaWZuZGVmICAgICAgICBTVEFJTFFfUkVNT1ZF
Cj4gKyNkZWZpbmUgICAgICAgIFNUQUlMUV9SRU1PVkUoaGVhZCwgZWxtLCB0eXBlLCBmaWVsZCkg
ZG8geyAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICBpZiAoKGhlYWQpLT5zdHFoX2Zp
cnN0ID09IChlbG0pKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAg
ICAgICAgICBTVEFJTFFfUkVNT1ZFX0hFQUQoKGhlYWQpLCBmaWVsZCk7ICAgICAgICAgICAgICAg
ICAgICAgIFwKPiArICAgICAgIH0gZWxzZSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAgICAgICAgIHN0cnVjdCB0eXBl
ICpjdXJlbG0gPSAoaGVhZCktPnN0cWhfZmlyc3Q7ICAgICAgICAgICAgICAgXAo+ICsgICAgICAg
ICAgICAgICB3aGlsZSAoY3VyZWxtLT5maWVsZC5zdHFlX25leHQgIT0gKGVsbSkpICAgICAgICAg
ICAgICAgIFwKPiArICAgICAgICAgICAgICAgICAgICAgICBjdXJlbG0gPSBjdXJlbG0tPmZpZWxk
LnN0cWVfbmV4dDsgICAgICAgICAgICAgICBcCj4gKyAgICAgICAgICAgICAgIGlmICgoY3VyZWxt
LT5maWVsZC5zdHFlX25leHQgPSAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAg
ICAgICAgICAgICAgICAgIGN1cmVsbS0+ZmllbGQuc3RxZV9uZXh0LT5maWVsZC5zdHFlX25leHQp
ID09IE5VTEwpIFwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgKGhlYWQpLT5zdHFoX2xh
c3QgPSAmKGN1cmVsbSktPmZpZWxkLnN0cWVfbmV4dDsgXAo+ICsgICAgICAgfSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiAr
fSB3aGlsZSAoLypDT05TVENPTkQqLzApCj4gKyNlbmRpZgo+ICsKPiArI2lmbmRlZiAgICAgICAg
U1RBSUxRX1JFTU9WRV9IRUFECj4gKyNkZWZpbmUgICAgICAgIFNUQUlMUV9SRU1PVkVfSEVBRCho
ZWFkLCBmaWVsZCkgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICBp
ZiAoKChoZWFkKS0+c3RxaF9maXJzdCA9IChoZWFkKS0+c3RxaF9maXJzdC0+ZmllbGQuc3RxZV9u
ZXh0KSA9PSBcCj4gKyAgICAgICAgICAgTlVMTCkgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgICAgICAgICAoaGVhZCktPnN0
cWhfbGFzdCA9ICYoaGVhZCktPnN0cWhfZmlyc3Q7ICAgICAgICAgICAgICAgIFwKPiArfSB3aGls
ZSAoLypDT05TVENPTkQqLzApCj4gKyNlbmRpZgo+ICsKPiArLyoKPiArICogVGhlIFNUQUlMUV9T
T1JUIG1hY3JvIGlzIGFkYXB0ZWQgZnJvbSBTaW1vbiBUYXRoYW0ncyBPKG4qbG9nKG4pKQo+ICsg
KiBtZXJnZXNvcnQgYWxnb3JpdGhtLgo+ICsgKi8KPiArI2lmbmRlZiAgICAgICAgU1RBSUxRX1NP
UlQKPiArI2RlZmluZSAgICAgICAgU1RBSUxRX1NPUlQoaGVhZCwgdHlwZSwgZmllbGQsIGNtcCkg
ZG8geyAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgIFNUQUlMUV9IRUFEKCwgdHlw
ZSkgX2xhLCBfbGI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAg
ICBzdHJ1Y3QgdHlwZSAqX3AsICpfcSwgKl9lOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAo+ICsgICAgICAgaW50IF9pLCBfc3osIF9ubWVyZ2VzLCBfcHN6LCBfcXN6OyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAg
ICBfc3ogPSAxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAo+ICsgICAgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICAgICAgICAgX25tZXJnZXMg
PSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAg
ICAgICAgICAgIFNUQUlMUV9JTklUKCZfbGIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAo+ICsgICAgICAgICAgICAgICB3aGlsZSAoIVNUQUlMUV9FTVBUWSgoaGVhZCkp
KSB7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICAgICAgICAgICAgICAgICBf
bm1lcmdlcysrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAg
ICAgICAgICAgICAgICAgICAgU1RBSUxRX0lOSVQoJl9sYSk7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAo+ICsgICAgICAgICAgICAgICAgICAgICAgIF9wc3ogPSAwOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICAgICAgICAgICAgICAgICBm
b3IgKF9pID0gMDsgX2kgPCBfc3ogJiYgIVNUQUlMUV9FTVBUWSgoaGVhZCkpOyBcCj4gKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBfaSsrKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2UgPSBTVEFJTFFf
RklSU1QoKGhlYWQpKTsgICAgICAgICAgICAgIFwKPiArICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChfZSA9PSBOVUxMKSAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3BzeisrOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFNUQUlMUV9SRU1PVkVfSEVBRCgoaGVhZCksIGZpZWxkKTsgICAgICBcCj4gKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBTVEFJTFFfSU5TRVJUX1RBSUwoJl9sYSwgX2UsIGZp
ZWxkKTsgICAgXAo+ICsgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICAgICAgICAgICAgICAgICBf
cCA9IFNUQUlMUV9GSVJTVCgmX2xhKTsgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAg
ICAgICAgICAgICAgICAgICAgX3FzeiA9IF9zejsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAo+ICsgICAgICAgICAgICAgICAgICAgICAgIF9xID0gU1RBSUxRX0ZJUlNUKCho
ZWFkKSk7ICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICAgICAgICAgICAgICAgICB3
aGlsZSAoX3BzeiA+IDAgfHwgKF9xc3ogPiAwICYmIF9xICE9IE5VTEwpKSB7ICBcCj4gKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoX3BzeiA9PSAwKSB7ICAgICAgICAgICAgICAg
ICAgICAgICAgXAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZSA9
IF9xOyAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgX3EgPSBTVEFJTFFfTkVYVChfcSwgZmllbGQpOyAgICBcCj4gKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNUQUlMUV9SRU1PVkVfSEVBRCgoaGVh
ZCksICAgICAgXAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZmllbGQpOyAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgX3Fzei0tOyAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKF9xc3ogPT0gMCB8fCBfcSA9PSBO
VUxMKSB7ICAgXAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZSA9
IF9wOyAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgX3AgPSBTVEFJTFFfTkVYVChfcCwgZmllbGQpOyAgICBcCj4gKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNUQUlMUV9SRU1PVkVfSEVBRCgmX2xh
LCBmaWVsZCk7XAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfcHN6
LS07ICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0gZWxzZSBpZiAoY21wKF9wLCBfcSkgPD0gMCkgeyAgICAgICAgICBcCj4gKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9lID0gX3A7ICAgICAgICAgICAgICAg
ICAgICAgICAgXAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfcCA9
IFNUQUlMUV9ORVhUKF9wLCBmaWVsZCk7ICAgIFwKPiArICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgU1RBSUxRX1JFTU9WRV9IRUFEKCZfbGEsIGZpZWxkKTtcCj4gKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9wc3otLTsgICAgICAgICAgICAgICAg
ICAgICAgICAgXAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgX2UgPSBfcTsgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9xID0gU1RBSUxRX05FWFQoX3EsIGZp
ZWxkKTsgICAgXAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVEFJ
TFFfUkVNT1ZFX0hFQUQoKGhlYWQpLCAgICAgIFwKPiArICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGZpZWxkKTsgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9xc3otLTsgICAgICAgICAgICAgICAg
ICAgICAgICAgXAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFNUQUlMUV9JTlNFUlRfVEFJTCgmX2xiLCBfZSwgZmllbGQpOyAgICBcCj4gKyAgICAg
ICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAo+ICsgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICAgICAgICAgKGhlYWQpLT5z
dHFoX2ZpcnN0ID0gX2xiLnN0cWhfZmlyc3Q7ICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAg
ICAgICAgICAgIChoZWFkKS0+c3RxaF9sYXN0ID0gX2xiLnN0cWhfbGFzdDsgICAgICAgICAgICAg
ICAgICAgICAgXAo+ICsgICAgICAgICAgICAgICBfc3ogKj0gMjsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgIH0gd2hpbGUgKF9ubWVyZ2Vz
ID4gMSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gK30gd2hp
bGUgKC8qQ09OU1RDT05EKi8wKQo+ICsjZW5kaWYKPiArCj4gKyNpZm5kZWYgICAgICAgIFRBSUxR
X0ZPUkVBQ0hfU0FGRQo+ICsjZGVmaW5lIFRBSUxRX0ZPUkVBQ0hfU0FGRSh2YXIsIGhlYWQsIGZp
ZWxkLCB0dmFyKSAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICBmb3IgKCh2YXIpID0g
VEFJTFFfRklSU1QoKGhlYWQpKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsg
ICAgICAgICAgICh2YXIpICYmICgodHZhcikgPSBUQUlMUV9ORVhUKCh2YXIpLCBmaWVsZCksIDEp
OyAgICAgICAgICAgIFwKPiArICAgICAgICAgICAodmFyKSA9ICh0dmFyKSkKPiArI2VuZGlmCj4g
Kwo+ICsvKiBdXSAtLVFVRVVFLU1BQ1JPUy0tICovCj4gKwo+ICsvKgo+ICsgKiBWQ1MgSWRzLgo+
ICsgKi8KPiArCj4gKyNpZm5kZWYgICAgICAgIEVMRlRDX1ZDU0lECj4gKwo+ICsjaWYgZGVmaW5l
ZChfX0RyYWdvbkZseV9fKQo+ICsjZGVmaW5lICAgICAgICBFTEZUQ19WQ1NJRChJRCkgICAgICAg
ICBfX1JDU0lEKElEKQo+ICsjZW5kaWYKPiArCj4gKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQo+
ICsjZGVmaW5lICAgICAgICBFTEZUQ19WQ1NJRChJRCkgICAgICAgICBfX0ZCU0RJRChJRCkKPiAr
I2VuZGlmCj4gKwo+ICsjaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoX19HTElCQ19f
KSB8fCBkZWZpbmVkKF9fR05VX18pIHx8IFwKPiArICAgIGRlZmluZWQoX19saW51eF9fKQo+ICsj
aWYgZGVmaW5lZChfX0dOVUNfXykKPiArI2RlZmluZSAgICAgICAgRUxGVENfVkNTSUQoSUQpICAg
ICAgICAgX19hc21fXygiLmlkZW50XHRcIiIgSUQgIlwiIikKPiArI2Vsc2UKPiArI2RlZmluZSAg
ICAgICAgRUxGVENfVkNTSUQoSUQpICAgICAgICAgLyoqLwo+ICsjZW5kaWYKPiArI2VuZGlmCj4g
Kwo+ICsjaWYgZGVmaW5lZChfX21pbml4KQo+ICsjaWYgZGVmaW5lZChfX0dOVUNfXykKPiArI2Rl
ZmluZSAgICAgICAgRUxGVENfVkNTSUQoSUQpICAgICAgICAgX19hc21fXygiLmlkZW50XHRcIiIg
SUQgIlwiIikKPiArI2Vsc2UKPiArI2RlZmluZSAgICAgICAgRUxGVENfVkNTSUQoSUQpICAgICAg
ICAgLyoqLwo+ICsjZW5kaWYgLyogX19HTlVfXyAqLwo+ICsjZW5kaWYKPiArCj4gKyNpZiBkZWZp
bmVkKF9fTmV0QlNEX18pCj4gKyNkZWZpbmUgICAgICAgIEVMRlRDX1ZDU0lEKElEKSAgICAgICAg
IF9fUkNTSUQoSUQpCj4gKyNlbmRpZgo+ICsKPiArI2lmIGRlZmluZWQoX19PcGVuQlNEX18pCj4g
KyNpZiBkZWZpbmVkKF9fR05VQ19fKQo+ICsjZGVmaW5lICAgICAgICBFTEZUQ19WQ1NJRChJRCkg
ICAgICAgICBfX2FzbV9fKCIuaWRlbnRcdFwiIiBJRCAiXCIiKQo+ICsjZWxzZQo+ICsjZGVmaW5l
ICAgICAgICBFTEZUQ19WQ1NJRChJRCkgICAgICAgICAvKiovCj4gKyNlbmRpZiAvKiBfX0dOVUNf
XyAqLwo+ICsjZW5kaWYKPiArCj4gKyNlbmRpZiAvKiBFTEZUQ19WQ1NJRCAqLwo+ICsKPiArLyoK
PiArICogUHJvdmlkZSBhbiBlcXVpdmFsZW50IGZvciBnZXRwcm9nbmFtZSgzKS4KPiArICovCj4g
Kwo+ICsjaWZuZGVmICAgICAgICBFTEZUQ19HRVRQUk9HTkFNRQo+ICsKPiArI2lmIGRlZmluZWQo
X19BUFBMRV9fKSB8fCBkZWZpbmVkKF9fRHJhZ29uRmx5X18pIHx8IGRlZmluZWQoX19GcmVlQlNE
X18pIHx8IFwKPiArICAgIGRlZmluZWQoX19taW5peCkgfHwgZGVmaW5lZChfX05ldEJTRF9fKQo+
ICsKPiArI2luY2x1ZGUgPHN0ZGxpYi5oPgo+ICsKPiArI2RlZmluZSAgICAgICAgRUxGVENfR0VU
UFJPR05BTUUoKSAgICAgZ2V0cHJvZ25hbWUoKQo+ICsKPiArI2VuZGlmIC8qIF9fRHJhZ29uRmx5
X18gfHwgX19GcmVlQlNEX18gfHwgX19taW5peCB8fCBfX05ldEJTRF9fICovCj4gKwo+ICsKPiAr
I2lmIGRlZmluZWQoX19HTElCQ19fKSB8fCBkZWZpbmVkKF9fbGludXhfXykKPiArI2lmbmRlZiBf
R05VX1NPVVJDRQo+ICsvKgo+ICsgKiBHTElCQyBiYXNlZCBzeXN0ZW1zIGhhdmUgYSBnbG9iYWwg
J2NoYXIgKicgcG9pbnRlciByZWZlcmVuY2luZwo+ICsgKiB0aGUgZXhlY3V0YWJsZSdzIG5hbWUu
Cj4gKyAqLwo+ICtleHRlcm4gY29uc3QgY2hhciAqcHJvZ3JhbV9pbnZvY2F0aW9uX3Nob3J0X25h
bWU7Cj4gKyNlbmRpZiAvKiAhX0dOVV9TT1VSQ0UgKi8KPiArCj4gKyNkZWZpbmUgICAgICAgIEVM
RlRDX0dFVFBST0dOQU1FKCkgICAgIHByb2dyYW1faW52b2NhdGlvbl9zaG9ydF9uYW1lCj4gKwo+
ICsjZW5kaWYgLyogX19HTElCQ19fIHx8IF9fbGludXhfXyAqLwo+ICsKPiArCj4gKyNpZiBkZWZp
bmVkKF9fT3BlbkJTRF9fKQo+ICsKPiArZXh0ZXJuIGNvbnN0IGNoYXIgKl9fcHJvZ25hbWU7Cj4g
Kwo+ICsjZGVmaW5lICAgICAgICBFTEZUQ19HRVRQUk9HTkFNRSgpICAgICBfX3Byb2duYW1lCj4g
Kwo+ICsjZW5kaWYgLyogX19PcGVuQlNEX18gKi8KPiArCj4gKyNlbmRpZiAvKiBFTEZUQ19HRVRQ
Uk9HTkFNRSAqLwo+ICsKPiArCj4gKy8qKgo+ICsgKiogUGVyLU9TIGNvbmZpZ3VyYXRpb24uCj4g
KyAqKi8KPiArCj4gKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykKPiArCj4gKyNpbmNsdWRlIDxsaWJr
ZXJuL09TQnl0ZU9yZGVyLmg+Cj4gKyNkZWZpbmUgICAgICAgIGh0b2JlMzIoeCkgICAgICBPU1N3
YXBIb3N0VG9CaWdJbnQzMih4KQo+ICsjZGVmaW5lICAgICAgICByb3VuZHVwMiAgICAgICAgcm91
bmR1cAo+ICsKPiArI2RlZmluZSAgICAgICAgRUxGVENfQllURV9PUkRFUiAgICAgICAgICAgICAg
ICAgICAgICAgIF9CWVRFX09SREVSCj4gKyNkZWZpbmUgICAgICAgIEVMRlRDX0JZVEVfT1JERVJf
TElUVExFX0VORElBTiAgICAgICAgICBfTElUVExFX0VORElBTgo+ICsjZGVmaW5lICAgICAgICBF
TEZUQ19CWVRFX09SREVSX0JJR19FTkRJQU4gICAgICAgICAgICAgX0JJR19FTkRJQU4KPiArCj4g
KyNkZWZpbmUgICAgICAgIEVMRlRDX0hBVkVfTU1BUCAgICAgICAgICAgICAgICAgICAgICAgICAx
Cj4gKyNkZWZpbmUgICAgICAgIEVMRlRDX0hBVkVfU1RSTU9ERSAgICAgICAgICAgICAgICAgICAg
ICAxCj4gKwo+ICsjZGVmaW5lIEVMRlRDX05FRURfQllURU9SREVSX0VYVEVOU0lPTlMgICAgICAg
ICAgICAgICAgMQo+ICsjZW5kaWYgLyogX19BUFBMRV9fICovCj4gKwo+ICsKPiArI2lmIGRlZmlu
ZWQoX19EcmFnb25GbHlfXykKPiArCj4gKyNpbmNsdWRlIDxvc3JlbGRhdGUuaD4KPiArI2luY2x1
ZGUgPHN5cy9lbmRpYW4uaD4KPiArCj4gKyNkZWZpbmUgICAgICAgIEVMRlRDX0JZVEVfT1JERVIg
ICAgICAgICAgICAgICAgICAgICAgICBfQllURV9PUkRFUgo+ICsjZGVmaW5lICAgICAgICBFTEZU
Q19CWVRFX09SREVSX0xJVFRMRV9FTkRJQU4gICAgICAgICAgX0xJVFRMRV9FTkRJQU4KPiArI2Rl
ZmluZSAgICAgICAgRUxGVENfQllURV9PUkRFUl9CSUdfRU5ESUFOICAgICAgICAgICAgIF9CSUdf
RU5ESUFOCj4gKwo+ICsjZGVmaW5lICAgICAgICBFTEZUQ19IQVZFX01NQVAgICAgICAgICAgICAg
ICAgICAgICAgICAgMQo+ICsKPiArI2VuZGlmCj4gKwo+ICsjaWYgZGVmaW5lZChfX0dMSUJDX18p
IHx8IGRlZmluZWQoX19saW51eF9fKQo+ICsKPiArI2luY2x1ZGUgPGVuZGlhbi5oPgo+ICsKPiAr
I2RlZmluZSAgICAgICAgRUxGVENfQllURV9PUkRFUiAgICAgICAgICAgICAgICAgICAgICAgIF9f
QllURV9PUkRFUgo+ICsjZGVmaW5lICAgICAgICBFTEZUQ19CWVRFX09SREVSX0xJVFRMRV9FTkRJ
QU4gICAgICAgICAgX19MSVRUTEVfRU5ESUFOCj4gKyNkZWZpbmUgICAgICAgIEVMRlRDX0JZVEVf
T1JERVJfQklHX0VORElBTiAgICAgICAgICAgICBfX0JJR19FTkRJQU4KPiArCj4gKyNkZWZpbmUg
ICAgICAgIEVMRlRDX0hBVkVfTU1BUCAgICAgICAgICAgICAgICAgICAgICAgICAxCj4gKwo+ICsv
Kgo+ICsgKiBEZWJpYW4gR05VL0xpbnV4IGFuZCBEZWJpYW4gR05VL2tGcmVlQlNEIGRvIG5vdCBo
YXZlIHN0cm1vZGUoMykuCj4gKyAqLwo+ICsjZGVmaW5lICAgICAgICBFTEZUQ19IQVZFX1NUUk1P
REUgICAgICAgICAgICAgICAgICAgICAgMAo+ICsKPiArLyogV2hldGhlciB3ZSBuZWVkIHRvIHN1
cHBseSB7YmUsbGV9MzJkZWMuICovCj4gKyNkZWZpbmUgRUxGVENfTkVFRF9CWVRFT1JERVJfRVhU
RU5TSU9OUyAgICAgICAgICAgICAgICAxCj4gKwo+ICsjZGVmaW5lICAgICAgICByb3VuZHVwMiAg
ICAgICAgcm91bmR1cAo+ICsKPiArI2VuZGlmIC8qIF9fR0xJQkNfXyB8fCBfX2xpbnV4X18gKi8K
PiArCj4gKwo+ICsjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKPiArCj4gKyNpbmNsdWRlIDxvc3Jl
bGRhdGUuaD4KPiArI2luY2x1ZGUgPHN5cy9lbmRpYW4uaD4KPiArCj4gKyNkZWZpbmUgICAgICAg
IEVMRlRDX0JZVEVfT1JERVIgICAgICAgICAgICAgICAgICAgICAgICBfQllURV9PUkRFUgo+ICsj
ZGVmaW5lICAgICAgICBFTEZUQ19CWVRFX09SREVSX0xJVFRMRV9FTkRJQU4gICAgICAgICAgX0xJ
VFRMRV9FTkRJQU4KPiArI2RlZmluZSAgICAgICAgRUxGVENfQllURV9PUkRFUl9CSUdfRU5ESUFO
ICAgICAgICAgICAgIF9CSUdfRU5ESUFOCj4gKwo+ICsjZGVmaW5lICAgICAgICBFTEZUQ19IQVZF
X01NQVAgICAgICAgICAgICAgICAgICAgICAgICAgMQo+ICsjZGVmaW5lICAgICAgICBFTEZUQ19I
QVZFX1NUUk1PREUgICAgICAgICAgICAgICAgICAgICAgMQo+ICsjaWYgX19GcmVlQlNEX3ZlcnNp
b24gPD0gOTAwMDAwCj4gKyNkZWZpbmUgICAgICAgIEVMRlRDX0JST0tFTl9ZWV9OT19JTlBVVCAg
ICAgICAgICAgICAgICAxCj4gKyNlbmRpZgo+ICsjZW5kaWYgLyogX19GcmVlQlNEX18gKi8KPiAr
Cj4gKwo+ICsjaWYgZGVmaW5lZChfX21pbml4KQo+ICsjZGVmaW5lICAgICAgICBFTEZUQ19IQVZF
X01NQVAgICAgICAgICAgICAgICAgICAgICAgICAgMAo+ICsjZW5kaWYgLyogX19taW5peCAqLwo+
ICsKPiArCj4gKyNpZiBkZWZpbmVkKF9fTmV0QlNEX18pCj4gKwo+ICsjaW5jbHVkZSA8c3lzL3Bh
cmFtLmg+Cj4gKyNpbmNsdWRlIDxzeXMvZW5kaWFuLmg+Cj4gKwo+ICsjZGVmaW5lICAgICAgICBF
TEZUQ19CWVRFX09SREVSICAgICAgICAgICAgICAgICAgICAgICAgX0JZVEVfT1JERVIKPiArI2Rl
ZmluZSAgICAgICAgRUxGVENfQllURV9PUkRFUl9MSVRUTEVfRU5ESUFOICAgICAgICAgIF9MSVRU
TEVfRU5ESUFOCj4gKyNkZWZpbmUgICAgICAgIEVMRlRDX0JZVEVfT1JERVJfQklHX0VORElBTiAg
ICAgICAgICAgICBfQklHX0VORElBTgo+ICsKPiArI2RlZmluZSAgICAgICAgRUxGVENfSEFWRV9N
TUFQICAgICAgICAgICAgICAgICAgICAgICAgIDEKPiArI2RlZmluZSAgICAgICAgRUxGVENfSEFW
RV9TVFJNT0RFICAgICAgICAgICAgICAgICAgICAgIDEKPiArI2lmIF9fTmV0QlNEX1ZlcnNpb25f
XyA8PSA1OTkwMDIxMDAKPiArLyogZnJvbSBzcmMvZG9jL0NIQU5HRVM6IGZsZXgoMSk6IEltcG9y
dCBmbGV4LTIuNS4zNSBbY2hyaXN0b3MgMjAwOTEwMjVdICovCj4gKy8qIGFuZCA1Ljk5LjIxIHdh
cyBmcm9tIFdlZCBPY3QgMjEgMjE6Mjg6MzYgMjAwOSBVVEMgKi8KPiArIyAgZGVmaW5lIEVMRlRD
X0JST0tFTl9ZWV9OT19JTlBVVCAgICAgICAgICAgICAxCj4gKyNlbmRpZgo+ICsjZW5kaWYgLyog
X19OZXRCU0QgX18gKi8KPiArCj4gKwo+ICsjaWYgZGVmaW5lZChfX09wZW5CU0RfXykKPiArCj4g
KyNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KPiArI2luY2x1ZGUgPHN5cy9lbmRpYW4uaD4KPiArCj4g
KyNkZWZpbmUgICAgICAgIEVMRlRDX0JZVEVfT1JERVIgICAgICAgICAgICAgICAgICAgICAgICBf
QllURV9PUkRFUgo+ICsjZGVmaW5lICAgICAgICBFTEZUQ19CWVRFX09SREVSX0xJVFRMRV9FTkRJ
QU4gICAgICAgICAgX0xJVFRMRV9FTkRJQU4KPiArI2RlZmluZSAgICAgICAgRUxGVENfQllURV9P
UkRFUl9CSUdfRU5ESUFOICAgICAgICAgICAgIF9CSUdfRU5ESUFOCj4gKwo+ICsjZGVmaW5lICAg
ICAgICBFTEZUQ19IQVZFX01NQVAgICAgICAgICAgICAgICAgICAgICAgICAgMQo+ICsjZGVmaW5l
ICAgICAgICBFTEZUQ19IQVZFX1NUUk1PREUgICAgICAgICAgICAgICAgICAgICAgMQo+ICsKPiAr
I2RlZmluZSAgICAgICAgRUxGVENfTkVFRF9CWVRFT1JERVJfRVhURU5TSU9OUyAgICAgICAgIDEK
PiArI2RlZmluZSAgICAgICAgcm91bmR1cDIgICAgICAgIHJvdW5kdXAKPiArCj4gKyNlbmRpZiAv
KiBfX09wZW5CU0RfXyAqLwo+ICsKPiArI2VuZGlmIC8qIF9FTEZUQ19IICovCj4gZGlmZiAtLWdp
dCBhL19saWJlbGYuaCBiL19saWJlbGYuaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXgg
MDAwMDAwMC4uYmU0NTMzNQo+IC0tLSAvZGV2L251bGwKPiArKysgYi9fbGliZWxmLmgKPiBAQCAt
MCwwICsxLDIzOSBAQAo+ICsvKi0KPiArICogQ29weXJpZ2h0IChjKSAyMDA2LDIwMDgtMjAxMSBK
b3NlcGggS29zaHkKPiArICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KPiArICoKPiArICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Cj4gKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwo+ICsgKiBhcmUgbWV0Ogo+ICsgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAo+ICsgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCj4gKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cj4gKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKPiArICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KPiArICoKPiArICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVU
SE9SIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAo+ICsgKiBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKPiAr
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UKPiArICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKPiArICogRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwKPiArICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKPiArICogT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCj4gKyAqIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUCj4gKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKPiArICogT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
Rgo+ICsgKiBTVUNIIERBTUFHRS4KPiArICoKPiArICogJElkOiBfbGliZWxmLmggMzE3NCAyMDE1
LTAzLTI3IDE3OjEzOjQxWiBlbWFzdGUgJAo+ICsgKi8KPiArCj4gKyNpZm5kZWYgICAgICAgIF9f
TElCRUxGX0hfCj4gKyNkZWZpbmUgICAgICAgIF9fTElCRUxGX0hfCj4gKwo+ICsjaW5jbHVkZSA8
c3lzL3F1ZXVlLmg+Cj4gKwo+ICsjaW5jbHVkZSAiX2xpYmVsZl9jb25maWcuaCIKPiArCj4gKyNp
bmNsdWRlICJfZWxmdGMuaCIKPiArCj4gKy8qCj4gKyAqIExpYnJhcnktcHJpdmF0ZSBkYXRhIHN0
cnVjdHVyZXMuCj4gKyAqLwo+ICsKPiArI2RlZmluZSBMSUJFTEZfTVNHX1NJWkUgICAgICAgIDI1
Ngo+ICsKPiArc3RydWN0IF9saWJlbGZfZ2xvYmFscyB7Cj4gKyAgICAgICBpbnQgICAgICAgICAg
ICAgbGliZWxmX2FyY2g7Cj4gKyAgICAgICB1bnNpZ25lZCBpbnQgICAgbGliZWxmX2J5dGVvcmRl
cjsKPiArICAgICAgIGludCAgICAgICAgICAgICBsaWJlbGZfY2xhc3M7Cj4gKyAgICAgICBpbnQg
ICAgICAgICAgICAgbGliZWxmX2Vycm9yOwo+ICsgICAgICAgaW50ICAgICAgICAgICAgIGxpYmVs
Zl9maWxsY2hhcjsKPiArICAgICAgIHVuc2lnbmVkIGludCAgICBsaWJlbGZfdmVyc2lvbjsKPiAr
ICAgICAgIHVuc2lnbmVkIGNoYXIgICBsaWJlbGZfbXNnW0xJQkVMRl9NU0dfU0laRV07Cj4gK307
Cj4gKwo+ICtleHRlcm4gc3RydWN0IF9saWJlbGZfZ2xvYmFscyBfbGliZWxmOwo+ICsKPiArI2Rl
ZmluZSAgICAgICAgTElCRUxGX1BSSVZBVEUoTikgICAgICAgKF9saWJlbGYubGliZWxmXyMjTikK
PiArCj4gKyNkZWZpbmUgICAgICAgIExJQkVMRl9FTEZfRVJST1JfTUFTSyAgICAgICAgICAgICAg
ICAgICAweEZGCj4gKyNkZWZpbmUgICAgICAgIExJQkVMRl9PU19FUlJPUl9TSElGVCAgICAgICAg
ICAgICAgICAgICA4Cj4gKwo+ICsjZGVmaW5lICAgICAgICBMSUJFTEZfRVJST1IoRSwgTykgKCgo
RSkgJiBMSUJFTEZfRUxGX0VSUk9SX01BU0spIHwgICAgIFwKPiArICAgICAgICgoTykgPDwgTElC
RUxGX09TX0VSUk9SX1NISUZUKSkKPiArCj4gKyNkZWZpbmUgICAgICAgIExJQkVMRl9TRVRfRVJS
T1IoRSwgTykgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAg
ICAgICAgICAgICAgIExJQkVMRl9QUklWQVRFKGVycm9yKSA9IExJQkVMRl9FUlJPUihFTEZfRV8j
I0UsIChPKSk7ICAgXAo+ICsgICAgICAgfSB3aGlsZSAoMCkKPiArCj4gKyNkZWZpbmUgICAgICAg
IExJQkVMRl9BREpVU1RfQVJfU0laRShTKSAgICAgICAgKCgoUykgKyAxVSkgJiB+MVUpCj4gKwo+
ICsvKgo+ICsgKiBGbGFncyBmb3IgbGlicmFyeSBpbnRlcm5hbCB1c2UuICBUaGVzZSB1c2UgdGhl
IHVwcGVyIDE2IGJpdHMgb2YgdGhlCj4gKyAqIGBlX2ZsYWdzJyBmaWVsZC4KPiArICovCj4gKyNk
ZWZpbmUgICAgICAgIExJQkVMRl9GX0FQSV9NQVNLICAgICAgIDB4MDBGRkZGVSAgLyogRmxhZ3Mg
ZGVmaW5lZCBieSB0aGUgQVBJLiAqLwo+ICsjZGVmaW5lICAgICAgICBMSUJFTEZfRl9BUl9IRUFE
RVIgICAgICAweDAxMDAwMFUgIC8qIHRyYW5zbGF0ZWQgaGVhZGVyIGF2YWlsYWJsZSAqLwo+ICsj
ZGVmaW5lICAgICAgICBMSUJFTEZfRl9BUl9WQVJJQU5UX1NWUjQgMHgwMjAwMDBVIC8qIEJTRCBz
dHlsZSBhcigxKSBhcmNoaXZlICovCj4gKyNkZWZpbmUgICAgICAgIExJQkVMRl9GX0RBVEFfTUFM
TE9DRUQgIDB4MDQwMDAwVSAvKiB3aGV0aGVyIGRhdGEgd2FzIG1hbGxvYydlZCAqLwo+ICsjZGVm
aW5lICAgICAgICBMSUJFTEZfRl9SQVdGSUxFX01BTExPQyAweDA4MDAwMFUgLyogd2hldGhlciBl
X3Jhd2ZpbGUgd2FzIG1hbGxvYydlZCAqLwo+ICsjZGVmaW5lICAgICAgICBMSUJFTEZfRl9SQVdG
SUxFX01NQVAgICAweDEwMDAwMFUgLyogd2hldGhlciBlX3Jhd2ZpbGUgd2FzIG1tYXAnZWQgKi8K
PiArI2RlZmluZSAgICAgICAgTElCRUxGX0ZfU0hEUlNfTE9BREVEICAgMHgyMDAwMDBVIC8qIHdo
ZXRoZXIgYWxsIHNoZHJzIHdlcmUgcmVhZCBpbiAqLwo+ICsjZGVmaW5lICAgICAgICBMSUJFTEZf
Rl9TUEVDSUFMX0ZJTEUgICAweDQwMDAwMFUgLyogbm9uLXJlZ3VsYXIgZmlsZSAqLwo+ICsKPiAr
c3RydWN0IF9FbGYgewo+ICsgICAgICAgaW50ICAgICAgICAgICAgIGVfYWN0aXZhdGlvbnM7ICAv
KiBhY3RpdmF0aW9uIGNvdW50ICovCj4gKyAgICAgICB1bnNpZ25lZCBpbnQgICAgZV9ieXRlb3Jk
ZXI7ICAgIC8qIEVMRkRBVEEqICovCj4gKyAgICAgICBpbnQgICAgICAgICAgICAgZV9jbGFzczsg
ICAgICAgIC8qIEVMRkNMQVNTKiAgKi8KPiArICAgICAgIEVsZl9DbWQgICAgICAgICBlX2NtZDsg
ICAgICAgICAgLyogRUxGX0NfKiB1c2VkIGF0IGNyZWF0aW9uIHRpbWUgKi8KPiArICAgICAgIGlu
dCAgICAgICAgICAgICBlX2ZkOyAgICAgICAgICAgLyogYXNzb2NpYXRlZCBmaWxlIGRlc2NyaXB0
b3IgKi8KPiArICAgICAgIHVuc2lnbmVkIGludCAgICBlX2ZsYWdzOyAgICAgICAgLyogRUxGX0Zf
KiAmIExJQkVMRl9GXyogZmxhZ3MgKi8KPiArICAgICAgIEVsZl9LaW5kICAgICAgICBlX2tpbmQ7
ICAgICAgICAgLyogRUxGX0tfKiAqLwo+ICsgICAgICAgRWxmICAgICAgICAgICAgICplX3BhcmVu
dDsgICAgICAvKiBub24tTlVMTCBmb3IgYXJjaGl2ZSBtZW1iZXJzICovCj4gKyAgICAgICB1bnNp
Z25lZCBjaGFyICAgKmVfcmF3ZmlsZTsgICAgIC8qIHVuaW50ZXJwcmV0ZWQgYnl0ZXMgKi8KPiAr
ICAgICAgIHNpemVfdCAgICAgICAgICBlX3Jhd3NpemU7ICAgICAgLyogc2l6ZSBvZiB1bmludGVy
cHJldGVkIGJ5dGVzICovCj4gKyAgICAgICB1bnNpZ25lZCBpbnQgICAgZV92ZXJzaW9uOyAgICAg
IC8qIGZpbGUgdmVyc2lvbiAqLwo+ICsKPiArICAgICAgIC8qCj4gKyAgICAgICAgKiBIZWFkZXIg
aW5mb3JtYXRpb24gZm9yIGFyY2hpdmUgbWVtYmVycy4gIFNlZSB0aGUKPiArICAgICAgICAqIExJ
QkVMRl9GX0FSX0hFQURFUiBmbGFnLgo+ICsgICAgICAgICovCj4gKyAgICAgICB1bmlvbiB7Cj4g
KyAgICAgICAgICAgICAgIEVsZl9BcmhkciAgICAgICAqZV9hcmhkcjsgICAgICAgLyogdHJhbnNs
YXRlZCBoZWFkZXIgKi8KPiArICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAgICplX3Jhd2hk
cjsgICAgICAvKiB1bnRyYW5zbGF0ZWQgaGVhZGVyICovCj4gKyAgICAgICB9IGVfaGRyOwo+ICsK
PiArICAgICAgIHVuaW9uIHsKPiArICAgICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAg
ICAgLyogYXIoMSkgYXJjaGl2ZXMgKi8KPiArICAgICAgICAgICAgICAgICAgICAgICBvZmZfdCAg
IGVfbmV4dDsgLyogc2V0IGJ5IGVsZl9yYW5kKCkvZWxmX25leHQoKSAqLwo+ICsgICAgICAgICAg
ICAgICAgICAgICAgIGludCAgICAgZV9uY2hpbGRyZW47Cj4gKyAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgY2hhciAqZV9yYXdzdHJ0YWI7IC8qIGZpbGUgbmFtZSBzdHJpbmdzICovCj4g
KyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICBlX3Jhd3N0cnRhYnN6Owo+ICsgICAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKmVfcmF3c3ltdGFiOyAgICAgLyogc3ltYm9s
IHRhYmxlICovCj4gKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICBlX3Jhd3N5bXRhYnN6
Owo+ICsgICAgICAgICAgICAgICAgICAgICAgIEVsZl9BcnN5bSAqZV9zeW10YWI7Cj4gKyAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90ICBlX3N5bXRhYnN6Owo+ICsgICAgICAgICAgICAgICB9
IGVfYXI7Cj4gKyAgICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgIC8qIHJlZ3Vs
YXIgRUxGIGZpbGVzICovCj4gKyAgICAgICAgICAgICAgICAgICAgICAgdW5pb24gewo+ICsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRWxmMzJfRWhkciAqZV9laGRyMzI7Cj4gKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBFbGY2NF9FaGRyICplX2VoZHI2NDsKPiArICAgICAg
ICAgICAgICAgICAgICAgICB9IGVfZWhkcjsKPiArICAgICAgICAgICAgICAgICAgICAgICB1bmlv
biB7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbGYzMl9QaGRyICplX3BoZHIz
MjsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVsZjY0X1BoZHIgKmVfcGhkcjY0
Owo+ICsgICAgICAgICAgICAgICAgICAgICAgIH0gZV9waGRyOwo+ICsgICAgICAgICAgICAgICAg
ICAgICAgIFNUQUlMUV9IRUFEKCwgX0VsZl9TY24pIGVfc2NuOyAgLyogc2VjdGlvbiBsaXN0ICov
Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICBlX25waGRyOyAgICAgICAgLyogbnVt
YmVyIG9mIFBoZHIgZW50cmllcyAqLwo+ICsgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAg
ZV9uc2NuOyAgICAgICAgIC8qIG51bWJlciBvZiBzZWN0aW9ucyAqLwo+ICsgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCAgZV9zdHJuZHg7ICAgICAgIC8qIHN0cmluZyB0YWJsZSBzZWN0aW9u
IGluZGV4ICovCj4gKyAgICAgICAgICAgICAgIH0gZV9lbGY7Cj4gKyAgICAgICB9IGVfdTsKPiAr
fTsKPiArCj4gKy8qCj4gKyAqIFRoZSBpbnRlcm5hbCBkZXNjcmlwdG9yIHdyYXBwaW5nIHRoZSAi
RWxmX0RhdGEiIHR5cGUuCj4gKyAqLwo+ICtzdHJ1Y3QgX0xpYmVsZl9EYXRhIHsKPiArICAgICAg
IEVsZl9EYXRhICAgICAgICBkX2RhdGE7ICAgICAgICAgLyogVGhlIGV4cG9ydGVkIGRlc2NyaXB0
b3IuICovCj4gKyAgICAgICBFbGZfU2NuICAgICAgICAgKmRfc2NuOyAgICAgICAgIC8qIFRoZSBj
b250YWluaW5nIHNlY3Rpb24gKi8KPiArICAgICAgIHVuc2lnbmVkIGludCAgICBkX2ZsYWdzOwo+
ICsgICAgICAgU1RBSUxRX0VOVFJZKF9MaWJlbGZfRGF0YSkgZF9uZXh0Owo+ICt9Owo+ICsKPiAr
c3RydWN0IF9FbGZfU2NuIHsKPiArICAgICAgIHVuaW9uIHsKPiArICAgICAgICAgICAgICAgRWxm
MzJfU2hkciAgICAgIHNfc2hkcjMyOwo+ICsgICAgICAgICAgICAgICBFbGY2NF9TaGRyICAgICAg
c19zaGRyNjQ7Cj4gKyAgICAgICB9IHNfc2hkcjsKPiArICAgICAgIFNUQUlMUV9IRUFEKCwgX0xp
YmVsZl9EYXRhKSBzX2RhdGE7ICAgICAvKiB0cmFuc2xhdGVkIGRhdGEgKi8KPiArICAgICAgIFNU
QUlMUV9IRUFEKCwgX0xpYmVsZl9EYXRhKSBzX3Jhd2RhdGE7ICAvKiByYXcgZGF0YSAqLwo+ICsg
ICAgICAgU1RBSUxRX0VOVFJZKF9FbGZfU2NuKSBzX25leHQ7Cj4gKyAgICAgICBzdHJ1Y3QgX0Vs
ZiAgICAgKnNfZWxmOyAgICAgICAgIC8qIHBhcmVudCBFTEYgZGVzY3JpcHRvciAqLwo+ICsgICAg
ICAgdW5zaWduZWQgaW50ICAgIHNfZmxhZ3M7ICAgICAgICAvKiBmbGFncyBmb3IgdGhlIHNlY3Rp
b24gYXMgYSB3aG9sZSAqLwo+ICsgICAgICAgc2l6ZV90ICAgICAgICAgIHNfbmR4OyAgICAgICAg
ICAvKiBpbmRleCMgZm9yIHRoaXMgc2VjdGlvbiAqLwo+ICsgICAgICAgdWludDY0X3QgICAgICAg
IHNfb2Zmc2V0OyAgICAgICAvKiBtYW5hZ2VkIGJ5IGVsZl91cGRhdGUoKSAqLwo+ICsgICAgICAg
dWludDY0X3QgICAgICAgIHNfcmF3b2ZmOyAgICAgICAvKiBvcmlnaW5hbCBvZmZzZXQgaW4gdGhl
IGZpbGUgKi8KPiArICAgICAgIHVpbnQ2NF90ICAgICAgICBzX3NpemU7ICAgICAgICAgLyogbWFu
YWdlZCBieSBlbGZfdXBkYXRlKCkgKi8KPiArfTsKPiArCj4gKwo+ICtlbnVtIHsKPiArICAgICAg
IEVMRl9UT0ZJTEUsCj4gKyAgICAgICBFTEZfVE9NRU1PUlkKPiArfTsKPiArCj4gKwo+ICsvKgo+
ICsgKiBUaGUgTElCRUxGX0NPUFkgbWFjcm9zIGFyZSB1c2VkIHRvIGNvcHkgZmllbGRzIGZyb20g
YSBHRWxmXyoKPiArICogc3RydWN0dXJlIHRvIHRoZWlyIDMyLWJpdCBjb3VudGVycGFydHMsIHdo
aWxlIGNoZWNraW5nIGZvciBvdXQgb2YKPiArICogcmFuZ2UgdmFsdWVzLgo+ICsgKgo+ICsgKiAt
IExJQkVMRl9DT1BZX1UzMiA6OiBjb3B5IGFuIHVuc2lnbmVkIDMyIGJpdCBmaWVsZC4KPiArICog
LSBMSUJFTEZfQ09QWV9TMzIgOjogY29weSBhIHNpZ25lZCAzMiBiaXQgZmllbGQuCj4gKyAqLwo+
ICsKPiArI2RlZmluZSAgICAgICAgTElCRUxGX0NPUFlfVTMyKERTVCwgU1JDLCBOQU1FKSBkbyB7
ICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAgICAgICAgIGlmICgoU1JDKS0+TkFNRSA+
IFVJTlQzMl9NQVgpIHsgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICAgICAgICAgICAgICAg
ICBMSUJFTEZfU0VUX0VSUk9SKFJBTkdFLCAwKTsgICAgICAgICAgICAgXAo+ICsgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiAoMCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4g
KyAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKPiArICAgICAgICAgICAgICAgKERTVCktPk5BTUUgPSAoU1JDKS0+TkFNRSAmIDB4
RkZGRkZGRkZVOyAgICAgICAgXAo+ICsgICAgICAgfSB3aGlsZSAoMCkKPiArCj4gKyNkZWZpbmUg
ICAgICAgIExJQkVMRl9DT1BZX1MzMihEU1QsIFNSQywgTkFNRSkgZG8geyAgICAgICAgICAgICAg
ICAgICAgXAo+ICsgICAgICAgICAgICAgICBpZiAoKFNSQyktPk5BTUUgPiBJTlQzMl9NQVggfHwg
ICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAgICAgICAgICAgICAoU1JDKS0+TkFNRSA8IElO
VDMyX01JTikgeyAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICAgICAgICAgICAgICAgICBM
SUJFTEZfU0VUX0VSUk9SKFJBTkdFLCAwKTsgICAgICAgICAgICAgXAo+ICsgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiAoMCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAg
ICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKPiArICAgICAgICAgICAgICAgKERTVCktPk5BTUUgPSAoaW50MzJfdCkgKFNSQyktPk5B
TUU7ICAgICAgICAgICAgXAo+ICsgICAgICAgfSB3aGlsZSAoMCkKPiArCj4gKwo+ICsvKgo+ICsg
KiBGdW5jdGlvbiBQcm90b3R5cGVzLgo+ICsgKi8KPiArCj4gKyNpZmRlZiBfX2NwbHVzcGx1cwo+
ICtleHRlcm4gIkMiIHsKPiArI2VuZGlmCj4gK3N0cnVjdCBfTGliZWxmX0RhdGEgKl9saWJlbGZf
YWxsb2NhdGVfZGF0YShFbGZfU2NuICpfcyk7Cj4gK0VsZiAgICAqX2xpYmVsZl9hbGxvY2F0ZV9l
bGYodm9pZCk7Cj4gK0VsZl9TY24gICAgICAgICpfbGliZWxmX2FsbG9jYXRlX3NjbihFbGYgKl9l
LCBzaXplX3QgX25keCk7Cj4gK0VsZl9BcmhkciAqX2xpYmVsZl9hcl9nZXRoZHIoRWxmICpfZSk7
Cj4gK0VsZiAgICAqX2xpYmVsZl9hcl9vcGVuKEVsZiAqX2UsIGludCBfcmVwb3J0ZXJyb3IpOwo+
ICtFbGYgICAgKl9saWJlbGZfYXJfb3Blbl9tZW1iZXIoaW50IF9mZCwgRWxmX0NtZCBfYywgRWxm
ICpfYXIpOwo+ICtFbGZfQXJzeW0gKl9saWJlbGZfYXJfcHJvY2Vzc19ic2Rfc3ltdGFiKEVsZiAq
X2FyLCBzaXplX3QgKl9kc3QpOwo+ICtFbGZfQXJzeW0gKl9saWJlbGZfYXJfcHJvY2Vzc19zdnI0
X3N5bXRhYihFbGYgKl9hciwgc2l6ZV90ICpfZHN0KTsKPiArbG9uZyAgICBfbGliZWxmX2NoZWNr
c3VtKEVsZiAqX2UsIGludCBfZWxmY2xhc3MpOwo+ICt2b2lkICAgKl9saWJlbGZfZWhkcihFbGYg
Kl9lLCBpbnQgX2VsZmNsYXNzLCBpbnQgX2FsbG9jYXRlKTsKPiArdW5zaWduZWQgaW50IF9saWJl
bGZfZmFsaWduKEVsZl9UeXBlIF90LCBpbnQgX2VsZmNsYXNzKTsKPiArc2l6ZV90IF9saWJlbGZf
ZnNpemUoRWxmX1R5cGUgX3QsIGludCBfZWxmY2xhc3MsIHVuc2lnbmVkIGludCBfdmVyc2lvbiwK
PiArICAgIHNpemVfdCBjb3VudCk7Cj4gK2ludCAgICAoKl9saWJlbGZfZ2V0X3RyYW5zbGF0b3Io
RWxmX1R5cGUgX3QsIGludCBfZGlyZWN0aW9uLCBpbnQgX2VsZmNsYXNzKSkKPiArICAgICAgICAg
ICAodW5zaWduZWQgY2hhciAqX2RzdCwgc2l6ZV90IGRzeiwgdW5zaWduZWQgY2hhciAqX3NyYywK
PiArICAgICAgICAgICAgc2l6ZV90IF9jbnQsIGludCBfYnl0ZXN3YXApOwo+ICt2b2lkICAgKl9s
aWJlbGZfZ2V0cGhkcihFbGYgKl9lLCBpbnQgX2VsZmNsYXNzKTsKPiArdm9pZCAgICpfbGliZWxm
X2dldHNoZHIoRWxmX1NjbiAqX3NjbiwgaW50IF9lbGZjbGFzcyk7Cj4gK3ZvaWQgICBfbGliZWxm
X2luaXRfZWxmKEVsZiAqX2UsIEVsZl9LaW5kIF9raW5kKTsKPiAraW50ICAgIF9saWJlbGZfbG9h
ZF9zZWN0aW9uX2hlYWRlcnMoRWxmICplLCB2b2lkICplaGRyKTsKPiArdW5zaWduZWQgaW50IF9s
aWJlbGZfbWFsaWduKEVsZl9UeXBlIF90LCBpbnQgX2VsZmNsYXNzKTsKPiArRWxmICAgICpfbGli
ZWxmX21lbW9yeSh1bnNpZ25lZCBjaGFyICpfaW1hZ2UsIHNpemVfdCBfc3osIGludCBfcmVwb3J0
ZXJyb3IpOwo+ICtzaXplX3QgX2xpYmVsZl9tc2l6ZShFbGZfVHlwZSBfdCwgaW50IF9lbGZjbGFz
cywgdW5zaWduZWQgaW50IF92ZXJzaW9uKTsKPiArdm9pZCAgICpfbGliZWxmX25ld3BoZHIoRWxm
ICpfZSwgaW50IF9lbGZjbGFzcywgc2l6ZV90IF9jb3VudCk7Cj4gK0VsZiAgICAqX2xpYmVsZl9v
cGVuX29iamVjdChpbnQgX2ZkLCBFbGZfQ21kIF9jLCBpbnQgX3JlcG9ydGVycm9yKTsKPiArc3Ry
dWN0IF9MaWJlbGZfRGF0YSAqX2xpYmVsZl9yZWxlYXNlX2RhdGEoc3RydWN0IF9MaWJlbGZfRGF0
YSAqX2QpOwo+ICtFbGYgICAgKl9saWJlbGZfcmVsZWFzZV9lbGYoRWxmICpfZSk7Cj4gK0VsZl9T
Y24gICAgICAgICpfbGliZWxmX3JlbGVhc2Vfc2NuKEVsZl9TY24gKl9zKTsKPiAraW50ICAgIF9s
aWJlbGZfc2V0cGhudW0oRWxmICpfZSwgdm9pZCAqX2VoLCBpbnQgX2VsZmNsYXNzLCBzaXplX3Qg
X3BobnVtKTsKPiAraW50ICAgIF9saWJlbGZfc2V0c2hudW0oRWxmICpfZSwgdm9pZCAqX2VoLCBp
bnQgX2VsZmNsYXNzLCBzaXplX3QgX3NobnVtKTsKPiAraW50ICAgIF9saWJlbGZfc2V0c2hzdHJu
ZHgoRWxmICpfZSwgdm9pZCAqX2VoLCBpbnQgX2VsZmNsYXNzLAo+ICsgICAgc2l6ZV90IF9zaHN0
cm5keCk7Cj4gK0VsZl9EYXRhICpfbGliZWxmX3hsYXRlKEVsZl9EYXRhICpfZCwgY29uc3QgRWxm
X0RhdGEgKl9zLAo+ICsgICAgdW5zaWduZWQgaW50IF9lbmNvZGluZywgaW50IF9lbGZjbGFzcywg
aW50IF9kaXJlY3Rpb24pOwo+ICtpbnQgICAgX2xpYmVsZl94bGF0ZV9zaHR5cGUodWludDMyX3Qg
X3NodCk7Cj4gKyNpZmRlZiBfX2NwbHVzcGx1cwo+ICt9Cj4gKyNlbmRpZgo+ICsKPiArI2VuZGlm
IC8qIF9fTElCRUxGX0hfICovCj4gZGlmZiAtLWdpdCBhL19saWJlbGZfYXIuaCBiL19saWJlbGZf
YXIuaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uNDVhN2UxNgo+IC0t
LSAvZGV2L251bGwKPiArKysgYi9fbGliZWxmX2FyLmgKPiBAQCAtMCwwICsxLDU3IEBACj4gKy8q
LQo+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMTAgSm9zZXBoIEtvc2h5Cj4gKyAqIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCj4gKyAqCj4gKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAo+ICsgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKPiArICogYXJl
IG1ldDoKPiArICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKPiArICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgo+ICsgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAo+ICsg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCj4gKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCj4gKyAqCj4gKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTIGBBUyBJUycg
QU5ECj4gKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQo+ICsgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQo+ICsgKiBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRQo+ICsgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAo+ICsgKiBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUwo+
ICsgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikKPiArICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKPiArICogTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWQo+ICsgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCj4gKyAqIFNVQ0ggREFNQUdFLgo+ICsgKgo+ICsg
KiAkSWQ6IF9saWJlbGZfYXIuaCAzMDEzIDIwMTQtMDMtMjMgMDY6MTY6NTlaIGprb3NoeSAkCj4g
KyAqLwo+ICsKPiArI2lmbmRlZiAgICAgICAgX19MSUJFTEZfQVJfSF8KPiArI2RlZmluZSAgICAg
ICAgX19MSUJFTEZfQVJfSF8KPiArCj4gKy8qCj4gKyAqIFByb3RvdHlwZXMgYW5kIGRlY2xhcmF0
aW9ucyBuZWVkZWQgYnkgbGliZWxmJ3MgYXIoMSkgYXJjaGl2ZQo+ICsgKiBoYW5kbGluZyBjb2Rl
Lgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlIDxhci5oPgo+ICsKPiArI2RlZmluZSAgICAgICAgTElC
RUxGX0FSX0JTRF9FWFRFTkRFRF9OQU1FX1BSRUZJWCAgICAgICIjMS8iCj4gKyNkZWZpbmUgICAg
ICAgIExJQkVMRl9BUl9CU0RfU1lNVEFCX05BTUUgICAgICAgICAgICAgICAiX18uU1lNREVGIgo+
ICsjZGVmaW5lICAgICAgICBMSUJFTEZfQVJfQlNEX0VYVEVOREVEX05BTUVfUFJFRklYX1NJWkUg
XAo+ICsgICAgICAgKHNpemVvZihMSUJFTEZfQVJfQlNEX0VYVEVOREVEX05BTUVfUFJFRklYKSAt
IDEpCj4gKwo+ICsjZGVmaW5lICAgICAgICBJU19FWFRFTkRFRF9CU0RfTkFNRShOQU1FKSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgIChzdHJuY21wKChjb25zdCBjaGFy
ICopIChOQU1FKSwgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgIExJQkVMRl9B
Ul9CU0RfRVhURU5ERURfTkFNRV9QUkVGSVgsICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAg
ICAgTElCRUxGX0FSX0JTRF9FWFRFTkRFRF9OQU1FX1BSRUZJWF9TSVpFKSA9PSAwKQo+ICsKPiAr
Cj4gK3Vuc2lnbmVkIGNoYXIgKl9saWJlbGZfYXJfZ2V0X3N0cmluZyhjb25zdCBjaGFyICpfYnVm
LCBzaXplX3QgX3N6LAo+ICsgICAgdW5zaWduZWQgaW50IF9yYXduYW1lLCBpbnQgX3N2cjRuYW1l
cyk7Cj4gK2NoYXIgICAqX2xpYmVsZl9hcl9nZXRfcmF3X25hbWUoY29uc3Qgc3RydWN0IGFyX2hk
ciAqX2FyaCk7Cj4gK2NoYXIgICAqX2xpYmVsZl9hcl9nZXRfdHJhbnNsYXRlZF9uYW1lKGNvbnN0
IHN0cnVjdCBhcl9oZHIgKl9hcmgsIEVsZiAqX2FyKTsKPiAraW50ICAgIF9saWJlbGZfYXJfZ2V0
X251bWJlcihjb25zdCBjaGFyICpfYnVmLCBzaXplX3QgX3N6LAo+ICsgICAgdW5zaWduZWQgaW50
IF9iYXNlLCBzaXplX3QgKl9yZXQpOwo+ICsKPiArI2VuZGlmIC8qIF9fTElCRUxGX0FSX0hfICov
Cj4gZGlmZiAtLWdpdCBhL19saWJlbGZfY29uZmlnLmggYi9fbGliZWxmX2NvbmZpZy5oCj4gbmV3
IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi4xYjhmMzViCj4gLS0tIC9kZXYvbnVs
bAo+ICsrKyBiL19saWJlbGZfY29uZmlnLmgKPiBAQCAtMCwwICsxLDE4MyBAQAo+ICsvKi0KPiAr
ICogQ29weXJpZ2h0IChjKSAyMDA4LTIwMTEgSm9zZXBoIEtvc2h5Cj4gKyAqIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCj4gKyAqCj4gKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAo+ICsgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKPiArICogYXJl
IG1ldDoKPiArICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKPiArICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgo+ICsgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAo+ICsg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCj4gKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCj4gKyAqCj4gKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JyBBTkQKPiArICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCj4gKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCj4gKyAqIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFCj4gKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCj4gKyAqIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
Cj4gKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKQo+ICsgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAo+ICsgKiBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZCj4gKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKPiArICogU1VDSCBEQU1BR0UuCj4gKyAqCj4g
KyAqICRJZDogX2xpYmVsZl9jb25maWcuaCAzMTY4IDIwMTUtMDItMjQgMTk6MTc6NDdaIGVtYXN0
ZSAkCj4gKyAqLwo+ICsKPiArI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKF9fRHJh
Z29uRmx5X18pCj4gKwo+ICsjaWYgICAgZGVmaW5lZChfX2FtZDY0X18pCj4gKyNkZWZpbmUgICAg
ICAgIExJQkVMRl9BUkNIICAgICAgICAgICAgIEVNX1g4Nl82NAo+ICsjZGVmaW5lICAgICAgICBM
SUJFTEZfQllURU9SREVSICAgICAgICBFTEZEQVRBMkxTQgo+ICsjZGVmaW5lICAgICAgICBMSUJF
TEZfQ0xBU1MgICAgICAgICAgICBFTEZDTEFTUzY0Cj4gKyNlbGlmICBkZWZpbmVkKF9faTM4Nl9f
KQo+ICsjZGVmaW5lICAgICAgICBMSUJFTEZfQVJDSCAgICAgICAgICAgICBFTV8zODYKPiArI2Rl
ZmluZSAgICAgICAgTElCRUxGX0JZVEVPUkRFUiAgICAgICAgRUxGREFUQTJMU0IKPiArI2RlZmlu
ZSAgICAgICAgTElCRUxGX0NMQVNTICAgICAgICAgICAgRUxGQ0xBU1MzMgo+ICsjZW5kaWYKPiAr
Cj4gKyNlbmRpZiAvKiBfX0RyYWdvbkZseV9fICovCj4gKwo+ICsjaWZkZWYgX19GcmVlQlNEX18K
PiArCj4gKy8qCj4gKyAqIERlZmluZSBMSUJFTEZfe0FSQ0gsQllURU9SREVSLENMQVNTfSBiYXNl
ZCBvbiB0aGUgbWFjaGluZSBhcmNoaXRlY3R1cmUuCj4gKyAqIFNlZSBhbHNvOiA8bWFjaGluZS9l
bGYuaD4uCj4gKyAqLwo+ICsKPiArI2lmICAgIGRlZmluZWQoX19hbWQ2NF9fKQo+ICsKPiArI2Rl
ZmluZSAgICAgICAgTElCRUxGX0FSQ0ggICAgICAgICAgICAgRU1fWDg2XzY0Cj4gKyNkZWZpbmUg
ICAgICAgIExJQkVMRl9CWVRFT1JERVIgICAgICAgIEVMRkRBVEEyTFNCCj4gKyNkZWZpbmUgICAg
ICAgIExJQkVMRl9DTEFTUyAgICAgICAgICAgIEVMRkNMQVNTNjQKPiArCj4gKyNlbGlmICBkZWZp
bmVkKF9fYWFyY2g2NF9fKQo+ICsKPiArI2RlZmluZSAgICAgICAgTElCRUxGX0FSQ0ggICAgICAg
ICAgICAgRU1fQUFSQ0g2NAo+ICsjZGVmaW5lICAgICAgICBMSUJFTEZfQllURU9SREVSICAgICAg
ICBFTEZEQVRBMkxTQgo+ICsjZGVmaW5lICAgICAgICBMSUJFTEZfQ0xBU1MgICAgICAgICAgICBF
TEZDTEFTUzY0Cj4gKwo+ICsjZWxpZiAgZGVmaW5lZChfX2FybV9fKQo+ICsKPiArI2RlZmluZSAg
ICAgICAgTElCRUxGX0FSQ0ggICAgICAgICAgICAgRU1fQVJNCj4gKyNpZiAgICBkZWZpbmVkKF9f
QVJNRUJfXykgICAgICAvKiBCaWctZW5kaWFuIEFSTS4gKi8KPiArI2RlZmluZSAgICAgICAgTElC
RUxGX0JZVEVPUkRFUiAgICAgICAgRUxGREFUQTJNU0IKPiArI2Vsc2UKPiArI2RlZmluZSAgICAg
ICAgTElCRUxGX0JZVEVPUkRFUiAgICAgICAgRUxGREFUQTJMU0IKPiArI2VuZGlmCj4gKyNkZWZp
bmUgICAgICAgIExJQkVMRl9DTEFTUyAgICAgICAgICAgIEVMRkNMQVNTMzIKPiArCj4gKyNlbGlm
ICBkZWZpbmVkKF9faTM4Nl9fKQo+ICsKPiArI2RlZmluZSAgICAgICAgTElCRUxGX0FSQ0ggICAg
ICAgICAgICAgRU1fMzg2Cj4gKyNkZWZpbmUgICAgICAgIExJQkVMRl9CWVRFT1JERVIgICAgICAg
IEVMRkRBVEEyTFNCCj4gKyNkZWZpbmUgICAgICAgIExJQkVMRl9DTEFTUyAgICAgICAgICAgIEVM
RkNMQVNTMzIKPiArCj4gKyNlbGlmICBkZWZpbmVkKF9faWE2NF9fKQo+ICsKPiArI2RlZmluZSAg
ICAgICAgTElCRUxGX0FSQ0ggICAgICAgICAgICAgRU1fSUFfNjQKPiArI2RlZmluZSAgICAgICAg
TElCRUxGX0JZVEVPUkRFUiAgICAgICAgRUxGREFUQTJMU0IKPiArI2RlZmluZSAgICAgICAgTElC
RUxGX0NMQVNTICAgICAgICAgICAgRUxGQ0xBU1M2NAo+ICsKPiArI2VsaWYgIGRlZmluZWQoX19t
aXBzX18pCj4gKwo+ICsjZGVmaW5lICAgICAgICBMSUJFTEZfQVJDSCAgICAgICAgICAgICBFTV9N
SVBTCj4gKyNpZiAgICBkZWZpbmVkKF9fTUlQU0VCX18pCj4gKyNkZWZpbmUgICAgICAgIExJQkVM
Rl9CWVRFT1JERVIgICAgICAgIEVMRkRBVEEyTVNCCj4gKyNlbHNlCj4gKyNkZWZpbmUgICAgICAg
IExJQkVMRl9CWVRFT1JERVIgICAgICAgIEVMRkRBVEEyTFNCCj4gKyNlbmRpZgo+ICsjZGVmaW5l
ICAgICAgICBMSUJFTEZfQ0xBU1MgICAgICAgICAgICBFTEZDTEFTUzMyCj4gKwo+ICsjZWxpZiAg
ZGVmaW5lZChfX3Bvd2VycGNfXykKPiArCj4gKyNkZWZpbmUgICAgICAgIExJQkVMRl9BUkNIICAg
ICAgICAgICAgIEVNX1BQQwo+ICsjZGVmaW5lICAgICAgICBMSUJFTEZfQllURU9SREVSICAgICAg
ICBFTEZEQVRBMk1TQgo+ICsjZGVmaW5lICAgICAgICBMSUJFTEZfQ0xBU1MgICAgICAgICAgICBF
TEZDTEFTUzMyCj4gKwo+ICsjZWxpZiAgZGVmaW5lZChfX3NwYXJjX18pCj4gKwo+ICsjZGVmaW5l
ICAgICAgICBMSUJFTEZfQVJDSCAgICAgICAgICAgICBFTV9TUEFSQ1Y5Cj4gKyNkZWZpbmUgICAg
ICAgIExJQkVMRl9CWVRFT1JERVIgICAgICAgIEVMRkRBVEEyTVNCCj4gKyNkZWZpbmUgICAgICAg
IExJQkVMRl9DTEFTUyAgICAgICAgICAgIEVMRkNMQVNTNjQKPiArCj4gKyNlbHNlCj4gKyNlcnJv
ciBVbmtub3duIEZyZWVCU0QgYXJjaGl0ZWN0dXJlLgo+ICsjZW5kaWYKPiArI2VuZGlmICAvKiBf
X0ZyZWVCU0RfXyAqLwo+ICsKPiArLyoKPiArICogRGVmaW5pdGlvbnMgZm9yIE1pbml4My4KPiAr
ICovCj4gKyNpZmRlZiBfX21pbml4Cj4gKwo+ICsjZGVmaW5lICAgICAgICBMSUJFTEZfQVJDSCAg
ICAgICAgICAgICBFTV8zODYKPiArI2RlZmluZSAgICAgICAgTElCRUxGX0JZVEVPUkRFUiAgICAg
ICAgRUxGREFUQTJMU0IKPiArI2RlZmluZSAgICAgICAgTElCRUxGX0NMQVNTICAgICAgICAgICAg
RUxGQ0xBU1MzMgo+ICsKPiArI2VuZGlmIC8qIF9fbWluaXggKi8KPiArCj4gKyNpZmRlZiBfX05l
dEJTRF9fCj4gKwo+ICsjaW5jbHVkZSA8bWFjaGluZS9lbGZfbWFjaGRlcC5oPgo+ICsKPiArI2lm
ICAgICFkZWZpbmVkKEFSQ0hfRUxGU0laRSkKPiArI2Vycm9yIEFSQ0hfRUxGU0laRSBpcyBub3Qg
ZGVmaW5lZC4KPiArI2VuZGlmCj4gKwo+ICsjaWYgICAgQVJDSF9FTEZTSVpFID09IDMyCj4gKyNk
ZWZpbmUgICAgICAgIExJQkVMRl9BUkNIICAgICAgICAgICAgIEVMRjMyX01BQ0hERVBfSUQKPiAr
I2RlZmluZSAgICAgICAgTElCRUxGX0JZVEVPUkRFUiAgICAgICAgRUxGMzJfTUFDSERFUF9FTkRJ
QU5ORVNTCj4gKyNkZWZpbmUgICAgICAgIExJQkVMRl9DTEFTUyAgICAgICAgICAgIEVMRkNMQVNT
MzIKPiArI2RlZmluZSAgICAgICAgRWxmX05vdGUgICAgICAgICAgICAgICAgRWxmMzJfTmhkcgo+
ICsjZWxzZQo+ICsjZGVmaW5lICAgICAgICBMSUJFTEZfQVJDSCAgICAgICAgICAgICBFTEY2NF9N
QUNIREVQX0lECj4gKyNkZWZpbmUgICAgICAgIExJQkVMRl9CWVRFT1JERVIgICAgICAgIEVMRjY0
X01BQ0hERVBfRU5ESUFOTkVTUwo+ICsjZGVmaW5lICAgICAgICBMSUJFTEZfQ0xBU1MgICAgICAg
ICAgICBFTEZDTEFTUzY0Cj4gKyNkZWZpbmUgICAgICAgIEVsZl9Ob3RlICAgICAgICAgICAgICAg
IEVsZjY0X05oZHIKPiArI2VuZGlmCj4gKwo+ICsjZW5kaWYgLyogX19OZXRCU0RfXyAqLwo+ICsK
PiArI2lmIGRlZmluZWQoX19PcGVuQlNEX18pCj4gKwo+ICsjaW5jbHVkZSA8bWFjaGluZS9leGVj
Lmg+Cj4gKwo+ICsjZGVmaW5lICAgICAgICBMSUJFTEZfQVJDSCAgICAgICAgICAgICBFTEZfVEFS
R19NQUNICj4gKyNkZWZpbmUgICAgICAgIExJQkVMRl9CWVRFT1JERVIgICAgICAgIEVMRl9UQVJH
X0RBVEEKPiArI2RlZmluZSAgICAgICAgTElCRUxGX0NMQVNTICAgICAgICAgICAgRUxGX1RBUkdf
Q0xBU1MKPiArCj4gKyNlbmRpZgo+ICsKPiArLyoKPiArICogR05VICYgTGludXggY29tcGF0aWJp
bGl0eS4KPiArICoKPiArICogYF9fbGludXhfXycgaXMgZGVmaW5lZCBpbiBhbiBlbnZpcm9ubWVu
dCBydW5zIHRoZSBMaW51eCBrZXJuZWwgYW5kIGdsaWJjLgo+ICsgKiBgX19HTlVfXycgaXMgZGVm
aW5lZCBpbiBhbiBlbnZpcm9ubWVudCBydW5zIGEgR05VIGtlcm5lbCAoSHVyZCkgYW5kIGdsaWJj
Lgo+ICsgKiBgX19HTElCQ19fJyBpcyBkZWZpbmVkIGZvciBhbiBlbnZpcm9ubWVudCB0aGF0IHJ1
bnMgZ2xpYmMgb3ZlciBhIG5vbi1HTlUKPiArICogICAgIGtlcm5lbCBzdWNoIGFzIEdOVS9rRnJl
ZUJTRC4KPiArICovCj4gKwo+ICsjaWYgZGVmaW5lZChfX2xpbnV4X18pIHx8IGRlZmluZWQoX19H
TlVfXykgfHwgZGVmaW5lZChfX0dMSUJDX18pCj4gKwo+ICsjaWYgZGVmaW5lZChfX2xpbnV4X18p
Cj4gKwo+ICsjaW5jbHVkZSAibmF0aXZlLWVsZi1mb3JtYXQuaCIKPiArCj4gKyNkZWZpbmUgICAg
ICAgIExJQkVMRl9DTEFTUyAgICAgICAgICAgIEVMRlRDX0NMQVNTCj4gKyNkZWZpbmUgICAgICAg
IExJQkVMRl9BUkNIICAgICAgICAgICAgIEVMRlRDX0FSQ0gKPiArI2RlZmluZSAgICAgICAgTElC
RUxGX0JZVEVPUkRFUiAgICAgICAgRUxGVENfQllURU9SREVSCj4gKwo+ICsjZW5kaWYgLyogZGVm
aW5lZChfX2xpbnV4X18pICovCj4gKwo+ICsjaWYgICAgTElCRUxGX0NMQVNTID09IEVMRkNMQVNT
MzIKPiArI2RlZmluZSAgICAgICAgRWxmX05vdGUgICAgICAgICAgICAgICAgRWxmMzJfTmhkcgo+
ICsjZWxpZiAgIExJQkVMRl9DTEFTUyA9PSBFTEZDTEFTUzY0Cj4gKyNkZWZpbmUgICAgICAgIEVs
Zl9Ob3RlICAgICAgICAgICAgICAgIEVsZjY0X05oZHIKPiArI2Vsc2UKPiArI2Vycm9yICBMSUJF
TEZfQ0xBU1MgbmVlZHMgdG8gYmUgb25lIG9mIEVMRkNMQVNTMzIgb3IgRUxGQ0xBU1M2NAo+ICsj
ZW5kaWYKPiArCj4gKyNlbmRpZiAvKiBkZWZpbmVkKF9fbGludXhfXykgfHwgZGVmaW5lZChfX0dO
VV9fKSB8fCBkZWZpbmVkKF9fR0xJQkNfXykgKi8KPiBkaWZmIC0tZ2l0IGEvZWxmLmMgYi9lbGYu
Ywo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uOGYxOTI1ZQo+IC0tLSAv
ZGV2L251bGwKPiArKysgYi9lbGYuYwo+IEBAIC0wLDAgKzEsNDAgQEAKPiArLyotCj4gKyAqIENv
cHlyaWdodCAoYykgMjAwNiwyMDA4LDIwMTEgSm9zZXBoIEtvc2h5Cj4gKyAqIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCj4gKyAqCj4gKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAo+ICsgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKPiArICogYXJl
IG1ldDoKPiArICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKPiArICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgo+ICsgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAo+ICsg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCj4gKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCj4gKyAqCj4gKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JyBBTkQKPiArICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCj4gKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCj4gKyAqIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFCj4gKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCj4gKyAqIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
Cj4gKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKQo+ICsgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAo+ICsgKiBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZCj4gKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKPiArICogU1VDSCBEQU1BR0UuCj4gKyAqLwo+
ICsKPiArI2luY2x1ZGUgPGxpYmVsZi5oPgo+ICsKPiArI2luY2x1ZGUgIl9saWJlbGYuaCIKPiAr
Cj4gK0VMRlRDX1ZDU0lEKCIkSWQ6IGVsZi5jIDIyMjUgMjAxMS0xMS0yNiAxODo1NTo1NFogamtv
c2h5ICQiKTsKPiArCj4gK3N0cnVjdCBfbGliZWxmX2dsb2JhbHMgX2xpYmVsZiA9IHsKPiArICAg
ICAgIC5saWJlbGZfYXJjaCAgICAgICAgICAgID0gTElCRUxGX0FSQ0gsCj4gKyAgICAgICAubGli
ZWxmX2J5dGVvcmRlciAgICAgICA9IExJQkVMRl9CWVRFT1JERVIsCj4gKyAgICAgICAubGliZWxm
X2NsYXNzICAgICAgICAgICA9IExJQkVMRl9DTEFTUywKPiArICAgICAgIC5saWJlbGZfZXJyb3Ig
ICAgICAgICAgID0gMCwKPiArICAgICAgIC5saWJlbGZfZmlsbGNoYXIgICAgICAgID0gMCwKPiAr
ICAgICAgIC5saWJlbGZfdmVyc2lvbiAgICAgICAgID0gRVZfTk9ORQo+ICt9Owo+IGRpZmYgLS1n
aXQgYS9lbGZfYmVnaW4uYyBiL2VsZl9iZWdpbi5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBp
bmRleCAwMDAwMDAwLi45ZjRmMjM3Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2VsZl9iZWdpbi5j
Cj4gQEAgLTAsMCArMSw5MSBAQAo+ICsvKi0KPiArICogQ29weXJpZ2h0IChjKSAyMDA2LDIwMDgt
MjAxMSBKb3NlcGggS29zaHkKPiArICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KPiArICoKPiArICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Cj4gKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwo+ICsgKiBhcmUgbWV0Ogo+ICsgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAo+
ICsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCj4gKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cj4gKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKPiArICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KPiArICoKPiArICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAo+ICsgKiBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKPiArICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKPiArICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKPiArICogRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwKPiArICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKPiArICogT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCj4g
KyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUCj4gKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKPiArICogT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRgo+ICsgKiBTVUNIIERBTUFHRS4KPiArICovCj4gKwo+ICsjaW5jbHVkZSA8bGliZWxm
Lmg+Cj4gKwo+ICsjaW5jbHVkZSAiX2xpYmVsZi5oIgo+ICsKPiArRUxGVENfVkNTSUQoIiRJZDog
ZWxmX2JlZ2luLmMgMjM2NCAyMDExLTEyLTI4IDE3OjU1OjI1WiBqa29zaHkgJCIpOwo+ICsKPiAr
RWxmICoKPiArZWxmX2JlZ2luKGludCBmZCwgRWxmX0NtZCBjLCBFbGYgKmEpCj4gK3sKPiArICAg
ICAgIEVsZiAqZTsKPiArCj4gKyAgICAgICBlID0gTlVMTDsKPiArCj4gKyAgICAgICBpZiAoTElC
RUxGX1BSSVZBVEUodmVyc2lvbikgPT0gRVZfTk9ORSkgewo+ICsgICAgICAgICAgICAgICBMSUJF
TEZfU0VUX0VSUk9SKFNFUVVFTkNFLCAwKTsKPiArICAgICAgICAgICAgICAgcmV0dXJuIChOVUxM
KTsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICBzd2l0Y2ggKGMpIHsKPiArICAgICAgIGNhc2Ug
RUxGX0NfTlVMTDoKPiArICAgICAgICAgICAgICAgcmV0dXJuIChOVUxMKTsKPiArCj4gKyAgICAg
ICBjYXNlIEVMRl9DX1dSSVRFOgo+ICsgICAgICAgICAgICAgICAvKgo+ICsgICAgICAgICAgICAg
ICAgKiBUaGUgRUxGX0NfV1JJVEUgY29tbWFuZCBpcyByZXF1aXJlZCB0byBpZ25vcmUgdGhlCj4g
KyAgICAgICAgICAgICAgICAqIGRlc2NyaXB0b3IgcGFzc2VkIGluLgo+ICsgICAgICAgICAgICAg
ICAgKi8KPiArICAgICAgICAgICAgICAgYSA9IE5VTEw7Cj4gKyAgICAgICAgICAgICAgIGJyZWFr
Owo+ICsKPiArICAgICAgIGNhc2UgRUxGX0NfUkRXUjoKPiArICAgICAgICAgICAgICAgaWYgKGEg
IT0gTlVMTCkgeyAvKiBub3QgYWxsb3dlZCBmb3IgYXIoMSkgYXJjaGl2ZXMuICovCj4gKyAgICAg
ICAgICAgICAgICAgICAgICAgTElCRUxGX1NFVF9FUlJPUihBUkdVTUVOVCwgMCk7Cj4gKyAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIChOVUxMKTsKPiArICAgICAgICAgICAgICAgfQo+ICsg
ICAgICAgICAgICAgICAvKkZBTExUSFJPVUdIKi8KPiArICAgICAgIGNhc2UgRUxGX0NfUkVBRDoK
PiArICAgICAgICAgICAgICAgLyoKPiArICAgICAgICAgICAgICAgICogRGVzY3JpcHRvciBgYScg
Y291bGQgYmUgZm9yIGEgcmVndWxhciBFTEYgZmlsZSwgb3IKPiArICAgICAgICAgICAgICAgICog
Zm9yIGFuIGFyKDEpIGFyY2hpdmUuICBJZiBkZXNjcmlwdG9yIGBhJyB3YXMgb3BlbmVkCj4gKyAg
ICAgICAgICAgICAgICAqIHVzaW5nIGEgdmFsaWQgZmlsZSBkZXNjcmlwdG9yLCB3ZSBuZWVkIHRv
IGNoZWNrIGlmCj4gKyAgICAgICAgICAgICAgICAqIHRoZSBwYXNzZWQgaW4gYGZkJyB2YWx1ZSBt
YXRjaGVzIHRoZSBvcmlnaW5hbCBvbmUuCj4gKyAgICAgICAgICAgICAgICAqLwo+ICsgICAgICAg
ICAgICAgICBpZiAoYSAmJgo+ICsgICAgICAgICAgICAgICAgICAgKChhLT5lX2ZkICE9IC0xICYm
IGEtPmVfZmQgIT0gZmQpIHx8IGMgIT0gYS0+ZV9jbWQpKSB7Cj4gKyAgICAgICAgICAgICAgICAg
ICAgICAgTElCRUxGX1NFVF9FUlJPUihBUkdVTUVOVCwgMCk7Cj4gKyAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIChOVUxMKTsKPiArICAgICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICAg
ICBicmVhazsKPiArCj4gKyAgICAgICBkZWZhdWx0Ogo+ICsgICAgICAgICAgICAgICBMSUJFTEZf
U0VUX0VSUk9SKEFSR1VNRU5ULCAwKTsKPiArICAgICAgICAgICAgICAgcmV0dXJuIChOVUxMKTsK
PiArCj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgaWYgKGEgPT0gTlVMTCkKPiArICAgICAgICAg
ICAgICAgZSA9IF9saWJlbGZfb3Blbl9vYmplY3QoZmQsIGMsIDEpOwo+ICsgICAgICAgZWxzZSBp
ZiAoYS0+ZV9raW5kID09IEVMRl9LX0FSKQo+ICsgICAgICAgICAgICAgICBlID0gX2xpYmVsZl9h
cl9vcGVuX21lbWJlcihhLT5lX2ZkLCBjLCBhKTsKPiArICAgICAgIGVsc2UKPiArICAgICAgICAg
ICAgICAgKGUgPSBhKS0+ZV9hY3RpdmF0aW9ucysrOwo+ICsKPiArICAgICAgIHJldHVybiAoZSk7
Cj4gK30KPiBkaWZmIC0tZ2l0IGEvZWxmX2NudGwuYyBiL2VsZl9jbnRsLmMKPiBuZXcgZmlsZSBt
b2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLjA2MDc4ODUKPiAtLS0gL2Rldi9udWxsCj4gKysr
IGIvZWxmX2NudGwuYwo+IEBAIC0wLDAgKzEsNTggQEAKPiArLyotCj4gKyAqIENvcHlyaWdodCAo
YykgMjAwNiwyMDA4IEpvc2VwaCBLb3NoeQo+ICsgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgo+ICsg
Kgo+ICsgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKPiArICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCj4gKyAqIGFyZSBtZXQ6Cj4gKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Cj4gKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KPiArICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKPiArICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQo+ICsgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgo+ICsgKgo+ICsgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECj4gKyAqIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQo+ICsgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQo+ICsgKiBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQo+
ICsgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTAo+ICsgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUwo+ICsgKiBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikKPiArICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKPiArICogTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQo+ICsg
KiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GCj4gKyAqIFNVQ0ggREFNQUdFLgo+ICsgKi8KPiArCj4gKyNpbmNsdWRl
IDxsaWJlbGYuaD4KPiArCj4gKyNpbmNsdWRlICJfbGliZWxmLmgiCj4gKwo+ICtFTEZUQ19WQ1NJ
RCgiJElkOiBlbGZfY250bC5jIDIyMjUgMjAxMS0xMS0yNiAxODo1NTo1NFogamtvc2h5ICQiKTsK
PiArCj4gK2ludAo+ICtlbGZfY250bChFbGYgKmUsIEVsZl9DbWQgYykKPiArewo+ICsgICAgICAg
aWYgKGUgPT0gTlVMTCB8fAo+ICsgICAgICAgICAgIChjICE9IEVMRl9DX0ZERE9ORSAmJiBjICE9
IEVMRl9DX0ZEUkVBRCkpIHsKPiArICAgICAgICAgICAgICAgTElCRUxGX1NFVF9FUlJPUihBUkdV
TUVOVCwgMCk7Cj4gKyAgICAgICAgICAgICAgIHJldHVybiAoLTEpOwo+ICsgICAgICAgfQo+ICsK
PiArICAgICAgIGlmIChlLT5lX3BhcmVudCkgewo+ICsgICAgICAgICAgICAgICBMSUJFTEZfU0VU
X0VSUk9SKEFSQ0hJVkUsIDApOwo+ICsgICAgICAgICAgICAgICByZXR1cm4gKC0xKTsKPiArICAg
ICAgIH0KPiArCj4gKyAgICAgICBpZiAoYyA9PSBFTEZfQ19GRFJFQUQpIHsKPiArICAgICAgICAg
ICAgICAgaWYgKGUtPmVfY21kID09IEVMRl9DX1dSSVRFKSB7Cj4gKyAgICAgICAgICAgICAgICAg
ICAgICAgTElCRUxGX1NFVF9FUlJPUihNT0RFLCAwKTsKPiArICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gKC0xKTsKPiArICAgICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICAgICBlbHNl
Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgwKTsKPiArICAgICAgIH0KPiArCj4g
KyAgICAgICBlLT5lX2ZkID0gLTE7Cj4gKyAgICAgICByZXR1cm4gMDsKPiArfQo+IGRpZmYgLS1n
aXQgYS9lbGZfZGF0YS5jIGIvZWxmX2RhdGEuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5k
ZXggMDAwMDAwMC4uM2Q4ZWY2Ywo+IC0tLSAvZGV2L251bGwKPiArKysgYi9lbGZfZGF0YS5jCj4g
QEAgLTAsMCArMSwyNzYgQEAKPiArLyotCj4gKyAqIENvcHlyaWdodCAoYykgMjAwNiwyMDA4LDIw
MTEgSm9zZXBoIEtvc2h5Cj4gKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCj4gKyAqCj4gKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAo+ICsgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKPiArICogYXJlIG1ldDoKPiArICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKPiAr
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgo+ICsgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAo+ICsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCj4gKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCj4gKyAqCj4gKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKPiArICogQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Cj4gKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCj4gKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCj4gKyAqIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMCj4gKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCj4gKyAqIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQo+ICsg
KiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVAo+ICsgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCj4gKyAqIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YKPiArICogU1VDSCBEQU1BR0UuCj4gKyAqLwo+ICsKPiArI2luY2x1ZGUgPGFzc2VydC5o
Pgo+ICsjaW5jbHVkZSA8ZXJybm8uaD4KPiArI2luY2x1ZGUgPGxpYmVsZi5oPgo+ICsjaW5jbHVk
ZSA8c3RkaW50Lmg+Cj4gKyNpbmNsdWRlIDxzdGRsaWIuaD4KPiArCj4gKyNpbmNsdWRlICJfbGli
ZWxmLmgiCj4gKwo+ICtFTEZUQ19WQ1NJRCgiJElkOiBlbGZfZGF0YS5jIDMyNTggMjAxNS0xMS0y
MCAxODo1OTo0M1ogZW1hc3RlICQiKTsKPiArCj4gK0VsZl9EYXRhICoKPiArZWxmX2dldGRhdGEo
RWxmX1NjbiAqcywgRWxmX0RhdGEgKmVkKQo+ICt7Cj4gKyAgICAgICBFbGYgKmU7Cj4gKyAgICAg
ICB1bnNpZ25lZCBpbnQgc2hfdHlwZTsKPiArICAgICAgIGludCBlbGZjbGFzcywgZWxmdHlwZTsK
PiArICAgICAgIHNpemVfdCBjb3VudCwgZnN6LCBtc3o7Cj4gKyAgICAgICBzdHJ1Y3QgX0xpYmVs
Zl9EYXRhICpkOwo+ICsgICAgICAgdWludDY0X3Qgc2hfYWxpZ24sIHNoX29mZnNldCwgc2hfc2l6
ZTsKPiArICAgICAgIGludCAoKnhsYXRlKSh1bnNpZ25lZCBjaGFyICpfZCwgc2l6ZV90IF9kc3os
IHVuc2lnbmVkIGNoYXIgKl9zLAo+ICsgICAgICAgICAgIHNpemVfdCBfYywgaW50IF9zd2FwKTsK
PiArCj4gKyAgICAgICBkID0gKHN0cnVjdCBfTGliZWxmX0RhdGEgKikgZWQ7Cj4gKwo+ICsgICAg
ICAgaWYgKHMgPT0gTlVMTCB8fCAoZSA9IHMtPnNfZWxmKSA9PSBOVUxMIHx8Cj4gKyAgICAgICAg
ICAgKGQgIT0gTlVMTCAmJiBzICE9IGQtPmRfc2NuKSkgewo+ICsgICAgICAgICAgICAgICBMSUJF
TEZfU0VUX0VSUk9SKEFSR1VNRU5ULCAwKTsKPiArICAgICAgICAgICAgICAgcmV0dXJuIChOVUxM
KTsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICBhc3NlcnQoZS0+ZV9raW5kID09IEVMRl9LX0VM
Rik7Cj4gKwo+ICsgICAgICAgaWYgKGQgPT0gTlVMTCAmJiAoZCA9IFNUQUlMUV9GSVJTVCgmcy0+
c19kYXRhKSkgIT0gTlVMTCkKPiArICAgICAgICAgICAgICAgcmV0dXJuICgmZC0+ZF9kYXRhKTsK
PiArCj4gKyAgICAgICBpZiAoZCAhPSBOVUxMKQo+ICsgICAgICAgICAgICAgICByZXR1cm4gKCZT
VEFJTFFfTkVYVChkLCBkX25leHQpLT5kX2RhdGEpOwo+ICsKPiArICAgICAgIGlmIChlLT5lX3Jh
d2ZpbGUgPT0gTlVMTCkgewo+ICsgICAgICAgICAgICAgICAvKgo+ICsgICAgICAgICAgICAgICAg
KiBJbiB0aGUgRUxGX0NfV1JJVEUgY2FzZSwgdGhlcmUgaXMgbm8gc291cmNlIHRoYXQKPiArICAg
ICAgICAgICAgICAgICogY2FuIHByb3ZpZGUgZGF0YSBmb3IgdGhlIHNlY3Rpb24uCj4gKyAgICAg
ICAgICAgICAgICAqLwo+ICsgICAgICAgICAgICAgICBMSUJFTEZfU0VUX0VSUk9SKEFSR1VNRU5U
LCAwKTsKPiArICAgICAgICAgICAgICAgcmV0dXJuIChOVUxMKTsKPiArICAgICAgIH0KPiArCj4g
KyAgICAgICBlbGZjbGFzcyA9IGUtPmVfY2xhc3M7Cj4gKwo+ICsgICAgICAgYXNzZXJ0KGVsZmNs
YXNzID09IEVMRkNMQVNTMzIgfHwgZWxmY2xhc3MgPT0gRUxGQ0xBU1M2NCk7Cj4gKwo+ICsgICAg
ICAgaWYgKGVsZmNsYXNzID09IEVMRkNMQVNTMzIpIHsKPiArICAgICAgICAgICAgICAgc2hfdHlw
ZSAgID0gcy0+c19zaGRyLnNfc2hkcjMyLnNoX3R5cGU7Cj4gKyAgICAgICAgICAgICAgIHNoX29m
ZnNldCA9ICh1aW50NjRfdCkgcy0+c19zaGRyLnNfc2hkcjMyLnNoX29mZnNldDsKPiArICAgICAg
ICAgICAgICAgc2hfc2l6ZSAgID0gKHVpbnQ2NF90KSBzLT5zX3NoZHIuc19zaGRyMzIuc2hfc2l6
ZTsKPiArICAgICAgICAgICAgICAgc2hfYWxpZ24gID0gKHVpbnQ2NF90KSBzLT5zX3NoZHIuc19z
aGRyMzIuc2hfYWRkcmFsaWduOwo+ICsgICAgICAgfSBlbHNlIHsKPiArICAgICAgICAgICAgICAg
c2hfdHlwZSAgID0gcy0+c19zaGRyLnNfc2hkcjY0LnNoX3R5cGU7Cj4gKyAgICAgICAgICAgICAg
IHNoX29mZnNldCA9IHMtPnNfc2hkci5zX3NoZHI2NC5zaF9vZmZzZXQ7Cj4gKyAgICAgICAgICAg
ICAgIHNoX3NpemUgICA9IHMtPnNfc2hkci5zX3NoZHI2NC5zaF9zaXplOwo+ICsgICAgICAgICAg
ICAgICBzaF9hbGlnbiAgPSBzLT5zX3NoZHIuc19zaGRyNjQuc2hfYWRkcmFsaWduOwo+ICsgICAg
ICAgfQo+ICsKPiArICAgICAgIGlmIChzaF90eXBlID09IFNIVF9OVUxMKSB7Cj4gKyAgICAgICAg
ICAgICAgIExJQkVMRl9TRVRfRVJST1IoU0VDVElPTiwgMCk7Cj4gKyAgICAgICAgICAgICAgIHJl
dHVybiAoTlVMTCk7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgaWYgKChlbGZ0eXBlID0gX2xp
YmVsZl94bGF0ZV9zaHR5cGUoc2hfdHlwZSkpIDwgRUxGX1RfRklSU1QgfHwKPiArICAgICAgICAg
ICBlbGZ0eXBlID4gRUxGX1RfTEFTVCB8fCAoc2hfdHlwZSAhPSBTSFRfTk9CSVRTICYmCj4gKyAg
ICAgICAgICAgc2hfb2Zmc2V0ICsgc2hfc2l6ZSA+ICh1aW50NjRfdCkgZS0+ZV9yYXdzaXplKSkg
ewo+ICsgICAgICAgICAgICAgICBMSUJFTEZfU0VUX0VSUk9SKFNFQ1RJT04sIDApOwo+ICsgICAg
ICAgICAgICAgICByZXR1cm4gKE5VTEwpOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIGlmICgo
ZnN6ID0gKGVsZmNsYXNzID09IEVMRkNMQVNTMzIgPyBlbGYzMl9mc2l6ZSA6IGVsZjY0X2ZzaXpl
KQo+ICsgICAgICAgICAgICAoZWxmdHlwZSwgKHNpemVfdCkgMSwgZS0+ZV92ZXJzaW9uKSkgPT0g
MCkgewo+ICsgICAgICAgICAgICAgICBMSUJFTEZfU0VUX0VSUk9SKFVOSU1QTCwgMCk7Cj4gKyAg
ICAgICAgICAgICAgIHJldHVybiAoTlVMTCk7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgaWYg
KHNoX3NpemUgJSBmc3opIHsKPiArICAgICAgICAgICAgICAgTElCRUxGX1NFVF9FUlJPUihTRUNU
SU9OLCAwKTsKPiArICAgICAgICAgICAgICAgcmV0dXJuIChOVUxMKTsKPiArICAgICAgIH0KPiAr
Cj4gKyAgICAgICBpZiAoc2hfc2l6ZSAvIGZzeiA+IFNJWkVfTUFYKSB7Cj4gKyAgICAgICAgICAg
ICAgIExJQkVMRl9TRVRfRVJST1IoUkFOR0UsIDApOwo+ICsgICAgICAgICAgICAgICByZXR1cm4g
KE5VTEwpOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIGNvdW50ID0gKHNpemVfdCkgKHNoX3Np
emUgLyBmc3opOwo+ICsKPiArICAgICAgIG1zeiA9IF9saWJlbGZfbXNpemUoZWxmdHlwZSwgZWxm
Y2xhc3MsIGUtPmVfdmVyc2lvbik7Cj4gKwo+ICsgICAgICAgaWYgKGNvdW50ID4gMCAmJiBtc3og
PiBTSVpFX01BWCAvIGNvdW50KSB7Cj4gKyAgICAgICAgICAgICAgIExJQkVMRl9TRVRfRVJST1Io
UkFOR0UsIDApOwo+ICsgICAgICAgICAgICAgICByZXR1cm4gKE5VTEwpOwo+ICsgICAgICAgfQo+
ICsKPiArICAgICAgIGFzc2VydChtc3ogPiAwKTsKPiArICAgICAgIGFzc2VydChjb3VudCA8PSBT
SVpFX01BWCk7Cj4gKyAgICAgICBhc3NlcnQobXN6ICogY291bnQgPD0gU0laRV9NQVgpOwo+ICsK
PiArICAgICAgIGlmICgoZCA9IF9saWJlbGZfYWxsb2NhdGVfZGF0YShzKSkgPT0gTlVMTCkKPiAr
ICAgICAgICAgICAgICAgcmV0dXJuIChOVUxMKTsKPiArCj4gKyAgICAgICBkLT5kX2RhdGEuZF9i
dWYgICAgID0gTlVMTDsKPiArICAgICAgIGQtPmRfZGF0YS5kX29mZiAgICAgPSAwOwo+ICsgICAg
ICAgZC0+ZF9kYXRhLmRfYWxpZ24gICA9IHNoX2FsaWduOwo+ICsgICAgICAgZC0+ZF9kYXRhLmRf
c2l6ZSAgICA9IG1zeiAqIGNvdW50Owo+ICsgICAgICAgZC0+ZF9kYXRhLmRfdHlwZSAgICA9IGVs
ZnR5cGU7Cj4gKyAgICAgICBkLT5kX2RhdGEuZF92ZXJzaW9uID0gZS0+ZV92ZXJzaW9uOwo+ICsK
PiArICAgICAgIGlmIChzaF90eXBlID09IFNIVF9OT0JJVFMgfHwgc2hfc2l6ZSA9PSAwKSB7Cj4g
KyAgICAgICAgICAgICAgIFNUQUlMUV9JTlNFUlRfVEFJTCgmcy0+c19kYXRhLCBkLCBkX25leHQp
Owo+ICsgICAgICAgICAgICAgICByZXR1cm4gKCZkLT5kX2RhdGEpOwo+ICsgICAgICAgIH0KPiAr
Cj4gKyAgICAgICBpZiAoKGQtPmRfZGF0YS5kX2J1ZiA9IG1hbGxvYyhtc3ogKiBjb3VudCkpID09
IE5VTEwpIHsKPiArICAgICAgICAgICAgICAgKHZvaWQpIF9saWJlbGZfcmVsZWFzZV9kYXRhKGQp
Owo+ICsgICAgICAgICAgICAgICBMSUJFTEZfU0VUX0VSUk9SKFJFU09VUkNFLCAwKTsKPiArICAg
ICAgICAgICAgICAgcmV0dXJuIChOVUxMKTsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICBkLT5k
X2ZsYWdzICB8PSBMSUJFTEZfRl9EQVRBX01BTExPQ0VEOwo+ICsKPiArICAgICAgIHhsYXRlID0g
X2xpYmVsZl9nZXRfdHJhbnNsYXRvcihlbGZ0eXBlLCBFTEZfVE9NRU1PUlksIGVsZmNsYXNzKTsK
PiArICAgICAgIGlmICghKCp4bGF0ZSkoZC0+ZF9kYXRhLmRfYnVmLCAoc2l6ZV90KSBkLT5kX2Rh
dGEuZF9zaXplLAo+ICsgICAgICAgICAgIGUtPmVfcmF3ZmlsZSArIHNoX29mZnNldCwgY291bnQs
Cj4gKyAgICAgICAgICAgZS0+ZV9ieXRlb3JkZXIgIT0gTElCRUxGX1BSSVZBVEUoYnl0ZW9yZGVy
KSkpIHsKPiArICAgICAgICAgICAgICAgX2xpYmVsZl9yZWxlYXNlX2RhdGEoZCk7Cj4gKyAgICAg
ICAgICAgICAgIExJQkVMRl9TRVRfRVJST1IoREFUQSwgMCk7Cj4gKyAgICAgICAgICAgICAgIHJl
dHVybiAoTlVMTCk7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgU1RBSUxRX0lOU0VSVF9UQUlM
KCZzLT5zX2RhdGEsIGQsIGRfbmV4dCk7Cj4gKwo+ICsgICAgICAgcmV0dXJuICgmZC0+ZF9kYXRh
KTsKPiArfQo+ICsKPiArRWxmX0RhdGEgKgo+ICtlbGZfbmV3ZGF0YShFbGZfU2NuICpzKQo+ICt7
Cj4gKyAgICAgICBFbGYgKmU7Cj4gKyAgICAgICBzdHJ1Y3QgX0xpYmVsZl9EYXRhICpkOwo+ICsK
PiArICAgICAgIGlmIChzID09IE5VTEwgfHwgKGUgPSBzLT5zX2VsZikgPT0gTlVMTCkgewo+ICsg
ICAgICAgICAgICAgICBMSUJFTEZfU0VUX0VSUk9SKEFSR1VNRU5ULCAwKTsKPiArICAgICAgICAg
ICAgICAgcmV0dXJuIChOVUxMKTsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICBhc3NlcnQoZS0+
ZV9raW5kID09IEVMRl9LX0VMRik7Cj4gKwo+ICsgICAgICAgLyoKPiArICAgICAgICAqIGVsZl9u
ZXdkYXRhKCkgaGFzIHRvIGFwcGVuZCBhIGRhdGEgZGVzY3JpcHRvciwgc28KPiArICAgICAgICAq
IGJyaW5nIGluIGV4aXN0aW5nIHNlY3Rpb24gZGF0YSBpZiBub3QgYWxyZWFkeSBwcmVzZW50Lgo+
ICsgICAgICAgICovCj4gKyAgICAgICBpZiAoZS0+ZV9yYXdmaWxlICYmIHMtPnNfc2l6ZSA+IDAg
JiYgU1RBSUxRX0VNUFRZKCZzLT5zX2RhdGEpKQo+ICsgICAgICAgICAgICAgICBpZiAoZWxmX2dl
dGRhdGEocywgTlVMTCkgPT0gTlVMTCkKPiArICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
KE5VTEwpOwo+ICsKPiArICAgICAgIGlmICgoZCA9IF9saWJlbGZfYWxsb2NhdGVfZGF0YShzKSkg
PT0gTlVMTCkKPiArICAgICAgICAgICAgICAgcmV0dXJuIChOVUxMKTsKPiArCj4gKyAgICAgICBT
VEFJTFFfSU5TRVJUX1RBSUwoJnMtPnNfZGF0YSwgZCwgZF9uZXh0KTsKPiArCj4gKyAgICAgICBk
LT5kX2RhdGEuZF9hbGlnbiA9IDE7Cj4gKyAgICAgICBkLT5kX2RhdGEuZF9idWYgPSBOVUxMOwo+
ICsgICAgICAgZC0+ZF9kYXRhLmRfb2ZmID0gKHVpbnQ2NF90KSB+MDsKPiArICAgICAgIGQtPmRf
ZGF0YS5kX3NpemUgPSAwOwo+ICsgICAgICAgZC0+ZF9kYXRhLmRfdHlwZSA9IEVMRl9UX0JZVEU7
Cj4gKyAgICAgICBkLT5kX2RhdGEuZF92ZXJzaW9uID0gTElCRUxGX1BSSVZBVEUodmVyc2lvbik7
Cj4gKwo+ICsgICAgICAgKHZvaWQpIGVsZl9mbGFnc2NuKHMsIEVMRl9DX1NFVCwgRUxGX0ZfRElS
VFkpOwo+ICsKPiArICAgICAgIHJldHVybiAoJmQtPmRfZGF0YSk7Cj4gK30KPiArCj4gKy8qCj4g
KyAqIFJldHJpZXZlIGEgZGF0YSBkZXNjcmlwdG9yIGZvciByYXcgKHVudHJhbnNsYXRlZCkgZGF0
YSBmb3Igc2VjdGlvbgo+ICsgKiBgcycuCj4gKyAqLwo+ICsKPiArRWxmX0RhdGEgKgo+ICtlbGZf
cmF3ZGF0YShFbGZfU2NuICpzLCBFbGZfRGF0YSAqZWQpCj4gK3sKPiArICAgICAgIEVsZiAqZTsK
PiArICAgICAgIGludCBlbGZfY2xhc3M7Cj4gKyAgICAgICB1aW50MzJfdCBzaF90eXBlOwo+ICsg
ICAgICAgc3RydWN0IF9MaWJlbGZfRGF0YSAqZDsKPiArICAgICAgIHVpbnQ2NF90IHNoX2FsaWdu
LCBzaF9vZmZzZXQsIHNoX3NpemU7Cj4gKwo+ICsgICAgICAgaWYgKHMgPT0gTlVMTCB8fCAoZSA9
IHMtPnNfZWxmKSA9PSBOVUxMIHx8IGUtPmVfcmF3ZmlsZSA9PSBOVUxMKSB7Cj4gKyAgICAgICAg
ICAgICAgIExJQkVMRl9TRVRfRVJST1IoQVJHVU1FTlQsIDApOwo+ICsgICAgICAgICAgICAgICBy
ZXR1cm4gKE5VTEwpOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIGFzc2VydChlLT5lX2tpbmQg
PT0gRUxGX0tfRUxGKTsKPiArCj4gKyAgICAgICBkID0gKHN0cnVjdCBfTGliZWxmX0RhdGEgKikg
ZWQ7Cj4gKwo+ICsgICAgICAgaWYgKGQgPT0gTlVMTCAmJiAoZCA9IFNUQUlMUV9GSVJTVCgmcy0+
c19yYXdkYXRhKSkgIT0gTlVMTCkKPiArICAgICAgICAgICAgICAgcmV0dXJuICgmZC0+ZF9kYXRh
KTsKPiArCj4gKyAgICAgICBpZiAoZCAhPSBOVUxMKQo+ICsgICAgICAgICAgICAgICByZXR1cm4g
KCZTVEFJTFFfTkVYVChkLCBkX25leHQpLT5kX2RhdGEpOwo+ICsKPiArICAgICAgIGVsZl9jbGFz
cyA9IGUtPmVfY2xhc3M7Cj4gKwo+ICsgICAgICAgYXNzZXJ0KGVsZl9jbGFzcyA9PSBFTEZDTEFT
UzMyIHx8IGVsZl9jbGFzcyA9PSBFTEZDTEFTUzY0KTsKPiArCj4gKyAgICAgICBpZiAoZWxmX2Ns
YXNzID09IEVMRkNMQVNTMzIpIHsKPiArICAgICAgICAgICAgICAgc2hfdHlwZSAgID0gcy0+c19z
aGRyLnNfc2hkcjMyLnNoX3R5cGU7Cj4gKyAgICAgICAgICAgICAgIHNoX29mZnNldCA9ICh1aW50
NjRfdCkgcy0+c19zaGRyLnNfc2hkcjMyLnNoX29mZnNldDsKPiArICAgICAgICAgICAgICAgc2hf
c2l6ZSAgID0gKHVpbnQ2NF90KSBzLT5zX3NoZHIuc19zaGRyMzIuc2hfc2l6ZTsKPiArICAgICAg
ICAgICAgICAgc2hfYWxpZ24gID0gKHVpbnQ2NF90KSBzLT5zX3NoZHIuc19zaGRyMzIuc2hfYWRk
cmFsaWduOwo+ICsgICAgICAgfSBlbHNlIHsKPiArICAgICAgICAgICAgICAgc2hfdHlwZSAgID0g
cy0+c19zaGRyLnNfc2hkcjY0LnNoX3R5cGU7Cj4gKyAgICAgICAgICAgICAgIHNoX29mZnNldCA9
IHMtPnNfc2hkci5zX3NoZHI2NC5zaF9vZmZzZXQ7Cj4gKyAgICAgICAgICAgICAgIHNoX3NpemUg
ICA9IHMtPnNfc2hkci5zX3NoZHI2NC5zaF9zaXplOwo+ICsgICAgICAgICAgICAgICBzaF9hbGln
biAgPSBzLT5zX3NoZHIuc19zaGRyNjQuc2hfYWRkcmFsaWduOwo+ICsgICAgICAgfQo+ICsKPiAr
ICAgICAgIGlmIChzaF90eXBlID09IFNIVF9OVUxMKSB7Cj4gKyAgICAgICAgICAgICAgIExJQkVM
Rl9TRVRfRVJST1IoU0VDVElPTiwgMCk7Cj4gKyAgICAgICAgICAgICAgIHJldHVybiAoTlVMTCk7
Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgaWYgKHNoX3R5cGUgIT0gU0hUX05PQklUUyAmJgo+
ICsgICAgICAgICAgIHNoX29mZnNldCArIHNoX3NpemUgPiAodWludDY0X3QpIGUtPmVfcmF3c2l6
ZSkgewo+ICsgICAgICAgICAgICAgICBMSUJFTEZfU0VUX0VSUk9SKFNFQ1RJT04sIDApOwo+ICsg
ICAgICAgICAgICAgICByZXR1cm4gKE5VTEwpOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIGlm
ICgoZCA9IF9saWJlbGZfYWxsb2NhdGVfZGF0YShzKSkgPT0gTlVMTCkKPiArICAgICAgICAgICAg
ICAgcmV0dXJuIChOVUxMKTsKPiArCj4gKyAgICAgICBkLT5kX2RhdGEuZF9idWYgPSAoc2hfdHlw
ZSA9PSBTSFRfTk9CSVRTIHx8IHNoX3NpemUgPT0gMCkgPyBOVUxMIDoKPiArICAgICAgICAgICBl
LT5lX3Jhd2ZpbGUgKyBzaF9vZmZzZXQ7Cj4gKyAgICAgICBkLT5kX2RhdGEuZF9vZmYgICAgID0g
MDsKPiArICAgICAgIGQtPmRfZGF0YS5kX2FsaWduICAgPSBzaF9hbGlnbjsKPiArICAgICAgIGQt
PmRfZGF0YS5kX3NpemUgICAgPSBzaF9zaXplOwo+ICsgICAgICAgZC0+ZF9kYXRhLmRfdHlwZSAg
ICA9IEVMRl9UX0JZVEU7Cj4gKyAgICAgICBkLT5kX2RhdGEuZF92ZXJzaW9uID0gZS0+ZV92ZXJz
aW9uOwo+ICsKPiArICAgICAgIFNUQUlMUV9JTlNFUlRfVEFJTCgmcy0+c19yYXdkYXRhLCBkLCBk
X25leHQpOwo+ICsKPiArICAgICAgIHJldHVybiAoJmQtPmRfZGF0YSk7Cj4gK30KPiBkaWZmIC0t
Z2l0IGEvZWxmX2VuZC5jIGIvZWxmX2VuZC5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRl
eCAwMDAwMDAwLi4zZjMyZWJiCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2VsZl9lbmQuYwo+IEBA
IC0wLDAgKzEsOTUgQEAKPiArLyotCj4gKyAqIENvcHlyaWdodCAoYykgMjAwNiwyMDA4LTIwMDks
MjAxMSBKb3NlcGggS29zaHkKPiArICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KPiArICoKPiArICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Cj4gKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwo+ICsgKiBhcmUgbWV0Ogo+ICsgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAo+
ICsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCj4gKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cj4gKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKPiArICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KPiArICoKPiArICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAo+ICsgKiBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKPiArICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKPiArICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKPiArICogRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwKPiArICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKPiArICogT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCj4g
KyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUCj4gKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKPiArICogT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRgo+ICsgKiBTVUNIIERBTUFHRS4KPiArICovCj4gKwo+ICsjaW5jbHVkZSA8YXNzZXJ0
Lmg+Cj4gKyNpbmNsdWRlIDxsaWJlbGYuaD4KPiArI2luY2x1ZGUgPHN0ZGxpYi5oPgo+ICsKPiAr
I2luY2x1ZGUgIl9saWJlbGYuaCIKPiArCj4gKyNpZiAgICBFTEZUQ19IQVZFX01NQVAKPiArI2lu
Y2x1ZGUgPHN5cy9tbWFuLmg+Cj4gKyNlbmRpZgo+ICsKPiArRUxGVENfVkNTSUQoIiRJZDogZWxm
X2VuZC5jIDMxNzQgMjAxNS0wMy0yNyAxNzoxMzo0MVogZW1hc3RlICQiKTsKPiArCj4gK2ludAo+
ICtlbGZfZW5kKEVsZiAqZSkKPiArewo+ICsgICAgICAgRWxmICpzdjsKPiArICAgICAgIEVsZl9T
Y24gKnNjbiwgKnRzY247Cj4gKwo+ICsgICAgICAgaWYgKGUgPT0gTlVMTCB8fCBlLT5lX2FjdGl2
YXRpb25zID09IDApCj4gKyAgICAgICAgICAgICAgIHJldHVybiAoMCk7Cj4gKwo+ICsgICAgICAg
aWYgKC0tZS0+ZV9hY3RpdmF0aW9ucyA+IDApCj4gKyAgICAgICAgICAgICAgIHJldHVybiAoZS0+
ZV9hY3RpdmF0aW9ucyk7Cj4gKwo+ICsgICAgICAgYXNzZXJ0KGUtPmVfYWN0aXZhdGlvbnMgPT0g
MCk7Cj4gKwo+ICsgICAgICAgd2hpbGUgKGUgJiYgZS0+ZV9hY3RpdmF0aW9ucyA9PSAwKSB7Cj4g
KyAgICAgICAgICAgICAgIHN3aXRjaCAoZS0+ZV9raW5kKSB7Cj4gKyAgICAgICAgICAgICAgIGNh
c2UgRUxGX0tfQVI6Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgLyoKPiArICAgICAgICAgICAg
ICAgICAgICAgICAgKiBJZiB3ZSBzdGlsbCBoYXZlIG9wZW4gY2hpbGQgZGVzY3JpcHRvcnMsIHdl
Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICogbmVlZCB0byBkZWZlciByZWNsYWltaW5nIHJl
c291cmNlcyB0aWxsIGFsbAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAqIHRoZSBjaGlsZCBk
ZXNjcmlwdG9ycyBmb3IgdGhlIGFyY2hpdmUgYXJlCj4gKyAgICAgICAgICAgICAgICAgICAgICAg
ICogY2xvc2VkLgo+ICsgICAgICAgICAgICAgICAgICAgICAgICAqLwo+ICsgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChlLT5lX3UuZV9hci5lX25jaGlsZHJlbiA+IDApCj4gKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gKDApOwo+ICsgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwo+ICsgICAgICAgICAgICAgICBjYXNlIEVMRl9LX0VMRjoKPiArICAgICAgICAgICAg
ICAgICAgICAgICAvKgo+ICsgICAgICAgICAgICAgICAgICAgICAgICAqIFJlY2xhaW0gYWxsIHNl
Y3Rpb24gZGVzY3JpcHRvcnMuCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICovCj4gKyAgICAg
ICAgICAgICAgICAgICAgICAgU1RBSUxRX0ZPUkVBQ0hfU0FGRShzY24sICZlLT5lX3UuZV9lbGYu
ZV9zY24sIHNfbmV4dCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNjbikKPiArICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjbiA9IF9saWJlbGZfcmVsZWFzZV9zY24oc2Nu
KTsKPiArICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKPiArICAgICAgICAgICAgICAgY2Fz
ZSBFTEZfS19OVU06Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KDApOwo+ICsgICAg
ICAgICAgICAgICBkZWZhdWx0Ogo+ICsgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ICsg
ICAgICAgICAgICAgICB9Cj4gKwo+ICsgICAgICAgICAgICAgICBpZiAoZS0+ZV9yYXdmaWxlKSB7
Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUtPmVfZmxhZ3MgJiBMSUJFTEZfRl9SQVdG
SUxFX01BTExPQykKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyZWUoZS0+ZV9y
YXdmaWxlKTsKPiArI2lmICAgIEVMRlRDX0hBVkVfTU1BUAo+ICsgICAgICAgICAgICAgICAgICAg
ICAgIGVsc2UgaWYgKGUtPmVfZmxhZ3MgJiBMSUJFTEZfRl9SQVdGSUxFX01NQVApCj4gKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCkgbXVubWFwKGUtPmVfcmF3ZmlsZSwgZS0+
ZV9yYXdzaXplKTsKPiArI2VuZGlmCj4gKyAgICAgICAgICAgICAgIH0KPiArCj4gKyAgICAgICAg
ICAgICAgIHN2ID0gZTsKPiArICAgICAgICAgICAgICAgaWYgKChlID0gZS0+ZV9wYXJlbnQpICE9
IE5VTEwpCj4gKyAgICAgICAgICAgICAgICAgICAgICAgZS0+ZV91LmVfYXIuZV9uY2hpbGRyZW4t
LTsKPiArICAgICAgICAgICAgICAgc3YgPSBfbGliZWxmX3JlbGVhc2VfZWxmKHN2KTsKPiArICAg
ICAgIH0KPiArCj4gKyAgICAgICByZXR1cm4gKDApOwo+ICt9Cj4gZGlmZiAtLWdpdCBhL2VsZl9l
cnJtc2cuYyBiL2VsZl9lcnJtc2cuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAw
MDAwMC4uOWU1YjJlOQo+IC0tLSAvZGV2L251bGwKPiArKysgYi9lbGZfZXJybXNnLmMKPiBAQCAt
MCwwICsxLDgzIEBACj4gKy8qLQo+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMDYsMjAwOCwyMDExIEpv
c2VwaCBLb3NoeQo+ICsgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgo+ICsgKgo+ICsgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKPiArICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCj4gKyAqIGFyZSBtZXQ6Cj4gKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cj4gKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KPiArICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKPiArICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQo+ICsgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgo+ICsgKgo+ICsgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRI
T1IgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECj4gKyAqIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQo+ICsg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRQo+ICsgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQo+ICsgKiBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTAo+ICsgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUwo+ICsgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKPiArICogSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QKPiArICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQo+ICsgKiBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
Cj4gKyAqIFNVQ0ggREFNQUdFLgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlIDxsaWJlbGYuaD4KPiAr
I2luY2x1ZGUgPHN0ZGlvLmg+Cj4gKyNpbmNsdWRlIDxzdHJpbmcuaD4KPiArCj4gKyNpbmNsdWRl
ICJfbGliZWxmLmgiCj4gKwo+ICtFTEZUQ19WQ1NJRCgiJElkOiBlbGZfZXJybXNnLmMgMzE3NCAy
MDE1LTAzLTI3IDE3OjEzOjQxWiBlbWFzdGUgJCIpOwo+ICsKPiArLyoKPiArICogUmV0cmlldmUg
YSBodW1hbiByZWFkYWJsZSB0cmFuc2xhdGlvbiBmb3IgYW4gZXJyb3IgbWVzc2FnZS4KPiArICov
Cj4gKwo+ICtzdGF0aWMgY29uc3QgY2hhciAqX2xpYmVsZl9lcnJvcnNbXSA9IHsKPiArI2RlZmlu
ZSAgICAgICAgREVGSU5FX0VSUk9SKE4sUykgICAgICAgW0VMRl9FXyMjTl0gPSBTCj4gKyAgICAg
ICBERUZJTkVfRVJST1IoTk9ORSwgICAgICAiTm8gRXJyb3IiKSwKPiArICAgICAgIERFRklORV9F
UlJPUihBUkNISVZFLCAgICJNYWxmb3JtZWQgYXIoMSkgYXJjaGl2ZSIpLAo+ICsgICAgICAgREVG
SU5FX0VSUk9SKEFSR1VNRU5ULCAgIkludmFsaWQgYXJndW1lbnQiKSwKPiArICAgICAgIERFRklO
RV9FUlJPUihDTEFTUywgICAgICJFTEYgY2xhc3MgbWlzbWF0Y2giKSwKPiArICAgICAgIERFRklO
RV9FUlJPUihEQVRBLCAgICAgICJJbnZhbGlkIGRhdGEgYnVmZmVyIGRlc2NyaXB0b3IiKSwKPiAr
ICAgICAgIERFRklORV9FUlJPUihIRUFERVIsICAgICJNaXNzaW5nIG9yIG1hbGZvcm1lZCBFTEYg
aGVhZGVyIiksCj4gKyAgICAgICBERUZJTkVfRVJST1IoSU8sICAgICAgICAiSS9PIGVycm9yIiks
Cj4gKyAgICAgICBERUZJTkVfRVJST1IoTEFZT1VULCAgICAiTGF5b3V0IGNvbnN0cmFpbnQgdmlv
bGF0aW9uIiksCj4gKyAgICAgICBERUZJTkVfRVJST1IoTU9ERSwgICAgICAiSW5jb3JyZWN0IEVM
RiBkZXNjcmlwdG9yIG1vZGUiKSwKPiArICAgICAgIERFRklORV9FUlJPUihSQU5HRSwgICAgICJW
YWx1ZSBvdXQgb2YgcmFuZ2Ugb2YgdGFyZ2V0IiksCj4gKyAgICAgICBERUZJTkVfRVJST1IoUkVT
T1VSQ0UsICAiUmVzb3VyY2UgZXhoYXVzdGlvbiIpLAo+ICsgICAgICAgREVGSU5FX0VSUk9SKFNF
Q1RJT04sICAgIkludmFsaWQgc2VjdGlvbiBkZXNjcmlwdG9yIiksCj4gKyAgICAgICBERUZJTkVf
RVJST1IoU0VRVUVOQ0UsICAiQVBJIGNhbGxzIG91dCBvZiBzZXF1ZW5jZSIpLAo+ICsgICAgICAg
REVGSU5FX0VSUk9SKFVOSU1QTCwgICAgIlVuaW1wbGVtZW50ZWQgZmVhdHVyZSIpLAo+ICsgICAg
ICAgREVGSU5FX0VSUk9SKFZFUlNJT04sICAgIlVua25vd24gRUxGIEFQSSB2ZXJzaW9uIiksCj4g
KyAgICAgICBERUZJTkVfRVJST1IoTlVNLCAgICAgICAiVW5rbm93biBlcnJvciIpCj4gKyN1bmRl
ZiBERUZJTkVfRVJST1IKPiArfTsKPiArCj4gK2NvbnN0IGNoYXIgKgo+ICtlbGZfZXJybXNnKGlu
dCBlcnJvcikKPiArewo+ICsgICAgICAgaW50IG9zZXJyOwo+ICsKPiArICAgICAgIGlmIChlcnJv
ciA9PSBFTEZfRV9OT05FICYmCj4gKyAgICAgICAgICAgKGVycm9yID0gTElCRUxGX1BSSVZBVEUo
ZXJyb3IpKSA9PSAwKQo+ICsgICAgICAgICAgIHJldHVybiBOVUxMOwo+ICsgICAgICAgZWxzZSBp
ZiAoZXJyb3IgPT0gLTEpCj4gKyAgICAgICAgICAgZXJyb3IgPSBMSUJFTEZfUFJJVkFURShlcnJv
cik7Cj4gKwo+ICsgICAgICAgb3NlcnIgPSBlcnJvciA+PiBMSUJFTEZfT1NfRVJST1JfU0hJRlQ7
Cj4gKyAgICAgICBlcnJvciAmPSBMSUJFTEZfRUxGX0VSUk9SX01BU0s7Cj4gKwo+ICsgICAgICAg
aWYgKGVycm9yIDwgRUxGX0VfTk9ORSB8fCBlcnJvciA+PSBFTEZfRV9OVU0pCj4gKyAgICAgICAg
ICAgICAgIHJldHVybiBfbGliZWxmX2Vycm9yc1tFTEZfRV9OVU1dOwo+ICsgICAgICAgaWYgKG9z
ZXJyKSB7Cj4gKyAgICAgICAgICAgICAgICh2b2lkKSBzbnByaW50ZigoY2hhciAqKSBMSUJFTEZf
UFJJVkFURShtc2cpLAo+ICsgICAgICAgICAgICAgICAgICAgc2l6ZW9mKExJQkVMRl9QUklWQVRF
KG1zZykpLCAiJXM6ICVzIiwKPiArICAgICAgICAgICAgICAgICAgIF9saWJlbGZfZXJyb3JzW2Vy
cm9yXSwgc3RyZXJyb3Iob3NlcnIpKTsKPiArICAgICAgICAgICAgICAgcmV0dXJuIChjb25zdCBj
aGFyICopJkxJQkVMRl9QUklWQVRFKG1zZyk7Cj4gKyAgICAgICB9Cj4gKyAgICAgICByZXR1cm4g
X2xpYmVsZl9lcnJvcnNbZXJyb3JdOwo+ICt9Cj4gZGlmZiAtLWdpdCBhL2VsZl9lcnJuby5jIGIv
ZWxmX2Vycm5vLmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLjEwYWU2
OWEKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZWxmX2Vycm5vLmMKPiBAQCAtMCwwICsxLDQxIEBA
Cj4gKy8qLQo+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMDYsMjAwOCwyMDExIEpvc2VwaCBLb3NoeQo+
ICsgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgo+ICsgKgo+ICsgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKPiArICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCj4gKyAqIGFyZSBtZXQ6Cj4gKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cj4gKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KPiArICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKPiArICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQo+ICsgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgo+ICsg
Kgo+ICsgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRS
SUJVVE9SUyBgYEFTIElTJycgQU5ECj4gKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQo+ICsgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRQo+ICsgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRI
T1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQo+ICsgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAo+ICsg
KiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUwo+ICsgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKPiArICogSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QKPiArICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQo+ICsgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCj4gKyAqIFNVQ0gg
REFNQUdFLgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlIDxsaWJlbGYuaD4KPiArCj4gKyNpbmNsdWRl
ICJfbGliZWxmLmgiCj4gKwo+ICtFTEZUQ19WQ1NJRCgiJElkOiBlbGZfZXJybm8uYyAzMTc0IDIw
MTUtMDMtMjcgMTc6MTM6NDFaIGVtYXN0ZSAkIik7Cj4gKwo+ICtpbnQKPiArZWxmX2Vycm5vKHZv
aWQpCj4gK3sKPiArICAgICAgIGludCBvbGQ7Cj4gKwo+ICsgICAgICAgb2xkID0gTElCRUxGX1BS
SVZBVEUoZXJyb3IpOwo+ICsgICAgICAgTElCRUxGX1BSSVZBVEUoZXJyb3IpID0gMDsKPiArICAg
ICAgIHJldHVybiAob2xkICYgTElCRUxGX0VMRl9FUlJPUl9NQVNLKTsKPiArfQo+IGRpZmYgLS1n
aXQgYS9lbGZfZmlsbC5jIGIvZWxmX2ZpbGwuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5k
ZXggMDAwMDAwMC4uNDI3ZDc4ZAo+IC0tLSAvZGV2L251bGwKPiArKysgYi9lbGZfZmlsbC5jCj4g
QEAgLTAsMCArMSwzNyBAQAo+ICsvKi0KPiArICogQ29weXJpZ2h0IChjKSAyMDA2LDIwMDggSm9z
ZXBoIEtvc2h5Cj4gKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCj4gKyAqCj4gKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAo+ICsgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKPiArICogYXJlIG1ldDoKPiArICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKPiArICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgo+ICsgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAo+ICsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCj4gKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCj4gKyAqCj4gKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhP
UiBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKPiArICogQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCj4gKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFCj4gKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCj4gKyAqIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMCj4gKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCj4gKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQo+ICsgKiBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVAo+ICsgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCj4gKyAqIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YK
PiArICogU1VDSCBEQU1BR0UuCj4gKyAqLwo+ICsKPiArI2luY2x1ZGUgPGxpYmVsZi5oPgo+ICsK
PiArI2luY2x1ZGUgIl9saWJlbGYuaCIKPiArCj4gK0VMRlRDX1ZDU0lEKCIkSWQ6IGVsZl9maWxs
LmMgMzE3NCAyMDE1LTAzLTI3IDE3OjEzOjQxWiBlbWFzdGUgJCIpOwo+ICsKPiArdm9pZAo+ICtl
bGZfZmlsbChpbnQgZmlsbCkKPiArewo+ICsgICAgICAgTElCRUxGX1BSSVZBVEUoZmlsbGNoYXIp
ID0gZmlsbDsKPiArfQo+IGRpZmYgLS1naXQgYS9lbGZfZmxhZy5jIGIvZWxmX2ZsYWcuYwo+IG5l
dyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uNzM1MDMyMQo+IC0tLSAvZGV2L251
bGwKPiArKysgYi9lbGZfZmxhZy5jCj4gQEAgLTAsMCArMSwxOTYgQEAKPiArLyotCj4gKyAqIENv
cHlyaWdodCAoYykgMjAwNiwyMDA4LTIwMDksMjAxMSBKb3NlcGggS29zaHkKPiArICogQWxsIHJp
Z2h0cyByZXNlcnZlZC4KPiArICoKPiArICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cj4gKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwo+ICsg
KiBhcmUgbWV0Ogo+ICsgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAo+ICsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCj4gKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Cj4gKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKPiArICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KPiArICoKPiArICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgYGBB
UyBJUycnIEFORAo+ICsgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKPiArICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKPiAr
ICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUKPiArICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKPiArICogREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMKPiArICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCj4gKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCj4gKyAqIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkKPiArICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgo+ICsgKiBTVUNIIERBTUFHRS4KPiAr
ICovCj4gKwo+ICsjaW5jbHVkZSA8bGliZWxmLmg+Cj4gKwo+ICsjaW5jbHVkZSAiX2xpYmVsZi5o
Igo+ICsKPiArRUxGVENfVkNTSUQoIiRJZDogZWxmX2ZsYWcuYyAzMTc0IDIwMTUtMDMtMjcgMTc6
MTM6NDFaIGVtYXN0ZSAkIik7Cj4gKwo+ICt1bnNpZ25lZCBpbnQKPiArZWxmX2ZsYWdhcmhkcihF
bGZfQXJoZHIgKmEsIEVsZl9DbWQgYywgdW5zaWduZWQgaW50IGZsYWdzKQo+ICt7Cj4gKyAgICAg
ICB1bnNpZ25lZCBpbnQgcjsKPiArCj4gKyAgICAgICBpZiAoYSA9PSBOVUxMKQo+ICsgICAgICAg
ICAgICAgICByZXR1cm4gKDApOwo+ICsKPiArICAgICAgIGlmICgoYyAhPSBFTEZfQ19TRVQgJiYg
YyAhPSBFTEZfQ19DTFIpIHx8Cj4gKyAgICAgICAgICAgKGZsYWdzICYgfkVMRl9GX0RJUlRZKSAh
PSAwKSB7Cj4gKyAgICAgICAgICAgICAgIExJQkVMRl9TRVRfRVJST1IoQVJHVU1FTlQsIDApOwo+
ICsgICAgICAgICAgICAgICByZXR1cm4gKDApOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIGlm
IChjID09IEVMRl9DX1NFVCkKPiArICAgICAgICAgICAgICAgciA9IGEtPmFyX2ZsYWdzIHw9IGZs
YWdzOwo+ICsgICAgICAgZWxzZQo+ICsgICAgICAgICAgICAgICByID0gYS0+YXJfZmxhZ3MgJj0g
fmZsYWdzOwo+ICsKPiArICAgICAgIHJldHVybiAociAmIExJQkVMRl9GX0FQSV9NQVNLKTsKPiAr
fQo+ICsKPiArdW5zaWduZWQgaW50Cj4gK2VsZl9mbGFnZGF0YShFbGZfRGF0YSAqZCwgRWxmX0Nt
ZCBjLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCj4gK3sKPiArICAgICAgIHVuc2lnbmVkIGludCByOwo+
ICsgICAgICAgc3RydWN0IF9MaWJlbGZfRGF0YSAqbGQ7Cj4gKwo+ICsgICAgICAgaWYgKGQgPT0g
TlVMTCkKPiArICAgICAgICAgICAgICAgcmV0dXJuICgwKTsKPiArCj4gKyAgICAgICBpZiAoKGMg
IT0gRUxGX0NfU0VUICYmIGMgIT0gRUxGX0NfQ0xSKSB8fAo+ICsgICAgICAgICAgIChmbGFncyAm
IH5FTEZfRl9ESVJUWSkgIT0gMCkgewo+ICsgICAgICAgICAgICAgICBMSUJFTEZfU0VUX0VSUk9S
KEFSR1VNRU5ULCAwKTsKPiArICAgICAgICAgICAgICAgcmV0dXJuICgwKTsKPiArICAgICAgIH0K
PiArCj4gKyAgICAgICBsZCA9IChzdHJ1Y3QgX0xpYmVsZl9EYXRhICopIGQ7Cj4gKwo+ICsgICAg
ICAgaWYgKGMgPT0gRUxGX0NfU0VUKQo+ICsgICAgICAgICAgICAgICByID0gbGQtPmRfZmxhZ3Mg
fD0gZmxhZ3M7Cj4gKyAgICAgICBlbHNlCj4gKyAgICAgICAgICAgICAgIHIgPSBsZC0+ZF9mbGFn
cyAmPSB+ZmxhZ3M7Cj4gKwo+ICsgICAgICAgcmV0dXJuIChyICYgTElCRUxGX0ZfQVBJX01BU0sp
Owo+ICt9Cj4gKwo+ICt1bnNpZ25lZCBpbnQKPiArZWxmX2ZsYWdlaGRyKEVsZiAqZSwgRWxmX0Nt
ZCBjLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCj4gK3sKPiArICAgICAgIGludCBlYzsKPiArICAgICAg
IHZvaWQgKmVoZHI7Cj4gKwo+ICsgICAgICAgaWYgKGUgPT0gTlVMTCkKPiArICAgICAgICAgICAg
ICAgcmV0dXJuICgwKTsKPiArCj4gKyAgICAgICBpZiAoKGMgIT0gRUxGX0NfU0VUICYmIGMgIT0g
RUxGX0NfQ0xSKSB8fAo+ICsgICAgICAgICAgIChlLT5lX2tpbmQgIT0gRUxGX0tfRUxGKSB8fCAo
ZmxhZ3MgJiB+RUxGX0ZfRElSVFkpICE9IDAgfHwKPiArICAgICAgICAgICAoKGVjID0gZS0+ZV9j
bGFzcykgIT0gRUxGQ0xBU1MzMiAmJiBlYyAhPSBFTEZDTEFTUzY0KSkgewo+ICsgICAgICAgICAg
ICAgICBMSUJFTEZfU0VUX0VSUk9SKEFSR1VNRU5ULCAwKTsKPiArICAgICAgICAgICAgICAgcmV0
dXJuICgwKTsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICBpZiAoZWMgPT0gRUxGQ0xBU1MzMikK
PiArICAgICAgICAgICAgICAgZWhkciA9IGUtPmVfdS5lX2VsZi5lX2VoZHIuZV9laGRyMzI7Cj4g
KyAgICAgICBlbHNlCj4gKyAgICAgICAgICAgICAgIGVoZHIgPSBlLT5lX3UuZV9lbGYuZV9laGRy
LmVfZWhkcjY0Owo+ICsKPiArICAgICAgIGlmIChlaGRyID09IE5VTEwpIHsKPiArICAgICAgICAg
ICAgICAgTElCRUxGX1NFVF9FUlJPUihTRVFVRU5DRSwgMCk7Cj4gKyAgICAgICAgICAgICAgIHJl
dHVybiAoMCk7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgcmV0dXJuIChlbGZfZmxhZ2VsZihl
LCBjLCBmbGFncykpOwo+ICt9Cj4gKwo+ICt1bnNpZ25lZCBpbnQKPiArZWxmX2ZsYWdlbGYoRWxm
ICplLCBFbGZfQ21kIGMsIHVuc2lnbmVkIGludCBmbGFncykKPiArewo+ICsgICAgICAgdW5zaWdu
ZWQgaW50IHI7Cj4gKwo+ICsgICAgICAgaWYgKGUgPT0gTlVMTCkKPiArICAgICAgICAgICAgICAg
cmV0dXJuICgwKTsKPiArCj4gKyAgICAgICBpZiAoKGMgIT0gRUxGX0NfU0VUICYmIGMgIT0gRUxG
X0NfQ0xSKSB8fAo+ICsgICAgICAgICAgIChlLT5lX2tpbmQgIT0gRUxGX0tfRUxGKSB8fAo+ICsg
ICAgICAgICAgIChmbGFncyAmIH4oRUxGX0ZfQVJDSElWRSB8IEVMRl9GX0FSQ0hJVkVfU1lTViB8
Cj4gKyAgICAgICAgICAgRUxGX0ZfRElSVFkgfCBFTEZfRl9MQVlPVVQpKSAhPSAwKSB7Cj4gKyAg
ICAgICAgICAgICAgIExJQkVMRl9TRVRfRVJST1IoQVJHVU1FTlQsIDApOwo+ICsgICAgICAgICAg
ICAgICByZXR1cm4gKDApOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIGlmICgoZmxhZ3MgJiBF
TEZfRl9BUkNISVZFX1NZU1YpICYmIChmbGFncyAmIEVMRl9GX0FSQ0hJVkUpID09IDApIHsKPiAr
ICAgICAgICAgICAgICAgTElCRUxGX1NFVF9FUlJPUihBUkdVTUVOVCwgMCk7Cj4gKyAgICAgICAg
ICAgICAgIHJldHVybiAoMCk7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgaWYgKChmbGFncyAm
IEVMRl9GX0FSQ0hJVkUpICYmIGUtPmVfY21kICE9IEVMRl9DX1dSSVRFKSB7Cj4gKyAgICAgICAg
ICAgICAgIExJQkVMRl9TRVRfRVJST1IoTU9ERSwgMCk7Cj4gKyAgICAgICAgICAgICAgIHJldHVy
biAoMCk7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgaWYgKGMgPT0gRUxGX0NfU0VUKQo+ICsg
ICAgICAgICAgICAgICByID0gZS0+ZV9mbGFncyB8PSBmbGFnczsKPiArICAgICAgIGVsc2UKPiAr
ICAgICAgICAgICAgICAgciA9IGUtPmVfZmxhZ3MgJj0gfmZsYWdzOwo+ICsgICAgICAgcmV0dXJu
IChyICYgTElCRUxGX0ZfQVBJX01BU0spOwo+ICt9Cj4gKwo+ICt1bnNpZ25lZCBpbnQKPiArZWxm
X2ZsYWdwaGRyKEVsZiAqZSwgRWxmX0NtZCBjLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCj4gK3sKPiAr
ICAgICAgIGludCBlYzsKPiArICAgICAgIHZvaWQgKnBoZHI7Cj4gKwo+ICsgICAgICAgaWYgKGUg
PT0gTlVMTCkKPiArICAgICAgICAgICAgICAgcmV0dXJuICgwKTsKPiArCj4gKyAgICAgICBpZiAo
KGMgIT0gRUxGX0NfU0VUICYmIGMgIT0gRUxGX0NfQ0xSKSB8fAo+ICsgICAgICAgICAgIChlLT5l
X2tpbmQgIT0gRUxGX0tfRUxGKSB8fCAoZmxhZ3MgJiB+RUxGX0ZfRElSVFkpICE9IDAgfHwKPiAr
ICAgICAgICAgICAoKGVjID0gZS0+ZV9jbGFzcykgIT0gRUxGQ0xBU1MzMiAmJiBlYyAhPSBFTEZD
TEFTUzY0KSkgewo+ICsgICAgICAgICAgICAgICBMSUJFTEZfU0VUX0VSUk9SKEFSR1VNRU5ULCAw
KTsKPiArICAgICAgICAgICAgICAgcmV0dXJuICgwKTsKPiArICAgICAgIH0KPiArCj4gKyAgICAg
ICBpZiAoZWMgPT0gRUxGQ0xBU1MzMikKPiArICAgICAgICAgICAgICAgcGhkciA9IGUtPmVfdS5l
X2VsZi5lX3BoZHIuZV9waGRyMzI7Cj4gKyAgICAgICBlbHNlCj4gKyAgICAgICAgICAgICAgIHBo
ZHIgPSBlLT5lX3UuZV9lbGYuZV9waGRyLmVfcGhkcjY0Owo+ICsKPiArICAgICAgIGlmIChwaGRy
ID09IE5VTEwpIHsKPiArICAgICAgICAgICAgICAgTElCRUxGX1NFVF9FUlJPUihTRVFVRU5DRSwg
MCk7Cj4gKyAgICAgICAgICAgICAgIHJldHVybiAoMCk7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAg
ICAgcmV0dXJuIChlbGZfZmxhZ2VsZihlLCBjLCBmbGFncykpOwo+ICt9Cj4gKwo+ICt1bnNpZ25l
ZCBpbnQKPiArZWxmX2ZsYWdzY24oRWxmX1NjbiAqcywgRWxmX0NtZCBjLCB1bnNpZ25lZCBpbnQg
ZmxhZ3MpCj4gK3sKPiArICAgICAgIHVuc2lnbmVkIGludCByOwo+ICsKPiArICAgICAgIGlmIChz
ID09IE5VTEwpCj4gKyAgICAgICAgICAgICAgIHJldHVybiAoMCk7Cj4gKwo+ICsgICAgICAgaWYg
KChjICE9IEVMRl9DX1NFVCAmJiBjICE9IEVMRl9DX0NMUikgfHwKPiArICAgICAgICAgICAoZmxh
Z3MgJiB+RUxGX0ZfRElSVFkpICE9IDApIHsKPiArICAgICAgICAgICAgICAgTElCRUxGX1NFVF9F
UlJPUihBUkdVTUVOVCwgMCk7Cj4gKyAgICAgICAgICAgICAgIHJldHVybiAoMCk7Cj4gKyAgICAg
ICB9Cj4gKwo+ICsgICAgICAgaWYgKGMgPT0gRUxGX0NfU0VUKQo+ICsgICAgICAgICAgICAgICBy
ID0gcy0+c19mbGFncyB8PSBmbGFnczsKPiArICAgICAgIGVsc2UKPiArICAgICAgICAgICAgICAg
ciA9IHMtPnNfZmxhZ3MgJj0gfmZsYWdzOwo+ICsgICAgICAgcmV0dXJuIChyICYgTElCRUxGX0Zf
QVBJX01BU0spOwo+ICt9Cj4gKwo+ICt1bnNpZ25lZCBpbnQKPiArZWxmX2ZsYWdzaGRyKEVsZl9T
Y24gKnMsIEVsZl9DbWQgYywgdW5zaWduZWQgaW50IGZsYWdzKQo+ICt7Cj4gKyAgICAgICByZXR1
cm4gKGVsZl9mbGFnc2NuKHMsIGMsIGZsYWdzKSk7Cj4gK30KPiBkaWZmIC0tZ2l0IGEvZWxmX2dl
dGFyaGRyLmMgYi9lbGZfZ2V0YXJoZHIuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXgg
MDAwMDAwMC4uNzVlMmU4Ngo+IC0tLSAvZGV2L251bGwKPiArKysgYi9lbGZfZ2V0YXJoZHIuYwo+
IEBAIC0wLDAgKzEsNDUgQEAKPiArLyotCj4gKyAqIENvcHlyaWdodCAoYykgMjAwNiwyMDA4LDIw
MTAgSm9zZXBoIEtvc2h5Cj4gKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCj4gKyAqCj4gKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAo+ICsgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKPiArICogYXJlIG1ldDoKPiArICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKPiAr
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgo+ICsgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAo+ICsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCj4gKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCj4gKyAqCj4gKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKPiArICogQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Cj4gKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCj4gKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCj4gKyAqIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMCj4gKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCj4gKyAqIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQo+ICsg
KiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVAo+ICsgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCj4gKyAqIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YKPiArICogU1VDSCBEQU1BR0UuCj4gKyAqLwo+ICsKPiArI2luY2x1ZGUgPGxpYmVsZi5o
Pgo+ICsKPiArI2luY2x1ZGUgIl9saWJlbGYuaCIKPiArCj4gK0VMRlRDX1ZDU0lEKCIkSWQ6IGVs
Zl9nZXRhcmhkci5jIDMxNzQgMjAxNS0wMy0yNyAxNzoxMzo0MVogZW1hc3RlICQiKTsKPiArCj4g
K0VsZl9BcmhkciAqCj4gK2VsZl9nZXRhcmhkcihFbGYgKmUpCj4gK3sKPiArICAgICAgIGlmIChl
ID09IE5VTEwpIHsKPiArICAgICAgICAgICAgICAgTElCRUxGX1NFVF9FUlJPUihBUkdVTUVOVCwg
MCk7Cj4gKyAgICAgICAgICAgICAgIHJldHVybiAoTlVMTCk7Cj4gKyAgICAgICB9Cj4gKwo+ICsg
ICAgICAgaWYgKGUtPmVfZmxhZ3MgJiBMSUJFTEZfRl9BUl9IRUFERVIpCj4gKyAgICAgICAgICAg
ICAgIHJldHVybiAoZS0+ZV9oZHIuZV9hcmhkcik7Cj4gKwo+ICsgICAgICAgcmV0dXJuIChfbGli
ZWxmX2FyX2dldGhkcihlKSk7Cj4gK30KPiBkaWZmIC0tZ2l0IGEvZWxmX2dldGFyc3ltLmMgYi9l
bGZfZ2V0YXJzeW0uYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uMzY3
OWI4MQo+IC0tLSAvZGV2L251bGwKPiArKysgYi9lbGZfZ2V0YXJzeW0uYwo+IEBAIC0wLDAgKzEs
NTYgQEAKPiArLyotCj4gKyAqIENvcHlyaWdodCAoYykgMjAwNiwyMDA4IEpvc2VwaCBLb3NoeQo+
ICsgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgo+ICsgKgo+ICsgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKPiArICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCj4gKyAqIGFyZSBtZXQ6Cj4gKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cj4gKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KPiArICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKPiArICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQo+ICsgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgo+ICsg
Kgo+ICsgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRS
SUJVVE9SUyBgYEFTIElTJycgQU5ECj4gKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQo+ICsgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRQo+ICsgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRI
T1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQo+ICsgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAo+ICsg
KiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUwo+ICsgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKPiArICogSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QKPiArICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQo+ICsgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCj4gKyAqIFNVQ0gg
REFNQUdFLgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlIDxsaWJlbGYuaD4KPiArCj4gKyNpbmNsdWRl
ICJfbGliZWxmLmgiCj4gKwo+ICtFTEZUQ19WQ1NJRCgiJElkOiBlbGZfZ2V0YXJzeW0uYyAzMTc0
IDIwMTUtMDMtMjcgMTc6MTM6NDFaIGVtYXN0ZSAkIik7Cj4gKwo+ICtFbGZfQXJzeW0gKgo+ICtl
bGZfZ2V0YXJzeW0oRWxmICphciwgc2l6ZV90ICpwdHIpCj4gK3sKPiArICAgICAgIHNpemVfdCBu
Owo+ICsgICAgICAgRWxmX0Fyc3ltICpzeW10YWI7Cj4gKwo+ICsgICAgICAgbiA9IDA7Cj4gKyAg
ICAgICBzeW10YWIgPSBOVUxMOwo+ICsKPiArICAgICAgIGlmIChhciA9PSBOVUxMIHx8IGFyLT5l
X2tpbmQgIT0gRUxGX0tfQVIpCj4gKyAgICAgICAgICAgICAgIExJQkVMRl9TRVRfRVJST1IoQVJH
VU1FTlQsIDApOwo+ICsgICAgICAgZWxzZSBpZiAoKHN5bXRhYiA9IGFyLT5lX3UuZV9hci5lX3N5
bXRhYikgIT0gTlVMTCkKPiArICAgICAgICAgICAgICAgbiA9IGFyLT5lX3UuZV9hci5lX3N5bXRh
YnN6Owo+ICsgICAgICAgZWxzZSBpZiAoYXItPmVfdS5lX2FyLmVfcmF3c3ltdGFiKQo+ICsgICAg
ICAgICAgICAgICBzeW10YWIgPSAoYXItPmVfZmxhZ3MgJiBMSUJFTEZfRl9BUl9WQVJJQU5UX1NW
UjQpID8KPiArICAgICAgICAgICAgICAgICAgIF9saWJlbGZfYXJfcHJvY2Vzc19zdnI0X3N5bXRh
YihhciwgJm4pIDoKPiArICAgICAgICAgICAgICAgICAgIF9saWJlbGZfYXJfcHJvY2Vzc19ic2Rf
c3ltdGFiKGFyLCAmbik7Cj4gKyAgICAgICBlbHNlCj4gKyAgICAgICAgICAgICAgIExJQkVMRl9T
RVRfRVJST1IoQVJDSElWRSwgMCk7Cj4gKwo+ICsgICAgICAgaWYgKHB0cikKPiArICAgICAgICAg
ICAgICAgKnB0ciA9IG47Cj4gKyAgICAgICByZXR1cm4gKHN5bXRhYik7Cj4gK30KPiBkaWZmIC0t
Z2l0IGEvZWxmX2dldGJhc2UuYyBiL2VsZl9nZXRiYXNlLmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0
NAo+IGluZGV4IDAwMDAwMDAuLmIwMzhjM2QKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZWxmX2dl
dGJhc2UuYwo+IEBAIC0wLDAgKzEsNDYgQEAKPiArLyotCj4gKyAqIENvcHlyaWdodCAoYykgMjAw
NiwyMDA4IEpvc2VwaCBLb3NoeQo+ICsgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgo+ICsgKgo+ICsg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKPiArICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCj4gKyAqIGFyZSBtZXQ6Cj4gKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Cj4gKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KPiArICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKPiArICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQo+ICsg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgo+ICsgKgo+ICsgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECj4gKyAqIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQo+ICsgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQo+ICsgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQo+ICsgKiBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTAo+ICsgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUwo+ICsgKiBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikK
PiArICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QKPiArICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQo+ICsgKiBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GCj4gKyAqIFNVQ0ggREFNQUdFLgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlIDxsaWJl
bGYuaD4KPiArCj4gKyNpbmNsdWRlICJfbGliZWxmLmgiCj4gKwo+ICtFTEZUQ19WQ1NJRCgiJElk
OiBlbGZfZ2V0YmFzZS5jIDMxNzQgMjAxNS0wMy0yNyAxNzoxMzo0MVogZW1hc3RlICQiKTsKPiAr
Cj4gK29mZl90Cj4gK2VsZl9nZXRiYXNlKEVsZiAqZSkKPiArewo+ICsgICAgICAgaWYgKGUgPT0g
TlVMTCkgewo+ICsgICAgICAgICAgICAgICBMSUJFTEZfU0VUX0VSUk9SKEFSR1VNRU5ULCAwKTsK
PiArICAgICAgICAgICAgICAgcmV0dXJuICgob2ZmX3QpIC0xKTsKPiArICAgICAgIH0KPiArCj4g
KyAgICAgICBpZiAoZS0+ZV9wYXJlbnQgPT0gTlVMTCkKPiArICAgICAgICAgICAgICAgcmV0dXJu
ICgob2ZmX3QpIDApOwo+ICsKPiArICAgICAgIHJldHVybiAoKG9mZl90KSAoKHVpbnRwdHJfdCkg
ZS0+ZV9yYXdmaWxlIC0KPiArICAgICAgICAgICAodWludHB0cl90KSBlLT5lX3BhcmVudC0+ZV9y
YXdmaWxlKSk7Cj4gK30KPiBkaWZmIC0tZ2l0IGEvZWxmX2dldGlkZW50LmMgYi9lbGZfZ2V0aWRl
bnQuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uYTY5MTM5Ywo+IC0t
LSAvZGV2L251bGwKPiArKysgYi9lbGZfZ2V0aWRlbnQuYwo+IEBAIC0wLDAgKzEsNjYgQEAKPiAr
LyotCj4gKyAqIENvcHlyaWdodCAoYykgMjAwNiwyMDA4IEpvc2VwaCBLb3NoeQo+ICsgKiBBbGwg
cmlnaHRzIHJlc2VydmVkLgo+ICsgKgo+ICsgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKPiArICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCj4g
KyAqIGFyZSBtZXQ6Cj4gKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cj4gKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KPiArICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKPiArICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQo+ICsgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgo+ICsgKgo+ICsgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyBg
YEFTIElTJycgQU5ECj4gKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQo+ICsgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQo+
ICsgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRQo+ICsgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAo+ICsgKiBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUwo+ICsgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKPiArICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKPiArICog
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWQo+ICsgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCj4gKyAqIFNVQ0ggREFNQUdFLgo+
ICsgKi8KPiArCj4gKyNpbmNsdWRlIDxhci5oPgo+ICsjaW5jbHVkZSA8YXNzZXJ0Lmg+Cj4gKyNp
bmNsdWRlIDxsaWJlbGYuaD4KPiArCj4gKyNpbmNsdWRlICJfbGliZWxmLmgiCj4gKwo+ICtFTEZU
Q19WQ1NJRCgiJElkOiBlbGZfZ2V0aWRlbnQuYyAzMTc0IDIwMTUtMDMtMjcgMTc6MTM6NDFaIGVt
YXN0ZSAkIik7Cj4gKwo+ICtjaGFyICoKPiArZWxmX2dldGlkZW50KEVsZiAqZSwgc2l6ZV90ICpz
eikKPiArewo+ICsKPiArICAgICAgIGlmIChlID09IE5VTEwpIHsKPiArICAgICAgICAgICAgICAg
TElCRUxGX1NFVF9FUlJPUihBUkdVTUVOVCwgMCk7Cj4gKyAgICAgICAgICAgICAgIGdvdG8gZXJy
b3I7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgaWYgKGUtPmVfY21kID09IEVMRl9DX1dSSVRF
ICYmIGUtPmVfcmF3ZmlsZSA9PSBOVUxMKSB7Cj4gKyAgICAgICAgICAgICAgIExJQkVMRl9TRVRf
RVJST1IoU0VRVUVOQ0UsIDApOwo+ICsgICAgICAgICAgICAgICBnb3RvIGVycm9yOwo+ICsgICAg
ICAgfQo+ICsKPiArICAgICAgIGFzc2VydChlLT5lX2tpbmQgIT0gRUxGX0tfQVIgfHwgZS0+ZV9j
bWQgPT0gRUxGX0NfUkVBRCk7Cj4gKwo+ICsgICAgICAgaWYgKHN6KSB7Cj4gKyAgICAgICAgICAg
ICAgIGlmIChlLT5lX2tpbmQgPT0gRUxGX0tfQVIpCj4gKyAgICAgICAgICAgICAgICAgICAgICAg
KnN6ID0gU0FSTUFHOwo+ICsgICAgICAgICAgICAgICBlbHNlIGlmIChlLT5lX2tpbmQgPT0gRUxG
X0tfRUxGKQo+ICsgICAgICAgICAgICAgICAgICAgICAgICpzeiA9IEVJX05JREVOVDsKPiArICAg
ICAgICAgICAgICAgZWxzZQo+ICsgICAgICAgICAgICAgICAgICAgICAgICpzeiA9IGUtPmVfcmF3
c2l6ZTsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICByZXR1cm4gKChjaGFyICopIGUtPmVfcmF3
ZmlsZSk7Cj4gKwo+ICsgZXJyb3I6Cj4gKyAgICAgICBpZiAoc3opCj4gKyAgICAgICAgICAgICAg
ICpzeiA9IDA7Cj4gKyAgICAgICByZXR1cm4gKE5VTEwpOwo+ICt9Cj4gZGlmZiAtLWdpdCBhL2Vs
Zl9oYXNoLmMgYi9lbGZfaGFzaC5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAw
MDAwLi5lZjdlNDRkCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2VsZl9oYXNoLmMKPiBAQCAtMCww
ICsxLDU0IEBACj4gKy8qLQo+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMDYsMjAwOCBKb3NlcGggS29z
aHkKPiArICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KPiArICoKPiArICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cj4gKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwo+ICsgKiBhcmUgbWV0Ogo+ICsgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAo+ICsgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCj4g
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Cj4gKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKPiArICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
PiArICoKPiArICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBD
T05UUklCVVRPUlMgYGBBUyBJUycnIEFORAo+ICsgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKPiArICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UKPiArICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
QVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKPiArICogRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwK
PiArICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMKPiArICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCj4gKyAqIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUCj4gKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKPiArICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgo+ICsgKiBT
VUNIIERBTUFHRS4KPiArICovCj4gKwo+ICsjaW5jbHVkZSA8bGliZWxmLmg+Cj4gKwo+ICsjaW5j
bHVkZSAiX2xpYmVsZi5oIgo+ICsKPiArRUxGVENfVkNTSUQoIiRJZDogZWxmX2hhc2guYyAzMTc0
IDIwMTUtMDMtMjcgMTc6MTM6NDFaIGVtYXN0ZSAkIik7Cj4gKwo+ICsvKgo+ICsgKiBUaGlzIGVs
Zl9oYXNoIGZ1bmN0aW9uIGlzIGRlZmluZWQgYnkgdGhlIFN5c3RlbSBWIEFCSS4KPiArICovCj4g
Kwo+ICt1bnNpZ25lZCBsb25nCj4gK2VsZl9oYXNoKGNvbnN0IGNoYXIgKm5hbWUpCj4gK3sKPiAr
ICAgICAgIHVuc2lnbmVkIGxvbmcgaCwgdDsKPiArICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIg
KnM7Cj4gKwo+ICsgICAgICAgcyA9IChjb25zdCB1bnNpZ25lZCBjaGFyICopIG5hbWU7Cj4gKyAg
ICAgICBoID0gdCA9IDA7Cj4gKwo+ICsgICAgICAgZm9yICg7ICpzICE9ICdcMCc7IGggPSBoICYg
fnQpIHsKPiArICAgICAgICAgICAgICAgaCA9IChoIDw8IDQpICsgKnMrKzsKPiArICAgICAgICAg
ICAgICAgdCA9IGggJiAweEYwMDAwMDAwVUw7Cj4gKyAgICAgICAgICAgICAgIGlmICh0KQo+ICsg
ICAgICAgICAgICAgICAgICAgICAgIGggXj0gdCA+PiAyNDsKPiArICAgICAgIH0KPiArCj4gKyAg
ICAgICByZXR1cm4gKGgpOwo+ICt9Cj4gZGlmZiAtLWdpdCBhL2VsZl9raW5kLmMgYi9lbGZfa2lu
ZC5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi5mNDk3YmQzCj4gLS0t
IC9kZXYvbnVsbAo+ICsrKyBiL2VsZl9raW5kLmMKPiBAQCAtMCwwICsxLDQyIEBACj4gKy8qLQo+
ICsgKiBDb3B5cmlnaHQgKGMpIDIwMDYsMjAwOCBKb3NlcGggS29zaHkKPiArICogQWxsIHJpZ2h0
cyByZXNlcnZlZC4KPiArICoKPiArICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cj4gKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwo+ICsgKiBh
cmUgbWV0Ogo+ICsgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAo+ICsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCj4gKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cj4g
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKPiArICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KPiArICoKPiArICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgYGBBUyBJ
UycnIEFORAo+ICsgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKPiArICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKPiArICog
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUKPiArICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKPiArICogREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMKPiArICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pCj4gKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCj4gKyAqIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkKPiArICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgo+ICsgKiBTVUNIIERBTUFHRS4KPiArICov
Cj4gKwo+ICsjaW5jbHVkZSA8bGliZWxmLmg+Cj4gKwo+ICsjaW5jbHVkZSAiX2xpYmVsZi5oIgo+
ICsKPiArRUxGVENfVkNTSUQoIiRJZDogZWxmX2tpbmQuYyAzMTc0IDIwMTUtMDMtMjcgMTc6MTM6
NDFaIGVtYXN0ZSAkIik7Cj4gKwo+ICtFbGZfS2luZAo+ICtlbGZfa2luZChFbGYgKmUpCj4gK3sK
PiArICAgICAgIGlmIChlID09IE5VTEwpCj4gKyAgICAgICAgICAgICAgIHJldHVybiAoRUxGX0tf
Tk9ORSk7Cj4gKyAgICAgICBpZiAoZS0+ZV9raW5kID09IEVMRl9LX0FSIHx8Cj4gKyAgICAgICAg
ICAgZS0+ZV9raW5kID09IEVMRl9LX0VMRikKPiArICAgICAgICAgICAgICAgcmV0dXJuIChlLT5l
X2tpbmQpOwo+ICsgICAgICAgcmV0dXJuIChFTEZfS19OT05FKTsKPiArfQo+IGRpZmYgLS1naXQg
YS9lbGZfbWVtb3J5LmMgYi9lbGZfbWVtb3J5LmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGlu
ZGV4IDAwMDAwMDAuLmQ3MGY2ZTAKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZWxmX21lbW9yeS5j
Cj4gQEAgLTAsMCArMSw0NyBAQAo+ICsvKi0KPiArICogQ29weXJpZ2h0IChjKSAyMDA2LDIwMDgg
Sm9zZXBoIEtvc2h5Cj4gKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCj4gKyAqCj4gKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAo+ICsgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKPiArICogYXJlIG1ldDoKPiArICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKPiArICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgo+ICsgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAo+ICsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCj4gKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCj4gKyAqCj4gKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFV
VEhPUiBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKPiArICogQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCj4g
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFCj4gKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCj4gKyAqIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMCj4gKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCj4gKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQo+ICsgKiBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVAo+ICsgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCj4gKyAqIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YKPiArICogU1VDSCBEQU1BR0UuCj4gKyAqLwo+ICsKPiArI2luY2x1ZGUgPGxpYmVsZi5oPgo+
ICsKPiArI2luY2x1ZGUgIl9saWJlbGYuaCIKPiArCj4gK0VMRlRDX1ZDU0lEKCIkSWQ6IGVsZl9t
ZW1vcnkuYyAzMDEzIDIwMTQtMDMtMjMgMDY6MTY6NTlaIGprb3NoeSAkIik7Cj4gKwo+ICtFbGYg
Kgo+ICtlbGZfbWVtb3J5KGNoYXIgKmltYWdlLCBzaXplX3Qgc3opCj4gK3sKPiArICAgICAgIGlm
IChMSUJFTEZfUFJJVkFURSh2ZXJzaW9uKSA9PSBFVl9OT05FKSB7Cj4gKyAgICAgICAgICAgICAg
IExJQkVMRl9TRVRfRVJST1IoU0VRVUVOQ0UsIDApOwo+ICsgICAgICAgICAgICAgICByZXR1cm4g
KE5VTEwpOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIGlmIChpbWFnZSA9PSBOVUxMIHx8IHN6
ID09IDApIHsKPiArICAgICAgICAgICAgICAgTElCRUxGX1NFVF9FUlJPUihBUkdVTUVOVCwgMCk7
Cj4gKyAgICAgICAgICAgICAgIHJldHVybiAoTlVMTCk7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAg
ICAgcmV0dXJuIChfbGliZWxmX21lbW9yeSgodW5zaWduZWQgY2hhciAqKSBpbWFnZSwgc3osIDEp
KTsKPiArfQo+IGRpZmYgLS1naXQgYS9lbGZfbmV4dC5jIGIvZWxmX25leHQuYwo+IG5ldyBmaWxl
IG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uNGMzMzcxNAo+IC0tLSAvZGV2L251bGwKPiAr
KysgYi9lbGZfbmV4dC5jCj4gQEAgLTAsMCArMSw2NCBAQAo+ICsvKi0KPiArICogQ29weXJpZ2h0
IChjKSAyMDA2LDIwMDggSm9zZXBoIEtvc2h5Cj4gKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCj4g
KyAqCj4gKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAo+ICsgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKPiArICogYXJlIG1ldDoKPiArICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKPiArICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgo+ICsgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAo+ICsgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCj4gKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCj4gKyAqCj4gKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKPiArICog
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCj4gKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCj4gKyAqIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
Cj4gKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCj4gKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCj4gKyAqIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKQo+ICsgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAo+ICsgKiBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCj4g
KyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YKPiArICogU1VDSCBEQU1BR0UuCj4gKyAqLwo+ICsKPiArI2luY2x1
ZGUgPGFyLmg+Cj4gKyNpbmNsdWRlIDxhc3NlcnQuaD4KPiArI2luY2x1ZGUgPGxpYmVsZi5oPgo+
ICsKPiArI2luY2x1ZGUgIl9saWJlbGYuaCIKPiArCj4gK0VMRlRDX1ZDU0lEKCIkSWQ6IGVsZl9u
ZXh0LmMgMzE3NCAyMDE1LTAzLTI3IDE3OjEzOjQxWiBlbWFzdGUgJCIpOwo+ICsKPiArRWxmX0Nt
ZAo+ICtlbGZfbmV4dChFbGYgKmUpCj4gK3sKPiArICAgICAgIG9mZl90IG5leHQ7Cj4gKyAgICAg
ICBFbGYgKnBhcmVudDsKPiArCj4gKyAgICAgICBpZiAoZSA9PSBOVUxMKQo+ICsgICAgICAgICAg
ICAgICByZXR1cm4gKEVMRl9DX05VTEwpOwo+ICsKPiArICAgICAgICBpZiAoKHBhcmVudCA9IGUt
PmVfcGFyZW50KSA9PSBOVUxMKSB7Cj4gKyAgICAgICAgICAgICAgICBMSUJFTEZfU0VUX0VSUk9S
KEFSR1VNRU5ULCAwKTsKPiArICAgICAgICAgICAgICAgIHJldHVybiAoRUxGX0NfTlVMTCk7Cj4g
KyAgICAgICAgfQo+ICsKPiArICAgICAgIGFzc2VydChwYXJlbnQtPmVfa2luZCA9PSBFTEZfS19B
Uik7Cj4gKyAgICAgICBhc3NlcnQocGFyZW50LT5lX2NtZCA9PSBFTEZfQ19SRUFEKTsKPiArICAg
ICAgIGFzc2VydChlLT5lX3Jhd2ZpbGUgPiBwYXJlbnQtPmVfcmF3ZmlsZSk7Cj4gKwo+ICsgICAg
ICAgbmV4dCA9IGUtPmVfcmF3ZmlsZSAtIHBhcmVudC0+ZV9yYXdmaWxlICsgKG9mZl90KSBlLT5l
X3Jhd3NpemU7Cj4gKyAgICAgICBuZXh0ID0gKG5leHQgKyAxKSAmIH4xOyAvKiByb3VuZCB1cCB0
byBhbiBldmVuIGJvdW5kYXJ5ICovCj4gKwo+ICsgICAgICAgLyoKPiArICAgICAgICAqIFNldHVw
IHRoZSAnZV9uZXh0JyBmaWVsZCBvZiB0aGUgYXJjaGl2ZSBkZXNjcmlwdG9yIGZvciB0aGUKPiAr
ICAgICAgICAqIG5leHQgY2FsbCB0byAnZWxmX2JlZ2luKCknLgo+ICsgICAgICAgICovCj4gKyAg
ICAgICBwYXJlbnQtPmVfdS5lX2FyLmVfbmV4dCA9IChuZXh0ID49IChvZmZfdCkgcGFyZW50LT5l
X3Jhd3NpemUpID8KPiArICAgICAgICAgICAob2ZmX3QpIDAgOiBuZXh0Owo+ICsKPiArICAgICAg
IHJldHVybiAoRUxGX0NfUkVBRCk7Cj4gK30KPiBkaWZmIC0tZ2l0IGEvZWxmX29wZW4uYyBiL2Vs
Zl9vcGVuLmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLjVhYWQ0NTkK
PiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZWxmX29wZW4uYwo+IEBAIC0wLDAgKzEsNjcgQEAKPiAr
LyotCj4gKyAqIENvcHlyaWdodCAoYykgMjAxMSBKb3NlcGggS29zaHkKPiArICogQWxsIHJpZ2h0
cyByZXNlcnZlZC4KPiArICoKPiArICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cj4gKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwo+ICsgKiBh
cmUgbWV0Ogo+ICsgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAo+ICsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCj4gKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cj4g
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKPiArICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KPiArICoKPiArICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgYGBBUyBJ
UycnIEFORAo+ICsgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKPiArICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKPiArICog
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUKPiArICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKPiArICogREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMKPiArICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pCj4gKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCj4gKyAqIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkKPiArICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgo+ICsgKiBTVUNIIERBTUFHRS4KPiArICov
Cj4gKwo+ICsjaW5jbHVkZSA8bGliZWxmLmg+Cj4gKwo+ICsjaW5jbHVkZSAiX2xpYmVsZi5oIgo+
ICsKPiArRUxGVENfVkNTSUQoIiRJZCQiKTsKPiArCj4gKy8qCj4gKyAqIEV4dGVuc2lvbiBBUEk6
IG9wZW4gYSBmaWxlIGZvciByZWFkaW5nLCBpZ25vcmluZyBwYXJzZSBlcnJvcnMuCj4gKyAqLwo+
ICsKPiArRWxmICoKPiArZWxmX29wZW4oaW50IGZkKQo+ICt7Cj4gKyAgICAgICBpZiAoTElCRUxG
X1BSSVZBVEUodmVyc2lvbikgPT0gRVZfTk9ORSkgewo+ICsgICAgICAgICAgICAgICBMSUJFTEZf
U0VUX0VSUk9SKFNFUVVFTkNFLCAwKTsKPiArICAgICAgICAgICAgICAgcmV0dXJuIChOVUxMKTsK
PiArICAgICAgIH0KPiArCj4gKyAgICAgICByZXR1cm4gKF9saWJlbGZfb3Blbl9vYmplY3QoZmQs
IEVMRl9DX1JFQUQsIDApKTsKPiArfQo+ICsKPiArLyoKPiArICogRXh0ZW5zaW9uIEFQSTogY3Jl
YXRlIGFuIEVMRiBkZXNjcmlwdG9yIGZvciBhbiBpbi1tZW1vcnkgb2JqZWN0LAo+ICsgKiBpZ25v
cmluZyBwYXJzZSBlcnJvcnMuCj4gKyAqLwo+ICsKPiArRWxmICoKPiArZWxmX29wZW5tZW1vcnko
Y2hhciAqaW1hZ2UsIHNpemVfdCBzeikKPiArewo+ICsgICAgICAgaWYgKExJQkVMRl9QUklWQVRF
KHZlcnNpb24pID09IEVWX05PTkUpIHsKPiArICAgICAgICAgICAgICAgTElCRUxGX1NFVF9FUlJP
UihTRVFVRU5DRSwgMCk7Cj4gKyAgICAgICAgICAgICAgIHJldHVybiAoTlVMTCk7Cj4gKyAgICAg
ICB9Cj4gKwo+ICsgICAgICAgaWYgKGltYWdlID09IE5VTEwgfHwgc3ogPT0gMCkgewo+ICsgICAg
ICAgICAgICAgICBMSUJFTEZfU0VUX0VSUk9SKEFSR1VNRU5ULCAwKTsKPiArICAgICAgICAgICAg
ICAgcmV0dXJuIChOVUxMKTsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICByZXR1cm4gKF9saWJl
bGZfbWVtb3J5KCh1bnNpZ25lZCBjaGFyICopIGltYWdlLCBzeiwgMCkpOwo+ICt9Cj4gZGlmZiAt
LWdpdCBhL2VsZl9waG51bS5jIGIvZWxmX3BobnVtLmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+
IGluZGV4IDAwMDAwMDAuLjRhYzY2NWQKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZWxmX3BobnVt
LmMKPiBAQCAtMCwwICsxLDY1IEBACj4gKy8qLQo+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMDYsMjAw
OCBKb3NlcGggS29zaHkKPiArICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KPiArICoKPiArICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Cj4gKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwo+ICsgKiBhcmUgbWV0Ogo+ICsgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAo+ICsg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCj4gKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cj4gKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKPiArICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KPiArICoKPiArICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
QVVUSE9SIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAo+ICsgKiBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
PiArICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKPiArICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKPiArICogRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwKPiArICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKPiArICogT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCj4gKyAq
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUCj4gKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKPiArICogT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRgo+ICsgKiBTVUNIIERBTUFHRS4KPiArICovCj4gKwo+ICsjaW5jbHVkZSA8YXIuaD4KPiAr
I2luY2x1ZGUgPGxpYmVsZi5oPgo+ICsKPiArI2luY2x1ZGUgIl9saWJlbGYuaCIKPiArCj4gK0VM
RlRDX1ZDU0lEKCIkSWQ6IGVsZl9waG51bS5jIDMxNzQgMjAxNS0wMy0yNyAxNzoxMzo0MVogZW1h
c3RlICQiKTsKPiArCj4gK3N0YXRpYyBpbnQKPiArX2xpYmVsZl9nZXRwaGRybnVtKEVsZiAqZSwg
c2l6ZV90ICpwaG51bSkKPiArewo+ICsgICAgICAgdm9pZCAqZWg7Cj4gKyAgICAgICBpbnQgZWM7
Cj4gKwo+ICsgICAgICAgaWYgKGUgPT0gTlVMTCB8fCBlLT5lX2tpbmQgIT0gRUxGX0tfRUxGIHx8
Cj4gKyAgICAgICAgICAgKChlYyA9IGUtPmVfY2xhc3MpICE9IEVMRkNMQVNTMzIgJiYgZWMgIT0g
RUxGQ0xBU1M2NCkpIHsKPiArICAgICAgICAgICAgICAgTElCRUxGX1NFVF9FUlJPUihBUkdVTUVO
VCwgMCk7Cj4gKyAgICAgICAgICAgICAgIHJldHVybiAoLTEpOwo+ICsgICAgICAgfQo+ICsKPiAr
ICAgICAgIGlmICgoZWggPSBfbGliZWxmX2VoZHIoZSwgZWMsIDApKSA9PSBOVUxMKQo+ICsgICAg
ICAgICAgICAgICByZXR1cm4gKC0xKTsKPiArCj4gKyAgICAgICAqcGhudW0gPSBlLT5lX3UuZV9l
bGYuZV9ucGhkcjsKPiArCj4gKyAgICAgICByZXR1cm4gKDApOwo+ICt9Cj4gKwo+ICtpbnQKPiAr
ZWxmX2dldHBoZHJudW0oRWxmICplLCBzaXplX3QgKnBobnVtKQo+ICt7Cj4gKyAgICAgICByZXR1
cm4gKF9saWJlbGZfZ2V0cGhkcm51bShlLCBwaG51bSkpOwo+ICt9Cj4gKwo+ICsvKiBEZXByZWNh
dGVkIEFQSSAqLwo+ICtpbnQKPiArZWxmX2dldHBobnVtKEVsZiAqZSwgc2l6ZV90ICpwaG51bSkK
PiArewo+ICsgICAgICAgcmV0dXJuIChfbGliZWxmX2dldHBoZHJudW0oZSwgcGhudW0pID49IDAp
Owo+ICt9Cj4gZGlmZiAtLWdpdCBhL2VsZl9yYW5kLmMgYi9lbGZfcmFuZC5jCj4gbmV3IGZpbGUg
bW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi5lYjJjOWVhCj4gLS0tIC9kZXYvbnVsbAo+ICsr
KyBiL2VsZl9yYW5kLmMKPiBAQCAtMCwwICsxLDU3IEBACj4gKy8qLQo+ICsgKiBDb3B5cmlnaHQg
KGMpIDIwMDYsMjAwOCBKb3NlcGggS29zaHkKPiArICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KPiAr
ICoKPiArICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Cj4gKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwo+ICsgKiBhcmUgbWV0Ogo+ICsgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAo+ICsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCj4gKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cj4gKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKPiArICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KPiArICoKPiArICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAo+ICsgKiBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKPiArICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKPiArICogQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUK
PiArICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwKPiArICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKPiArICogT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pCj4gKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCj4gKyAqIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKPiAr
ICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRgo+ICsgKiBTVUNIIERBTUFHRS4KPiArICovCj4gKwo+ICsjaW5jbHVk
ZSA8YXIuaD4KPiArI2luY2x1ZGUgPGxpYmVsZi5oPgo+ICsKPiArI2luY2x1ZGUgIl9saWJlbGYu
aCIKPiArCj4gK0VMRlRDX1ZDU0lEKCIkSWQ6IGVsZl9yYW5kLmMgMzE3NCAyMDE1LTAzLTI3IDE3
OjEzOjQxWiBlbWFzdGUgJCIpOwo+ICsKPiArb2ZmX3QKPiArZWxmX3JhbmQoRWxmICphciwgb2Zm
X3Qgb2Zmc2V0KQo+ICt7Cj4gKyAgICAgICBzdHJ1Y3QgYXJfaGRyICphcmg7Cj4gKwo+ICsgICAg
ICAgaWYgKGFyID09IE5VTEwgfHwgYXItPmVfa2luZCAhPSBFTEZfS19BUiB8fAo+ICsgICAgICAg
ICAgIChvZmZzZXQgJiAxKSB8fCBvZmZzZXQgPCBTQVJNQUcgfHwKPiArICAgICAgICAgICAoc2l6
ZV90KSBvZmZzZXQgKyBzaXplb2Yoc3RydWN0IGFyX2hkcikgPj0gYXItPmVfcmF3c2l6ZSkgewo+
ICsgICAgICAgICAgICAgICBMSUJFTEZfU0VUX0VSUk9SKEFSR1VNRU5ULCAwKTsKPiArICAgICAg
ICAgICAgICAgcmV0dXJuIDA7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgYXJoID0gKHN0cnVj
dCBhcl9oZHIgKikgKGFyLT5lX3Jhd2ZpbGUgKyBvZmZzZXQpOwo+ICsKPiArICAgICAgIC8qIGEg
dG9vIHNpbXBsZSBzYW5pdHkgY2hlY2sgKi8KPiArICAgICAgIGlmIChhcmgtPmFyX2ZtYWdbMF0g
IT0gJ2AnIHx8IGFyaC0+YXJfZm1hZ1sxXSAhPSAnXG4nKSB7Cj4gKyAgICAgICAgICAgICAgIExJ
QkVMRl9TRVRfRVJST1IoQVJDSElWRSwgMCk7Cj4gKyAgICAgICAgICAgICAgIHJldHVybiAwOwo+
ICsgICAgICAgfQo+ICsKPiArICAgICAgIGFyLT5lX3UuZV9hci5lX25leHQgPSBvZmZzZXQ7Cj4g
Kwo+ICsgICAgICAgcmV0dXJuIChvZmZzZXQpOwo+ICt9Cj4gZGlmZiAtLWdpdCBhL2VsZl9yYXdm
aWxlLmMgYi9lbGZfcmF3ZmlsZS5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAw
MDAwLi5mNjM5ODJmCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2VsZl9yYXdmaWxlLmMKPiBAQCAt
MCwwICsxLDUxIEBACj4gKy8qLQo+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMDYsMjAwOCBKb3NlcGgg
S29zaHkKPiArICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KPiArICoKPiArICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cj4g
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwo+ICsgKiBhcmUgbWV0Ogo+ICsgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAo+ICsgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Cj4gKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Cj4gKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKPiArICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KPiArICoKPiArICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFO
RCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAo+ICsgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKPiArICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UKPiArICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKPiArICogRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwKPiArICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKPiArICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCj4gKyAqIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUCj4gKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKPiArICogT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgo+ICsg
KiBTVUNIIERBTUFHRS4KPiArICovCj4gKwo+ICsjaW5jbHVkZSA8bGliZWxmLmg+Cj4gKwo+ICsj
aW5jbHVkZSAiX2xpYmVsZi5oIgo+ICsKPiArRUxGVENfVkNTSUQoIiRJZDogZWxmX3Jhd2ZpbGUu
YyAzMTc0IDIwMTUtMDMtMjcgMTc6MTM6NDFaIGVtYXN0ZSAkIik7Cj4gKwo+ICtjaGFyICoKPiAr
ZWxmX3Jhd2ZpbGUoRWxmICplLCBzaXplX3QgKnN6KQo+ICt7Cj4gKyAgICAgICBzaXplX3Qgc2l6
ZTsKPiArICAgICAgIHVuc2lnbmVkIGNoYXIgKnB0cjsKPiArCj4gKyAgICAgICBzaXplID0gZSA/
IGUtPmVfcmF3c2l6ZSA6IDA7Cj4gKyAgICAgICBwdHIgPSBOVUxMOwo+ICsKPiArICAgICAgIGlm
IChlID09IE5VTEwpCj4gKyAgICAgICAgICAgICAgIExJQkVMRl9TRVRfRVJST1IoQVJHVU1FTlQs
IDApOwo+ICsgICAgICAgZWxzZSBpZiAoKHB0ciA9IGUtPmVfcmF3ZmlsZSkgPT0gTlVMTCAmJiBl
LT5lX2NtZCA9PSBFTEZfQ19XUklURSkKPiArICAgICAgICAgICAgICAgTElCRUxGX1NFVF9FUlJP
UihTRVFVRU5DRSwgMCk7Cj4gKwo+ICsgICAgICAgaWYgKHN6KQo+ICsgICAgICAgICAgICAgICAq
c3ogPSBzaXplOwo+ICsKPiArICAgICAgIHJldHVybiAoKGNoYXIgKikgcHRyKTsKPiArfQo+IGRp
ZmYgLS1naXQgYS9lbGZfc2NuLmMgYi9lbGZfc2NuLmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+
IGluZGV4IDAwMDAwMDAuLmQzZTI3NDcKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZWxmX3Njbi5j
Cj4gQEAgLTAsMCArMSwyMzUgQEAKPiArLyotCj4gKyAqIENvcHlyaWdodCAoYykgMjAwNiwyMDA4
LTIwMTAgSm9zZXBoIEtvc2h5Cj4gKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCj4gKyAqCj4gKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAo+ICsgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKPiArICogYXJlIG1ldDoKPiArICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
PiArICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgo+ICsgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAo+ICsgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCj4gKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCj4gKyAqCj4gKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKPiArICogQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCj4gKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCj4gKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCj4gKyAqIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMCj4gKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCj4gKyAqIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQo+
ICsgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVAo+ICsgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCj4gKyAqIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YKPiArICogU1VDSCBEQU1BR0UuCj4gKyAqLwo+ICsKPiArI2luY2x1ZGUgPHN5cy9x
dWV1ZS5oPgo+ICsKPiArI2luY2x1ZGUgPGFzc2VydC5oPgo+ICsjaW5jbHVkZSA8ZXJybm8uaD4K
PiArI2luY2x1ZGUgPGdlbGYuaD4KPiArI2luY2x1ZGUgPGxpYmVsZi5oPgo+ICsjaW5jbHVkZSA8
c3RkZGVmLmg+Cj4gKyNpbmNsdWRlIDxzdGRpbnQuaD4KPiArI2luY2x1ZGUgPHN0ZGxpYi5oPgo+
ICsKPiArI2luY2x1ZGUgIl9saWJlbGYuaCIKPiArCj4gK0VMRlRDX1ZDU0lEKCIkSWQ6IGVsZl9z
Y24uYyAzMTc3IDIwMTUtMDMtMzAgMTg6MTk6NDFaIGVtYXN0ZSAkIik7Cj4gKwo+ICsvKgo+ICsg
KiBMb2FkIGFuIEVMRiBzZWN0aW9uIHRhYmxlIGFuZCBjcmVhdGUgYSBsaXN0IG9mIEVsZl9TY24g
c3RydWN0dXJlcy4KPiArICovCj4gK2ludAo+ICtfbGliZWxmX2xvYWRfc2VjdGlvbl9oZWFkZXJz
KEVsZiAqZSwgdm9pZCAqZWhkcikKPiArewo+ICsgICAgICAgRWxmX1NjbiAqc2NuOwo+ICsgICAg
ICAgdWludDY0X3Qgc2hvZmY7Cj4gKyAgICAgICBFbGYzMl9FaGRyICplaDMyOwo+ICsgICAgICAg
RWxmNjRfRWhkciAqZWg2NDsKPiArICAgICAgIGludCBlYywgc3dhcGJ5dGVzOwo+ICsgICAgICAg
dW5zaWduZWQgY2hhciAqc3JjOwo+ICsgICAgICAgc2l6ZV90IGZzeiwgaSwgc2hudW07Cj4gKyAg
ICAgICBpbnQgKCp4bGF0b3IpKHVuc2lnbmVkIGNoYXIgKl9kLCBzaXplX3QgX2RzeiwgdW5zaWdu
ZWQgY2hhciAqX3MsCj4gKyAgICAgICAgICAgc2l6ZV90IF9jLCBpbnQgX3N3YXApOwo+ICsKPiAr
ICAgICAgIGFzc2VydChlICE9IE5VTEwpOwo+ICsgICAgICAgYXNzZXJ0KGVoZHIgIT0gTlVMTCk7
Cj4gKyAgICAgICBhc3NlcnQoKGUtPmVfZmxhZ3MgJiBMSUJFTEZfRl9TSERSU19MT0FERUQpID09
IDApOwo+ICsKPiArI2RlZmluZSAgICAgICAgQ0hFQ0tfRUhEUihFLEVIKSAgICAgICAgZG8geyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAgICAgICAgIGlmIChzaG9mZiA+
IGUtPmVfcmF3c2l6ZSB8fCAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICAgICAgICAg
ICAgIGZzeiAhPSAoRUgpLT5lX3NoZW50c2l6ZSB8fCAgICAgICAgICAgICAgICAgXAo+ICsgICAg
ICAgICAgICAgICAgICAgc2hudW0gPiBTSVpFX01BWCAvIGZzeiB8fCAgICAgICAgICAgICAgICAg
ICBcCj4gKyAgICAgICAgICAgICAgICAgICBmc3ogKiBzaG51bSA+IGUtPmVfcmF3c2l6ZSAtIHNo
b2ZmKSB7ICAgICAgIFwKPiArICAgICAgICAgICAgICAgICAgICAgICBMSUJFTEZfU0VUX0VSUk9S
KEhFQURFUiwgMCk7ICAgICAgICAgICAgXAo+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biAoMCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAgICAgICAgIH0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAg
IH0gd2hpbGUgKDApCj4gKwo+ICsgICAgICAgZWMgPSBlLT5lX2NsYXNzOwo+ICsgICAgICAgZnN6
ID0gX2xpYmVsZl9mc2l6ZShFTEZfVF9TSERSLCBlYywgZS0+ZV92ZXJzaW9uLCAoc2l6ZV90KSAx
KTsKPiArICAgICAgIGFzc2VydChmc3ogPiAwKTsKPiArCj4gKyAgICAgICBzaG51bSA9IGUtPmVf
dS5lX2VsZi5lX25zY247Cj4gKwo+ICsgICAgICAgaWYgKGVjID09IEVMRkNMQVNTMzIpIHsKPiAr
ICAgICAgICAgICAgICAgZWgzMiA9IChFbGYzMl9FaGRyICopIGVoZHI7Cj4gKyAgICAgICAgICAg
ICAgIHNob2ZmID0gKHVpbnQ2NF90KSBlaDMyLT5lX3Nob2ZmOwo+ICsgICAgICAgICAgICAgICBD
SEVDS19FSERSKGUsIGVoMzIpOwo+ICsgICAgICAgfSBlbHNlIHsKPiArICAgICAgICAgICAgICAg
ZWg2NCA9IChFbGY2NF9FaGRyICopIGVoZHI7Cj4gKyAgICAgICAgICAgICAgIHNob2ZmID0gZWg2
NC0+ZV9zaG9mZjsKPiArICAgICAgICAgICAgICAgQ0hFQ0tfRUhEUihlLCBlaDY0KTsKPiArICAg
ICAgIH0KPiArCj4gKyAgICAgICB4bGF0b3IgPSBfbGliZWxmX2dldF90cmFuc2xhdG9yKEVMRl9U
X1NIRFIsIEVMRl9UT01FTU9SWSwgZWMpOwo+ICsKPiArICAgICAgIHN3YXBieXRlcyA9IGUtPmVf
Ynl0ZW9yZGVyICE9IExJQkVMRl9QUklWQVRFKGJ5dGVvcmRlcik7Cj4gKyAgICAgICBzcmMgPSBl
LT5lX3Jhd2ZpbGUgKyBzaG9mZjsKPiArCj4gKyAgICAgICAvKgo+ICsgICAgICAgICogSWYgdGhl
IGZpbGUgaXMgdXNpbmcgZXh0ZW5kZWQgbnVtYmVyaW5nIHRoZW4gc2VjdGlvbiAjMAo+ICsgICAg
ICAgICogd291bGQgaGF2ZSBhbHJlYWR5IGJlZW4gcmVhZCBpbi4KPiArICAgICAgICAqLwo+ICsK
PiArICAgICAgIGkgPSAwOwo+ICsgICAgICAgaWYgKCFTVEFJTFFfRU1QVFkoJmUtPmVfdS5lX2Vs
Zi5lX3NjbikpIHsKPiArICAgICAgICAgICAgICAgYXNzZXJ0KFNUQUlMUV9GSVJTVCgmZS0+ZV91
LmVfZWxmLmVfc2NuKSA9PQo+ICsgICAgICAgICAgICAgICAgICAgU1RBSUxRX0xBU1QoJmUtPmVf
dS5lX2VsZi5lX3NjbiwgX0VsZl9TY24sIHNfbmV4dCkpOwo+ICsKPiArICAgICAgICAgICAgICAg
aSA9IDE7Cj4gKyAgICAgICAgICAgICAgIHNyYyArPSBmc3o7Cj4gKyAgICAgICB9Cj4gKwo+ICsg
ICAgICAgZm9yICg7IGkgPCBzaG51bTsgaSsrLCBzcmMgKz0gZnN6KSB7Cj4gKyAgICAgICAgICAg
ICAgIGlmICgoc2NuID0gX2xpYmVsZl9hbGxvY2F0ZV9zY24oZSwgaSkpID09IE5VTEwpCj4gKyAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgwKTsKPiArCj4gKyAgICAgICAgICAgICAgICgq
eGxhdG9yKSgodW5zaWduZWQgY2hhciAqKSAmc2NuLT5zX3NoZHIsIHNpemVvZihzY24tPnNfc2hk
ciksCj4gKyAgICAgICAgICAgICAgICAgICBzcmMsIChzaXplX3QpIDEsIHN3YXBieXRlcyk7Cj4g
Kwo+ICsgICAgICAgICAgICAgICBpZiAoZWMgPT0gRUxGQ0xBU1MzMikgewo+ICsgICAgICAgICAg
ICAgICAgICAgICAgIHNjbi0+c19vZmZzZXQgPSBzY24tPnNfcmF3b2ZmID0KPiArICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2NuLT5zX3NoZHIuc19zaGRyMzIuc2hfb2Zmc2V0Owo+ICsgICAg
ICAgICAgICAgICAgICAgICAgIHNjbi0+c19zaXplID0gc2NuLT5zX3NoZHIuc19zaGRyMzIuc2hf
c2l6ZTsKPiArICAgICAgICAgICAgICAgfSBlbHNlIHsKPiArICAgICAgICAgICAgICAgICAgICAg
ICBzY24tPnNfb2Zmc2V0ID0gc2NuLT5zX3Jhd29mZiA9Cj4gKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNjbi0+c19zaGRyLnNfc2hkcjY0LnNoX29mZnNldDsKPiArICAgICAgICAgICAgICAg
ICAgICAgICBzY24tPnNfc2l6ZSA9IHNjbi0+c19zaGRyLnNfc2hkcjY0LnNoX3NpemU7Cj4gKyAg
ICAgICAgICAgICAgIH0KPiArICAgICAgIH0KPiArCj4gKyAgICAgICBlLT5lX2ZsYWdzIHw9IExJ
QkVMRl9GX1NIRFJTX0xPQURFRDsKPiArCj4gKyAgICAgICByZXR1cm4gKDEpOwo+ICt9Cj4gKwo+
ICsKPiArRWxmX1NjbiAqCj4gK2VsZl9nZXRzY24oRWxmICplLCBzaXplX3QgaW5kZXgpCj4gK3sK
PiArICAgICAgIGludCBlYzsKPiArICAgICAgIHZvaWQgKmVoZHI7Cj4gKyAgICAgICBFbGZfU2Nu
ICpzOwo+ICsKPiArICAgICAgIGlmIChlID09IE5VTEwgfHwgZS0+ZV9raW5kICE9IEVMRl9LX0VM
RiB8fAo+ICsgICAgICAgICAgICgoZWMgPSBlLT5lX2NsYXNzKSAhPSBFTEZDTEFTUzMyICYmIGVj
ICE9IEVMRkNMQVNTNjQpKSB7Cj4gKyAgICAgICAgICAgICAgIExJQkVMRl9TRVRfRVJST1IoQVJH
VU1FTlQsIDApOwo+ICsgICAgICAgICAgICAgICByZXR1cm4gKE5VTEwpOwo+ICsgICAgICAgfQo+
ICsKPiArICAgICAgIGlmICgoZWhkciA9IF9saWJlbGZfZWhkcihlLCBlYywgMCkpID09IE5VTEwp
Cj4gKyAgICAgICAgICAgICAgIHJldHVybiAoTlVMTCk7Cj4gKwo+ICsgICAgICAgaWYgKGUtPmVf
Y21kICE9IEVMRl9DX1dSSVRFICYmCj4gKyAgICAgICAgICAgKGUtPmVfZmxhZ3MgJiBMSUJFTEZf
Rl9TSERSU19MT0FERUQpID09IDAgJiYKPiArICAgICAgICAgICBfbGliZWxmX2xvYWRfc2VjdGlv
bl9oZWFkZXJzKGUsIGVoZHIpID09IDApCj4gKyAgICAgICAgICAgICAgIHJldHVybiAoTlVMTCk7
Cj4gKwo+ICsgICAgICAgU1RBSUxRX0ZPUkVBQ0gocywgJmUtPmVfdS5lX2VsZi5lX3Njbiwgc19u
ZXh0KQo+ICsgICAgICAgICAgICAgICBpZiAocy0+c19uZHggPT0gaW5kZXgpCj4gKyAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIChzKTsKPiArCj4gKyAgICAgICBMSUJFTEZfU0VUX0VSUk9S
KEFSR1VNRU5ULCAwKTsKPiArICAgICAgIHJldHVybiAoTlVMTCk7Cj4gK30KPiArCj4gK3NpemVf
dAo+ICtlbGZfbmR4c2NuKEVsZl9TY24gKnMpCj4gK3sKPiArICAgICAgIGlmIChzID09IE5VTEwp
IHsKPiArICAgICAgICAgICAgICAgTElCRUxGX1NFVF9FUlJPUihBUkdVTUVOVCwgMCk7Cj4gKyAg
ICAgICAgICAgICAgIHJldHVybiAoU0hOX1VOREVGKTsKPiArICAgICAgIH0KPiArICAgICAgIHJl
dHVybiAocy0+c19uZHgpOwo+ICt9Cj4gKwo+ICtFbGZfU2NuICoKPiArZWxmX25ld3NjbihFbGYg
KmUpCj4gK3sKPiArICAgICAgIGludCBlYzsKPiArICAgICAgIHZvaWQgKmVoZHI7Cj4gKyAgICAg
ICBFbGZfU2NuICpzY247Cj4gKwo+ICsgICAgICAgaWYgKGUgPT0gTlVMTCB8fCBlLT5lX2tpbmQg
IT0gRUxGX0tfRUxGKSB7Cj4gKyAgICAgICAgICAgICAgIExJQkVMRl9TRVRfRVJST1IoQVJHVU1F
TlQsIDApOwo+ICsgICAgICAgICAgICAgICByZXR1cm4gKE5VTEwpOwo+ICsgICAgICAgfQo+ICsK
PiArICAgICAgIGlmICgoZWMgPSBlLT5lX2NsYXNzKSAhPSBFTEZDTEFTUzMyICYmIGVjICE9IEVM
RkNMQVNTNjQpIHsKPiArICAgICAgICAgICAgICAgTElCRUxGX1NFVF9FUlJPUihDTEFTUywgMCk7
Cj4gKyAgICAgICAgICAgICAgIHJldHVybiAoTlVMTCk7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAg
ICAgaWYgKChlaGRyID0gX2xpYmVsZl9laGRyKGUsIGVjLCAwKSkgPT0gTlVMTCkKPiArICAgICAg
ICAgICAgICAgcmV0dXJuIChOVUxMKTsKPiArCj4gKyAgICAgICAvKgo+ICsgICAgICAgICogVGhl
IGFwcGxpY2F0aW9uIG1heSBiZSBhc2tpbmcgZm9yIGEgbmV3IHNlY3Rpb24gZGVzY3JpcHRvcgo+
ICsgICAgICAgICogb24gYW4gRUxGIG9iamVjdCBvcGVuZWQgd2l0aCBFTEZfQ19SRFdSIG9yIEVM
Rl9DX1JFQUQuICBXZQo+ICsgICAgICAgICogbmVlZCB0byBicmluZyBpbiB0aGUgZXhpc3Rpbmcg
c2VjdGlvbiBpbmZvcm1hdGlvbiBiZWZvcmUKPiArICAgICAgICAqIGFwcGVuZGluZyBhIG5ldyBv
bmUgdG8gdGhlIGxpc3QuCj4gKyAgICAgICAgKgo+ICsgICAgICAgICogUGVyIHRoZSBFTEYoMykg
QVBJLCBhbiBhcHBsaWNhdGlvbiBpcyBhbGxvd2VkIHRvIG9wZW4gYQo+ICsgICAgICAgICogZmls
ZSB1c2luZyBFTEZfQ19SRUFELCBtZXNzIHdpdGggaXRzIGludGVybmFsIHN0cnVjdHVyZSBhbmQK
PiArICAgICAgICAqIHVzZSBlbGZfdXBkYXRlKC4uLixFTEZfQ19OVUxMKSB0byBjb21wdXRlIGl0
cyBuZXcgbGF5b3V0Lgo+ICsgICAgICAgICovCj4gKyAgICAgICBpZiAoZS0+ZV9jbWQgIT0gRUxG
X0NfV1JJVEUgJiYKPiArICAgICAgICAgICAoZS0+ZV9mbGFncyAmIExJQkVMRl9GX1NIRFJTX0xP
QURFRCkgPT0gMCAmJgo+ICsgICAgICAgICAgIF9saWJlbGZfbG9hZF9zZWN0aW9uX2hlYWRlcnMo
ZSwgZWhkcikgPT0gMCkKPiArICAgICAgICAgICAgICAgcmV0dXJuIChOVUxMKTsKPiArCj4gKyAg
ICAgICBpZiAoU1RBSUxRX0VNUFRZKCZlLT5lX3UuZV9lbGYuZV9zY24pKSB7Cj4gKyAgICAgICAg
ICAgICAgIGFzc2VydChlLT5lX3UuZV9lbGYuZV9uc2NuID09IDApOwo+ICsgICAgICAgICAgICAg
ICBpZiAoKHNjbiA9IF9saWJlbGZfYWxsb2NhdGVfc2NuKGUsIChzaXplX3QpIFNITl9VTkRFRikp
ID09Cj4gKyAgICAgICAgICAgICAgICAgICBOVUxMKQo+ICsgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiAoTlVMTCk7Cj4gKyAgICAgICAgICAgICAgIGUtPmVfdS5lX2VsZi5lX25zY24rKzsK
PiArICAgICAgIH0KPiArCj4gKyAgICAgICBhc3NlcnQoZS0+ZV91LmVfZWxmLmVfbnNjbiA+IDAp
Owo+ICsKPiArICAgICAgIGlmICgoc2NuID0gX2xpYmVsZl9hbGxvY2F0ZV9zY24oZSwgZS0+ZV91
LmVfZWxmLmVfbnNjbikpID09IE5VTEwpCj4gKyAgICAgICAgICAgICAgIHJldHVybiAoTlVMTCk7
Cj4gKwo+ICsgICAgICAgZS0+ZV91LmVfZWxmLmVfbnNjbisrOwo+ICsKPiArICAgICAgICh2b2lk
KSBlbGZfZmxhZ3NjbihzY24sIEVMRl9DX1NFVCwgRUxGX0ZfRElSVFkpOwo+ICsKPiArICAgICAg
IHJldHVybiAoc2NuKTsKPiArfQo+ICsKPiArRWxmX1NjbiAqCj4gK2VsZl9uZXh0c2NuKEVsZiAq
ZSwgRWxmX1NjbiAqcykKPiArewo+ICsgICAgICAgaWYgKGUgPT0gTlVMTCB8fCAoZS0+ZV9raW5k
ICE9IEVMRl9LX0VMRikgfHwKPiArICAgICAgICAgICAocyAmJiBzLT5zX2VsZiAhPSBlKSkgewo+
ICsgICAgICAgICAgICAgICBMSUJFTEZfU0VUX0VSUk9SKEFSR1VNRU5ULCAwKTsKPiArICAgICAg
ICAgICAgICAgcmV0dXJuIChOVUxMKTsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICByZXR1cm4g
KHMgPT0gTlVMTCA/IGVsZl9nZXRzY24oZSwgKHNpemVfdCkgMSkgOgo+ICsgICAgICAgICAgIFNU
QUlMUV9ORVhUKHMsIHNfbmV4dCkpOwo+ICt9Cj4gZGlmZiAtLWdpdCBhL2VsZl9zaG51bS5jIGIv
ZWxmX3NobnVtLmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLjVjMDU2
MGYKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZWxmX3NobnVtLmMKPiBAQCAtMCwwICsxLDY1IEBA
Cj4gKy8qLQo+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMDYsMjAwOCBKb3NlcGggS29zaHkKPiArICog
QWxsIHJpZ2h0cyByZXNlcnZlZC4KPiArICoKPiArICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cj4gKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwo+ICsgKiBhcmUgbWV0Ogo+ICsgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAo+ICsgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCj4gKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Cj4gKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKPiArICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KPiArICoKPiAr
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRP
UlMgYGBBUyBJUycnIEFORAo+ICsgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKPiArICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UKPiArICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKPiArICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKPiArICogREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMKPiArICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCj4gKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCj4g
KyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkKPiArICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgo+ICsgKiBTVUNIIERBTUFH
RS4KPiArICovCj4gKwo+ICsjaW5jbHVkZSA8YXIuaD4KPiArI2luY2x1ZGUgPGxpYmVsZi5oPgo+
ICsKPiArI2luY2x1ZGUgIl9saWJlbGYuaCIKPiArCj4gK0VMRlRDX1ZDU0lEKCIkSWQ6IGVsZl9z
aG51bS5jIDMxNzQgMjAxNS0wMy0yNyAxNzoxMzo0MVogZW1hc3RlICQiKTsKPiArCj4gK3N0YXRp
YyBpbnQKPiArX2xpYmVsZl9nZXRzaGRybnVtKEVsZiAqZSwgc2l6ZV90ICpzaG51bSkKPiArewo+
ICsgICAgICAgdm9pZCAqZWg7Cj4gKyAgICAgICBpbnQgZWM7Cj4gKwo+ICsgICAgICAgaWYgKGUg
PT0gTlVMTCB8fCBlLT5lX2tpbmQgIT0gRUxGX0tfRUxGIHx8Cj4gKyAgICAgICAgICAgKChlYyA9
IGUtPmVfY2xhc3MpICE9IEVMRkNMQVNTMzIgJiYgZWMgIT0gRUxGQ0xBU1M2NCkpIHsKPiArICAg
ICAgICAgICAgICAgTElCRUxGX1NFVF9FUlJPUihBUkdVTUVOVCwgMCk7Cj4gKyAgICAgICAgICAg
ICAgIHJldHVybiAoLTEpOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIGlmICgoZWggPSBfbGli
ZWxmX2VoZHIoZSwgZWMsIDApKSA9PSBOVUxMKQo+ICsgICAgICAgICAgICAgICByZXR1cm4gKC0x
KTsKPiArCj4gKyAgICAgICAqc2hudW0gPSBlLT5lX3UuZV9lbGYuZV9uc2NuOwo+ICsKPiArICAg
ICAgIHJldHVybiAoMCk7Cj4gK30KPiArCj4gK2ludAo+ICtlbGZfZ2V0c2hkcm51bShFbGYgKmUs
IHNpemVfdCAqc2hudW0pCj4gK3sKPiArICAgICAgIHJldHVybiAoX2xpYmVsZl9nZXRzaGRybnVt
KGUsIHNobnVtKSk7Cj4gK30KPiArCj4gKy8qIERlcHJlY2F0ZWQgQVBJLiAqLwo+ICtpbnQKPiAr
ZWxmX2dldHNobnVtKEVsZiAqZSwgc2l6ZV90ICpzaG51bSkKPiArewo+ICsgICAgICAgcmV0dXJu
IChfbGliZWxmX2dldHNoZHJudW0oZSwgc2hudW0pID49IDApOwo+ICt9Cj4gZGlmZiAtLWdpdCBh
L2VsZl9zaHN0cm5keC5jIGIvZWxmX3Noc3RybmR4LmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+
IGluZGV4IDAwMDAwMDAuLmRhYzQwYzkKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZWxmX3Noc3Ry
bmR4LmMKPiBAQCAtMCwwICsxLDgwIEBACj4gKy8qLQo+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMDYs
MjAwOCBKb3NlcGggS29zaHkKPiArICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KPiArICoKPiArICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Cj4gKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwo+ICsgKiBhcmUgbWV0Ogo+ICsgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAo+
ICsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCj4gKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cj4gKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKPiArICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KPiArICoKPiArICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAo+ICsgKiBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKPiArICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKPiArICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKPiArICogRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwKPiArICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKPiArICogT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCj4g
KyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUCj4gKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKPiArICogT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRgo+ICsgKiBTVUNIIERBTUFHRS4KPiArICovCj4gKwo+ICsjaW5jbHVkZSA8YXIuaD4K
PiArI2luY2x1ZGUgPGxpYmVsZi5oPgo+ICsKPiArI2luY2x1ZGUgIl9saWJlbGYuaCIKPiArCj4g
K0VMRlRDX1ZDU0lEKCIkSWQ6IGVsZl9zaHN0cm5keC5jIDMxNzQgMjAxNS0wMy0yNyAxNzoxMzo0
MVogZW1hc3RlICQiKTsKPiArCj4gK3N0YXRpYyBpbnQKPiArX2xpYmVsZl9nZXRzaGRyc3RybmR4
KEVsZiAqZSwgc2l6ZV90ICpzdHJuZHgpCj4gK3sKPiArICAgICAgIHZvaWQgKmVoOwo+ICsgICAg
ICAgaW50IGVjOwo+ICsKPiArICAgICAgIGlmIChlID09IE5VTEwgfHwgZS0+ZV9raW5kICE9IEVM
Rl9LX0VMRiB8fAo+ICsgICAgICAgICAgICgoZWMgPSBlLT5lX2NsYXNzKSAhPSBFTEZDTEFTUzMy
ICYmIGVjICE9IEVMRkNMQVNTNjQpKSB7Cj4gKyAgICAgICAgICAgICAgIExJQkVMRl9TRVRfRVJS
T1IoQVJHVU1FTlQsIDApOwo+ICsgICAgICAgICAgICAgICByZXR1cm4gKC0xKTsKPiArICAgICAg
IH0KPiArCj4gKyAgICAgICBpZiAoKGVoID0gX2xpYmVsZl9laGRyKGUsIGVjLCAwKSkgPT0gTlVM
TCkKPiArICAgICAgICAgICAgICAgcmV0dXJuICgtMSk7Cj4gKwo+ICsgICAgICAgKnN0cm5keCA9
IGUtPmVfdS5lX2VsZi5lX3N0cm5keDsKPiArCj4gKyAgICAgICByZXR1cm4gKDApOwo+ICt9Cj4g
Kwo+ICtpbnQKPiArZWxmX2dldHNoZHJzdHJuZHgoRWxmICplLCBzaXplX3QgKnN0cm5keCkKPiAr
ewo+ICsgICAgICAgcmV0dXJuIChfbGliZWxmX2dldHNoZHJzdHJuZHgoZSwgc3RybmR4KSk7Cj4g
K30KPiArCj4gK2ludAo+ICtlbGZfZ2V0c2hzdHJuZHgoRWxmICplLCBzaXplX3QgKnN0cm5keCkg
ICAgICAgIC8qIERlcHJlY2F0ZWQgQVBJLiAqLwo+ICt7Cj4gKyAgICAgICByZXR1cm4gKF9saWJl
bGZfZ2V0c2hkcnN0cm5keChlLCBzdHJuZHgpID49IDApOwo+ICt9Cj4gKwo+ICtpbnQKPiArZWxm
X3NldHNoc3RybmR4KEVsZiAqZSwgc2l6ZV90IHN0cm5keCkKPiArewo+ICsgICAgICAgdm9pZCAq
ZWg7Cj4gKyAgICAgICBpbnQgZWM7Cj4gKwo+ICsgICAgICAgaWYgKGUgPT0gTlVMTCB8fCBlLT5l
X2tpbmQgIT0gRUxGX0tfRUxGIHx8Cj4gKyAgICAgICAgICAgKChlYyA9IGUtPmVfY2xhc3MpICE9
IEVMRkNMQVNTMzIgJiYgZWMgIT0gRUxGQ0xBU1M2NCkgfHwKPiArICAgICAgICAgICAoKGVoID0g
X2xpYmVsZl9laGRyKGUsIGVjLCAwKSkgPT0gTlVMTCkpIHsKPiArICAgICAgICAgICAgICAgTElC
RUxGX1NFVF9FUlJPUihBUkdVTUVOVCwgMCk7Cj4gKyAgICAgICAgICAgICAgIHJldHVybiAoMCk7
Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgcmV0dXJuIChfbGliZWxmX3NldHNoc3RybmR4KGUs
IGVoLCBlYywgc3RybmR4KSk7Cj4gK30KPiBkaWZmIC0tZ2l0IGEvZWxmX3N0cnB0ci5jIGIvZWxm
X3N0cnB0ci5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi5lMmE2YjI4
Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2VsZl9zdHJwdHIuYwo+IEBAIC0wLDAgKzEsMTMyIEBA
Cj4gKy8qLQo+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMDYsMjAwOCBKb3NlcGggS29zaHkKPiArICog
QWxsIHJpZ2h0cyByZXNlcnZlZC4KPiArICoKPiArICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cj4gKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwo+ICsgKiBhcmUgbWV0Ogo+ICsgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAo+ICsgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCj4gKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Cj4gKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKPiArICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KPiArICoKPiAr
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRP
UlMgYGBBUyBJUycnIEFORAo+ICsgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKPiArICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UKPiArICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKPiArICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKPiArICogREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMKPiArICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCj4gKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCj4g
KyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkKPiArICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgo+ICsgKiBTVUNIIERBTUFH
RS4KPiArICovCj4gKwo+ICsjaW5jbHVkZSA8c3lzL3BhcmFtLmg+Cj4gKwo+ICsjaW5jbHVkZSA8
YXNzZXJ0Lmg+Cj4gKyNpbmNsdWRlIDxnZWxmLmg+Cj4gKwo+ICsjaW5jbHVkZSAiX2xpYmVsZi5o
Igo+ICsKPiArRUxGVENfVkNTSUQoIiRJZDogZWxmX3N0cnB0ci5jIDI5OTAgMjAxNC0wMy0xNyAw
OTo1Njo1OFogamtvc2h5ICQiKTsKPiArCj4gKy8qCj4gKyAqIENvbnZlcnQgYW4gRUxGIHNlY3Rp
b24jLG9mZnNldCBwYWlyIHRvIGEgc3RyaW5nIHBvaW50ZXIuCj4gKyAqLwo+ICsKPiArY2hhciAq
Cj4gK2VsZl9zdHJwdHIoRWxmICplLCBzaXplX3Qgc2NuZHgsIHNpemVfdCBvZmZzZXQpCj4gK3sK
PiArICAgICAgIEVsZl9TY24gKnM7Cj4gKyAgICAgICBFbGZfRGF0YSAqZDsKPiArICAgICAgIEdF
bGZfU2hkciBzaGRyOwo+ICsgICAgICAgdWludDY0X3QgYWxpZ25tZW50LCBjb3VudDsKPiArCj4g
KyAgICAgICBpZiAoZSA9PSBOVUxMIHx8IGUtPmVfa2luZCAhPSBFTEZfS19FTEYpIHsKPiArICAg
ICAgICAgICAgICAgTElCRUxGX1NFVF9FUlJPUihBUkdVTUVOVCwgMCk7Cj4gKyAgICAgICAgICAg
ICAgIHJldHVybiAoTlVMTCk7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgaWYgKChzID0gZWxm
X2dldHNjbihlLCBzY25keCkpID09IE5VTEwgfHwKPiArICAgICAgICAgICBnZWxmX2dldHNoZHIo
cywgJnNoZHIpID09IE5VTEwpCj4gKyAgICAgICAgICAgICAgIHJldHVybiAoTlVMTCk7Cj4gKwo+
ICsgICAgICAgaWYgKHNoZHIuc2hfdHlwZSAhPSBTSFRfU1RSVEFCIHx8Cj4gKyAgICAgICAgICAg
b2Zmc2V0ID49IHNoZHIuc2hfc2l6ZSkgewo+ICsgICAgICAgICAgICAgICBMSUJFTEZfU0VUX0VS
Uk9SKEFSR1VNRU5ULCAwKTsKPiArICAgICAgICAgICAgICAgcmV0dXJuIChOVUxMKTsKPiArICAg
ICAgIH0KPiArCj4gKyAgICAgICBkID0gTlVMTDsKPiArICAgICAgIGlmIChlLT5lX2ZsYWdzICYg
RUxGX0ZfTEFZT1VUKSB7Cj4gKwo+ICsgICAgICAgICAgICAgICAvKgo+ICsgICAgICAgICAgICAg
ICAgKiBUaGUgYXBwbGljYXRpb24gaXMgdGFraW5nIHJlc3BvbnNpYmlsaXR5IGZvciB0aGUKPiAr
ICAgICAgICAgICAgICAgICogRUxGIG9iamVjdCdzIGxheW91dCwgc28gd2UgY2FuIGRpcmVjdGx5
IHRyYW5zbGF0ZQo+ICsgICAgICAgICAgICAgICAgKiBhbiBvZmZzZXQgdG8gYSBgY2hhciAqJyBh
ZGRyZXNzIHVzaW5nIHRoZSBgZF9vZmYnCj4gKyAgICAgICAgICAgICAgICAqIG1lbWJlcnMgb2Yg
RWxmX0RhdGEgZGVzY3JpcHRvcnMuCj4gKyAgICAgICAgICAgICAgICAqLwo+ICsgICAgICAgICAg
ICAgICB3aGlsZSAoKGQgPSBlbGZfZ2V0ZGF0YShzLCBkKSkgIT0gTlVMTCkgewo+ICsKPiArICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoZC0+ZF9idWYgPT0gMCB8fCBkLT5kX3NpemUgPT0gMCkK
PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwo+ICsKPiArICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoZC0+ZF90eXBlICE9IEVMRl9UX0JZVEUpIHsKPiArICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIExJQkVMRl9TRVRfRVJST1IoREFUQSwgMCk7Cj4gKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKE5VTEwpOwo+ICsgICAgICAgICAg
ICAgICAgICAgICAgIH0KPiArCj4gKyAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9mZnNldCA+
PSBkLT5kX29mZiAmJgo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgPCBkLT5k
X29mZiArIGQtPmRfc2l6ZSkKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biAoKGNoYXIgKikgZC0+ZF9idWYgKyBvZmZzZXQgLSBkLT5kX29mZik7Cj4gKyAgICAgICAgICAg
ICAgIH0KPiArICAgICAgIH0gZWxzZSB7Cj4gKyAgICAgICAgICAgICAgIC8qCj4gKyAgICAgICAg
ICAgICAgICAqIE90aGVyd2lzZSwgdGhlIGBkX29mZicgbWVtYmVycyBhcmUgbm90IHVzZWFibGUg
YW5kCj4gKyAgICAgICAgICAgICAgICAqIHdlIG5lZWQgdG8gY29tcHV0ZSBvZmZzZXRzIG91cnNl
bHZlcywgdGFraW5nIGludG8KPiArICAgICAgICAgICAgICAgICogYWNjb3VudCAnaG9sZXMnIGlu
IGNvdmVyYWdlIG9mIHRoZSBzZWN0aW9uIGludHJvZHVjZWQKPiArICAgICAgICAgICAgICAgICog
YnkgYWxpZ25tZW50IHJlcXVpcmVtZW50cy4KPiArICAgICAgICAgICAgICAgICovCj4gKyAgICAg
ICAgICAgICAgIGNvdW50ID0gKHVpbnQ2NF90KSAwOyAgIC8qIGN1bXVsYXRpdmUgY291bnQgb2Yg
Ynl0ZXMgc2VlbiAqLwo+ICsgICAgICAgICAgICAgICB3aGlsZSAoKGQgPSBlbGZfZ2V0ZGF0YShz
LCBkKSkgIT0gTlVMTCAmJiBjb3VudCA8PSBvZmZzZXQpIHsKPiArCj4gKyAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKGQtPmRfYnVmID09IE5VTEwgfHwgZC0+ZF9zaXplID09IDApCj4gKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKPiArCj4gKyAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKGQtPmRfdHlwZSAhPSBFTEZfVF9CWVRFKSB7Cj4gKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBMSUJFTEZfU0VUX0VSUk9SKERBVEEsIDApOwo+ICsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChOVUxMKTsKPiArICAgICAgICAgICAgICAgICAg
ICAgICB9Cj4gKwo+ICsgICAgICAgICAgICAgICAgICAgICAgIGlmICgoYWxpZ25tZW50ID0gZC0+
ZF9hbGlnbikgPiAxKSB7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGFs
aWdubWVudCAmIChhbGlnbm1lbnQgLSAxKSkgIT0gMCkgewo+ICsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBMSUJFTEZfU0VUX0VSUk9SKERBVEEsIDApOwo+ICsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKE5VTEwpOwo+ICsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY291bnQgPSByb3VuZHVwMihjb3VudCwgYWxpZ25tZW50KTsKPiArICAgICAgICAgICAgICAg
ICAgICAgICB9Cj4gKwo+ICsgICAgICAgICAgICAgICAgICAgICAgIGlmIChvZmZzZXQgPCBjb3Vu
dCkgewo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogb2Zmc2V0IHN0YXJ0cyBp
biB0aGUgJ2hvbGUnICovCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMSUJFTEZf
U0VUX0VSUk9SKEFSR1VNRU5ULCAwKTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiAoTlVMTCk7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgfQo+ICsKPiArICAgICAg
ICAgICAgICAgICAgICAgICBpZiAob2Zmc2V0IDwgY291bnQgKyBkLT5kX3NpemUpIHsKPiArICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkLT5kX2J1ZiAhPSBOVUxMKQo+ICsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKChjaGFyICopIGQtPmRf
YnVmICsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNl
dCAtIGNvdW50KTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExJQkVMRl9TRVRf
RVJST1IoREFUQSwgMCk7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
KE5VTEwpOwo+ICsgICAgICAgICAgICAgICAgICAgICAgIH0KPiArCj4gKyAgICAgICAgICAgICAg
ICAgICAgICAgY291bnQgKz0gZC0+ZF9zaXplOwo+ICsgICAgICAgICAgICAgICB9Cj4gKyAgICAg
ICB9Cj4gKwo+ICsgICAgICAgTElCRUxGX1NFVF9FUlJPUihBUkdVTUVOVCwgMCk7Cj4gKyAgICAg
ICByZXR1cm4gKE5VTEwpOwo+ICt9Cj4gZGlmZiAtLWdpdCBhL2VsZl90eXBlcy5tNCBiL2VsZl90
eXBlcy5tNAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uOWU5NjgwZAo+
IC0tLSAvZGV2L251bGwKPiArKysgYi9lbGZfdHlwZXMubTQKPiBAQCAtMCwwICsxLDMwOSBAQAo+
ICsvKi0KPiArICogQ29weXJpZ2h0IChjKSAyMDA2LDIwMDggSm9zZXBoIEtvc2h5Cj4gKyAqIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCj4gKyAqCj4gKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAo+ICsgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
PiArICogYXJlIG1ldDoKPiArICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKPiArICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgo+ICsgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAo+ICsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCj4gKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCj4gKyAqCj4gKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJyBBTkQKPiArICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCj4gKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
Cj4gKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFCj4gKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCj4gKyAqIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTCj4gKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQo+ICsgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAo+ICsg
KiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZCj4gKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKPiArICogU1VDSCBEQU1BR0Uu
Cj4gKyAqCj4gKyAqICRJZDogZWxmX3R5cGVzLm00IDMyMSAyMDA5LTAzLTA3IDE2OjU5OjE0WiBq
a29zaHkgJAo+ICsgKi8KPiArCj4gKy8qCj4gKyAqIEVMRiB0eXBlcywgZGVmaW5lZCBpbiB0aGUg
ImVudW0gRWxmX1R5cGUiIEFQSS4KPiArICoKPiArICogVGhlIG1lbWJlcnMgb2YgdGhlIGxpc3Qg
Zm9ybSBhIDItdHVwbGU6IChuYW1lLCBDLXR5cGUtc3VmZml4KS4KPiArICogKyBgbmFtZScgaXMg
YW4gRWxmX1R5cGUgc3ltYm9sIHdpdGhvdXQgdGhlIGBFTEZfVF8nIHByZWZpeC4KPiArICogKyBg
Qy10eXBlLXN1ZmZpeCcgaXMgdGhlIHN1ZmZpeCBmb3IgRWxmMzJfIGFuZCBFbGY2NF8gdHlwZSBu
YW1lcy4KPiArICovCj4gKwo+ICtkZWZpbmUoYEVMRl9UWVBFX0xJU1QnLAo+ICsgICAgICAgYGBB
RERSLCAgICAgICAgIEFkZHInLAo+ICsgICAgICAgYEJZVEUsICAgICAgICAgIEJ5dGUnLAo+ICsg
ICAgICAgYENBUCwgICAgICAgICAgIENhcCcsCj4gKyAgICAgICBgRFlOLCAgICAgICAgICAgRHlu
JywKPiArICAgICAgIGBFSERSLCAgICAgICAgICBFaGRyJywKPiArICAgICAgIGBHTlVIQVNILCAg
ICAgICAtJywKPiArICAgICAgIGBIQUxGLCAgICAgICAgICBIYWxmJywKPiArICAgICAgIGBMV09S
RCwgICAgICAgICBMd29yZCcsCj4gKyAgICAgICBgTU9WRSwgICAgICAgICAgTW92ZScsCj4gKyAg
ICAgICBgTU9WRVAsICAgICAgICAgTW92ZVAnLAo+ICsgICAgICAgYE5PVEUsICAgICAgICAgIE5v
dGUnLAo+ICsgICAgICAgYE9GRiwgICAgICAgICAgIE9mZicsCj4gKyAgICAgICBgUEhEUiwgICAg
ICAgICAgUGhkcicsCj4gKyAgICAgICBgUkVMLCAgICAgICAgICAgUmVsJywKPiArICAgICAgIGBS
RUxBLCAgICAgICAgICBSZWxhJywKPiArICAgICAgIGBTSERSLCAgICAgICAgICBTaGRyJywKPiAr
ICAgICAgIGBTV09SRCwgICAgICAgICBTd29yZCcsCj4gKyAgICAgICBgU1hXT1JELCAgICAgICAg
U3h3b3JkJywKPiArICAgICAgIGBTWU1JTkZPLCAgICAgICBTeW1pbmZvJywKPiArICAgICAgIGBT
WU0sICAgICAgICAgICBTeW0nLAo+ICsgICAgICAgYFZERUYsICAgICAgICAgIFZlcmRlZicsCj4g
KyAgICAgICBgVk5FRUQsICAgICAgICAgVmVybmVlZCcsCj4gKyAgICAgICBgV09SRCwgICAgICAg
ICAgV29yZCcsCj4gKyAgICAgICBgWFdPUkQsICAgICAgICAgWHdvcmQnLAo+ICsgICAgICAgYE5V
TSwgICAgICAgICAgIF8nJykKPiArCj4gKy8qCj4gKyAqIERFRklORV9TVFJVQ1QoTkFNRSxNRU1C
RVJMSVNULi4uKQo+ICsgKgo+ICsgKiBNYXAgYSB0eXBlIG5hbWUgdG8gaXRzIG1lbWJlcnMuCj4g
KyAqCj4gKyAqIEVhY2ggbWVtYmVyLWxpc3QgZWxlbWVudCBjb21wcmlzZXMgb2YgcGFpcnMgb2Yg
KGZpZWxkIG5hbWUsIHR5cGUpLAo+ICsgKiBpbiB0aGUgc2VxdWVuY2UgdXNlZCBpbiB0aGUgZmls
ZSByZXByZXNlbnRhdGlvbiBvZiBgTkFNRScuCj4gKyAqCj4gKyAqIEVhY2ggbWVtYmVyIGxpc3Qg
ZWxlbWVudCBjb21wcmlzZXMgYSBwYWlyIGNvbnRhaW5pbmcgYSBmaWVsZCBuYW1lCj4gKyAqIGFu
ZCBhIGJhc2ljIHR5cGUuICBCYXNpYyB0eXBlcyBpbmNsdWRlIElERU5ULCBIQUxGLCBXT1JELCBM
V09SRCwKPiArICogQUREUnszMiw2NH0sIE9GRnszMiw2NH0sIFNXT1JELCBYV09SRCwgU1hXT1JE
Lgo+ICsgKgo+ICsgKiBUaGUgbGFzdCBlbGVtZW50IG9mIGEgbWVtYmVyIGxpc3QgaXMgdGhlIG51
bGwgZWxlbWVudDogYF8sXycuCj4gKyAqLwo+ICsKPiArZGVmaW5lKGBERUZJTkVfU1RSVUNUJyxg
ZGVmaW5lKGAkMV9ERUYnLHNoaWZ0KCRAKSlkbmwnKQo+ICsKPiArREVGSU5FX1NUUlVDVChgRWxm
MzJfQ2FwJywKPiArICAgICAgIGBgY190YWcsICAgICAgICBXT1JEJywKPiArICAgICAgIGBjX3Vu
LmNfdmFsLCAgICBXT1JEJywKPiArICAgICAgIGBfLF8nJykKPiArCj4gK0RFRklORV9TVFJVQ1Qo
YEVsZjY0X0NhcCcsCj4gKyAgICAgICBgYGNfdGFnLCAgICAgICAgWFdPUkQnLAo+ICsgICAgICAg
YGNfdW4uY192YWwsICAgIFhXT1JEJywKPiArICAgICAgIGBfLF8nJykKPiArCj4gK0RFRklORV9T
VFJVQ1QoYEVsZjMyX0R5bicsCj4gKyAgICAgICBgYGRfdGFnLCAgICAgICAgU1dPUkQnLAo+ICsg
ICAgICAgYGRfdW4uZF9wdHIsICAgIFdPUkQnLAo+ICsgICAgICAgYF8sXycnKQo+ICsKPiArREVG
SU5FX1NUUlVDVChgRWxmNjRfRHluJywKPiArICAgICAgIGBgZF90YWcsICAgICAgICBTWFdPUkQn
LAo+ICsgICAgICAgYGRfdW4uZF9wdHIsICAgIFhXT1JEJywKPiArICAgICAgIGBfLF8nJykKPiAr
Cj4gK0RFRklORV9TVFJVQ1QoYEVsZjMyX0VoZHInLAo+ICsgICAgICAgYGBlX2lkZW50LCAgICAg
IElERU5UJywKPiArICAgICAgIGBlX3R5cGUsICAgICAgICBIQUxGJywKPiArICAgICAgIGBlX21h
Y2hpbmUsICAgICBIQUxGJywKPiArICAgICAgIGBlX3ZlcnNpb24sICAgICBXT1JEJywKPiArICAg
ICAgIGBlX2VudHJ5LCAgICAgICBBRERSJywKPiArICAgICAgIGBlX3Bob2ZmLCAgICAgICBPRkYn
LAo+ICsgICAgICAgYGVfc2hvZmYsICAgICAgIE9GRicsCj4gKyAgICAgICBgZV9mbGFncywgICAg
ICAgV09SRCcsCj4gKyAgICAgICBgZV9laHNpemUsICAgICAgSEFMRicsCj4gKyAgICAgICBgZV9w
aGVudHNpemUsICAgSEFMRicsCj4gKyAgICAgICBgZV9waG51bSwgICAgICAgSEFMRicsCj4gKyAg
ICAgICBgZV9zaGVudHNpemUsICAgSEFMRicsCj4gKyAgICAgICBgZV9zaG51bSwgICAgICAgSEFM
RicsCj4gKyAgICAgICBgZV9zaHN0cm5keCwgICAgSEFMRicsCj4gKyAgICAgICBgXyxfJycpCj4g
Kwo+ICtERUZJTkVfU1RSVUNUKGBFbGY2NF9FaGRyJywKPiArICAgICAgIGBgZV9pZGVudCwgICAg
ICBJREVOVCcsCj4gKyAgICAgICBgZV90eXBlLCAgICAgICAgSEFMRicsCj4gKyAgICAgICBgZV9t
YWNoaW5lLCAgICAgSEFMRicsCj4gKyAgICAgICBgZV92ZXJzaW9uLCAgICAgV09SRCcsCj4gKyAg
ICAgICBgZV9lbnRyeSwgICAgICAgQUREUicsCj4gKyAgICAgICBgZV9waG9mZiwgICAgICAgT0ZG
JywKPiArICAgICAgIGBlX3Nob2ZmLCAgICAgICBPRkYnLAo+ICsgICAgICAgYGVfZmxhZ3MsICAg
ICAgIFdPUkQnLAo+ICsgICAgICAgYGVfZWhzaXplLCAgICAgIEhBTEYnLAo+ICsgICAgICAgYGVf
cGhlbnRzaXplLCAgIEhBTEYnLAo+ICsgICAgICAgYGVfcGhudW0sICAgICAgIEhBTEYnLAo+ICsg
ICAgICAgYGVfc2hlbnRzaXplLCAgIEhBTEYnLAo+ICsgICAgICAgYGVfc2hudW0sICAgICAgIEhB
TEYnLAo+ICsgICAgICAgYGVfc2hzdHJuZHgsICAgIEhBTEYnLAo+ICsgICAgICAgYF8sXycnKQo+
ICsKPiArREVGSU5FX1NUUlVDVChgRWxmMzJfTW92ZScsCj4gKyAgICAgICBgYG1fdmFsdWUsICAg
ICAgTFdPUkQnLAo+ICsgICAgICAgYG1faW5mbywgICAgICAgIFdPUkQnLAo+ICsgICAgICAgYG1f
cG9mZnNldCwgICAgIFdPUkQnLAo+ICsgICAgICAgYG1fcmVwZWF0LCAgICAgIEhBTEYnLAo+ICsg
ICAgICAgYG1fc3RyaWRlLCAgICAgIEhBTEYnLAo+ICsgICAgICAgYF8sXycnKQo+ICsKPiArREVG
SU5FX1NUUlVDVChgRWxmNjRfTW92ZScsCj4gKyAgICAgICBgYG1fdmFsdWUsICAgICAgTFdPUkQn
LAo+ICsgICAgICAgYG1faW5mbywgICAgICAgIFhXT1JEJywKPiArICAgICAgIGBtX3BvZmZzZXQs
ICAgICBYV09SRCcsCj4gKyAgICAgICBgbV9yZXBlYXQsICAgICAgSEFMRicsCj4gKyAgICAgICBg
bV9zdHJpZGUsICAgICAgSEFMRicsCj4gKyAgICAgICBgXyxfJycpCj4gKwo+ICtERUZJTkVfU1RS
VUNUKGBFbGYzMl9QaGRyJywKPiArICAgICAgIGBgcF90eXBlLCAgICAgICBXT1JEJywKPiArICAg
ICAgIGBwX29mZnNldCwgICAgICBPRkYnLAo+ICsgICAgICAgYHBfdmFkZHIsICAgICAgIEFERFIn
LAo+ICsgICAgICAgYHBfcGFkZHIsICAgICAgIEFERFInLAo+ICsgICAgICAgYHBfZmlsZXN6LCAg
ICAgIFdPUkQnLAo+ICsgICAgICAgYHBfbWVtc3osICAgICAgIFdPUkQnLAo+ICsgICAgICAgYHBf
ZmxhZ3MsICAgICAgIFdPUkQnLAo+ICsgICAgICAgYHBfYWxpZ24sICAgICAgIFdPUkQnLAo+ICsg
ICAgICAgYF8sXycnKQo+ICsKPiArREVGSU5FX1NUUlVDVChgRWxmNjRfUGhkcicsCj4gKyAgICAg
ICBgYHBfdHlwZSwgICAgICAgV09SRCcsCj4gKyAgICAgICBgcF9mbGFncywgICAgICAgV09SRCcs
Cj4gKyAgICAgICBgcF9vZmZzZXQsICAgICAgT0ZGJywKPiArICAgICAgIGBwX3ZhZGRyLCAgICAg
ICBBRERSJywKPiArICAgICAgIGBwX3BhZGRyLCAgICAgICBBRERSJywKPiArICAgICAgIGBwX2Zp
bGVzeiwgICAgICBYV09SRCcsCj4gKyAgICAgICBgcF9tZW1zeiwgICAgICAgWFdPUkQnLAo+ICsg
ICAgICAgYHBfYWxpZ24sICAgICAgIFhXT1JEJywKPiArICAgICAgIGBfLF8nJykKPiArCj4gK0RF
RklORV9TVFJVQ1QoYEVsZjMyX1JlbCcsCj4gKyAgICAgICBgYHJfb2Zmc2V0LCAgICAgQUREUics
Cj4gKyAgICAgICBgcl9pbmZvLCAgICAgICAgV09SRCcsCj4gKyAgICAgICBgXyxfJycpCj4gKwo+
ICtERUZJTkVfU1RSVUNUKGBFbGY2NF9SZWwnLAo+ICsgICAgICAgYGByX29mZnNldCwgICAgIEFE
RFInLAo+ICsgICAgICAgYHJfaW5mbywgICAgICAgIFhXT1JEJywKPiArICAgICAgIGBfLF8nJykK
PiArCj4gK0RFRklORV9TVFJVQ1QoYEVsZjMyX1JlbGEnLAo+ICsgICAgICAgYGByX29mZnNldCwg
ICAgIEFERFInLAo+ICsgICAgICAgYHJfaW5mbywgICAgICAgIFdPUkQnLAo+ICsgICAgICAgYHJf
YWRkZW5kLCAgICAgIFNXT1JEJywKPiArICAgICAgIGBfLF8nJykKPiArCj4gK0RFRklORV9TVFJV
Q1QoYEVsZjY0X1JlbGEnLAo+ICsgICAgICAgYGByX29mZnNldCwgICAgIEFERFInLAo+ICsgICAg
ICAgYHJfaW5mbywgICAgICAgIFhXT1JEJywKPiArICAgICAgIGByX2FkZGVuZCwgICAgICBTWFdP
UkQnLAo+ICsgICAgICAgYF8sXycnKQo+ICsKPiArREVGSU5FX1NUUlVDVChgRWxmMzJfU2hkcics
Cj4gKyAgICAgICBgYHNoX25hbWUsICAgICAgV09SRCcsCj4gKyAgICAgICBgc2hfdHlwZSwgICAg
ICAgV09SRCcsCj4gKyAgICAgICBgc2hfZmxhZ3MsICAgICAgV09SRCcsCj4gKyAgICAgICBgc2hf
YWRkciwgICAgICAgQUREUicsCj4gKyAgICAgICBgc2hfb2Zmc2V0LCAgICAgT0ZGJywKPiArICAg
ICAgIGBzaF9zaXplLCAgICAgICBXT1JEJywKPiArICAgICAgIGBzaF9saW5rLCAgICAgICBXT1JE
JywKPiArICAgICAgIGBzaF9pbmZvLCAgICAgICBXT1JEJywKPiArICAgICAgIGBzaF9hZGRyYWxp
Z24sICBXT1JEJywKPiArICAgICAgIGBzaF9lbnRzaXplLCAgICBXT1JEJywKPiArICAgICAgIGBf
LF8nJykKPiArCj4gK0RFRklORV9TVFJVQ1QoYEVsZjY0X1NoZHInLAo+ICsgICAgICAgYGBzaF9u
YW1lLCAgICAgIFdPUkQnLAo+ICsgICAgICAgYHNoX3R5cGUsICAgICAgIFdPUkQnLAo+ICsgICAg
ICAgYHNoX2ZsYWdzLCAgICAgIFhXT1JEJywKPiArICAgICAgIGBzaF9hZGRyLCAgICAgICBBRERS
JywKPiArICAgICAgIGBzaF9vZmZzZXQsICAgICBPRkYnLAo+ICsgICAgICAgYHNoX3NpemUsICAg
ICAgIFhXT1JEJywKPiArICAgICAgIGBzaF9saW5rLCAgICAgICBXT1JEJywKPiArICAgICAgIGBz
aF9pbmZvLCAgICAgICBXT1JEJywKPiArICAgICAgIGBzaF9hZGRyYWxpZ24sICBYV09SRCcsCj4g
KyAgICAgICBgc2hfZW50c2l6ZSwgICAgWFdPUkQnLAo+ICsgICAgICAgYF8sXycnKQo+ICsKPiAr
REVGSU5FX1NUUlVDVChgRWxmMzJfU3ltJywKPiArICAgICAgIGBgc3RfbmFtZSwgICAgICBXT1JE
JywKPiArICAgICAgIGBzdF92YWx1ZSwgICAgICBBRERSJywKPiArICAgICAgIGBzdF9zaXplLCAg
ICAgICBXT1JEJywKPiArICAgICAgIGBzdF9pbmZvLCAgICAgICBCWVRFJywKPiArICAgICAgIGBz
dF9vdGhlciwgICAgICBCWVRFJywKPiArICAgICAgIGBzdF9zaG5keCwgICAgICBIQUxGJywKPiAr
ICAgICAgIGBfLF8nJykKPiArCj4gK0RFRklORV9TVFJVQ1QoYEVsZjY0X1N5bScsCj4gKyAgICAg
ICBgYHN0X25hbWUsICAgICAgV09SRCcsCj4gKyAgICAgICBgc3RfaW5mbywgICAgICAgQllURScs
Cj4gKyAgICAgICBgc3Rfb3RoZXIsICAgICAgQllURScsCj4gKyAgICAgICBgc3Rfc2huZHgsICAg
ICAgSEFMRicsCj4gKyAgICAgICBgc3RfdmFsdWUsICAgICAgQUREUicsCj4gKyAgICAgICBgc3Rf
c2l6ZSwgICAgICAgWFdPUkQnLAo+ICsgICAgICAgYF8sXycnKQo+ICsKPiArREVGSU5FX1NUUlVD
VChgRWxmMzJfU3ltaW5mbycsCj4gKyAgICAgICBgYHNpX2JvdW5kdG8sICAgSEFMRicsCj4gKyAg
ICAgICBgc2lfZmxhZ3MsICAgICAgSEFMRicsCj4gKyAgICAgICBgXyxfJycpCj4gKwo+ICtERUZJ
TkVfU1RSVUNUKGBFbGY2NF9TeW1pbmZvJywKPiArICAgICAgIGBgc2lfYm91bmR0bywgICBIQUxG
JywKPiArICAgICAgIGBzaV9mbGFncywgICAgICBIQUxGJywKPiArICAgICAgIGBfLF8nJykKPiAr
Cj4gK0RFRklORV9TVFJVQ1QoYEVsZjMyX1ZlcmRhdXgnLAo+ICsgICAgICAgYGB2ZGFfbmFtZSwg
ICAgIFdPUkQnLAo+ICsgICAgICAgYHZkYV9uZXh0LCAgICAgIFdPUkQnLAo+ICsgICAgICAgYF8s
XycnKQo+ICsKPiArREVGSU5FX1NUUlVDVChgRWxmNjRfVmVyZGF1eCcsCj4gKyAgICAgICBgYHZk
YV9uYW1lLCAgICAgV09SRCcsCj4gKyAgICAgICBgdmRhX25leHQsICAgICAgV09SRCcsCj4gKyAg
ICAgICBgXyxfJycpCj4gKwo+ICtERUZJTkVfU1RSVUNUKGBFbGYzMl9WZXJkZWYnLAo+ICsgICAg
ICAgYGB2ZF92ZXJzaW9uLCAgIEhBTEYnLAo+ICsgICAgICAgYHZkX2ZsYWdzLCAgICAgIEhBTEYn
LAo+ICsgICAgICAgYHZkX25keCwgICAgICAgIEhBTEYnLAo+ICsgICAgICAgYHZkX2NudCwgICAg
ICAgIEhBTEYnLAo+ICsgICAgICAgYHZkX2hhc2gsICAgICAgIFdPUkQnLAo+ICsgICAgICAgYHZk
X2F1eCwgICAgICAgIFdPUkQnLAo+ICsgICAgICAgYHZkX25leHQsICAgICAgIFdPUkQnLAo+ICsg
ICAgICAgYF8sXycnKQo+ICsKPiArREVGSU5FX1NUUlVDVChgRWxmNjRfVmVyZGVmJywKPiArICAg
ICAgIGBgdmRfdmVyc2lvbiwgICBIQUxGJywKPiArICAgICAgIGB2ZF9mbGFncywgICAgICBIQUxG
JywKPiArICAgICAgIGB2ZF9uZHgsICAgICAgICBIQUxGJywKPiArICAgICAgIGB2ZF9jbnQsICAg
ICAgICBIQUxGJywKPiArICAgICAgIGB2ZF9oYXNoLCAgICAgICBXT1JEJywKPiArICAgICAgIGB2
ZF9hdXgsICAgICAgICBXT1JEJywKPiArICAgICAgIGB2ZF9uZXh0LCAgICAgICBXT1JEJywKPiAr
ICAgICAgIGBfLF8nJykKPiArCj4gK0RFRklORV9TVFJVQ1QoYEVsZjMyX1Zlcm5lZWQnLAo+ICsg
ICAgICAgYGB2bl92ZXJzaW9uLCAgIEhBTEYnLAo+ICsgICAgICAgYHZuX2NudCwgICAgICAgIEhB
TEYnLAo+ICsgICAgICAgYHZuX2ZpbGUsICAgICAgIFdPUkQnLAo+ICsgICAgICAgYHZuX2F1eCwg
ICAgICAgIFdPUkQnLAo+ICsgICAgICAgYHZuX25leHQsICAgICAgIFdPUkQnLAo+ICsgICAgICAg
YF8sXycnKQo+ICsKPiArREVGSU5FX1NUUlVDVChgRWxmNjRfVmVybmVlZCcsCj4gKyAgICAgICBg
YHZuX3ZlcnNpb24sICAgSEFMRicsCj4gKyAgICAgICBgdm5fY250LCAgICAgICAgSEFMRicsCj4g
KyAgICAgICBgdm5fZmlsZSwgICAgICAgV09SRCcsCj4gKyAgICAgICBgdm5fYXV4LCAgICAgICAg
V09SRCcsCj4gKyAgICAgICBgdm5fbmV4dCwgICAgICAgV09SRCcsCj4gKyAgICAgICBgXyxfJycp
Cj4gKwo+ICtERUZJTkVfU1RSVUNUKGBFbGYzMl9WZXJuYXV4JywKPiArICAgICAgIGBgdm5hX2hh
c2gsICAgICBXT1JEJywKPiArICAgICAgIGB2bmFfZmxhZ3MsICAgICBIQUxGJywKPiArICAgICAg
IGB2bmFfb3RoZXIsICAgICBIQUxGJywKPiArICAgICAgIGB2bmFfbmFtZSwgICAgICBXT1JEJywK
PiArICAgICAgIGB2bmFfbmV4dCwgICAgICBXT1JEJywKPiArICAgICAgIGBfLF8nJykKPiArCj4g
K0RFRklORV9TVFJVQ1QoYEVsZjY0X1Zlcm5hdXgnLAo+ICsgICAgICAgYGB2bmFfaGFzaCwgICAg
IFdPUkQnLAo+ICsgICAgICAgYHZuYV9mbGFncywgICAgIEhBTEYnLAo+ICsgICAgICAgYHZuYV9v
dGhlciwgICAgIEhBTEYnLAo+ICsgICAgICAgYHZuYV9uYW1lLCAgICAgIFdPUkQnLAo+ICsgICAg
ICAgYHZuYV9uZXh0LCAgICAgIFdPUkQnLAo+ICsgICAgICAgYF8sXycnKQo+IGRpZmYgLS1naXQg
YS9lbGZfdXBkYXRlLmMgYi9lbGZfdXBkYXRlLmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGlu
ZGV4IDAwMDAwMDAuLjZjYzEwOWQKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZWxmX3VwZGF0ZS5j
Cj4gQEAgLTAsMCArMSwxMjE1IEBACj4gKy8qLQo+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMDYtMjAx
MSBKb3NlcGggS29zaHkKPiArICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KPiArICoKPiArICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Cj4gKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwo+ICsgKiBhcmUgbWV0Ogo+ICsgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAo+ICsg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCj4gKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cj4gKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKPiArICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KPiArICoKPiArICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
QVVUSE9SIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAo+ICsgKiBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
PiArICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKPiArICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKPiArICogRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwKPiArICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKPiArICogT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCj4gKyAq
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUCj4gKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKPiArICogT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRgo+ICsgKiBTVUNIIERBTUFHRS4KPiArICovCj4gKwo+ICsjaW5jbHVkZSA8c3lzL3BhcmFt
Lmg+Cj4gKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgo+ICsKPiArI2luY2x1ZGUgPGFzc2VydC5oPgo+
ICsjaW5jbHVkZSA8ZXJybm8uaD4KPiArI2luY2x1ZGUgPGdlbGYuaD4KPiArI2luY2x1ZGUgPGxp
YmVsZi5oPgo+ICsjaW5jbHVkZSA8c3RkbGliLmg+Cj4gKyNpbmNsdWRlIDxzdHJpbmcuaD4KPiAr
I2luY2x1ZGUgPHVuaXN0ZC5oPgo+ICsKPiArI2luY2x1ZGUgIl9saWJlbGYuaCIKPiArCj4gKyNp
ZiAgICBFTEZUQ19IQVZFX01NQVAKPiArI2luY2x1ZGUgPHN5cy9tbWFuLmg+Cj4gKyNlbmRpZgo+
ICsKPiArRUxGVENfVkNTSUQoIiRJZDogZWxmX3VwZGF0ZS5jIDMxOTAgMjAxNS0wNS0wNCAxNToy
MzowOFogamtvc2h5ICQiKTsKPiArCj4gKy8qCj4gKyAqIExheW91dCBzdHJhdGVneToKPiArICoK
PiArICogLSBDYXNlIDE6IEVMRl9GX0xBWU9VVCBpcyBhc3NlcnRlZAo+ICsgKiAgICAgSW4gdGhp
cyBjYXNlIHRoZSBhcHBsaWNhdGlvbiBoYXMgZnVsbCBjb250cm9sIG92ZXIgd2hlcmUgdGhlCj4g
KyAqICAgICBzZWN0aW9uIGhlYWRlciB0YWJsZSwgcHJvZ3JhbSBoZWFkZXIgdGFibGUsIGFuZCBz
ZWN0aW9uIGRhdGEKPiArICogICAgIHdpbGwgcmVzaWRlLiAgIFRoZSBsaWJyYXJ5IG9ubHkgcGVy
Zm9ybSBlcnJvciBjaGVja3MuCj4gKyAqCj4gKyAqIC0gQ2FzZSAyOiBFTEZfRl9MQVlPVVQgaXMg
bm90IGFzc2VydGVkCj4gKyAqCj4gKyAqICAgICBUaGUgbGlicmFyeSB3aWxsIGRvIHRoZSBvYmpl
Y3QgbGF5b3V0IHVzaW5nIHRoZSBmb2xsb3dpbmcKPiArICogICAgIG9yZGVyaW5nOgo+ICsgKiAg
ICAgLSBUaGUgZXhlY3V0YWJsZSBoZWFkZXIgaXMgcGxhY2VkIGZpcnN0LCBhcmUgcmVxdWlyZWQg
YnkgdGhlCj4gKyAqICAgICAgICAgICAgICBFTEYgc3BlY2lmaWNhdGlvbi4KPiArICogICAgIC0g
VGhlIHByb2dyYW0gaGVhZGVyIHRhYmxlIGlzIHBsYWNlZCBpbW1lZGlhdGVseSBmb2xsb3dpbmcg
dGhlCj4gKyAqICAgICAgIGV4ZWN1dGFibGUgaGVhZGVyLgo+ICsgKiAgICAgLSBTZWN0aW9uIGRh
dGEsIGlmIGFueSwgaXMgcGxhY2VkIGFmdGVyIHRoZSBwcm9ncmFtIGhlYWRlcgo+ICsgKiAgICAg
ICB0YWJsZSwgYWxpZ25lZCBhcHByb3ByaWF0ZWx5Lgo+ICsgKiAgICAgLSBUaGUgc2VjdGlvbiBo
ZWFkZXIgdGFibGUsIGlmIG5lZWRlZCwgaXMgcGxhY2VkIGxhc3QuCj4gKyAqCj4gKyAqICAgICBU
aGVyZSBhcmUgdHdvIHN1Yi1jYXNlcyB0byBiZSB0YWtlbiBjYXJlIG9mOgo+ICsgKgo+ICsgKiAg
ICAgLSBDYXNlIDJhOiBlLT5lX2NtZCA9PSBFTEZfQ19SRUFEIG9yIEVMRl9DX1JEV1IKPiArICoK
PiArICogICAgICAgSW4gdGhpcyBzdWItY2FzZSwgdGhlIHVuZGVybHlpbmcgRUxGIG9iamVjdCBt
YXkgYWxyZWFkeSBoYXZlCj4gKyAqICAgICAgIGNvbnRlbnQgaW4gaXQsIHdoaWNoIHRoZSBhcHBs
aWNhdGlvbiBtYXkgaGF2ZSBtb2RpZmllZC4gIFRoZQo+ICsgKiAgICAgICBsaWJyYXJ5IHdpbGwg
cmV0cmlldmUgY29udGVudCBmcm9tIHRoZSBleGlzdGluZyBvYmplY3QgYXMKPiArICogICAgICAg
bmVlZGVkLgo+ICsgKgo+ICsgKiAgICAgLSBDYXNlIDJiOiBlLT5lX2NtZCA9PSBFTEZfQ19XUklU
RQo+ICsgKgo+ICsgKiAgICAgICBUaGUgRUxGIG9iamVjdCBpcyBiZWluZyBjcmVhdGVkIGFmcmVz
aCBpbiB0aGlzIHN1Yi1jYXNlOwo+ICsgKiAgICAgICB0aGVyZSBpcyBubyBwcmUtZXhpc3Rpbmcg
Y29udGVudCBpbiB0aGUgdW5kZXJseWluZyBFTEYKPiArICogICAgICAgb2JqZWN0Lgo+ICsgKi8K
PiArCj4gKy8qCj4gKyAqIFRoZSB0eXBlcyBvZiBleHRlbnRzIGluIGFuIEVMRiBvYmplY3QuCj4g
KyAqLwo+ICtlbnVtIGVsZl9leHRlbnQgewo+ICsgICAgICAgRUxGX0VYVEVOVF9FSERSLAo+ICsg
ICAgICAgRUxGX0VYVEVOVF9QSERSLAo+ICsgICAgICAgRUxGX0VYVEVOVF9TRUNUSU9OLAo+ICsg
ICAgICAgRUxGX0VYVEVOVF9TSERSCj4gK307Cj4gKwo+ICsvKgo+ICsgKiBBIGV4dGVudCBkZXNj
cmlwdG9yLCB1c2VkIHdoZW4gbGF5aW5nIG91dCBhbiBFTEYgb2JqZWN0Lgo+ICsgKi8KPiArc3Ry
dWN0IF9FbGZfRXh0ZW50IHsKPiArICAgICAgIFNMSVNUX0VOVFJZKF9FbGZfRXh0ZW50KSBleF9u
ZXh0Owo+ICsgICAgICAgdWludDY0X3QgICAgICAgIGV4X3N0YXJ0OyAvKiBTdGFydCBvZiB0aGUg
cmVnaW9uLiAqLwo+ICsgICAgICAgdWludDY0X3QgICAgICAgIGV4X3NpemU7ICAvKiBUaGUgc2l6
ZSBvZiB0aGUgcmVnaW9uLiAqLwo+ICsgICAgICAgZW51bSBlbGZfZXh0ZW50IGV4X3R5cGU7ICAv
KiBUeXBlIG9mIHJlZ2lvbi4gKi8KPiArICAgICAgIHZvaWQgICAgICAgICAgICAqZXhfZGVzYzsg
LyogQXNzb2NpYXRlZCBkZXNjcmlwdG9yLiAqLwo+ICt9Owo+ICsKPiArU0xJU1RfSEVBRChfRWxm
X0V4dGVudF9MaXN0LCBfRWxmX0V4dGVudCk7Cj4gKwo+ICsvKgo+ICsgKiBDb21wdXRlIHRoZSBl
eHRlbnRzIG9mIGEgc2VjdGlvbiwgYnkgbG9va2luZyBhdCB0aGUgZGF0YQo+ICsgKiBkZXNjcmlw
dG9ycyBhc3NvY2lhdGVkIHdpdGggaXQuICBUaGUgZnVuY3Rpb24gcmV0dXJucyAxCj4gKyAqIGlm
IHN1Y2Nlc3NmdWwsIG9yIHplcm8gaWYgYW4gZXJyb3Igd2FzIGRldGVjdGVkLgo+ICsgKi8KPiAr
c3RhdGljIGludAo+ICtfbGliZWxmX2NvbXB1dGVfc2VjdGlvbl9leHRlbnRzKEVsZiAqZSwgRWxm
X1NjbiAqcywgb2ZmX3QgcmMpCj4gK3sKPiArICAgICAgIEVsZl9EYXRhICpkOwo+ICsgICAgICAg
c2l6ZV90IGZzeiwgbXN6Owo+ICsgICAgICAgaW50IGVjLCBlbGZ0eXBlOwo+ICsgICAgICAgdWlu
dDMyX3Qgc2hfdHlwZTsKPiArICAgICAgIHVpbnQ2NF90IGRfYWxpZ247Cj4gKyAgICAgICBFbGYz
Ml9TaGRyICpzaGRyMzI7Cj4gKyAgICAgICBFbGY2NF9TaGRyICpzaGRyNjQ7Cj4gKyAgICAgICBz
dHJ1Y3QgX0xpYmVsZl9EYXRhICpsZDsKPiArICAgICAgIHVpbnQ2NF90IHNjbl9zaXplLCBzY25f
YWxpZ25tZW50Owo+ICsgICAgICAgdWludDY0X3Qgc2hfYWxpZ24sIHNoX2VudHNpemUsIHNoX29m
ZnNldCwgc2hfc2l6ZTsKPiArCj4gKyAgICAgICBlYyA9IGUtPmVfY2xhc3M7Cj4gKwo+ICsgICAg
ICAgc2hkcjMyID0gJnMtPnNfc2hkci5zX3NoZHIzMjsKPiArICAgICAgIHNoZHI2NCA9ICZzLT5z
X3NoZHIuc19zaGRyNjQ7Cj4gKyAgICAgICBpZiAoZWMgPT0gRUxGQ0xBU1MzMikgewo+ICsgICAg
ICAgICAgICAgICBzaF90eXBlICAgID0gc2hkcjMyLT5zaF90eXBlOwo+ICsgICAgICAgICAgICAg
ICBzaF9hbGlnbiAgID0gKHVpbnQ2NF90KSBzaGRyMzItPnNoX2FkZHJhbGlnbjsKPiArICAgICAg
ICAgICAgICAgc2hfZW50c2l6ZSA9ICh1aW50NjRfdCkgc2hkcjMyLT5zaF9lbnRzaXplOwo+ICsg
ICAgICAgICAgICAgICBzaF9vZmZzZXQgID0gKHVpbnQ2NF90KSBzaGRyMzItPnNoX29mZnNldDsK
PiArICAgICAgICAgICAgICAgc2hfc2l6ZSAgICA9ICh1aW50NjRfdCkgc2hkcjMyLT5zaF9zaXpl
Owo+ICsgICAgICAgfSBlbHNlIHsKPiArICAgICAgICAgICAgICAgc2hfdHlwZSAgICA9IHNoZHI2
NC0+c2hfdHlwZTsKPiArICAgICAgICAgICAgICAgc2hfYWxpZ24gICA9IHNoZHI2NC0+c2hfYWRk
cmFsaWduOwo+ICsgICAgICAgICAgICAgICBzaF9lbnRzaXplID0gc2hkcjY0LT5zaF9lbnRzaXpl
Owo+ICsgICAgICAgICAgICAgICBzaF9vZmZzZXQgID0gc2hkcjY0LT5zaF9vZmZzZXQ7Cj4gKyAg
ICAgICAgICAgICAgIHNoX3NpemUgICAgPSBzaGRyNjQtPnNoX3NpemU7Cj4gKyAgICAgICB9Cj4g
Kwo+ICsgICAgICAgYXNzZXJ0KHNoX3R5cGUgIT0gU0hUX05VTEwgJiYgc2hfdHlwZSAhPSBTSFRf
Tk9CSVRTKTsKPiArCj4gKyAgICAgICBlbGZ0eXBlID0gX2xpYmVsZl94bGF0ZV9zaHR5cGUoc2hf
dHlwZSk7Cj4gKyAgICAgICBpZiAoZWxmdHlwZSA+IEVMRl9UX0xBU1QpIHsKPiArICAgICAgICAg
ICAgICAgTElCRUxGX1NFVF9FUlJPUihTRUNUSU9OLCAwKTsKPiArICAgICAgICAgICAgICAgcmV0
dXJuICgwKTsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICBpZiAoc2hfYWxpZ24gPT0gMCkKPiAr
ICAgICAgICAgICAgICAgc2hfYWxpZ24gPSBfbGliZWxmX2ZhbGlnbihlbGZ0eXBlLCBlYyk7Cj4g
Kwo+ICsgICAgICAgLyoKPiArICAgICAgICAqIENvbXB1dGUgdGhlIHNlY3Rpb24ncyBzaXplIGFu
ZCBhbGlnbm1lbnQgdXNpbmcgdGhlIGRhdGEKPiArICAgICAgICAqIGRlc2NyaXB0b3JzIGFzc29j
aWF0ZWQgd2l0aCB0aGUgc2VjdGlvbi4KPiArICAgICAgICAqLwo+ICsgICAgICAgaWYgKFNUQUlM
UV9FTVBUWSgmcy0+c19kYXRhKSkgewo+ICsgICAgICAgICAgICAgICAvKgo+ICsgICAgICAgICAg
ICAgICAgKiBUaGUgc2VjdGlvbidzIGNvbnRlbnQgKGlmIGFueSkgaGFzIG5vdCBiZWVuIHJlYWQg
aW4KPiArICAgICAgICAgICAgICAgICogeWV0LiAgSWYgc2VjdGlvbiBpcyBub3QgZGlydHkgbWFy
a2VkIGRpcnR5LCB3ZSBjYW4KPiArICAgICAgICAgICAgICAgICogcmV1c2UgdGhlIHZhbHVlcyBp
biB0aGUgJ3NoX3NpemUnIGFuZCAnc2hfb2Zmc2V0Jwo+ICsgICAgICAgICAgICAgICAgKiBmaWVs
ZHMgb2YgdGhlIHNlY3Rpb24gaGVhZGVyLgo+ICsgICAgICAgICAgICAgICAgKi8KPiArICAgICAg
ICAgICAgICAgaWYgKChzLT5zX2ZsYWdzICYgRUxGX0ZfRElSVFkpID09IDApIHsKPiArICAgICAg
ICAgICAgICAgICAgICAgICAvKgo+ICsgICAgICAgICAgICAgICAgICAgICAgICAqIElmIHRoZSBs
aWJyYXJ5IGlzIGRvaW5nIHRoZSBsYXlvdXQsIHRoZW4gd2UKPiArICAgICAgICAgICAgICAgICAg
ICAgICAgKiBjb21wdXRlIHRoZSBuZXcgc3RhcnQgb2Zmc2V0IGZvciB0aGUKPiArICAgICAgICAg
ICAgICAgICAgICAgICAgKiBzZWN0aW9uIGJhc2VkIG9uIHRoZSBjdXJyZW50IG9mZnNldCBhbmQg
dGhlCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICogc2VjdGlvbidzIGFsaWdubWVudCBuZWVk
cy4KPiArICAgICAgICAgICAgICAgICAgICAgICAgKgo+ICsgICAgICAgICAgICAgICAgICAgICAg
ICAqIElmIHRoZSBhcHBsaWNhdGlvbiBpcyBkb2luZyB0aGUgbGF5b3V0LCB3ZQo+ICsgICAgICAg
ICAgICAgICAgICAgICAgICAqIGNhbiB1c2UgdGhlIHZhbHVlIGluIHRoZSAnc2hfb2Zmc2V0JyBm
aWVsZAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAqIGluIHRoZSBzZWN0aW9uIGhlYWRlciBk
aXJlY3RseS4KPiArICAgICAgICAgICAgICAgICAgICAgICAgKi8KPiArICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoZS0+ZV9mbGFncyAmIEVMRl9GX0xBWU9VVCkKPiArICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdvdG8gdXBkYXRlZGVzY3JpcHRvcjsKPiArICAgICAgICAgICAgICAg
ICAgICAgICBlbHNlCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGNvbXB1
dGVvZmZzZXQ7Cj4gKyAgICAgICAgICAgICAgIH0KPiArCj4gKyAgICAgICAgICAgICAgIC8qCj4g
KyAgICAgICAgICAgICAgICAqIE90aGVyd2lzZSwgd2UgbmVlZCB0byBicmluZyBpbiB0aGUgc2Vj
dGlvbidzIGRhdGEKPiArICAgICAgICAgICAgICAgICogZnJvbSB0aGUgdW5kZXJseWluZyBFTEYg
b2JqZWN0Lgo+ICsgICAgICAgICAgICAgICAgKi8KPiArICAgICAgICAgICAgICAgaWYgKGUtPmVf
Y21kICE9IEVMRl9DX1dSSVRFICYmIGVsZl9nZXRkYXRhKHMsIE5VTEwpID09IE5VTEwpCj4gKyAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgwKTsKPiArICAgICAgIH0KPiArCj4gKyAgICAg
ICAvKgo+ICsgICAgICAgICogTG9vcCB0aHJvdWdoIHRoZSBzZWN0aW9uJ3MgZGF0YSBkZXNjcmlw
dG9ycy4KPiArICAgICAgICAqLwo+ICsgICAgICAgc2NuX3NpemUgPSAwTDsKPiArICAgICAgIHNj
bl9hbGlnbm1lbnQgPSAwOwo+ICsgICAgICAgU1RBSUxRX0ZPUkVBQ0gobGQsICZzLT5zX2RhdGEs
IGRfbmV4dCkgIHsKPiArCj4gKyAgICAgICAgICAgICAgIGQgPSAmbGQtPmRfZGF0YTsKPiArCj4g
KyAgICAgICAgICAgICAgIC8qCj4gKyAgICAgICAgICAgICAgICAqIFRoZSBkYXRhIGJ1ZmZlcidz
IHR5cGUgaXMga25vd24uCj4gKyAgICAgICAgICAgICAgICAqLwo+ICsgICAgICAgICAgICAgICBp
ZiAoZC0+ZF90eXBlID49IEVMRl9UX05VTSkgewo+ICsgICAgICAgICAgICAgICAgICAgICAgIExJ
QkVMRl9TRVRfRVJST1IoREFUQSwgMCk7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
ICgwKTsKPiArICAgICAgICAgICAgICAgfQo+ICsKPiArICAgICAgICAgICAgICAgLyoKPiArICAg
ICAgICAgICAgICAgICogVGhlIGRhdGEgYnVmZmVyJ3MgdmVyc2lvbiBpcyBzdXBwb3J0ZWQuCj4g
KyAgICAgICAgICAgICAgICAqLwo+ICsgICAgICAgICAgICAgICBpZiAoZC0+ZF92ZXJzaW9uICE9
IGUtPmVfdmVyc2lvbikgewo+ICsgICAgICAgICAgICAgICAgICAgICAgIExJQkVMRl9TRVRfRVJS
T1IoVkVSU0lPTiwgMCk7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgwKTsKPiAr
ICAgICAgICAgICAgICAgfQo+ICsKPiArICAgICAgICAgICAgICAgLyoKPiArICAgICAgICAgICAg
ICAgICogVGhlIGJ1ZmZlcidzIGFsaWdubWVudCBpcyBub24temVybyBhbmQgYSBwb3dlciBvZgo+
ICsgICAgICAgICAgICAgICAgKiB0d28uCj4gKyAgICAgICAgICAgICAgICAqLwo+ICsgICAgICAg
ICAgICAgICBpZiAoKGRfYWxpZ24gPSBkLT5kX2FsaWduKSA9PSAwIHx8Cj4gKyAgICAgICAgICAg
ICAgICAgICAoZF9hbGlnbiAmIChkX2FsaWduIC0gMSkpKSB7Cj4gKyAgICAgICAgICAgICAgICAg
ICAgICAgTElCRUxGX1NFVF9FUlJPUihEQVRBLCAwKTsKPiArICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gKDApOwo+ICsgICAgICAgICAgICAgICB9Cj4gKwo+ICsgICAgICAgICAgICAgICAv
Kgo+ICsgICAgICAgICAgICAgICAgKiBUaGUgYnVmZmVyJ3Mgc2l6ZSBzaG91bGQgYmUgYSBtdWx0
aXBsZSBvZiB0aGUKPiArICAgICAgICAgICAgICAgICogbWVtb3J5IHNpemUgb2YgdGhlIHVuZGVy
bHlpbmcgdHlwZS4KPiArICAgICAgICAgICAgICAgICovCj4gKyAgICAgICAgICAgICAgIG1zeiA9
IF9saWJlbGZfbXNpemUoZC0+ZF90eXBlLCBlYywgZS0+ZV92ZXJzaW9uKTsKPiArICAgICAgICAg
ICAgICAgaWYgKGQtPmRfc2l6ZSAlIG1zeikgewo+ICsgICAgICAgICAgICAgICAgICAgICAgIExJ
QkVMRl9TRVRfRVJST1IoREFUQSwgMCk7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
ICgwKTsKPiArICAgICAgICAgICAgICAgfQo+ICsKPiArICAgICAgICAgICAgICAgLyoKPiArICAg
ICAgICAgICAgICAgICogSWYgdGhlIGFwcGxpY2F0aW9uIGlzIGNvbnRyb2xsaW5nIGxheW91dCwg
dGhlbiB0aGUKPiArICAgICAgICAgICAgICAgICogZF9vZmZzZXQgZmllbGQgc2hvdWxkIGJlIGNv
bXBhdGlibGUgd2l0aCB0aGUKPiArICAgICAgICAgICAgICAgICogYnVmZmVyJ3Mgc3BlY2lmaWVk
IGFsaWdubWVudC4KPiArICAgICAgICAgICAgICAgICovCj4gKyAgICAgICAgICAgICAgIGlmICgo
ZS0+ZV9mbGFncyAmIEVMRl9GX0xBWU9VVCkgJiYKPiArICAgICAgICAgICAgICAgICAgIChkLT5k
X29mZiAmIChkX2FsaWduIC0gMSkpKSB7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgTElCRUxG
X1NFVF9FUlJPUihMQVlPVVQsIDApOwo+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAo
MCk7Cj4gKyAgICAgICAgICAgICAgIH0KPiArCj4gKyAgICAgICAgICAgICAgIC8qCj4gKyAgICAg
ICAgICAgICAgICAqIENvbXB1dGUgdGhlIHNlY3Rpb24ncyBzaXplLgo+ICsgICAgICAgICAgICAg
ICAgKi8KPiArICAgICAgICAgICAgICAgaWYgKGUtPmVfZmxhZ3MgJiBFTEZfRl9MQVlPVVQpIHsK
PiArICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHVpbnQ2NF90KSBkLT5kX29mZiArIGQtPmRf
c2l6ZSA+IHNjbl9zaXplKQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NuX3Np
emUgPSBkLT5kX29mZiArIGQtPmRfc2l6ZTsKPiArICAgICAgICAgICAgICAgfSBlbHNlIHsKPiAr
ICAgICAgICAgICAgICAgICAgICAgICBzY25fc2l6ZSA9IHJvdW5kdXAyKHNjbl9zaXplLCBkLT5k
X2FsaWduKTsKPiArICAgICAgICAgICAgICAgICAgICAgICBkLT5kX29mZiA9IHNjbl9zaXplOwo+
ICsgICAgICAgICAgICAgICAgICAgICAgIGZzeiA9IF9saWJlbGZfZnNpemUoZC0+ZF90eXBlLCBl
YywgZC0+ZF92ZXJzaW9uLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2l6ZV90KSBk
LT5kX3NpemUgLyBtc3opOwo+ICsgICAgICAgICAgICAgICAgICAgICAgIHNjbl9zaXplICs9IGZz
ejsKPiArICAgICAgICAgICAgICAgfQo+ICsKPiArICAgICAgICAgICAgICAgLyoKPiArICAgICAg
ICAgICAgICAgICogVGhlIHNlY3Rpb24ncyBhbGlnbm1lbnQgaXMgdGhlIG1heGltdW0gYWxpZ25t
ZW50Cj4gKyAgICAgICAgICAgICAgICAqIG5lZWRlZCBmb3IgaXRzIGRhdGEgYnVmZmVycy4KPiAr
ICAgICAgICAgICAgICAgICovCj4gKyAgICAgICAgICAgICAgIGlmIChkX2FsaWduID4gc2NuX2Fs
aWdubWVudCkKPiArICAgICAgICAgICAgICAgICAgICAgICBzY25fYWxpZ25tZW50ID0gZF9hbGln
bjsKPiArICAgICAgIH0KPiArCj4gKwo+ICsgICAgICAgLyoKPiArICAgICAgICAqIElmIHRoZSBh
cHBsaWNhdGlvbiBpcyByZXF1ZXN0aW5nIGZ1bGwgY29udHJvbCBvdmVyIHRoZQo+ICsgICAgICAg
ICogbGF5b3V0IG9mIHRoZSBzZWN0aW9uLCBjaGVjayB0aGUgc2VjdGlvbidzIHNwZWNpZmllZCBz
aXplLAo+ICsgICAgICAgICogb2Zmc2V0cyBhbmQgYWxpZ25tZW50IGZvciBzYW5pdHkuCj4gKyAg
ICAgICAgKi8KPiArICAgICAgIGlmIChlLT5lX2ZsYWdzICYgRUxGX0ZfTEFZT1VUKSB7Cj4gKyAg
ICAgICAgICAgICAgIGlmIChzY25fYWxpZ25tZW50ID4gc2hfYWxpZ24gfHwKPiArICAgICAgICAg
ICAgICAgICAgIHNoX29mZnNldCAlIHNoX2FsaWduIHx8Cj4gKyAgICAgICAgICAgICAgICAgICBz
aF9zaXplIDwgc2NuX3NpemUgfHwKPiArICAgICAgICAgICAgICAgICAgIHNoX29mZnNldCAlIF9s
aWJlbGZfZmFsaWduKGVsZnR5cGUsIGVjKSkgewo+ICsgICAgICAgICAgICAgICAgICAgICAgIExJ
QkVMRl9TRVRfRVJST1IoTEFZT1VULCAwKTsKPiArICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gKDApOwo+ICsgICAgICAgICAgICAgICB9Cj4gKyAgICAgICAgICAgICAgIGdvdG8gdXBkYXRl
ZGVzY3JpcHRvcjsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICAvKgo+ICsgICAgICAgICogT3Ro
ZXJ3aXNlLCBjb21wdXRlIHRoZSB2YWx1ZXMgaW4gdGhlIHNlY3Rpb24gaGVhZGVyLgo+ICsgICAg
ICAgICoKPiArICAgICAgICAqIFRoZSBzZWN0aW9uIGFsaWdubWVudCBpcyB0aGUgbWF4aW11bSBh
bGlnbm1lbnQgZm9yIGFueSBvZgo+ICsgICAgICAgICogaXRzIGNvbnRhaW5lZCBkYXRhIGRlc2Ny
aXB0b3JzLgo+ICsgICAgICAgICovCj4gKyAgICAgICBpZiAoc2NuX2FsaWdubWVudCA+IHNoX2Fs
aWduKQo+ICsgICAgICAgICAgICAgICBzaF9hbGlnbiA9IHNjbl9hbGlnbm1lbnQ7Cj4gKwo+ICsg
ICAgICAgLyoKPiArICAgICAgICAqIElmIHRoZSBzZWN0aW9uIGVudHJ5IHNpemUgaXMgemVybywg
dHJ5IGFuZCBmaWxsIGluIGFuCj4gKyAgICAgICAgKiBhcHByb3ByaWF0ZSBlbnRyeSBzaXplLiAg
UGVyIHRoZSBlbGYoNSkgbWFudWFsIHBhZ2UKPiArICAgICAgICAqIHNlY3Rpb25zIHdpdGhvdXQg
Zml4ZWQtc2l6ZSBlbnRyaWVzIHNob3VsZCBoYXZlIHRoZWlyCj4gKyAgICAgICAgKiAnc2hfZW50
c2l6ZScgZmllbGQgc2V0IHRvIHplcm8uCj4gKyAgICAgICAgKi8KPiArICAgICAgIGlmIChzaF9l
bnRzaXplID09IDAgJiYKPiArICAgICAgICAgICAoc2hfZW50c2l6ZSA9IF9saWJlbGZfZnNpemUo
ZWxmdHlwZSwgZWMsIGUtPmVfdmVyc2lvbiwKPiArICAgICAgICAgICAgICAgKHNpemVfdCkgMSkp
ID09IDEpCj4gKyAgICAgICAgICAgICAgIHNoX2VudHNpemUgPSAwOwo+ICsKPiArICAgICAgIHNo
X3NpemUgPSBzY25fc2l6ZTsKPiArCj4gK2NvbXB1dGVvZmZzZXQ6Cj4gKyAgICAgICAvKgo+ICsg
ICAgICAgICogQ29tcHV0ZSB0aGUgbmV3IG9mZnNldCBmb3IgdGhlIHNlY3Rpb24gYmFzZWQgb24K
PiArICAgICAgICAqIHRoZSBzZWN0aW9uJ3MgYWxpZ25tZW50IG5lZWRzLgo+ICsgICAgICAgICov
Cj4gKyAgICAgICBzaF9vZmZzZXQgPSByb3VuZHVwKCh1aW50NjRfdCkgcmMsIHNoX2FsaWduKTsK
PiArCj4gKyAgICAgICAvKgo+ICsgICAgICAgICogVXBkYXRlIHRoZSBzZWN0aW9uIGhlYWRlci4K
PiArICAgICAgICAqLwo+ICsgICAgICAgaWYgKGVjID09IEVMRkNMQVNTMzIpIHsKPiArICAgICAg
ICAgICAgICAgc2hkcjMyLT5zaF9hZGRyYWxpZ24gPSAodWludDMyX3QpIHNoX2FsaWduOwo+ICsg
ICAgICAgICAgICAgICBzaGRyMzItPnNoX2VudHNpemUgICA9ICh1aW50MzJfdCkgc2hfZW50c2l6
ZTsKPiArICAgICAgICAgICAgICAgc2hkcjMyLT5zaF9vZmZzZXQgICAgPSAodWludDMyX3QpIHNo
X29mZnNldDsKPiArICAgICAgICAgICAgICAgc2hkcjMyLT5zaF9zaXplICAgICAgPSAodWludDMy
X3QpIHNoX3NpemU7Cj4gKyAgICAgICB9IGVsc2Ugewo+ICsgICAgICAgICAgICAgICBzaGRyNjQt
PnNoX2FkZHJhbGlnbiA9IHNoX2FsaWduOwo+ICsgICAgICAgICAgICAgICBzaGRyNjQtPnNoX2Vu
dHNpemUgICA9IHNoX2VudHNpemU7Cj4gKyAgICAgICAgICAgICAgIHNoZHI2NC0+c2hfb2Zmc2V0
ICAgID0gc2hfb2Zmc2V0Owo+ICsgICAgICAgICAgICAgICBzaGRyNjQtPnNoX3NpemUgICAgICA9
IHNoX3NpemU7Cj4gKyAgICAgICB9Cj4gKwo+ICt1cGRhdGVkZXNjcmlwdG9yOgo+ICsgICAgICAg
LyoKPiArICAgICAgICAqIFVwZGF0ZSB0aGUgc2VjdGlvbiBkZXNjcmlwdG9yLgo+ICsgICAgICAg
ICovCj4gKyAgICAgICBzLT5zX3NpemUgPSBzaF9zaXplOwo+ICsgICAgICAgcy0+c19vZmZzZXQg
PSBzaF9vZmZzZXQ7Cj4gKwo+ICsgICAgICAgcmV0dXJuICgxKTsKPiArfQo+ICsKPiArLyoKPiAr
ICogRnJlZSBhIGxpc3Qgb2YgZXh0ZW50IGRlc2NyaXB0b3JzLgo+ICsgKi8KPiArCj4gK3N0YXRp
YyB2b2lkCj4gK19saWJlbGZfcmVsZWFzZV9leHRlbnRzKHN0cnVjdCBfRWxmX0V4dGVudF9MaXN0
ICpleHRlbnRzKQo+ICt7Cj4gKyAgICAgICBzdHJ1Y3QgX0VsZl9FeHRlbnQgKmV4Owo+ICsKPiAr
ICAgICAgIHdoaWxlICgoZXggPSBTTElTVF9GSVJTVChleHRlbnRzKSkgIT0gTlVMTCkgewo+ICsg
ICAgICAgICAgICAgICBTTElTVF9SRU1PVkVfSEVBRChleHRlbnRzLCBleF9uZXh0KTsKPiArICAg
ICAgICAgICAgICAgZnJlZShleCk7Cj4gKyAgICAgICB9Cj4gK30KPiArCj4gKy8qCj4gKyAqIENo
ZWNrIGlmIGFuIGV4dGVudCAncycgZGVmaW5lZCBieSBbc3RhcnQuLnN0YXJ0K3NpemUpIGlzIGZy
ZWUuCj4gKyAqIFRoaXMgcm91dGluZSBhc3N1bWVzIHRoYXQgdGhlIGdpdmVuIGV4dGVudCBsaXN0
IGlzIHNvcnRlZCBpbiBvcmRlcgo+ICsgKiBvZiBhc2NlbmRpbmcgZXh0ZW50IG9mZnNldHMuCj4g
KyAqLwo+ICsKPiArc3RhdGljIGludAo+ICtfbGliZWxmX2V4dGVudF9pc191bnVzZWQoc3RydWN0
IF9FbGZfRXh0ZW50X0xpc3QgKmV4dGVudHMsCj4gKyAgICBjb25zdCB1aW50NjRfdCBzdGFydCwg
Y29uc3QgdWludDY0X3Qgc2l6ZSwgc3RydWN0IF9FbGZfRXh0ZW50ICoqcHJldnQpCj4gK3sKPiAr
ICAgICAgIHVpbnQ2NF90IHRtYXgsIHRtaW47Cj4gKyAgICAgICBzdHJ1Y3QgX0VsZl9FeHRlbnQg
KnQsICpwdDsKPiArICAgICAgIGNvbnN0IHVpbnQ2NF90IHNtYXggPSBzdGFydCArIHNpemU7Cj4g
Kwo+ICsgICAgICAgLyogRmlyc3QsIGxvb2sgZm9yIG92ZXJsYXBzIHdpdGggZXhpc3RpbmcgZXh0
ZW50cy4gKi8KPiArICAgICAgIHB0ID0gTlVMTDsKPiArICAgICAgIFNMSVNUX0ZPUkVBQ0godCwg
ZXh0ZW50cywgZXhfbmV4dCkgewo+ICsgICAgICAgICAgICAgICB0bWluID0gdC0+ZXhfc3RhcnQ7
Cj4gKyAgICAgICAgICAgICAgIHRtYXggPSB0bWluICsgdC0+ZXhfc2l6ZTsKPiArCj4gKyAgICAg
ICAgICAgICAgIGlmICh0bWF4IDw9IHN0YXJ0KSB7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAg
LyoKPiArICAgICAgICAgICAgICAgICAgICAgICAgKiAndCcgbGllcyBlbnRpcmVseSBiZWZvcmUg
J3MnOiAuLi58IHQgfC4uLnwgcyB8Li4uCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICovCj4g
KyAgICAgICAgICAgICAgICAgICAgICAgcHQgPSB0Owo+ICsgICAgICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwo+ICsgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHNtYXggPD0gdG1pbikgewo+
ICsgICAgICAgICAgICAgICAgICAgICAgIC8qCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICog
J3MnIGxpZXMgZW50aXJlbHkgYmVmb3JlICd0JywgYW5kIGFmdGVyICdwdCc6Cj4gKyAgICAgICAg
ICAgICAgICAgICAgICAgICogICAgICAuLi58IHB0IHwuLi58IHMgfC4uLnwgdCB8Li4uCj4gKyAg
ICAgICAgICAgICAgICAgICAgICAgICovCj4gKyAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0
KHB0ID09IE5VTEwgfHwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgcHQtPmV4X3N0YXJ0
ICsgcHQtPmV4X3NpemUgPD0gc3RhcnQpOwo+ICsgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
Owo+ICsgICAgICAgICAgICAgICB9IGVsc2UKPiArICAgICAgICAgICAgICAgICAgICAgICAvKiAn
cycgYW5kICd0JyBvdmVybGFwLiAqLwo+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAo
MCk7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgaWYgKHByZXZ0KQo+ICsgICAgICAgICAgICAg
ICAqcHJldnQgPSBwdDsKPiArICAgICAgIHJldHVybiAoMSk7Cj4gK30KPiArCj4gKy8qCj4gKyAq
IEluc2VydCBhbiBleHRlbnQgaW50byB0aGUgbGlzdCBvZiBleHRlbnRzLgo+ICsgKi8KPiArCj4g
K3N0YXRpYyBpbnQKPiArX2xpYmVsZl9pbnNlcnRfZXh0ZW50KHN0cnVjdCBfRWxmX0V4dGVudF9M
aXN0ICpleHRlbnRzLCBpbnQgdHlwZSwKPiArICAgIHVpbnQ2NF90IHN0YXJ0LCB1aW50NjRfdCBz
aXplLCB2b2lkICpkZXNjKQo+ICt7Cj4gKyAgICAgICBzdHJ1Y3QgX0VsZl9FeHRlbnQgKmV4LCAq
cHJldnQ7Cj4gKwo+ICsgICAgICAgYXNzZXJ0KHR5cGUgPj0gRUxGX0VYVEVOVF9FSERSICYmIHR5
cGUgPD0gRUxGX0VYVEVOVF9TSERSKTsKPiArCj4gKyAgICAgICBwcmV2dCA9IE5VTEw7Cj4gKwo+
ICsgICAgICAgLyoKPiArICAgICAgICAqIElmIHRoZSByZXF1ZXN0ZWQgcmFuZ2Ugb3ZlcmxhcHMg
d2l0aCBhbiBleGlzdGluZyBleHRlbnQsCj4gKyAgICAgICAgKiBzaWduYWwgYW4gZXJyb3IuCj4g
KyAgICAgICAgKi8KPiArICAgICAgIGlmICghX2xpYmVsZl9leHRlbnRfaXNfdW51c2VkKGV4dGVu
dHMsIHN0YXJ0LCBzaXplLCAmcHJldnQpKSB7Cj4gKyAgICAgICAgICAgICAgIExJQkVMRl9TRVRf
RVJST1IoTEFZT1VULCAwKTsKPiArICAgICAgICAgICAgICAgcmV0dXJuICgwKTsKPiArICAgICAg
IH0KPiArCj4gKyAgICAgICAvKiBBbGxvY2F0ZSBhbmQgZmlsbCBpbiBhIG5ldyBleHRlbnQgZGVz
Y3JpcHRvci4gKi8KPiArICAgICAgIGlmICgoZXggPSBtYWxsb2Moc2l6ZW9mKHN0cnVjdCBfRWxm
X0V4dGVudCkpKSA9PSBOVUxMKSB7Cj4gKyAgICAgICAgICAgICAgIExJQkVMRl9TRVRfRVJST1Io
UkVTT1VSQ0UsIGVycm5vKTsKPiArICAgICAgICAgICAgICAgcmV0dXJuICgwKTsKPiArICAgICAg
IH0KPiArICAgICAgIGV4LT5leF9zdGFydCA9IHN0YXJ0Owo+ICsgICAgICAgZXgtPmV4X3NpemUg
PSBzaXplOwo+ICsgICAgICAgZXgtPmV4X2Rlc2MgPSBkZXNjOwo+ICsgICAgICAgZXgtPmV4X3R5
cGUgPSB0eXBlOwo+ICsKPiArICAgICAgIC8qIEluc2VydCB0aGUgcmVnaW9uIGRlc2NyaXB0b3Ig
aW50byB0aGUgbGlzdC4gKi8KPiArICAgICAgIGlmIChwcmV2dCkKPiArICAgICAgICAgICAgICAg
U0xJU1RfSU5TRVJUX0FGVEVSKHByZXZ0LCBleCwgZXhfbmV4dCk7Cj4gKyAgICAgICBlbHNlCj4g
KyAgICAgICAgICAgICAgIFNMSVNUX0lOU0VSVF9IRUFEKGV4dGVudHMsIGV4LCBleF9uZXh0KTsK
PiArICAgICAgIHJldHVybiAoMSk7Cj4gK30KPiArCj4gKy8qCj4gKyAqIFJlY29tcHV0ZSBzZWN0
aW9uIGxheW91dC4KPiArICovCj4gKwo+ICtzdGF0aWMgb2ZmX3QKPiArX2xpYmVsZl9yZXN5bmNf
c2VjdGlvbnMoRWxmICplLCBvZmZfdCByYywgc3RydWN0IF9FbGZfRXh0ZW50X0xpc3QgKmV4dGVu
dHMpCj4gK3sKPiArICAgICAgIGludCBlYzsKPiArICAgICAgIEVsZl9TY24gKnM7Cj4gKyAgICAg
ICBzaXplX3Qgc2hfdHlwZTsKPiArCj4gKyAgICAgICBlYyA9IGUtPmVfY2xhc3M7Cj4gKwo+ICsg
ICAgICAgLyoKPiArICAgICAgICAqIE1ha2UgYSBwYXNzIHRocm91Z2ggc2VjdGlvbnMsIGNvbXB1
dGluZyB0aGUgZXh0ZW50IG9mIGVhY2gKPiArICAgICAgICAqIHNlY3Rpb24uCj4gKyAgICAgICAg
Ki8KPiArICAgICAgIFNUQUlMUV9GT1JFQUNIKHMsICZlLT5lX3UuZV9lbGYuZV9zY24sIHNfbmV4
dCkgewo+ICsgICAgICAgICAgICAgICBpZiAoZWMgPT0gRUxGQ0xBU1MzMikKPiArICAgICAgICAg
ICAgICAgICAgICAgICBzaF90eXBlID0gcy0+c19zaGRyLnNfc2hkcjMyLnNoX3R5cGU7Cj4gKyAg
ICAgICAgICAgICAgIGVsc2UKPiArICAgICAgICAgICAgICAgICAgICAgICBzaF90eXBlID0gcy0+
c19zaGRyLnNfc2hkcjY0LnNoX3R5cGU7Cj4gKwo+ICsgICAgICAgICAgICAgICBpZiAoc2hfdHlw
ZSA9PSBTSFRfTk9CSVRTIHx8IHNoX3R5cGUgPT0gU0hUX05VTEwpCj4gKyAgICAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7Cj4gKwo+ICsgICAgICAgICAgICAgICBpZiAoX2xpYmVsZl9jb21w
dXRlX3NlY3Rpb25fZXh0ZW50cyhlLCBzLCByYykgPT0gMCkKPiArICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gKChvZmZfdCkgLTEpOwo+ICsKPiArICAgICAgICAgICAgICAgaWYgKHMtPnNf
c2l6ZSA9PSAwKQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwo+ICsKPiArICAg
ICAgICAgICAgICAgaWYgKCFfbGliZWxmX2luc2VydF9leHRlbnQoZXh0ZW50cywgRUxGX0VYVEVO
VF9TRUNUSU9OLAo+ICsgICAgICAgICAgICAgICAgICAgcy0+c19vZmZzZXQsIHMtPnNfc2l6ZSwg
cykpCj4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgob2ZmX3QpIC0xKTsKPiArCj4g
KyAgICAgICAgICAgICAgIGlmICgoc2l6ZV90KSByYyA8IHMtPnNfb2Zmc2V0ICsgcy0+c19zaXpl
KQo+ICsgICAgICAgICAgICAgICAgICAgICAgIHJjID0gKG9mZl90KSAocy0+c19vZmZzZXQgKyBz
LT5zX3NpemUpOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIHJldHVybiAocmMpOwo+ICt9Cj4g
Kwo+ICsvKgo+ICsgKiBSZWNvbXB1dGUgdGhlIGxheW91dCBvZiB0aGUgRUxGIG9iamVjdCBhbmQg
dXBkYXRlIHRoZSBpbnRlcm5hbCBkYXRhCj4gKyAqIHN0cnVjdHVyZXMgYXNzb2NpYXRlZCB3aXRo
IHRoZSBFTEYgZGVzY3JpcHRvci4KPiArICoKPiArICogUmV0dXJucyB0aGUgc2l6ZSBpbiBieXRl
cyB0aGUgRUxGIG9iamVjdCB3b3VsZCBvY2N1cHkgaW4gaXRzIGZpbGUKPiArICogcmVwcmVzZW50
YXRpb24uCj4gKyAqCj4gKyAqIEFmdGVyIGEgc3VjY2Vzc2Z1bCBjYWxsIHRvIHRoaXMgZnVuY3Rp
b24sIHRoZSBmb2xsb3dpbmcgc3RydWN0dXJlcwo+ICsgKiBhcmUgdXBkYXRlZDoKPiArICoKPiAr
ICogLSBUaGUgRUxGIGhlYWRlciBpcyB1cGRhdGVkLgo+ICsgKiAtIEFsbCBleHRlbnRzIGluIHRo
ZSBFTEYgb2JqZWN0IGFyZSBzb3J0ZWQgaW4gb3JkZXIgb2YgYXNjZW5kaW5nCj4gKyAqICAgYWRk
cmVzc2VzLiAgU2VjdGlvbnMgaGF2ZSB0aGVpciBzZWN0aW9uIGhlYWRlciB0YWJsZSBlbnRyaWVz
Cj4gKyAqICAgdXBkYXRlZC4gIEFuIGVycm9yIGlzIHNpZ25hbGxlZCBpZiBhbiBvdmVybGFwIHdh
cyBkZXRlY3RlZCBhbW9uZwo+ICsgKiAgIGV4dGVudHMuCj4gKyAqIC0gRGF0YSBkZXNjcmlwdG9y
cyBhc3NvY2lhdGVkIHdpdGggc2VjdGlvbnMgYXJlIGNoZWNrZWQgZm9yIHZhbGlkCj4gKyAqICAg
dHlwZXMsIG9mZnNldHMgYW5kIGFsaWdubWVudC4KPiArICoKPiArICogQWZ0ZXIgYSByZXN5bmNf
ZWxmKCkgc3VjY2Vzc2Z1bGx5IHJldHVybnMsIHRoZSBFTEYgZGVzY3JpcHRvciBpcwo+ICsgKiBy
ZWFkeSBmb3IgYmVpbmcgaGFuZGVkIG92ZXIgdG8gX2xpYmVsZl93cml0ZV9lbGYoKS4KPiArICov
Cj4gKwo+ICtzdGF0aWMgb2ZmX3QKPiArX2xpYmVsZl9yZXN5bmNfZWxmKEVsZiAqZSwgc3RydWN0
IF9FbGZfRXh0ZW50X0xpc3QgKmV4dGVudHMpCj4gK3sKPiArICAgICAgIGludCBlYywgZWhfY2xh
c3M7Cj4gKyAgICAgICB1bnNpZ25lZCBpbnQgZWhfYnl0ZW9yZGVyLCBlaF92ZXJzaW9uOwo+ICsg
ICAgICAgc2l6ZV90IGFsaWduLCBmc3o7Cj4gKyAgICAgICBzaXplX3QgcGhudW0sIHNobnVtOwo+
ICsgICAgICAgb2ZmX3QgcmMsIHBob2ZmLCBzaG9mZjsKPiArICAgICAgIHZvaWQgKmVoZHIsICpw
aGRyOwo+ICsgICAgICAgRWxmMzJfRWhkciAqZWgzMjsKPiArICAgICAgIEVsZjY0X0VoZHIgKmVo
NjQ7Cj4gKwo+ICsgICAgICAgcmMgPSAwOwo+ICsKPiArICAgICAgIGVjID0gZS0+ZV9jbGFzczsK
PiArCj4gKyAgICAgICBhc3NlcnQoZWMgPT0gRUxGQ0xBU1MzMiB8fCBlYyA9PSBFTEZDTEFTUzY0
KTsKPiArCj4gKyAgICAgICAvKgo+ICsgICAgICAgICogUHJlcGFyZSB0aGUgRUhEUi4KPiArICAg
ICAgICAqLwo+ICsgICAgICAgaWYgKChlaGRyID0gX2xpYmVsZl9laGRyKGUsIGVjLCAwKSkgPT0g
TlVMTCkKPiArICAgICAgICAgICAgICAgcmV0dXJuICgob2ZmX3QpIC0xKTsKPiArCj4gKyAgICAg
ICBlaDMyID0gZWhkcjsKPiArICAgICAgIGVoNjQgPSBlaGRyOwo+ICsKPiArICAgICAgIGlmIChl
YyA9PSBFTEZDTEFTUzMyKSB7Cj4gKyAgICAgICAgICAgICAgIGVoX2J5dGVvcmRlciA9IGVoMzIt
PmVfaWRlbnRbRUlfREFUQV07Cj4gKyAgICAgICAgICAgICAgIGVoX2NsYXNzICAgICA9IGVoMzIt
PmVfaWRlbnRbRUlfQ0xBU1NdOwo+ICsgICAgICAgICAgICAgICBwaG9mZiAgICAgICAgPSAob2Zm
X3QpIGVoMzItPmVfcGhvZmY7Cj4gKyAgICAgICAgICAgICAgIHNob2ZmICAgICAgICA9IChvZmZf
dCkgZWgzMi0+ZV9zaG9mZjsKPiArICAgICAgICAgICAgICAgZWhfdmVyc2lvbiAgID0gZWgzMi0+
ZV92ZXJzaW9uOwo+ICsgICAgICAgfSBlbHNlIHsKPiArICAgICAgICAgICAgICAgZWhfYnl0ZW9y
ZGVyID0gZWg2NC0+ZV9pZGVudFtFSV9EQVRBXTsKPiArICAgICAgICAgICAgICAgZWhfY2xhc3Mg
ICAgID0gZWg2NC0+ZV9pZGVudFtFSV9DTEFTU107Cj4gKyAgICAgICAgICAgICAgIHBob2ZmICAg
ICAgICA9IChvZmZfdCkgZWg2NC0+ZV9waG9mZjsKPiArICAgICAgICAgICAgICAgc2hvZmYgICAg
ICAgID0gKG9mZl90KSBlaDY0LT5lX3Nob2ZmOwo+ICsgICAgICAgICAgICAgICBlaF92ZXJzaW9u
ICAgPSBlaDY0LT5lX3ZlcnNpb247Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgaWYgKHBob2Zm
IDwgMCB8fCBzaG9mZiA8IDApIHsKPiArICAgICAgICAgICAgICAgTElCRUxGX1NFVF9FUlJPUihI
RUFERVIsIDApOwo+ICsgICAgICAgICAgICAgICByZXR1cm4gKChvZmZfdCkgLTEpOwo+ICsgICAg
ICAgfQo+ICsKPiArICAgICAgIGlmIChlaF92ZXJzaW9uID09IEVWX05PTkUpCj4gKyAgICAgICAg
ICAgICAgIGVoX3ZlcnNpb24gPSBFVl9DVVJSRU5UOwo+ICsKPiArICAgICAgIGlmIChlaF92ZXJz
aW9uICE9IGUtPmVfdmVyc2lvbikgeyAgICAgICAvKiBhbHdheXMgRVZfQ1VSUkVOVCAqLwo+ICsg
ICAgICAgICAgICAgICBMSUJFTEZfU0VUX0VSUk9SKFZFUlNJT04sIDApOwo+ICsgICAgICAgICAg
ICAgICByZXR1cm4gKChvZmZfdCkgLTEpOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIGlmIChl
aF9jbGFzcyAhPSBlLT5lX2NsYXNzKSB7Cj4gKyAgICAgICAgICAgICAgIExJQkVMRl9TRVRfRVJS
T1IoQ0xBU1MsIDApOwo+ICsgICAgICAgICAgICAgICByZXR1cm4gKChvZmZfdCkgLTEpOwo+ICsg
ICAgICAgfQo+ICsKPiArICAgICAgIGlmIChlLT5lX2NtZCAhPSBFTEZfQ19XUklURSAmJiBlaF9i
eXRlb3JkZXIgIT0gZS0+ZV9ieXRlb3JkZXIpIHsKPiArICAgICAgICAgICAgICAgTElCRUxGX1NF
VF9FUlJPUihIRUFERVIsIDApOwo+ICsgICAgICAgICAgICAgICByZXR1cm4gKChvZmZfdCkgLTEp
Owo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIHNobnVtID0gZS0+ZV91LmVfZWxmLmVfbnNjbjsK
PiArICAgICAgIHBobnVtID0gZS0+ZV91LmVfZWxmLmVfbnBoZHI7Cj4gKwo+ICsgICAgICAgZS0+
ZV9ieXRlb3JkZXIgPSBlaF9ieXRlb3JkZXI7Cj4gKwo+ICsjZGVmaW5lICAgICAgICBJTklUSUFM
SVpFX0VIRFIoRSxFQyxWKSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAo+ICsgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX3ZlcnNpb24gPSAodW5zaWduZWQgaW50
KSAoVik7ICAgICAgICAgICAgIFwKPiArICAgICAgICAgICAgICAgKEUpLT5lX2lkZW50W0VJX01B
RzBdID0gRUxGTUFHMDsgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAgICAgICAg
IChFKS0+ZV9pZGVudFtFSV9NQUcxXSA9IEVMRk1BRzE7ICAgICAgICAgICAgICAgICAgICAgICAg
XAo+ICsgICAgICAgICAgICAgICAoRSktPmVfaWRlbnRbRUlfTUFHMl0gPSBFTEZNQUcyOyAgICAg
ICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICAgICAgICAgKEUpLT5lX2lkZW50W0VJX01B
RzNdID0gRUxGTUFHMzsgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAgICAgICAg
IChFKS0+ZV9pZGVudFtFSV9DTEFTU10gPSAodW5zaWduZWQgY2hhcikgKEVDKTsgICAgICAgICAg
XAo+ICsgICAgICAgICAgICAgICAoRSktPmVfaWRlbnRbRUlfVkVSU0lPTl0gPSAoX3ZlcnNpb24g
JiAweEZGVSk7ICAgICAgICAgIFwKPiArICAgICAgICAgICAgICAgKEUpLT5lX2Voc2l6ZSA9ICh1
aW50MTZfdCkgX2xpYmVsZl9mc2l6ZShFTEZfVF9FSERSLCAgICBcCj4gKyAgICAgICAgICAgICAg
ICAgICAoRUMpLCBfdmVyc2lvbiwgKHNpemVfdCkgMSk7ICAgICAgICAgICAgICAgICAgICAgICAg
XAo+ICsgICAgICAgICAgICAgICAoRSktPmVfcGhlbnRzaXplID0gKHVpbnQxNl90KSAoKHBobnVt
ID09IDApID8gMCA6ICAgICAgIFwKPiArICAgICAgICAgICAgICAgICAgIF9saWJlbGZfZnNpemUo
RUxGX1RfUEhEUiwgKEVDKSwgX3ZlcnNpb24sICAgICAgICAgICBcCj4gKyAgICAgICAgICAgICAg
ICAgICAgICAgKHNpemVfdCkgMSkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAo+ICsgICAgICAgICAgICAgICAoRSktPmVfc2hlbnRzaXplID0gKHVpbnQxNl90KSBfbGliZWxm
X2ZzaXplKEVMRl9UX1NIRFIsIFwKPiArICAgICAgICAgICAgICAgICAgIChFQyksIF92ZXJzaW9u
LCAoc2l6ZV90KSAxKTsgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICB9IHdoaWxl
ICgwKQo+ICsKPiArICAgICAgIGlmIChlYyA9PSBFTEZDTEFTUzMyKQo+ICsgICAgICAgICAgICAg
ICBJTklUSUFMSVpFX0VIRFIoZWgzMiwgZWMsIGVoX3ZlcnNpb24pOwo+ICsgICAgICAgZWxzZQo+
ICsgICAgICAgICAgICAgICBJTklUSUFMSVpFX0VIRFIoZWg2NCwgZWMsIGVoX3ZlcnNpb24pOwo+
ICsKPiArICAgICAgICh2b2lkKSBlbGZfZmxhZ2VoZHIoZSwgRUxGX0NfU0VULCBFTEZfRl9ESVJU
WSk7Cj4gKwo+ICsgICAgICAgcmMgKz0gKG9mZl90KSBfbGliZWxmX2ZzaXplKEVMRl9UX0VIRFIs
IGVjLCBlaF92ZXJzaW9uLCAoc2l6ZV90KSAxKTsKPiArCj4gKyAgICAgICBpZiAoIV9saWJlbGZf
aW5zZXJ0X2V4dGVudChleHRlbnRzLCBFTEZfRVhURU5UX0VIRFIsIDAsICh1aW50NjRfdCkgcmMs
Cj4gKyAgICAgICAgICAgICAgIGVoZHIpKQo+ICsgICAgICAgICAgICAgICByZXR1cm4gKChvZmZf
dCkgLTEpOwo+ICsKPiArICAgICAgIC8qCj4gKyAgICAgICAgKiBDb21wdXRlIHRoZSBsYXlvdXQg
dGhlIHByb2dyYW0gaGVhZGVyIHRhYmxlLCBpZiBvbmUgaXMKPiArICAgICAgICAqIHByZXNlbnQu
ICBUaGUgcHJvZ3JhbSBoZWFkZXIgdGFibGUgbmVlZHMgdG8gYmUgYWxpZ25lZCB0byBhCj4gKyAg
ICAgICAgKiBgbmF0dXJhbCcgYm91bmRhcnkuCj4gKyAgICAgICAgKi8KPiArICAgICAgIGlmIChw
aG51bSkgewo+ICsgICAgICAgICAgICAgICBmc3ogPSBfbGliZWxmX2ZzaXplKEVMRl9UX1BIRFIs
IGVjLCBlaF92ZXJzaW9uLCBwaG51bSk7Cj4gKyAgICAgICAgICAgICAgIGFsaWduID0gX2xpYmVs
Zl9mYWxpZ24oRUxGX1RfUEhEUiwgZWMpOwo+ICsKPiArICAgICAgICAgICAgICAgaWYgKGUtPmVf
ZmxhZ3MgJiBFTEZfRl9MQVlPVVQpIHsKPiArICAgICAgICAgICAgICAgICAgICAgICAvKgo+ICsg
ICAgICAgICAgICAgICAgICAgICAgICAqIENoZWNrIG9mZnNldHMgZm9yIHNhbml0eS4KPiArICAg
ICAgICAgICAgICAgICAgICAgICAgKi8KPiArICAgICAgICAgICAgICAgICAgICAgICBpZiAocmMg
PiBwaG9mZikgewo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTElCRUxGX1NFVF9F
UlJPUihMQVlPVVQsIDApOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
ICgob2ZmX3QpIC0xKTsKPiArICAgICAgICAgICAgICAgICAgICAgICB9Cj4gKwo+ICsgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChwaG9mZiAlIChvZmZfdCkgYWxpZ24pIHsKPiArICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIExJQkVMRl9TRVRfRVJST1IoTEFZT1VULCAwKTsKPiArICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoKG9mZl90KSAtMSk7Cj4gKyAgICAg
ICAgICAgICAgICAgICAgICAgfQo+ICsKPiArICAgICAgICAgICAgICAgfSBlbHNlCj4gKyAgICAg
ICAgICAgICAgICAgICAgICAgcGhvZmYgPSByb3VuZHVwKHJjLCAob2ZmX3QpIGFsaWduKTsKPiAr
Cj4gKyAgICAgICAgICAgICAgIHJjID0gcGhvZmYgKyAob2ZmX3QpIGZzejsKPiArCj4gKyAgICAg
ICAgICAgICAgIHBoZHIgPSBfbGliZWxmX2dldHBoZHIoZSwgZWMpOwo+ICsKPiArICAgICAgICAg
ICAgICAgaWYgKCFfbGliZWxmX2luc2VydF9leHRlbnQoZXh0ZW50cywgRUxGX0VYVEVOVF9QSERS
LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICh1aW50NjRfdCkgcGhvZmYsIGZzeiwgcGhkcikp
Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgob2ZmX3QpIC0xKTsKPiArICAgICAg
IH0gZWxzZQo+ICsgICAgICAgICAgICAgICBwaG9mZiA9IDA7Cj4gKwo+ICsgICAgICAgLyoKPiAr
ICAgICAgICAqIENvbXB1dGUgdGhlIGxheW91dCBvZiB0aGUgc2VjdGlvbnMgYXNzb2NpYXRlZCB3
aXRoIHRoZQo+ICsgICAgICAgICogZmlsZS4KPiArICAgICAgICAqLwo+ICsKPiArICAgICAgIGlm
IChlLT5lX2NtZCAhPSBFTEZfQ19XUklURSAmJgo+ICsgICAgICAgICAgIChlLT5lX2ZsYWdzICYg
TElCRUxGX0ZfU0hEUlNfTE9BREVEKSA9PSAwICYmCj4gKyAgICAgICAgICAgX2xpYmVsZl9sb2Fk
X3NlY3Rpb25faGVhZGVycyhlLCBlaGRyKSA9PSAwKQo+ICsgICAgICAgICAgICAgICByZXR1cm4g
KChvZmZfdCkgLTEpOwo+ICsKPiArICAgICAgIGlmICgocmMgPSBfbGliZWxmX3Jlc3luY19zZWN0
aW9ucyhlLCByYywgZXh0ZW50cykpIDwgMCkKPiArICAgICAgICAgICAgICAgcmV0dXJuICgob2Zm
X3QpIC0xKTsKPiArCj4gKyAgICAgICAvKgo+ICsgICAgICAgICogQ29tcHV0ZSB0aGUgc3BhY2Ug
dGFrZW4gdXAgYnkgdGhlIHNlY3Rpb24gaGVhZGVyIHRhYmxlLCBpZgo+ICsgICAgICAgICogb25l
IGlzIG5lZWRlZC4KPiArICAgICAgICAqCj4gKyAgICAgICAgKiBJZiBFTEZfRl9MQVlPVVQgaGFz
IGJlZW4gYXNzZXJ0ZWQsIHRoZSBhcHBsaWNhdGlvbiBtYXkgaGF2ZQo+ICsgICAgICAgICogcGxh
Y2VkIHRoZSBzZWN0aW9uIGhlYWRlciB0YWJsZSBpbiBiZXR3ZWVuIGV4aXN0aW5nCj4gKyAgICAg
ICAgKiBzZWN0aW9ucywgc28gdGhlIG5ldCBzaXplIG9mIHRoZSBmaWxlIG5lZWQgbm90IGluY3Jl
YXNlIGR1ZQo+ICsgICAgICAgICogdG8gdGhlIHByZXNlbmNlIG9mIHRoZSBzZWN0aW9uIGhlYWRl
ciB0YWJsZS4KPiArICAgICAgICAqCj4gKyAgICAgICAgKiBJZiB0aGUgbGlicmFyeSBpcyByZXNw
b25zaWJsZSBmb3IgbGF5aW5nIG91dCB0aGUgb2JqZWN0LAo+ICsgICAgICAgICogdGhlIHNlY3Rp
b24gaGVhZGVyIHRhYmxlIGlzIHBsYWNlZCBhZnRlciBzZWN0aW9uIGRhdGEuCj4gKyAgICAgICAg
Ki8KPiArICAgICAgIGlmIChzaG51bSkgewo+ICsgICAgICAgICAgICAgICBmc3ogPSBfbGliZWxm
X2ZzaXplKEVMRl9UX1NIRFIsIGVjLCBlaF92ZXJzaW9uLCBzaG51bSk7Cj4gKyAgICAgICAgICAg
ICAgIGFsaWduID0gX2xpYmVsZl9mYWxpZ24oRUxGX1RfU0hEUiwgZWMpOwo+ICsKPiArICAgICAg
ICAgICAgICAgaWYgKGUtPmVfZmxhZ3MgJiBFTEZfRl9MQVlPVVQpIHsKPiArICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoc2hvZmYgJSAob2ZmX3QpIGFsaWduKSB7Cj4gKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBMSUJFTEZfU0VUX0VSUk9SKExBWU9VVCwgMCk7Cj4gKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKChvZmZfdCkgLTEpOwo+ICsgICAgICAgICAg
ICAgICAgICAgICAgIH0KPiArICAgICAgICAgICAgICAgfSBlbHNlCj4gKyAgICAgICAgICAgICAg
ICAgICAgICAgc2hvZmYgPSByb3VuZHVwKHJjLCAob2ZmX3QpIGFsaWduKTsKPiArCj4gKyAgICAg
ICAgICAgICAgIGlmIChzaG9mZiArIChvZmZfdCkgZnN6ID4gcmMpCj4gKyAgICAgICAgICAgICAg
ICAgICAgICAgcmMgPSBzaG9mZiArIChvZmZfdCkgZnN6Owo+ICsKPiArICAgICAgICAgICAgICAg
aWYgKCFfbGliZWxmX2luc2VydF9leHRlbnQoZXh0ZW50cywgRUxGX0VYVEVOVF9TSERSLAo+ICsg
ICAgICAgICAgICAgICAgICAgICAgICh1aW50NjRfdCkgc2hvZmYsIGZzeiwgTlVMTCkpCj4gKyAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgob2ZmX3QpIC0xKTsKPiArICAgICAgIH0gZWxz
ZQo+ICsgICAgICAgICAgICAgICBzaG9mZiA9IDA7Cj4gKwo+ICsgICAgICAgLyoKPiArICAgICAg
ICAqIFNldCB0aGUgZmllbGRzIG9mIHRoZSBFeGVjdXRhYmxlIEhlYWRlciB0aGF0IGNvdWxkIHBv
dGVudGlhbGx5IHVzZQo+ICsgICAgICAgICogZXh0ZW5kZWQgbnVtYmVyaW5nLgo+ICsgICAgICAg
ICovCj4gKyAgICAgICBfbGliZWxmX3NldHBobnVtKGUsIGVoZHIsIGVjLCBwaG51bSk7Cj4gKyAg
ICAgICBfbGliZWxmX3NldHNobnVtKGUsIGVoZHIsIGVjLCBzaG51bSk7Cj4gKwo+ICsgICAgICAg
LyoKPiArICAgICAgICAqIFVwZGF0ZSB0aGUgYGVfcGhvZmYnIGFuZCBgZV9zaG9mZicgZmllbGRz
IGlmIHRoZSBsaWJyYXJ5IGlzCj4gKyAgICAgICAgKiBkb2luZyB0aGUgbGF5b3V0Lgo+ICsgICAg
ICAgICovCj4gKyAgICAgICBpZiAoKGUtPmVfZmxhZ3MgJiBFTEZfRl9MQVlPVVQpID09IDApIHsK
PiArICAgICAgICAgICAgICAgaWYgKGVjID09IEVMRkNMQVNTMzIpIHsKPiArICAgICAgICAgICAg
ICAgICAgICAgICBlaDMyLT5lX3Bob2ZmID0gKHVpbnQzMl90KSBwaG9mZjsKPiArICAgICAgICAg
ICAgICAgICAgICAgICBlaDMyLT5lX3Nob2ZmID0gKHVpbnQzMl90KSBzaG9mZjsKPiArICAgICAg
ICAgICAgICAgfSBlbHNlIHsKPiArICAgICAgICAgICAgICAgICAgICAgICBlaDY0LT5lX3Bob2Zm
ID0gKHVpbnQ2NF90KSBwaG9mZjsKPiArICAgICAgICAgICAgICAgICAgICAgICBlaDY0LT5lX3No
b2ZmID0gKHVpbnQ2NF90KSBzaG9mZjsKPiArICAgICAgICAgICAgICAgfQo+ICsgICAgICAgfQo+
ICsKPiArICAgICAgIHJldHVybiAocmMpOwo+ICt9Cj4gKwo+ICsvKgo+ICsgKiBXcml0ZSBvdXQg
dGhlIGNvbnRlbnRzIG9mIGFuIEVMRiBzZWN0aW9uLgo+ICsgKi8KPiArCj4gK3N0YXRpYyBvZmZf
dAo+ICtfbGliZWxmX3dyaXRlX3NjbihFbGYgKmUsIHVuc2lnbmVkIGNoYXIgKm5mLCBzdHJ1Y3Qg
X0VsZl9FeHRlbnQgKmV4KQo+ICt7Cj4gKyAgICAgICBpbnQgZWM7Cj4gKyAgICAgICBvZmZfdCBy
YzsKPiArICAgICAgIEVsZl9TY24gKnM7Cj4gKyAgICAgICBpbnQgZWxmdHlwZTsKPiArICAgICAg
IEVsZl9EYXRhICpkLCBkc3Q7Cj4gKyAgICAgICB1aW50MzJfdCBzaF90eXBlOwo+ICsgICAgICAg
c3RydWN0IF9MaWJlbGZfRGF0YSAqbGQ7Cj4gKyAgICAgICB1aW50NjRfdCBzaF9vZmYsIHNoX3Np
emU7Cj4gKyAgICAgICBzaXplX3QgZnN6LCBtc3osIG5vYmplY3RzOwo+ICsKPiArICAgICAgIGFz
c2VydChleC0+ZXhfdHlwZSA9PSBFTEZfRVhURU5UX1NFQ1RJT04pOwo+ICsKPiArICAgICAgIHMg
PSBleC0+ZXhfZGVzYzsKPiArICAgICAgIHJjID0gKG9mZl90KSBleC0+ZXhfc3RhcnQ7Cj4gKwo+
ICsgICAgICAgaWYgKChlYyA9IGUtPmVfY2xhc3MpID09IEVMRkNMQVNTMzIpIHsKPiArICAgICAg
ICAgICAgICAgc2hfdHlwZSA9IHMtPnNfc2hkci5zX3NoZHIzMi5zaF90eXBlOwo+ICsgICAgICAg
ICAgICAgICBzaF9zaXplID0gKHVpbnQ2NF90KSBzLT5zX3NoZHIuc19zaGRyMzIuc2hfc2l6ZTsK
PiArICAgICAgIH0gZWxzZSB7Cj4gKyAgICAgICAgICAgICAgIHNoX3R5cGUgPSBzLT5zX3NoZHIu
c19zaGRyNjQuc2hfdHlwZTsKPiArICAgICAgICAgICAgICAgc2hfc2l6ZSA9IHMtPnNfc2hkci5z
X3NoZHI2NC5zaF9zaXplOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIC8qCj4gKyAgICAgICAg
KiBJZ25vcmUgc2VjdGlvbnMgdGhhdCBkbyBub3QgYWxsb2NhdGUgc3BhY2UgaW4gdGhlIGZpbGUu
Cj4gKyAgICAgICAgKi8KPiArICAgICAgIGlmIChzaF90eXBlID09IFNIVF9OT0JJVFMgfHwgc2hf
dHlwZSA9PSBTSFRfTlVMTCB8fCBzaF9zaXplID09IDApCj4gKyAgICAgICAgICAgICAgIHJldHVy
biAocmMpOwo+ICsKPiArICAgICAgIGVsZnR5cGUgPSBfbGliZWxmX3hsYXRlX3NodHlwZShzaF90
eXBlKTsKPiArICAgICAgIGFzc2VydChlbGZ0eXBlID49IEVMRl9UX0ZJUlNUICYmIGVsZnR5cGUg
PD0gRUxGX1RfTEFTVCk7Cj4gKwo+ICsgICAgICAgc2hfb2ZmID0gcy0+c19vZmZzZXQ7Cj4gKyAg
ICAgICBhc3NlcnQoc2hfb2ZmICUgX2xpYmVsZl9mYWxpZ24oZWxmdHlwZSwgZWMpID09IDApOwo+
ICsKPiArICAgICAgIC8qCj4gKyAgICAgICAgKiBJZiB0aGUgc2VjdGlvbiBoYXMgYSBgcmF3ZGF0
YScgZGVzY3JpcHRvciwgYW5kIHRoZSBzZWN0aW9uCj4gKyAgICAgICAgKiBjb250ZW50cyBoYXZl
IG5vdCBiZWVuIG1vZGlmaWVkLCB1c2UgaXRzIGNvbnRlbnRzIGRpcmVjdGx5Lgo+ICsgICAgICAg
ICogVGhlIGBzX3Jhd29mZicgbWVtYmVyIGNvbnRhaW5zIHRoZSBvZmZzZXQgaW50byB0aGUgb3Jp
Z2luYWwKPiArICAgICAgICAqIGZpbGUsIHdoaWxlIGBzX29mZnNldCcgY29udGFpbnMgaXRzIG5l
dyBsb2NhdGlvbiBpbiB0aGUKPiArICAgICAgICAqIGRlc3RpbmF0aW9uLgo+ICsgICAgICAgICov
Cj4gKwo+ICsgICAgICAgaWYgKFNUQUlMUV9FTVBUWSgmcy0+c19kYXRhKSkgewo+ICsKPiArICAg
ICAgICAgICAgICAgaWYgKChkID0gZWxmX3Jhd2RhdGEocywgTlVMTCkpID09IE5VTEwpCj4gKyAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgob2ZmX3QpIC0xKTsKPiArCj4gKyAgICAgICAg
ICAgICAgIFNUQUlMUV9GT1JFQUNIKGxkLCAmcy0+c19yYXdkYXRhLCBkX25leHQpIHsKPiArCj4g
KyAgICAgICAgICAgICAgICAgICAgICAgZCA9ICZsZC0+ZF9kYXRhOwo+ICsKPiArICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoKHVpbnQ2NF90KSByYyA8IHNoX29mZiArIGQtPmRfb2ZmKQo+ICsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQpIG1lbXNldChuZiArIHJjLAo+ICsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExJQkVMRl9QUklWQVRFKGZpbGxjaGFy
KSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2l6ZV90KSAoc2hfb2Zm
ICsgZC0+ZF9vZmYgLQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
dWludDY0X3QpIHJjKSk7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgcmMgPSAob2ZmX3QpIChz
aF9vZmYgKyBkLT5kX29mZik7Cj4gKwo+ICsgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydChk
LT5kX2J1ZiAhPSBOVUxMKTsKPiArICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQoZC0+ZF90
eXBlID09IEVMRl9UX0JZVEUpOwo+ICsgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydChkLT5k
X3ZlcnNpb24gPT0gZS0+ZV92ZXJzaW9uKTsKPiArCj4gKyAgICAgICAgICAgICAgICAgICAgICAg
KHZvaWQpIG1lbWNweShuZiArIHJjLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICBlLT5l
X3Jhd2ZpbGUgKyBzLT5zX3Jhd29mZiArIGQtPmRfb2ZmLAo+ICsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAoc2l6ZV90KSBkLT5kX3NpemUpOwo+ICsKPiArICAgICAgICAgICAgICAgICAgICAg
ICByYyArPSAob2ZmX3QpIGQtPmRfc2l6ZTsKPiArICAgICAgICAgICAgICAgfQo+ICsKPiArICAg
ICAgICAgICAgICAgcmV0dXJuIChyYyk7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgLyoKPiAr
ICAgICAgICAqIEl0ZXJhdGUgb3ZlciB0aGUgc2V0IG9mIGRhdGEgZGVzY3JpcHRvcnMgZm9yIHRo
aXMgc2VjdGlvbi4KPiArICAgICAgICAqIFRoZSBwcmlvciBjYWxsIHRvIF9saWJlbGZfcmVzeW5j
X2VsZigpIHdvdWxkIGhhdmUgc2V0dXAgdGhlCj4gKyAgICAgICAgKiBkZXNjcmlwdG9ycyBmb3Ig
dGhpcyBzdGVwLgo+ICsgICAgICAgICovCj4gKwo+ICsgICAgICAgZHN0LmRfdmVyc2lvbiA9IGUt
PmVfdmVyc2lvbjsKPiArCj4gKyAgICAgICBTVEFJTFFfRk9SRUFDSChsZCwgJnMtPnNfZGF0YSwg
ZF9uZXh0KSB7Cj4gKwo+ICsgICAgICAgICAgICAgICBkID0gJmxkLT5kX2RhdGE7Cj4gKwo+ICsg
ICAgICAgICAgICAgICBtc3ogPSBfbGliZWxmX21zaXplKGQtPmRfdHlwZSwgZWMsIGUtPmVfdmVy
c2lvbik7Cj4gKwo+ICsgICAgICAgICAgICAgICBpZiAoKHVpbnQ2NF90KSByYyA8IHNoX29mZiAr
IGQtPmRfb2ZmKQo+ICsgICAgICAgICAgICAgICAgICAgICAgICh2b2lkKSBtZW1zZXQobmYgKyBy
YywKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgTElCRUxGX1BSSVZBVEUoZmlsbGNoYXIp
LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2l6ZV90KSAoc2hfb2ZmICsgZC0+ZF9v
ZmYgLSAodWludDY0X3QpIHJjKSk7Cj4gKwo+ICsgICAgICAgICAgICAgICByYyA9IChvZmZfdCkg
KHNoX29mZiArIGQtPmRfb2ZmKTsKPiArCj4gKyAgICAgICAgICAgICAgIGFzc2VydChkLT5kX2J1
ZiAhPSBOVUxMKTsKPiArICAgICAgICAgICAgICAgYXNzZXJ0KGQtPmRfdmVyc2lvbiA9PSBlLT5l
X3ZlcnNpb24pOwo+ICsgICAgICAgICAgICAgICBhc3NlcnQoZC0+ZF9zaXplICUgbXN6ID09IDAp
Owo+ICsKPiArICAgICAgICAgICAgICAgbm9iamVjdHMgPSAoc2l6ZV90KSAoZC0+ZF9zaXplIC8g
bXN6KTsKPiArCj4gKyAgICAgICAgICAgICAgIGZzeiA9IF9saWJlbGZfZnNpemUoZC0+ZF90eXBl
LCBlYywgZS0+ZV92ZXJzaW9uLCBub2JqZWN0cyk7Cj4gKwo+ICsgICAgICAgICAgICAgICBkc3Qu
ZF9idWYgICAgPSBuZiArIHJjOwo+ICsgICAgICAgICAgICAgICBkc3QuZF9zaXplICAgPSBmc3o7
Cj4gKwo+ICsgICAgICAgICAgICAgICBpZiAoX2xpYmVsZl94bGF0ZSgmZHN0LCBkLCBlLT5lX2J5
dGVvcmRlciwgZWMsIEVMRl9UT0ZJTEUpID09Cj4gKyAgICAgICAgICAgICAgICAgICBOVUxMKQo+
ICsgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoKG9mZl90KSAtMSk7Cj4gKwo+ICsgICAg
ICAgICAgICAgICByYyArPSAob2ZmX3QpIGZzejsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICBy
ZXR1cm4gKHJjKTsKPiArfQo+ICsKPiArLyoKPiArICogV3JpdGUgb3V0IGFuIEVMRiBFeGVjdXRh
YmxlIEhlYWRlci4KPiArICovCj4gKwo+ICtzdGF0aWMgb2ZmX3QKPiArX2xpYmVsZl93cml0ZV9l
aGRyKEVsZiAqZSwgdW5zaWduZWQgY2hhciAqbmYsIHN0cnVjdCBfRWxmX0V4dGVudCAqZXgpCj4g
K3sKPiArICAgICAgIGludCBlYzsKPiArICAgICAgIHZvaWQgKmVoZHI7Cj4gKyAgICAgICBzaXpl
X3QgZnN6LCBtc3o7Cj4gKyAgICAgICBFbGZfRGF0YSBkc3QsIHNyYzsKPiArCj4gKyAgICAgICBh
c3NlcnQoZXgtPmV4X3R5cGUgPT0gRUxGX0VYVEVOVF9FSERSKTsKPiArICAgICAgIGFzc2VydChl
eC0+ZXhfc3RhcnQgPT0gMCk7IC8qIEVoZHIgYWx3YXlzIGNvbWVzIGZpcnN0LiAqLwo+ICsKPiAr
ICAgICAgIGVjID0gZS0+ZV9jbGFzczsKPiArCj4gKyAgICAgICBlaGRyID0gX2xpYmVsZl9laGRy
KGUsIGVjLCAwKTsKPiArICAgICAgIGFzc2VydChlaGRyICE9IE5VTEwpOwo+ICsKPiArICAgICAg
IGZzeiA9IF9saWJlbGZfZnNpemUoRUxGX1RfRUhEUiwgZWMsIGUtPmVfdmVyc2lvbiwgKHNpemVf
dCkgMSk7Cj4gKyAgICAgICBtc3ogPSBfbGliZWxmX21zaXplKEVMRl9UX0VIRFIsIGVjLCBlLT5l
X3ZlcnNpb24pOwo+ICsKPiArICAgICAgICh2b2lkKSBtZW1zZXQoJmRzdCwgMCwgc2l6ZW9mKGRz
dCkpOwo+ICsgICAgICAgKHZvaWQpIG1lbXNldCgmc3JjLCAwLCBzaXplb2Yoc3JjKSk7Cj4gKwo+
ICsgICAgICAgc3JjLmRfYnVmICAgICA9IGVoZHI7Cj4gKyAgICAgICBzcmMuZF9zaXplICAgID0g
bXN6Owo+ICsgICAgICAgc3JjLmRfdHlwZSAgICA9IEVMRl9UX0VIRFI7Cj4gKyAgICAgICBzcmMu
ZF92ZXJzaW9uID0gZHN0LmRfdmVyc2lvbiA9IGUtPmVfdmVyc2lvbjsKPiArCj4gKyAgICAgICBk
c3QuZF9idWYgICAgID0gbmY7Cj4gKyAgICAgICBkc3QuZF9zaXplICAgID0gZnN6Owo+ICsKPiAr
ICAgICAgIGlmIChfbGliZWxmX3hsYXRlKCZkc3QsICZzcmMsIGUtPmVfYnl0ZW9yZGVyLCBlYywg
RUxGX1RPRklMRSkgPT0KPiArICAgICAgICAgICBOVUxMKQo+ICsgICAgICAgICAgICAgICByZXR1
cm4gKChvZmZfdCkgLTEpOwo+ICsKPiArICAgICAgIHJldHVybiAoKG9mZl90KSBmc3opOwo+ICt9
Cj4gKwo+ICsvKgo+ICsgKiBXcml0ZSBvdXQgYW4gRUxGIHByb2dyYW0gaGVhZGVyIHRhYmxlLgo+
ICsgKi8KPiArCj4gK3N0YXRpYyBvZmZfdAo+ICtfbGliZWxmX3dyaXRlX3BoZHIoRWxmICplLCB1
bnNpZ25lZCBjaGFyICpuZiwgc3RydWN0IF9FbGZfRXh0ZW50ICpleCkKPiArewo+ICsgICAgICAg
aW50IGVjOwo+ICsgICAgICAgdm9pZCAqZWhkcjsKPiArICAgICAgIEVsZjMyX0VoZHIgKmVoMzI7
Cj4gKyAgICAgICBFbGY2NF9FaGRyICplaDY0Owo+ICsgICAgICAgRWxmX0RhdGEgZHN0LCBzcmM7
Cj4gKyAgICAgICBzaXplX3QgZnN6LCBwaG51bTsKPiArICAgICAgIHVpbnQ2NF90IHBob2ZmOwo+
ICsKPiArICAgICAgIGFzc2VydChleC0+ZXhfdHlwZSA9PSBFTEZfRVhURU5UX1BIRFIpOwo+ICsK
PiArICAgICAgIGVjID0gZS0+ZV9jbGFzczsKPiArICAgICAgIGVoZHIgPSBfbGliZWxmX2VoZHIo
ZSwgZWMsIDApOwo+ICsgICAgICAgcGhudW0gPSBlLT5lX3UuZV9lbGYuZV9ucGhkcjsKPiArCj4g
KyAgICAgICBhc3NlcnQocGhudW0gPiAwKTsKPiArCj4gKyAgICAgICBpZiAoZWMgPT0gRUxGQ0xB
U1MzMikgewo+ICsgICAgICAgICAgICAgICBlaDMyID0gKEVsZjMyX0VoZHIgKikgZWhkcjsKPiAr
ICAgICAgICAgICAgICAgcGhvZmYgPSAodWludDY0X3QpIGVoMzItPmVfcGhvZmY7Cj4gKyAgICAg
ICB9IGVsc2Ugewo+ICsgICAgICAgICAgICAgICBlaDY0ID0gKEVsZjY0X0VoZHIgKikgZWhkcjsK
PiArICAgICAgICAgICAgICAgcGhvZmYgPSBlaDY0LT5lX3Bob2ZmOwo+ICsgICAgICAgfQo+ICsK
PiArICAgICAgIGFzc2VydChwaG9mZiA+IDApOwo+ICsgICAgICAgYXNzZXJ0KGV4LT5leF9zdGFy
dCA9PSBwaG9mZik7Cj4gKyAgICAgICBhc3NlcnQocGhvZmYgJSBfbGliZWxmX2ZhbGlnbihFTEZf
VF9QSERSLCBlYykgPT0gMCk7Cj4gKwo+ICsgICAgICAgKHZvaWQpIG1lbXNldCgmZHN0LCAwLCBz
aXplb2YoZHN0KSk7Cj4gKyAgICAgICAodm9pZCkgbWVtc2V0KCZzcmMsIDAsIHNpemVvZihzcmMp
KTsKPiArCj4gKyAgICAgICBmc3ogPSBfbGliZWxmX2ZzaXplKEVMRl9UX1BIRFIsIGVjLCBlLT5l
X3ZlcnNpb24sIHBobnVtKTsKPiArICAgICAgIGFzc2VydChmc3ogPiAwKTsKPiArCj4gKyAgICAg
ICBzcmMuZF9idWYgPSBfbGliZWxmX2dldHBoZHIoZSwgZWMpOwo+ICsgICAgICAgc3JjLmRfdmVy
c2lvbiA9IGRzdC5kX3ZlcnNpb24gPSBlLT5lX3ZlcnNpb247Cj4gKyAgICAgICBzcmMuZF90eXBl
ID0gRUxGX1RfUEhEUjsKPiArICAgICAgIHNyYy5kX3NpemUgPSBwaG51bSAqIF9saWJlbGZfbXNp
emUoRUxGX1RfUEhEUiwgZWMsCj4gKyAgICAgICAgICAgZS0+ZV92ZXJzaW9uKTsKPiArCj4gKyAg
ICAgICBkc3QuZF9zaXplID0gZnN6Owo+ICsgICAgICAgZHN0LmRfYnVmID0gbmYgKyBleC0+ZXhf
c3RhcnQ7Cj4gKwo+ICsgICAgICAgaWYgKF9saWJlbGZfeGxhdGUoJmRzdCwgJnNyYywgZS0+ZV9i
eXRlb3JkZXIsIGVjLCBFTEZfVE9GSUxFKSA9PQo+ICsgICAgICAgICAgIE5VTEwpCj4gKyAgICAg
ICAgICAgICAgIHJldHVybiAoKG9mZl90KSAtMSk7Cj4gKwo+ICsgICAgICAgcmV0dXJuICgob2Zm
X3QpIChwaG9mZiArIGZzeikpOwo+ICt9Cj4gKwo+ICsvKgo+ICsgKiBXcml0ZSBvdXQgYW4gRUxG
IHNlY3Rpb24gaGVhZGVyIHRhYmxlLgo+ICsgKi8KPiArCj4gK3N0YXRpYyBvZmZfdAo+ICtfbGli
ZWxmX3dyaXRlX3NoZHIoRWxmICplLCB1bnNpZ25lZCBjaGFyICpuZiwgc3RydWN0IF9FbGZfRXh0
ZW50ICpleCkKPiArewo+ICsgICAgICAgaW50IGVjOwo+ICsgICAgICAgdm9pZCAqZWhkcjsKPiAr
ICAgICAgIEVsZl9TY24gKnNjbjsKPiArICAgICAgIHVpbnQ2NF90IHNob2ZmOwo+ICsgICAgICAg
RWxmMzJfRWhkciAqZWgzMjsKPiArICAgICAgIEVsZjY0X0VoZHIgKmVoNjQ7Cj4gKyAgICAgICBz
aXplX3QgZnN6LCBuc2NuOwo+ICsgICAgICAgRWxmX0RhdGEgZHN0LCBzcmM7Cj4gKwo+ICsgICAg
ICAgYXNzZXJ0KGV4LT5leF90eXBlID09IEVMRl9FWFRFTlRfU0hEUik7Cj4gKwo+ICsgICAgICAg
ZWMgPSBlLT5lX2NsYXNzOwo+ICsgICAgICAgZWhkciA9IF9saWJlbGZfZWhkcihlLCBlYywgMCk7
Cj4gKyAgICAgICBuc2NuID0gZS0+ZV91LmVfZWxmLmVfbnNjbjsKPiArCj4gKyAgICAgICBpZiAo
ZWMgPT0gRUxGQ0xBU1MzMikgewo+ICsgICAgICAgICAgICAgICBlaDMyID0gKEVsZjMyX0VoZHIg
KikgZWhkcjsKPiArICAgICAgICAgICAgICAgc2hvZmYgPSAodWludDY0X3QpIGVoMzItPmVfc2hv
ZmY7Cj4gKyAgICAgICB9IGVsc2Ugewo+ICsgICAgICAgICAgICAgICBlaDY0ID0gKEVsZjY0X0Vo
ZHIgKikgZWhkcjsKPiArICAgICAgICAgICAgICAgc2hvZmYgPSBlaDY0LT5lX3Nob2ZmOwo+ICsg
ICAgICAgfQo+ICsKPiArICAgICAgIGFzc2VydChuc2NuID4gMCk7Cj4gKyAgICAgICBhc3NlcnQo
c2hvZmYgJSBfbGliZWxmX2ZhbGlnbihFTEZfVF9TSERSLCBlYykgPT0gMCk7Cj4gKyAgICAgICBh
c3NlcnQoZXgtPmV4X3N0YXJ0ID09IHNob2ZmKTsKPiArCj4gKyAgICAgICAodm9pZCkgbWVtc2V0
KCZkc3QsIDAsIHNpemVvZihkc3QpKTsKPiArICAgICAgICh2b2lkKSBtZW1zZXQoJnNyYywgMCwg
c2l6ZW9mKHNyYykpOwo+ICsKPiArICAgICAgIHNyYy5kX3R5cGUgPSBFTEZfVF9TSERSOwo+ICsg
ICAgICAgc3JjLmRfc2l6ZSA9IF9saWJlbGZfbXNpemUoRUxGX1RfU0hEUiwgZWMsIGUtPmVfdmVy
c2lvbik7Cj4gKyAgICAgICBzcmMuZF92ZXJzaW9uID0gZHN0LmRfdmVyc2lvbiA9IGUtPmVfdmVy
c2lvbjsKPiArCj4gKyAgICAgICBmc3ogPSBfbGliZWxmX2ZzaXplKEVMRl9UX1NIRFIsIGVjLCBl
LT5lX3ZlcnNpb24sIChzaXplX3QpIDEpOwo+ICsKPiArICAgICAgIFNUQUlMUV9GT1JFQUNIKHNj
biwgJmUtPmVfdS5lX2VsZi5lX3Njbiwgc19uZXh0KSB7Cj4gKyAgICAgICAgICAgICAgIGlmIChl
YyA9PSBFTEZDTEFTUzMyKQo+ICsgICAgICAgICAgICAgICAgICAgICAgIHNyYy5kX2J1ZiA9ICZz
Y24tPnNfc2hkci5zX3NoZHIzMjsKPiArICAgICAgICAgICAgICAgZWxzZQo+ICsgICAgICAgICAg
ICAgICAgICAgICAgIHNyYy5kX2J1ZiA9ICZzY24tPnNfc2hkci5zX3NoZHI2NDsKPiArCj4gKyAg
ICAgICAgICAgICAgIGRzdC5kX3NpemUgPSBmc3o7Cj4gKyAgICAgICAgICAgICAgIGRzdC5kX2J1
ZiA9IG5mICsgZXgtPmV4X3N0YXJ0ICsgc2NuLT5zX25keCAqIGZzejsKPiArCj4gKyAgICAgICAg
ICAgICAgIGlmIChfbGliZWxmX3hsYXRlKCZkc3QsICZzcmMsIGUtPmVfYnl0ZW9yZGVyLCBlYywK
PiArICAgICAgICAgICAgICAgICAgIEVMRl9UT0ZJTEUpID09IE5VTEwpCj4gKyAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuICgob2ZmX3QpIC0xKTsKPiArICAgICAgIH0KPiArCj4gKyAgICAg
ICByZXR1cm4gKChvZmZfdCkgKGV4LT5leF9zdGFydCArIG5zY24gKiBmc3opKTsKPiArfQo+ICsK
PiArLyoKPiArICogV3JpdGUgb3V0IHRoZSBmaWxlIGltYWdlLgo+ICsgKgo+ICsgKiBUaGUgb3Jp
Z2luYWwgZmlsZSBjb3VsZCBoYXZlIGJlZW4gbWFwcGVkIGluIHdpdGggYW4gRUxGX0NfUkRXUgo+
ICsgKiBjb21tYW5kIGFuZCB0aGUgYXBwbGljYXRpb24gY291bGQgaGF2ZSBhZGRlZCBuZXcgY29u
dGVudCBvcgo+ICsgKiByZS1hcnJhbmdlZCBpdHMgc2VjdGlvbnMgYmVmb3JlIGNhbGxpbmcgZWxm
X3VwZGF0ZSgpLiAgQ29uc2VxdWVudGx5Cj4gKyAqIGl0cyBub3Qgc2FmZSB0byB3b3JrIGBpbiBw
bGFjZScgb24gdGhlIG9yaWdpbmFsIGZpbGUuICBTbyB3ZQo+ICsgKiBtYWxsb2MoKSB0aGUgcmVx
dWlyZWQgc3BhY2UgZm9yIHRoZSB1cGRhdGVkIEVMRiBvYmplY3QgYW5kIGJ1aWxkCj4gKyAqIHRo
ZSBvYmplY3QgdGhlcmUgYW5kIHdyaXRlIGl0IG91dCB0byB0aGUgdW5kZXJseWluZyBmaWxlIGF0
IHRoZQo+ICsgKiBlbmQuICBOb3RlIHRoYXQgdGhlIGFwcGxpY2F0aW9uIG1heSBoYXZlIG9wZW5l
ZCB0aGUgdW5kZXJseWluZyBmaWxlCj4gKyAqIGluIEVMRl9DX1JEV1IgYW5kIG9ubHkgcmV0cmll
dmVkL21vZGlmaWVkIGEgZmV3IHNlY3Rpb25zLiAgV2UgdGFrZQo+ICsgKiBjYXJlIHRvIGF2b2lk
IHRyYW5zbGF0aW5nIGZpbGUgc2VjdGlvbnMgdW5uZWNlc3NhcmlseS4KPiArICoKPiArICogR2Fw
cyBpbiB0aGUgY292ZXJhZ2Ugb2YgdGhlIGZpbGUgYnkgdGhlIGZpbGUncyBzZWN0aW9ucyB3aWxs
IGJlCj4gKyAqIGZpbGxlZCB3aXRoIHRoZSBmaWxsIGNoYXJhY3RlciBzZXQgYnkgZWxmX2ZpbGwo
MykuCj4gKyAqLwo+ICsKPiArc3RhdGljIG9mZl90Cj4gK19saWJlbGZfd3JpdGVfZWxmKEVsZiAq
ZSwgb2ZmX3QgbmV3c2l6ZSwgc3RydWN0IF9FbGZfRXh0ZW50X0xpc3QgKmV4dGVudHMpCj4gK3sK
PiArICAgICAgIG9mZl90IG5yYywgcmM7Cj4gKyAgICAgICBFbGZfU2NuICpzY24sICp0c2NuOwo+
ICsgICAgICAgc3RydWN0IF9FbGZfRXh0ZW50ICpleDsKPiArICAgICAgIHVuc2lnbmVkIGNoYXIg
Km5ld2ZpbGU7Cj4gKwo+ICsgICAgICAgYXNzZXJ0KGUtPmVfa2luZCA9PSBFTEZfS19FTEYpOwo+
ICsgICAgICAgYXNzZXJ0KGUtPmVfY21kID09IEVMRl9DX1JEV1IgfHwgZS0+ZV9jbWQgPT0gRUxG
X0NfV1JJVEUpOwo+ICsgICAgICAgYXNzZXJ0KGUtPmVfZmQgPj0gMCk7Cj4gKwo+ICsgICAgICAg
aWYgKChuZXdmaWxlID0gbWFsbG9jKChzaXplX3QpIG5ld3NpemUpKSA9PSBOVUxMKSB7Cj4gKyAg
ICAgICAgICAgICAgIExJQkVMRl9TRVRfRVJST1IoUkVTT1VSQ0UsIGVycm5vKTsKPiArICAgICAg
ICAgICAgICAgcmV0dXJuICgob2ZmX3QpIC0xKTsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICBu
cmMgPSByYyA9IDA7Cj4gKyAgICAgICBTTElTVF9GT1JFQUNIKGV4LCBleHRlbnRzLCBleF9uZXh0
KSB7Cj4gKwo+ICsgICAgICAgICAgICAgICAvKiBGaWxsIGludGVyLWV4dGVudCBnYXBzLiAqLwo+
ICsgICAgICAgICAgICAgICBpZiAoZXgtPmV4X3N0YXJ0ID4gKHNpemVfdCkgcmMpCj4gKyAgICAg
ICAgICAgICAgICAgICAgICAgKHZvaWQpIG1lbXNldChuZXdmaWxlICsgcmMsIExJQkVMRl9QUklW
QVRFKGZpbGxjaGFyKSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNpemVfdCkgKGV4
LT5leF9zdGFydCAtICh1aW50NjRfdCkgcmMpKTsKPiArCj4gKyAgICAgICAgICAgICAgIHN3aXRj
aCAoZXgtPmV4X3R5cGUpIHsKPiArICAgICAgICAgICAgICAgY2FzZSBFTEZfRVhURU5UX0VIRFI6
Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgaWYgKChucmMgPSBfbGliZWxmX3dyaXRlX2VoZHIo
ZSwgbmV3ZmlsZSwgZXgpKSA8IDApCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
b3RvIGVycm9yOwo+ICsgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ICsKPiArICAgICAg
ICAgICAgICAgY2FzZSBFTEZfRVhURU5UX1BIRFI6Cj4gKyAgICAgICAgICAgICAgICAgICAgICAg
aWYgKChucmMgPSBfbGliZWxmX3dyaXRlX3BoZHIoZSwgbmV3ZmlsZSwgZXgpKSA8IDApCj4gKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwo+ICsgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwo+ICsKPiArICAgICAgICAgICAgICAgY2FzZSBFTEZfRVhURU5UX1NF
Q1RJT046Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgaWYgKChucmMgPSBfbGliZWxmX3dyaXRl
X3NjbihlLCBuZXdmaWxlLCBleCkpIDwgMCkKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdvdG8gZXJyb3I7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gKwo+ICsg
ICAgICAgICAgICAgICBjYXNlIEVMRl9FWFRFTlRfU0hEUjoKPiArICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoKG5yYyA9IF9saWJlbGZfd3JpdGVfc2hkcihlLCBuZXdmaWxlLCBleCkpIDwgMCkK
PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Cj4gKyAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Cj4gKwo+ICsgICAgICAgICAgICAgICBkZWZhdWx0Ogo+ICsg
ICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCgwKTsKPiArICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKPiArICAgICAgICAgICAgICAgfQo+ICsKPiArICAgICAgICAgICAgICAgYXNzZXJ0
KGV4LT5leF9zdGFydCArIGV4LT5leF9zaXplID09IChzaXplX3QpIG5yYyk7Cj4gKyAgICAgICAg
ICAgICAgIGFzc2VydChyYyA8IG5yYyk7Cj4gKwo+ICsgICAgICAgICAgICAgICByYyA9IG5yYzsK
PiArICAgICAgIH0KPiArCj4gKyAgICAgICBhc3NlcnQocmMgPT0gbmV3c2l6ZSk7Cj4gKwo+ICsg
ICAgICAgLyoKPiArICAgICAgICAqIEZvciByZWd1bGFyIGZpbGVzLCB0aHJvdyBhd2F5IGV4aXN0
aW5nIGZpbGUgY29udGVudCBhbmQKPiArICAgICAgICAqIHVubWFwIGFueSBleGlzdGluZyBtYXBw
aW5ncy4KPiArICAgICAgICAqLwo+ICsgICAgICAgaWYgKChlLT5lX2ZsYWdzICYgTElCRUxGX0Zf
U1BFQ0lBTF9GSUxFKSA9PSAwKSB7Cj4gKyAgICAgICAgICAgICAgIGlmIChmdHJ1bmNhdGUoZS0+
ZV9mZCwgKG9mZl90KSAwKSA8IDAgfHwKPiArICAgICAgICAgICAgICAgICAgIGxzZWVrKGUtPmVf
ZmQsIChvZmZfdCkgMCwgU0VFS19TRVQpKSB7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgTElC
RUxGX1NFVF9FUlJPUihJTywgZXJybm8pOwo+ICsgICAgICAgICAgICAgICAgICAgICAgIGdvdG8g
ZXJyb3I7Cj4gKyAgICAgICAgICAgICAgIH0KPiArI2lmICAgIEVMRlRDX0hBVkVfTU1BUAo+ICsg
ICAgICAgICAgICAgICBpZiAoZS0+ZV9mbGFncyAmIExJQkVMRl9GX1JBV0ZJTEVfTU1BUCkgewo+
ICsgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydChlLT5lX3Jhd2ZpbGUgIT0gTlVMTCk7Cj4g
KyAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KGUtPmVfY21kID09IEVMRl9DX1JEV1IpOwo+
ICsgICAgICAgICAgICAgICAgICAgICAgIGlmIChtdW5tYXAoZS0+ZV9yYXdmaWxlLCBlLT5lX3Jh
d3NpemUpIDwgMCkgewo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTElCRUxGX1NF
VF9FUlJPUihJTywgZXJybm8pOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290
byBlcnJvcjsKPiArICAgICAgICAgICAgICAgICAgICAgICB9Cj4gKyAgICAgICAgICAgICAgIH0K
PiArI2VuZGlmCj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgLyoKPiArICAgICAgICAqIFdyaXRl
IG91dCB0aGUgbmV3IGNvbnRlbnRzLgo+ICsgICAgICAgICovCj4gKyAgICAgICBpZiAod3JpdGUo
ZS0+ZV9mZCwgbmV3ZmlsZSwgKHNpemVfdCkgbmV3c2l6ZSkgIT0gbmV3c2l6ZSkgewo+ICsgICAg
ICAgICAgICAgICBMSUJFTEZfU0VUX0VSUk9SKElPLCBlcnJubyk7Cj4gKyAgICAgICAgICAgICAg
IGdvdG8gZXJyb3I7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgLyoKPiArICAgICAgICAqIEZv
ciBmaWxlcyBvcGVuZWQgaW4gRUxGX0NfUkRXUiBtb2RlLCBzZXQgdXAgdGhlIG5ldyAncmF3Jwo+
ICsgICAgICAgICogY29udGVudHMuCj4gKyAgICAgICAgKi8KPiArICAgICAgIGlmIChlLT5lX2Nt
ZCA9PSBFTEZfQ19SRFdSKSB7Cj4gKyAgICAgICAgICAgICAgIGFzc2VydChlLT5lX3Jhd2ZpbGUg
IT0gTlVMTCk7Cj4gKyAgICAgICAgICAgICAgIGFzc2VydCgoZS0+ZV9mbGFncyAmIExJQkVMRl9G
X1JBV0ZJTEVfTUFMTE9DKSB8fAo+ICsgICAgICAgICAgICAgICAgICAgKGUtPmVfZmxhZ3MgJiBM
SUJFTEZfRl9SQVdGSUxFX01NQVApKTsKPiArICAgICAgICAgICAgICAgaWYgKGUtPmVfZmxhZ3Mg
JiBMSUJFTEZfRl9SQVdGSUxFX01BTExPQykgewo+ICsgICAgICAgICAgICAgICAgICAgICAgIGZy
ZWUoZS0+ZV9yYXdmaWxlKTsKPiArICAgICAgICAgICAgICAgICAgICAgICBlLT5lX3Jhd2ZpbGUg
PSBuZXdmaWxlOwo+ICsgICAgICAgICAgICAgICAgICAgICAgIG5ld2ZpbGUgPSBOVUxMOwo+ICsg
ICAgICAgICAgICAgICB9Cj4gKyNpZiAgICBFTEZUQ19IQVZFX01NQVAKPiArICAgICAgICAgICAg
ICAgZWxzZSBpZiAoZS0+ZV9mbGFncyAmIExJQkVMRl9GX1JBV0ZJTEVfTU1BUCkgewo+ICsgICAg
ICAgICAgICAgICAgICAgICAgIGlmICgoZS0+ZV9yYXdmaWxlID0gbW1hcChOVUxMLCAoc2l6ZV90
KSBuZXdzaXplLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9UX1JFQUQsIE1BUF9Q
UklWQVRFLCBlLT5lX2ZkLCAob2ZmX3QpIDApKSA9PQo+ICsgICAgICAgICAgICAgICAgICAgICAg
ICAgICBNQVBfRkFJTEVEKSB7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMSUJF
TEZfU0VUX0VSUk9SKElPLCBlcnJubyk7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBnb3RvIGVycm9yOwo+ICsgICAgICAgICAgICAgICAgICAgICAgIH0KPiArICAgICAgICAgICAg
ICAgfQo+ICsjZW5kaWYgLyogRUxGVENfSEFWRV9NTUFQICovCj4gKwo+ICsgICAgICAgICAgICAg
ICAvKiBSZWNvcmQgdGhlIG5ldyBzaXplIG9mIHRoZSBmaWxlLiAqLwo+ICsgICAgICAgICAgICAg
ICBlLT5lX3Jhd3NpemUgPSAoc2l6ZV90KSBuZXdzaXplOwo+ICsgICAgICAgfSBlbHNlIHsKPiAr
ICAgICAgICAgICAgICAgLyogRmlsZSBvcGVuZWQgaW4gRUxGX0NfV1JJVEUgbW9kZS4gKi8KPiAr
ICAgICAgICAgICAgICAgYXNzZXJ0KGUtPmVfcmF3ZmlsZSA9PSBOVUxMKTsKPiArICAgICAgIH0K
PiArCj4gKyAgICAgICAvKgo+ICsgICAgICAgICogUmVzZXQgZmxhZ3MsIHJlbW92ZSBleGlzdGlu
ZyBzZWN0aW9uIGRlc2NyaXB0b3JzIGFuZAo+ICsgICAgICAgICoge0UsUH1IRFIgcG9pbnRlcnMg
c28gdGhhdCBhIHN1YnNlcXVlbnQgZWxmX2dldHtlLHB9aGRyKCkKPiArICAgICAgICAqIGFuZCBl
bGZfZ2V0c2NuKCkgd2lsbCBmdW5jdGlvbiBjb3JyZWN0bHkuCj4gKyAgICAgICAgKi8KPiArCj4g
KyAgICAgICBlLT5lX2ZsYWdzICY9IH5FTEZfRl9ESVJUWTsKPiArCj4gKyAgICAgICBTVEFJTFFf
Rk9SRUFDSF9TQUZFKHNjbiwgJmUtPmVfdS5lX2VsZi5lX3Njbiwgc19uZXh0LCB0c2NuKQo+ICsg
ICAgICAgICAgICAgICBfbGliZWxmX3JlbGVhc2Vfc2NuKHNjbik7Cj4gKwo+ICsgICAgICAgaWYg
KGUtPmVfY2xhc3MgPT0gRUxGQ0xBU1MzMikgewo+ICsgICAgICAgICAgICAgICBmcmVlKGUtPmVf
dS5lX2VsZi5lX2VoZHIuZV9laGRyMzIpOwo+ICsgICAgICAgICAgICAgICBpZiAoZS0+ZV91LmVf
ZWxmLmVfcGhkci5lX3BoZHIzMikKPiArICAgICAgICAgICAgICAgICAgICAgICBmcmVlKGUtPmVf
dS5lX2VsZi5lX3BoZHIuZV9waGRyMzIpOwo+ICsKPiArICAgICAgICAgICAgICAgZS0+ZV91LmVf
ZWxmLmVfZWhkci5lX2VoZHIzMiA9IE5VTEw7Cj4gKyAgICAgICAgICAgICAgIGUtPmVfdS5lX2Vs
Zi5lX3BoZHIuZV9waGRyMzIgPSBOVUxMOwo+ICsgICAgICAgfSBlbHNlIHsKPiArICAgICAgICAg
ICAgICAgZnJlZShlLT5lX3UuZV9lbGYuZV9laGRyLmVfZWhkcjY0KTsKPiArICAgICAgICAgICAg
ICAgaWYgKGUtPmVfdS5lX2VsZi5lX3BoZHIuZV9waGRyNjQpCj4gKyAgICAgICAgICAgICAgICAg
ICAgICAgZnJlZShlLT5lX3UuZV9lbGYuZV9waGRyLmVfcGhkcjY0KTsKPiArCj4gKyAgICAgICAg
ICAgICAgIGUtPmVfdS5lX2VsZi5lX2VoZHIuZV9laGRyNjQgPSBOVUxMOwo+ICsgICAgICAgICAg
ICAgICBlLT5lX3UuZV9lbGYuZV9waGRyLmVfcGhkcjY0ID0gTlVMTDsKPiArICAgICAgIH0KPiAr
Cj4gKyAgICAgICAvKiBGcmVlIHRoZSB0ZW1wb3JhcnkgYnVmZmVyLiAqLwo+ICsgICAgICAgaWYg
KG5ld2ZpbGUpCj4gKyAgICAgICAgICAgICAgIGZyZWUobmV3ZmlsZSk7Cj4gKwo+ICsgICAgICAg
cmV0dXJuIChyYyk7Cj4gKwo+ICsgZXJyb3I6Cj4gKyAgICAgICBmcmVlKG5ld2ZpbGUpOwo+ICsK
PiArICAgICAgIHJldHVybiAoKG9mZl90KSAtMSk7Cj4gK30KPiArCj4gKy8qCj4gKyAqIFVwZGF0
ZSBhbiBFTEYgb2JqZWN0Lgo+ICsgKi8KPiArCj4gK29mZl90Cj4gK2VsZl91cGRhdGUoRWxmICpl
LCBFbGZfQ21kIGMpCj4gK3sKPiArICAgICAgIGludCBlYzsKPiArICAgICAgIG9mZl90IHJjOwo+
ICsgICAgICAgc3RydWN0IF9FbGZfRXh0ZW50X0xpc3QgZXh0ZW50czsKPiArCj4gKyAgICAgICBy
YyA9IChvZmZfdCkgLTE7Cj4gKwo+ICsgICAgICAgaWYgKGUgPT0gTlVMTCB8fCBlLT5lX2tpbmQg
IT0gRUxGX0tfRUxGIHx8Cj4gKyAgICAgICAgICAgKGMgIT0gRUxGX0NfTlVMTCAmJiBjICE9IEVM
Rl9DX1dSSVRFKSkgewo+ICsgICAgICAgICAgICAgICBMSUJFTEZfU0VUX0VSUk9SKEFSR1VNRU5U
LCAwKTsKPiArICAgICAgICAgICAgICAgcmV0dXJuIChyYyk7Cj4gKyAgICAgICB9Cj4gKwo+ICsg
ICAgICAgaWYgKChlYyA9IGUtPmVfY2xhc3MpICE9IEVMRkNMQVNTMzIgJiYgZWMgIT0gRUxGQ0xB
U1M2NCkgewo+ICsgICAgICAgICAgICAgICBMSUJFTEZfU0VUX0VSUk9SKENMQVNTLCAwKTsKPiAr
ICAgICAgICAgICAgICAgcmV0dXJuIChyYyk7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgaWYg
KGUtPmVfdmVyc2lvbiA9PSBFVl9OT05FKQo+ICsgICAgICAgICAgICAgICBlLT5lX3ZlcnNpb24g
PSBFVl9DVVJSRU5UOwo+ICsKPiArICAgICAgIGlmIChjID09IEVMRl9DX1dSSVRFICYmIGUtPmVf
Y21kID09IEVMRl9DX1JFQUQpIHsKPiArICAgICAgICAgICAgICAgTElCRUxGX1NFVF9FUlJPUihN
T0RFLCAwKTsKPiArICAgICAgICAgICAgICAgcmV0dXJuIChyYyk7Cj4gKyAgICAgICB9Cj4gKwo+
ICsgICAgICAgU0xJU1RfSU5JVCgmZXh0ZW50cyk7Cj4gKwo+ICsgICAgICAgaWYgKChyYyA9IF9s
aWJlbGZfcmVzeW5jX2VsZihlLCAmZXh0ZW50cykpIDwgMCkKPiArICAgICAgICAgICAgICAgZ290
byBkb25lOwo+ICsKPiArICAgICAgIGlmIChjID09IEVMRl9DX05VTEwpCj4gKyAgICAgICAgICAg
ICAgIGdvdG8gZG9uZTsKPiArCj4gKyAgICAgICBpZiAoZS0+ZV9mZCA8IDApIHsKPiArICAgICAg
ICAgICAgICAgcmMgPSAob2ZmX3QpIC0xOwo+ICsgICAgICAgICAgICAgICBMSUJFTEZfU0VUX0VS
Uk9SKFNFUVVFTkNFLCAwKTsKPiArICAgICAgICAgICAgICAgZ290byBkb25lOwo+ICsgICAgICAg
fQo+ICsKPiArICAgICAgIHJjID0gX2xpYmVsZl93cml0ZV9lbGYoZSwgcmMsICZleHRlbnRzKTsK
PiArCj4gK2RvbmU6Cj4gKyAgICAgICBfbGliZWxmX3JlbGVhc2VfZXh0ZW50cygmZXh0ZW50cyk7
Cj4gKyAgICAgICByZXR1cm4gKHJjKTsKPiArfQo+IGRpZmYgLS1naXQgYS9lbGZfdmVyc2lvbi5j
IGIvZWxmX3ZlcnNpb24uYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4u
Y2QyNTk1NAo+IC0tLSAvZGV2L251bGwKPiArKysgYi9lbGZfdmVyc2lvbi5jCj4gQEAgLTAsMCAr
MSw1MCBAQAo+ICsvKi0KPiArICogQ29weXJpZ2h0IChjKSAyMDA2LDIwMDggSm9zZXBoIEtvc2h5
Cj4gKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCj4gKyAqCj4gKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAo+ICsgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKPiArICogYXJlIG1ldDoKPiArICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKPiArICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgo+ICsg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAo+ICsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCj4gKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCj4g
KyAqCj4gKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKPiArICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCj4gKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFCj4gKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFV
VEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCj4gKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCj4g
KyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTCj4gKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQo+ICsgKiBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVAo+ICsgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCj4gKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKPiArICogU1VD
SCBEQU1BR0UuCj4gKyAqLwo+ICsKPiArI2luY2x1ZGUgPGxpYmVsZi5oPgo+ICsKPiArI2luY2x1
ZGUgIl9saWJlbGYuaCIKPiArCj4gK0VMRlRDX1ZDU0lEKCIkSWQ6IGVsZl92ZXJzaW9uLmMgMzE3
NCAyMDE1LTAzLTI3IDE3OjEzOjQxWiBlbWFzdGUgJCIpOwo+ICsKPiArdW5zaWduZWQgaW50Cj4g
K2VsZl92ZXJzaW9uKHVuc2lnbmVkIGludCB2KQo+ICt7Cj4gKyAgICAgICB1bnNpZ25lZCBpbnQg
b2xkOwo+ICsKPiArICAgICAgIGlmICgob2xkID0gTElCRUxGX1BSSVZBVEUodmVyc2lvbikpID09
IEVWX05PTkUpCj4gKyAgICAgICAgICAgICAgIG9sZCA9IEVWX0NVUlJFTlQ7Cj4gKwo+ICsgICAg
ICAgaWYgKHYgPT0gRVZfTk9ORSkKPiArICAgICAgICAgICAgICAgcmV0dXJuIG9sZDsKPiArICAg
ICAgIGlmICh2ID4gRVZfQ1VSUkVOVCkgewo+ICsgICAgICAgICAgICAgICBMSUJFTEZfU0VUX0VS
Uk9SKFZFUlNJT04sIDApOwo+ICsgICAgICAgICAgICAgICByZXR1cm4gRVZfTk9ORTsKPiArICAg
ICAgIH0KPiArCj4gKyAgICAgICBMSUJFTEZfUFJJVkFURSh2ZXJzaW9uKSA9IHY7Cj4gKyAgICAg
ICByZXR1cm4gKG9sZCk7Cj4gK30KPiBkaWZmIC0tZ2l0IGEvZ2VsZl9jYXAuYyBiL2dlbGZfY2Fw
LmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLmY1MDljNjkKPiAtLS0g
L2Rldi9udWxsCj4gKysrIGIvZ2VsZl9jYXAuYwo+IEBAIC0wLDAgKzEsMTUwIEBACj4gKy8qLQo+
ICsgKiBDb3B5cmlnaHQgKGMpIDIwMDYsMjAwOCBKb3NlcGggS29zaHkKPiArICogQWxsIHJpZ2h0
cyByZXNlcnZlZC4KPiArICoKPiArICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cj4gKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwo+ICsgKiBh
cmUgbWV0Ogo+ICsgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAo+ICsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCj4gKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cj4g
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKPiArICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KPiArICoKPiArICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgYGBBUyBJ
UycnIEFORAo+ICsgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKPiArICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKPiArICog
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUKPiArICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKPiArICogREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMKPiArICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pCj4gKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCj4gKyAqIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkKPiArICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgo+ICsgKiBTVUNIIERBTUFHRS4KPiArICov
Cj4gKwo+ICsjaW5jbHVkZSA8YXNzZXJ0Lmg+Cj4gKyNpbmNsdWRlIDxnZWxmLmg+Cj4gKyNpbmNs
dWRlIDxsaW1pdHMuaD4KPiArI2luY2x1ZGUgPHN0ZGludC5oPgo+ICsKPiArI2luY2x1ZGUgIl9s
aWJlbGYuaCIKPiArCj4gK0VMRlRDX1ZDU0lEKCIkSWQ6IGdlbGZfY2FwLmMgMzE3NyAyMDE1LTAz
LTMwIDE4OjE5OjQxWiBlbWFzdGUgJCIpOwo+ICsKPiArR0VsZl9DYXAgKgo+ICtnZWxmX2dldGNh
cChFbGZfRGF0YSAqZWQsIGludCBuZHgsIEdFbGZfQ2FwICpkc3QpCj4gK3sKPiArICAgICAgIGlu
dCBlYzsKPiArICAgICAgIEVsZiAqZTsKPiArICAgICAgIHNpemVfdCBtc3o7Cj4gKyAgICAgICBF
bGZfU2NuICpzY247Cj4gKyAgICAgICBFbGYzMl9DYXAgKmNhcDMyOwo+ICsgICAgICAgRWxmNjRf
Q2FwICpjYXA2NDsKPiArICAgICAgIHVpbnQzMl90IHNoX3R5cGU7Cj4gKyAgICAgICBzdHJ1Y3Qg
X0xpYmVsZl9EYXRhICpkOwo+ICsKPiArICAgICAgIGQgPSAoc3RydWN0IF9MaWJlbGZfRGF0YSAq
KSBlZDsKPiArCj4gKyAgICAgICBpZiAoZCA9PSBOVUxMIHx8IG5keCA8IDAgfHwgZHN0ID09IE5V
TEwgfHwKPiArICAgICAgICAgICAoc2NuID0gZC0+ZF9zY24pID09IE5VTEwgfHwKPiArICAgICAg
ICAgICAoZSA9IHNjbi0+c19lbGYpID09IE5VTEwpIHsKPiArICAgICAgICAgICAgICAgTElCRUxG
X1NFVF9FUlJPUihBUkdVTUVOVCwgMCk7Cj4gKyAgICAgICAgICAgICAgIHJldHVybiAoTlVMTCk7
Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgZWMgPSBlLT5lX2NsYXNzOwo+ICsgICAgICAgYXNz
ZXJ0KGVjID09IEVMRkNMQVNTMzIgfHwgZWMgPT0gRUxGQ0xBU1M2NCk7Cj4gKwo+ICsgICAgICAg
aWYgKGVjID09IEVMRkNMQVNTMzIpCj4gKyAgICAgICAgICAgICAgIHNoX3R5cGUgPSBzY24tPnNf
c2hkci5zX3NoZHIzMi5zaF90eXBlOwo+ICsgICAgICAgZWxzZQo+ICsgICAgICAgICAgICAgICBz
aF90eXBlID0gc2NuLT5zX3NoZHIuc19zaGRyNjQuc2hfdHlwZTsKPiArCj4gKyAgICAgICBpZiAo
X2xpYmVsZl94bGF0ZV9zaHR5cGUoc2hfdHlwZSkgIT0gRUxGX1RfQ0FQKSB7Cj4gKyAgICAgICAg
ICAgICAgIExJQkVMRl9TRVRfRVJST1IoQVJHVU1FTlQsIDApOwo+ICsgICAgICAgICAgICAgICBy
ZXR1cm4gKE5VTEwpOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIG1zeiA9IF9saWJlbGZfbXNp
emUoRUxGX1RfQ0FQLCBlYywgZS0+ZV92ZXJzaW9uKTsKPiArCj4gKyAgICAgICBhc3NlcnQobXN6
ID4gMCk7Cj4gKwo+ICsgICAgICAgaWYgKG1zeiAqIChzaXplX3QpIG5keCA+PSBkLT5kX2RhdGEu
ZF9zaXplKSB7Cj4gKyAgICAgICAgICAgICAgIExJQkVMRl9TRVRfRVJST1IoQVJHVU1FTlQsIDAp
Owo+ICsgICAgICAgICAgICAgICByZXR1cm4gKE5VTEwpOwo+ICsgICAgICAgfQo+ICsKPiArICAg
ICAgIGlmIChlYyA9PSBFTEZDTEFTUzMyKSB7Cj4gKwo+ICsgICAgICAgICAgICAgICBjYXAzMiA9
IChFbGYzMl9DYXAgKikgZC0+ZF9kYXRhLmRfYnVmICsgbmR4Owo+ICsKPiArICAgICAgICAgICAg
ICAgZHN0LT5jX3RhZyAgPSBjYXAzMi0+Y190YWc7Cj4gKyAgICAgICAgICAgICAgIGRzdC0+Y191
bi5jX3ZhbCA9IChFbGY2NF9Yd29yZCkgY2FwMzItPmNfdW4uY192YWw7Cj4gKwo+ICsgICAgICAg
fSBlbHNlIHsKPiArCj4gKyAgICAgICAgICAgICAgIGNhcDY0ID0gKEVsZjY0X0NhcCAqKSBkLT5k
X2RhdGEuZF9idWYgKyBuZHg7Cj4gKwo+ICsgICAgICAgICAgICAgICAqZHN0ID0gKmNhcDY0Owo+
ICsgICAgICAgfQo+ICsKPiArICAgICAgIHJldHVybiAoZHN0KTsKPiArfQo+ICsKPiAraW50Cj4g
K2dlbGZfdXBkYXRlX2NhcChFbGZfRGF0YSAqZWQsIGludCBuZHgsIEdFbGZfQ2FwICpnYykKPiAr
ewo+ICsgICAgICAgaW50IGVjOwo+ICsgICAgICAgRWxmICplOwo+ICsgICAgICAgc2l6ZV90IG1z
ejsKPiArICAgICAgIEVsZl9TY24gKnNjbjsKPiArICAgICAgIEVsZjMyX0NhcCAqY2FwMzI7Cj4g
KyAgICAgICBFbGY2NF9DYXAgKmNhcDY0Owo+ICsgICAgICAgdWludDMyX3Qgc2hfdHlwZTsKPiAr
ICAgICAgIHN0cnVjdCBfTGliZWxmX0RhdGEgKmQ7Cj4gKwo+ICsgICAgICAgZCA9IChzdHJ1Y3Qg
X0xpYmVsZl9EYXRhICopIGVkOwo+ICsKPiArICAgICAgIGlmIChkID09IE5VTEwgfHwgbmR4IDwg
MCB8fCBnYyA9PSBOVUxMIHx8Cj4gKyAgICAgICAgICAgKHNjbiA9IGQtPmRfc2NuKSA9PSBOVUxM
IHx8Cj4gKyAgICAgICAgICAgKGUgPSBzY24tPnNfZWxmKSA9PSBOVUxMKSB7Cj4gKyAgICAgICAg
ICAgICAgIExJQkVMRl9TRVRfRVJST1IoQVJHVU1FTlQsIDApOwo+ICsgICAgICAgICAgICAgICBy
ZXR1cm4gKDApOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIGVjID0gZS0+ZV9jbGFzczsKPiAr
ICAgICAgIGFzc2VydChlYyA9PSBFTEZDTEFTUzMyIHx8IGVjID09IEVMRkNMQVNTNjQpOwo+ICsK
PiArICAgICAgIGlmIChlYyA9PSBFTEZDTEFTUzMyKQo+ICsgICAgICAgICAgICAgICBzaF90eXBl
ID0gc2NuLT5zX3NoZHIuc19zaGRyMzIuc2hfdHlwZTsKPiArICAgICAgIGVsc2UKPiArICAgICAg
ICAgICAgICAgc2hfdHlwZSA9IHNjbi0+c19zaGRyLnNfc2hkcjY0LnNoX3R5cGU7Cj4gKwo+ICsg
ICAgICAgaWYgKF9saWJlbGZfeGxhdGVfc2h0eXBlKHNoX3R5cGUpICE9IEVMRl9UX0NBUCkgewo+
ICsgICAgICAgICAgICAgICBMSUJFTEZfU0VUX0VSUk9SKEFSR1VNRU5ULCAwKTsKPiArICAgICAg
ICAgICAgICAgcmV0dXJuICgwKTsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICBtc3ogPSBfbGli
ZWxmX21zaXplKEVMRl9UX0NBUCwgZWMsIGUtPmVfdmVyc2lvbik7Cj4gKyAgICAgICBhc3NlcnQo
bXN6ID4gMCk7Cj4gKwo+ICsgICAgICAgaWYgKG1zeiAqIChzaXplX3QpIG5keCA+PSBkLT5kX2Rh
dGEuZF9zaXplKSB7Cj4gKyAgICAgICAgICAgICAgIExJQkVMRl9TRVRfRVJST1IoQVJHVU1FTlQs
IDApOwo+ICsgICAgICAgICAgICAgICByZXR1cm4gKDApOwo+ICsgICAgICAgfQo+ICsKPiArICAg
ICAgIGlmIChlYyA9PSBFTEZDTEFTUzMyKSB7Cj4gKyAgICAgICAgICAgICAgIGNhcDMyID0gKEVs
ZjMyX0NhcCAqKSBkLT5kX2RhdGEuZF9idWYgKyBuZHg7Cj4gKwo+ICsgICAgICAgICAgICAgICBM
SUJFTEZfQ09QWV9VMzIoY2FwMzIsIGdjLCBjX3RhZyk7Cj4gKyAgICAgICAgICAgICAgIExJQkVM
Rl9DT1BZX1UzMihjYXAzMiwgZ2MsIGNfdW4uY192YWwpOwo+ICsgICAgICAgfSBlbHNlIHsKPiAr
ICAgICAgICAgICAgICAgY2FwNjQgPSAoRWxmNjRfQ2FwICopIGQtPmRfZGF0YS5kX2J1ZiArIG5k
eDsKPiArCj4gKyAgICAgICAgICAgICAgICpjYXA2NCA9ICpnYzsKPiArICAgICAgIH0KPiArCj4g
KyAgICAgICByZXR1cm4gKDEpOwo+ICt9Cj4gZGlmZiAtLWdpdCBhL2dlbGZfY2hlY2tzdW0uYyBi
L2dlbGZfY2hlY2tzdW0uYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4u
YjE2MjcyZgo+IC0tLSAvZGV2L251bGwKPiArKysgYi9nZWxmX2NoZWNrc3VtLmMKPiBAQCAtMCww
ICsxLDU2IEBACj4gKy8qLQo+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMDYsMjAwOCBKb3NlcGggS29z
aHkKPiArICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KPiArICoKPiArICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cj4gKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwo+ICsgKiBhcmUgbWV0Ogo+ICsgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAo+ICsgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCj4g
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Cj4gKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKPiArICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
PiArICoKPiArICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBD
T05UUklCVVRPUlMgYGBBUyBJUycnIEFORAo+ICsgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKPiArICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UKPiArICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
QVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKPiArICogRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwK
PiArICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMKPiArICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCj4gKyAqIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUCj4gKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKPiArICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgo+ICsgKiBT
VUNIIERBTUFHRS4KPiArICovCj4gKwo+ICsjaW5jbHVkZSA8Z2VsZi5oPgo+ICsjaW5jbHVkZSA8
bGliZWxmLmg+Cj4gKwo+ICsjaW5jbHVkZSAiX2xpYmVsZi5oIgo+ICsKPiArRUxGVENfVkNTSUQo
IiRJZDogZ2VsZl9jaGVja3N1bS5jIDMxNzQgMjAxNS0wMy0yNyAxNzoxMzo0MVogZW1hc3RlICQi
KTsKPiArCj4gK2xvbmcKPiArZWxmMzJfY2hlY2tzdW0oRWxmICplKQo+ICt7Cj4gKyAgICAgICBy
ZXR1cm4gKF9saWJlbGZfY2hlY2tzdW0oZSwgRUxGQ0xBU1MzMikpOwo+ICt9Cj4gKwo+ICtsb25n
Cj4gK2VsZjY0X2NoZWNrc3VtKEVsZiAqZSkKPiArewo+ICsgICAgICAgcmV0dXJuIChfbGliZWxm
X2NoZWNrc3VtKGUsIEVMRkNMQVNTNjQpKTsKPiArfQo+ICsKPiArbG9uZwo+ICtnZWxmX2NoZWNr
c3VtKEVsZiAqZSkKPiArewo+ICsgICAgICAgaW50IGVjOwo+ICsgICAgICAgaWYgKGUgPT0gTlVM
TCB8fAo+ICsgICAgICAgICAgICgoZWMgPSBlLT5lX2NsYXNzKSAhPSBFTEZDTEFTUzMyICYmIGVj
ICE9IEVMRkNMQVNTNjQpKSB7Cj4gKyAgICAgICAgICAgICAgIExJQkVMRl9TRVRfRVJST1IoQVJH
VU1FTlQsIDApOwo+ICsgICAgICAgICAgICAgICByZXR1cm4gKDBMKTsKPiArICAgICAgIH0KPiAr
ICAgICAgIHJldHVybiAoX2xpYmVsZl9jaGVja3N1bShlLCBlYykpOwo+ICt9Cj4gZGlmZiAtLWdp
dCBhL2dlbGZfZHluLmMgYi9nZWxmX2R5bi5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRl
eCAwMDAwMDAwLi43NDIzMzA5Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2dlbGZfZHluLmMKPiBA
QCAtMCwwICsxLDE1MiBAQAo+ICsvKi0KPiArICogQ29weXJpZ2h0IChjKSAyMDA2LDIwMDggSm9z
ZXBoIEtvc2h5Cj4gKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCj4gKyAqCj4gKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAo+ICsgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKPiArICogYXJlIG1ldDoKPiArICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKPiArICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgo+ICsgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAo+ICsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCj4gKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCj4gKyAqCj4gKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhP
UiBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKPiArICogQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCj4gKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFCj4gKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCj4gKyAqIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMCj4gKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCj4gKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQo+ICsgKiBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVAo+ICsgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCj4gKyAqIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YK
PiArICogU1VDSCBEQU1BR0UuCj4gKyAqLwo+ICsKPiArI2luY2x1ZGUgPGFzc2VydC5oPgo+ICsj
aW5jbHVkZSA8Z2VsZi5oPgo+ICsjaW5jbHVkZSA8bGltaXRzLmg+Cj4gKyNpbmNsdWRlIDxzdGRp
bnQuaD4KPiArCj4gKyNpbmNsdWRlICJfbGliZWxmLmgiCj4gKwo+ICtFTEZUQ19WQ1NJRCgiJElk
OiBnZWxmX2R5bi5jIDMxNzcgMjAxNS0wMy0zMCAxODoxOTo0MVogZW1hc3RlICQiKTsKPiArCj4g
K0dFbGZfRHluICoKPiArZ2VsZl9nZXRkeW4oRWxmX0RhdGEgKmVkLCBpbnQgbmR4LCBHRWxmX0R5
biAqZHN0KQo+ICt7Cj4gKyAgICAgICBpbnQgZWM7Cj4gKyAgICAgICBFbGYgKmU7Cj4gKyAgICAg
ICBzaXplX3QgbXN6Owo+ICsgICAgICAgRWxmX1NjbiAqc2NuOwo+ICsgICAgICAgRWxmMzJfRHlu
ICpkeW4zMjsKPiArICAgICAgIEVsZjY0X0R5biAqZHluNjQ7Cj4gKyAgICAgICB1aW50MzJfdCBz
aF90eXBlOwo+ICsgICAgICAgc3RydWN0IF9MaWJlbGZfRGF0YSAqZDsKPiArCj4gKyAgICAgICBk
ID0gKHN0cnVjdCBfTGliZWxmX0RhdGEgKikgZWQ7Cj4gKwo+ICsgICAgICAgaWYgKGQgPT0gTlVM
TCB8fCBuZHggPCAwIHx8IGRzdCA9PSBOVUxMIHx8Cj4gKyAgICAgICAgICAgKHNjbiA9IGQtPmRf
c2NuKSA9PSBOVUxMIHx8Cj4gKyAgICAgICAgICAgKGUgPSBzY24tPnNfZWxmKSA9PSBOVUxMKSB7
Cj4gKyAgICAgICAgICAgICAgIExJQkVMRl9TRVRfRVJST1IoQVJHVU1FTlQsIDApOwo+ICsgICAg
ICAgICAgICAgICByZXR1cm4gKE5VTEwpOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIGVjID0g
ZS0+ZV9jbGFzczsKPiArICAgICAgIGFzc2VydChlYyA9PSBFTEZDTEFTUzMyIHx8IGVjID09IEVM
RkNMQVNTNjQpOwo+ICsKPiArICAgICAgIGlmIChlYyA9PSBFTEZDTEFTUzMyKQo+ICsgICAgICAg
ICAgICAgICBzaF90eXBlID0gc2NuLT5zX3NoZHIuc19zaGRyMzIuc2hfdHlwZTsKPiArICAgICAg
IGVsc2UKPiArICAgICAgICAgICAgICAgc2hfdHlwZSA9IHNjbi0+c19zaGRyLnNfc2hkcjY0LnNo
X3R5cGU7Cj4gKwo+ICsgICAgICAgaWYgKF9saWJlbGZfeGxhdGVfc2h0eXBlKHNoX3R5cGUpICE9
IEVMRl9UX0RZTikgewo+ICsgICAgICAgICAgICAgICBMSUJFTEZfU0VUX0VSUk9SKEFSR1VNRU5U
LCAwKTsKPiArICAgICAgICAgICAgICAgcmV0dXJuIChOVUxMKTsKPiArICAgICAgIH0KPiArCj4g
KyAgICAgICBtc3ogPSBfbGliZWxmX21zaXplKEVMRl9UX0RZTiwgZWMsIGUtPmVfdmVyc2lvbik7
Cj4gKwo+ICsgICAgICAgYXNzZXJ0KG1zeiA+IDApOwo+ICsgICAgICAgYXNzZXJ0KG5keCA+PSAw
KTsKPiArCj4gKyAgICAgICBpZiAobXN6ICogKHNpemVfdCkgbmR4ID49IGQtPmRfZGF0YS5kX3Np
emUpIHsKPiArICAgICAgICAgICAgICAgTElCRUxGX1NFVF9FUlJPUihBUkdVTUVOVCwgMCk7Cj4g
KyAgICAgICAgICAgICAgIHJldHVybiAoTlVMTCk7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAg
aWYgKGVjID09IEVMRkNMQVNTMzIpIHsKPiArICAgICAgICAgICAgICAgZHluMzIgPSAoRWxmMzJf
RHluICopIGQtPmRfZGF0YS5kX2J1ZiArIG5keDsKPiArCj4gKyAgICAgICAgICAgICAgIGRzdC0+
ZF90YWcgICAgICA9IGR5bjMyLT5kX3RhZzsKPiArICAgICAgICAgICAgICAgZHN0LT5kX3VuLmRf
dmFsID0gKEVsZjY0X1h3b3JkKSBkeW4zMi0+ZF91bi5kX3ZhbDsKPiArCj4gKyAgICAgICB9IGVs
c2Ugewo+ICsKPiArICAgICAgICAgICAgICAgZHluNjQgPSAoRWxmNjRfRHluICopIGQtPmRfZGF0
YS5kX2J1ZiArIG5keDsKPiArCj4gKyAgICAgICAgICAgICAgICpkc3QgPSAqZHluNjQ7Cj4gKyAg
ICAgICB9Cj4gKwo+ICsgICAgICAgcmV0dXJuIChkc3QpOwo+ICt9Cj4gKwo+ICtpbnQKPiArZ2Vs
Zl91cGRhdGVfZHluKEVsZl9EYXRhICplZCwgaW50IG5keCwgR0VsZl9EeW4gKmRzKQo+ICt7Cj4g
KyAgICAgICBpbnQgZWM7Cj4gKyAgICAgICBFbGYgKmU7Cj4gKyAgICAgICBzaXplX3QgbXN6Owo+
ICsgICAgICAgRWxmX1NjbiAqc2NuOwo+ICsgICAgICAgRWxmMzJfRHluICpkeW4zMjsKPiArICAg
ICAgIEVsZjY0X0R5biAqZHluNjQ7Cj4gKyAgICAgICB1aW50MzJfdCBzaF90eXBlOwo+ICsgICAg
ICAgc3RydWN0IF9MaWJlbGZfRGF0YSAqZDsKPiArCj4gKyAgICAgICBkID0gKHN0cnVjdCBfTGli
ZWxmX0RhdGEgKikgZWQ7Cj4gKwo+ICsgICAgICAgaWYgKGQgPT0gTlVMTCB8fCBuZHggPCAwIHx8
IGRzID09IE5VTEwgfHwKPiArICAgICAgICAgICAoc2NuID0gZC0+ZF9zY24pID09IE5VTEwgfHwK
PiArICAgICAgICAgICAoZSA9IHNjbi0+c19lbGYpID09IE5VTEwpIHsKPiArICAgICAgICAgICAg
ICAgTElCRUxGX1NFVF9FUlJPUihBUkdVTUVOVCwgMCk7Cj4gKyAgICAgICAgICAgICAgIHJldHVy
biAoMCk7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgZWMgPSBlLT5lX2NsYXNzOwo+ICsgICAg
ICAgYXNzZXJ0KGVjID09IEVMRkNMQVNTMzIgfHwgZWMgPT0gRUxGQ0xBU1M2NCk7Cj4gKwo+ICsg
ICAgICAgaWYgKGVjID09IEVMRkNMQVNTMzIpCj4gKyAgICAgICAgICAgICAgIHNoX3R5cGUgPSBz
Y24tPnNfc2hkci5zX3NoZHIzMi5zaF90eXBlOwo+ICsgICAgICAgZWxzZQo+ICsgICAgICAgICAg
ICAgICBzaF90eXBlID0gc2NuLT5zX3NoZHIuc19zaGRyNjQuc2hfdHlwZTsKPiArCj4gKyAgICAg
ICBpZiAoX2xpYmVsZl94bGF0ZV9zaHR5cGUoc2hfdHlwZSkgIT0gRUxGX1RfRFlOKSB7Cj4gKyAg
ICAgICAgICAgICAgIExJQkVMRl9TRVRfRVJST1IoQVJHVU1FTlQsIDApOwo+ICsgICAgICAgICAg
ICAgICByZXR1cm4gKDApOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIG1zeiA9IF9saWJlbGZf
bXNpemUoRUxGX1RfRFlOLCBlYywgZS0+ZV92ZXJzaW9uKTsKPiArCj4gKyAgICAgICBhc3NlcnQo
bXN6ID4gMCk7Cj4gKyAgICAgICBhc3NlcnQobmR4ID49IDApOwo+ICsKPiArICAgICAgIGlmICht
c3ogKiAoc2l6ZV90KSBuZHggPj0gZC0+ZF9kYXRhLmRfc2l6ZSkgewo+ICsgICAgICAgICAgICAg
ICBMSUJFTEZfU0VUX0VSUk9SKEFSR1VNRU5ULCAwKTsKPiArICAgICAgICAgICAgICAgcmV0dXJu
ICgwKTsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICBpZiAoZWMgPT0gRUxGQ0xBU1MzMikgewo+
ICsgICAgICAgICAgICAgICBkeW4zMiA9IChFbGYzMl9EeW4gKikgZC0+ZF9kYXRhLmRfYnVmICsg
bmR4Owo+ICsKPiArICAgICAgICAgICAgICAgTElCRUxGX0NPUFlfUzMyKGR5bjMyLCBkcywgZF90
YWcpOwo+ICsgICAgICAgICAgICAgICBMSUJFTEZfQ09QWV9VMzIoZHluMzIsIGRzLCBkX3VuLmRf
dmFsKTsKPiArICAgICAgIH0gZWxzZSB7Cj4gKyAgICAgICAgICAgICAgIGR5bjY0ID0gKEVsZjY0
X0R5biAqKSBkLT5kX2RhdGEuZF9idWYgKyBuZHg7Cj4gKwo+ICsgICAgICAgICAgICAgICAqZHlu
NjQgPSAqZHM7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgcmV0dXJuICgxKTsKPiArfQo+IGRp
ZmYgLS1naXQgYS9nZWxmX2VoZHIuYyBiL2dlbGZfZWhkci5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2
NDQKPiBpbmRleCAwMDAwMDAwLi5kY2QyNjBlCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2dlbGZf
ZWhkci5jCj4gQEAgLTAsMCArMSwxNjcgQEAKPiArLyotCj4gKyAqIENvcHlyaWdodCAoYykgMjAw
NiwyMDA4IEpvc2VwaCBLb3NoeQo+ICsgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgo+ICsgKgo+ICsg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKPiArICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCj4gKyAqIGFyZSBtZXQ6Cj4gKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Cj4gKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KPiArICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKPiArICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQo+ICsg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgo+ICsgKgo+ICsgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECj4gKyAqIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQo+ICsgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQo+ICsgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQo+ICsgKiBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTAo+ICsgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUwo+ICsgKiBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikK
PiArICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QKPiArICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQo+ICsgKiBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GCj4gKyAqIFNVQ0ggREFNQUdFLgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlIDxhc3Nl
cnQuaD4KPiArI2luY2x1ZGUgPGdlbGYuaD4KPiArI2luY2x1ZGUgPGxpYmVsZi5oPgo+ICsjaW5j
bHVkZSA8bGltaXRzLmg+Cj4gKyNpbmNsdWRlIDxzdGRpbnQuaD4KPiArI2luY2x1ZGUgPHN0cmlu
Zy5oPgo+ICsKPiArI2luY2x1ZGUgIl9saWJlbGYuaCIKPiArCj4gK0VMRlRDX1ZDU0lEKCIkSWQ6
IGdlbGZfZWhkci5jIDMxNzcgMjAxNS0wMy0zMCAxODoxOTo0MVogZW1hc3RlICQiKTsKPiArCj4g
K0VsZjMyX0VoZHIgKgo+ICtlbGYzMl9nZXRlaGRyKEVsZiAqZSkKPiArewo+ICsgICAgICAgcmV0
dXJuIChfbGliZWxmX2VoZHIoZSwgRUxGQ0xBU1MzMiwgMCkpOwo+ICt9Cj4gKwo+ICtFbGY2NF9F
aGRyICoKPiArZWxmNjRfZ2V0ZWhkcihFbGYgKmUpCj4gK3sKPiArICAgICAgIHJldHVybiAoX2xp
YmVsZl9laGRyKGUsIEVMRkNMQVNTNjQsIDApKTsKPiArfQo+ICsKPiArR0VsZl9FaGRyICoKPiAr
Z2VsZl9nZXRlaGRyKEVsZiAqZSwgR0VsZl9FaGRyICpkKQo+ICt7Cj4gKyAgICAgICBpbnQgZWM7
Cj4gKyAgICAgICBFbGYzMl9FaGRyICplaDMyOwo+ICsgICAgICAgRWxmNjRfRWhkciAqZWg2NDsK
PiArCj4gKyAgICAgICBpZiAoZCA9PSBOVUxMIHx8IGUgPT0gTlVMTCB8fAo+ICsgICAgICAgICAg
ICgoZWMgPSBlLT5lX2NsYXNzKSAhPSBFTEZDTEFTUzMyICYmIGVjICE9IEVMRkNMQVNTNjQpKSB7
Cj4gKyAgICAgICAgICAgICAgIExJQkVMRl9TRVRfRVJST1IoQVJHVU1FTlQsIDApOwo+ICsgICAg
ICAgICAgICAgICByZXR1cm4gKE5VTEwpOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIGlmIChl
YyA9PSBFTEZDTEFTUzMyKSB7Cj4gKyAgICAgICAgICAgICAgIGlmICgoZWgzMiA9IF9saWJlbGZf
ZWhkcihlLCBFTEZDTEFTUzMyLCAwKSkgPT0gTlVMTCkKPiArICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gKE5VTEwpOwo+ICsKPiArICAgICAgICAgICAgICAgKHZvaWQpIG1lbWNweShkLT5l
X2lkZW50LCBlaDMyLT5lX2lkZW50LAo+ICsgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGVoMzIt
PmVfaWRlbnQpKTsKPiArICAgICAgICAgICAgICAgZC0+ZV90eXBlICAgICAgICAgICAgICAgPSBl
aDMyLT5lX3R5cGU7Cj4gKyAgICAgICAgICAgICAgIGQtPmVfbWFjaGluZSAgICAgICAgICAgID0g
ZWgzMi0+ZV9tYWNoaW5lOwo+ICsgICAgICAgICAgICAgICBkLT5lX3ZlcnNpb24gICAgICAgICAg
ICA9IGVoMzItPmVfdmVyc2lvbjsKPiArICAgICAgICAgICAgICAgZC0+ZV9lbnRyeSAgICAgICAg
ICAgICAgPSBlaDMyLT5lX2VudHJ5Owo+ICsgICAgICAgICAgICAgICBkLT5lX3Bob2ZmICAgICAg
ICAgICAgICA9IGVoMzItPmVfcGhvZmY7Cj4gKyAgICAgICAgICAgICAgIGQtPmVfc2hvZmYgICAg
ICAgICAgICAgID0gZWgzMi0+ZV9zaG9mZjsKPiArICAgICAgICAgICAgICAgZC0+ZV9mbGFncyAg
ICAgICAgICAgICAgPSBlaDMyLT5lX2ZsYWdzOwo+ICsgICAgICAgICAgICAgICBkLT5lX2Voc2l6
ZSAgICAgICAgICAgICA9IGVoMzItPmVfZWhzaXplOwo+ICsgICAgICAgICAgICAgICBkLT5lX3Bo
ZW50c2l6ZSAgICAgICAgICA9IGVoMzItPmVfcGhlbnRzaXplOwo+ICsgICAgICAgICAgICAgICBk
LT5lX3BobnVtICAgICAgICAgICAgICA9IGVoMzItPmVfcGhudW07Cj4gKyAgICAgICAgICAgICAg
IGQtPmVfc2hlbnRzaXplICAgICAgICAgID0gZWgzMi0+ZV9zaGVudHNpemU7Cj4gKyAgICAgICAg
ICAgICAgIGQtPmVfc2hudW0gICAgICAgICAgICAgID0gZWgzMi0+ZV9zaG51bTsKPiArICAgICAg
ICAgICAgICAgZC0+ZV9zaHN0cm5keCAgICAgICAgICAgPSBlaDMyLT5lX3Noc3RybmR4Owo+ICsK
PiArICAgICAgICAgICAgICAgcmV0dXJuIChkKTsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICBh
c3NlcnQoZWMgPT0gRUxGQ0xBU1M2NCk7Cj4gKwo+ICsgICAgICAgaWYgKChlaDY0ID0gX2xpYmVs
Zl9laGRyKGUsIEVMRkNMQVNTNjQsIDApKSA9PSBOVUxMKQo+ICsgICAgICAgICAgICAgICByZXR1
cm4gKE5VTEwpOwo+ICsgICAgICAgKmQgPSAqZWg2NDsKPiArCj4gKyAgICAgICByZXR1cm4gKGQp
Owo+ICt9Cj4gKwo+ICtFbGYzMl9FaGRyICoKPiArZWxmMzJfbmV3ZWhkcihFbGYgKmUpCj4gK3sK
PiArICAgICAgIHJldHVybiAoX2xpYmVsZl9laGRyKGUsIEVMRkNMQVNTMzIsIDEpKTsKPiArfQo+
ICsKPiArRWxmNjRfRWhkciAqCj4gK2VsZjY0X25ld2VoZHIoRWxmICplKQo+ICt7Cj4gKyAgICAg
ICByZXR1cm4gKF9saWJlbGZfZWhkcihlLCBFTEZDTEFTUzY0LCAxKSk7Cj4gK30KPiArCj4gK3Zv
aWQgKgo+ICtnZWxmX25ld2VoZHIoRWxmICplLCBpbnQgZWMpCj4gK3sKPiArICAgICAgIGlmIChl
ICE9IE5VTEwgJiYKPiArICAgICAgICAgICAoZWMgPT0gRUxGQ0xBU1MzMiB8fCBlYyA9PSBFTEZD
TEFTUzY0KSkKPiArICAgICAgICAgICAgICAgcmV0dXJuIChfbGliZWxmX2VoZHIoZSwgZWMsIDEp
KTsKPiArCj4gKyAgICAgICBMSUJFTEZfU0VUX0VSUk9SKEFSR1VNRU5ULCAwKTsKPiArICAgICAg
IHJldHVybiAoTlVMTCk7Cj4gK30KPiArCj4gK2ludAo+ICtnZWxmX3VwZGF0ZV9laGRyKEVsZiAq
ZSwgR0VsZl9FaGRyICpzKQo+ICt7Cj4gKyAgICAgICBpbnQgZWM7Cj4gKyAgICAgICB2b2lkICpl
aGRyOwo+ICsgICAgICAgRWxmMzJfRWhkciAqZWgzMjsKPiArICAgICAgIEVsZjY0X0VoZHIgKmVo
NjQ7Cj4gKwo+ICsgICAgICAgaWYgKHM9PSBOVUxMIHx8IGUgPT0gTlVMTCB8fCBlLT5lX2tpbmQg
IT0gRUxGX0tfRUxGIHx8Cj4gKyAgICAgICAgICAgKChlYyA9IGUtPmVfY2xhc3MpICE9IEVMRkNM
QVNTMzIgJiYgZWMgIT0gRUxGQ0xBU1M2NCkpIHsKPiArICAgICAgICAgICAgICAgTElCRUxGX1NF
VF9FUlJPUihBUkdVTUVOVCwgMCk7Cj4gKyAgICAgICAgICAgICAgIHJldHVybiAoMCk7Cj4gKyAg
ICAgICB9Cj4gKwo+ICsgICAgICAgaWYgKGUtPmVfY21kID09IEVMRl9DX1JFQUQpIHsKPiArICAg
ICAgICAgICAgICAgTElCRUxGX1NFVF9FUlJPUihNT0RFLCAwKTsKPiArICAgICAgICAgICAgICAg
cmV0dXJuICgwKTsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICBpZiAoKGVoZHIgPSBfbGliZWxm
X2VoZHIoZSwgZWMsIDApKSA9PSBOVUxMKQo+ICsgICAgICAgICAgICAgICByZXR1cm4gKDApOwo+
ICsKPiArICAgICAgICh2b2lkKSBlbGZfZmxhZ2VoZHIoZSwgRUxGX0NfU0VULCBFTEZfRl9ESVJU
WSk7Cj4gKwo+ICsgICAgICAgaWYgKGVjID09IEVMRkNMQVNTNjQpIHsKPiArICAgICAgICAgICAg
ICAgZWg2NCA9IChFbGY2NF9FaGRyICopIGVoZHI7Cj4gKyAgICAgICAgICAgICAgICplaDY0ID0g
KnM7Cj4gKyAgICAgICAgICAgICAgIHJldHVybiAoMSk7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAg
ICAgZWgzMiA9IChFbGYzMl9FaGRyICopIGVoZHI7Cj4gKwo+ICsgICAgICAgKHZvaWQpIG1lbWNw
eShlaDMyLT5lX2lkZW50LCBzLT5lX2lkZW50LCBzaXplb2YoZWgzMi0+ZV9pZGVudCkpOwo+ICsK
PiArICAgICAgIGVoMzItPmVfdHlwZSAgICAgID0gcy0+ZV90eXBlOwo+ICsgICAgICAgZWgzMi0+
ZV9tYWNoaW5lICAgPSBzLT5lX21hY2hpbmU7Cj4gKyAgICAgICBlaDMyLT5lX3ZlcnNpb24gICA9
IHMtPmVfdmVyc2lvbjsKPiArICAgICAgIExJQkVMRl9DT1BZX1UzMihlaDMyLCBzLCBlX2VudHJ5
KTsKPiArICAgICAgIExJQkVMRl9DT1BZX1UzMihlaDMyLCBzLCBlX3Bob2ZmKTsKPiArICAgICAg
IExJQkVMRl9DT1BZX1UzMihlaDMyLCBzLCBlX3Nob2ZmKTsKPiArICAgICAgIGVoMzItPmVfZmxh
Z3MgICAgID0gcy0+ZV9mbGFnczsKPiArICAgICAgIGVoMzItPmVfZWhzaXplICAgID0gcy0+ZV9l
aHNpemU7Cj4gKyAgICAgICBlaDMyLT5lX3BoZW50c2l6ZSA9IHMtPmVfcGhlbnRzaXplOwo+ICsg
ICAgICAgZWgzMi0+ZV9waG51bSAgICAgPSBzLT5lX3BobnVtOwo+ICsgICAgICAgZWgzMi0+ZV9z
aGVudHNpemUgPSBzLT5lX3NoZW50c2l6ZTsKPiArICAgICAgIGVoMzItPmVfc2hudW0gICAgID0g
cy0+ZV9zaG51bTsKPiArICAgICAgIGVoMzItPmVfc2hzdHJuZHggID0gcy0+ZV9zaHN0cm5keDsK
PiArCj4gKyAgICAgICByZXR1cm4gKDEpOwo+ICt9Cj4gZGlmZiAtLWdpdCBhL2dlbGZfZnNpemUu
YyBiL2dlbGZfZnNpemUuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4u
YWZkZWE3Mwo+IC0tLSAvZGV2L251bGwKPiArKysgYi9nZWxmX2ZzaXplLmMKPiBAQCAtMCwwICsx
LDYwIEBACj4gKy8qLQo+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMDYsMjAwOCBKb3NlcGggS29zaHkK
PiArICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KPiArICoKPiArICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cj4gKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwo+ICsgKiBhcmUgbWV0Ogo+ICsgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAo+ICsgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCj4gKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Cj4gKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKPiArICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KPiAr
ICoKPiArICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05U
UklCVVRPUlMgYGBBUyBJUycnIEFORAo+ICsgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKPiArICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UKPiArICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVU
SE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKPiArICogRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKPiAr
ICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMKPiArICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCj4gKyAqIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUCj4gKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKPiArICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgo+ICsgKiBTVUNI
IERBTUFHRS4KPiArICovCj4gKwo+ICsjaW5jbHVkZSA8Z2VsZi5oPgo+ICsjaW5jbHVkZSA8bGli
ZWxmLmg+Cj4gKwo+ICsjaW5jbHVkZSAiX2xpYmVsZi5oIgo+ICsKPiArRUxGVENfVkNTSUQoIiRJ
ZDogZ2VsZl9mc2l6ZS5jIDMxNzQgMjAxNS0wMy0yNyAxNzoxMzo0MVogZW1hc3RlICQiKTsKPiAr
Cj4gK3NpemVfdAo+ICtlbGYzMl9mc2l6ZShFbGZfVHlwZSB0LCBzaXplX3QgYywgdW5zaWduZWQg
aW50IHYpCj4gK3sKPiArICAgICAgIHJldHVybiAoX2xpYmVsZl9mc2l6ZSh0LCBFTEZDTEFTUzMy
LCB2LCBjKSk7Cj4gK30KPiArCj4gK3NpemVfdAo+ICtlbGY2NF9mc2l6ZShFbGZfVHlwZSB0LCBz
aXplX3QgYywgdW5zaWduZWQgaW50IHYpCj4gK3sKPiArICAgICAgIHJldHVybiAoX2xpYmVsZl9m
c2l6ZSh0LCBFTEZDTEFTUzY0LCB2LCBjKSk7Cj4gK30KPiArCj4gK3NpemVfdAo+ICtnZWxmX2Zz
aXplKEVsZiAqZSwgRWxmX1R5cGUgdCwgc2l6ZV90IGMsIHVuc2lnbmVkIGludCB2KQo+ICt7Cj4g
Kwo+ICsgICAgICAgaWYgKGUgPT0gTlVMTCkgewo+ICsgICAgICAgICAgICAgICBMSUJFTEZfU0VU
X0VSUk9SKEFSR1VNRU5ULCAwKTsKPiArICAgICAgICAgICAgICAgcmV0dXJuICgwKTsKPiArICAg
ICAgIH0KPiArCj4gKyAgICAgICBpZiAoZS0+ZV9jbGFzcyA9PSBFTEZDTEFTUzMyIHx8IGUtPmVf
Y2xhc3MgPT0gRUxGQ0xBU1M2NCkKPiArICAgICAgICAgICAgICAgcmV0dXJuIChfbGliZWxmX2Zz
aXplKHQsIGUtPmVfY2xhc3MsIHYsIGMpKTsKPiArCj4gKyAgICAgICBMSUJFTEZfU0VUX0VSUk9S
KEFSR1VNRU5ULCAwKTsKPiArICAgICAgIHJldHVybiAoMCk7Cj4gK30KPiBkaWZmIC0tZ2l0IGEv
Z2VsZl9nZXRjbGFzcy5jIGIvZ2VsZl9nZXRjbGFzcy5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQK
PiBpbmRleCAwMDAwMDAwLi5kN2Y2ODAzCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2dlbGZfZ2V0
Y2xhc3MuYwo+IEBAIC0wLDAgKzEsMzcgQEAKPiArLyotCj4gKyAqIENvcHlyaWdodCAoYykgMjAw
NiwyMDA4IEpvc2VwaCBLb3NoeQo+ICsgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgo+ICsgKgo+ICsg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKPiArICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCj4gKyAqIGFyZSBtZXQ6Cj4gKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Cj4gKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KPiArICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKPiArICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQo+ICsg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgo+ICsgKgo+ICsgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECj4gKyAqIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQo+ICsgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQo+ICsgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQo+ICsgKiBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTAo+ICsgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUwo+ICsgKiBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikK
PiArICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QKPiArICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQo+ICsgKiBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GCj4gKyAqIFNVQ0ggREFNQUdFLgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlIDxnZWxm
Lmg+Cj4gKwo+ICsjaW5jbHVkZSAiX2xpYmVsZi5oIgo+ICsKPiArRUxGVENfVkNTSUQoIiRJZDog
Z2VsZl9nZXRjbGFzcy5jIDMxNzQgMjAxNS0wMy0yNyAxNzoxMzo0MVogZW1hc3RlICQiKTsKPiAr
Cj4gK2ludAo+ICtnZWxmX2dldGNsYXNzKEVsZiAqZSkKPiArewo+ICsgICAgICAgcmV0dXJuIChl
ICE9IE5VTEwgPyBlLT5lX2NsYXNzIDogRUxGQ0xBU1NOT05FKTsKPiArfQo+IGRpZmYgLS1naXQg
YS9nZWxmX21vdmUuYyBiL2dlbGZfbW92ZS5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRl
eCAwMDAwMDAwLi4yZWM4ZjI1Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2dlbGZfbW92ZS5jCj4g
QEAgLTAsMCArMSwxNTkgQEAKPiArLyotCj4gKyAqIENvcHlyaWdodCAoYykgMjAwNiwyMDA4IEpv
c2VwaCBLb3NoeQo+ICsgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgo+ICsgKgo+ICsgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKPiArICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCj4gKyAqIGFyZSBtZXQ6Cj4gKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cj4gKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KPiArICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKPiArICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQo+ICsgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgo+ICsgKgo+ICsgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRI
T1IgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECj4gKyAqIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQo+ICsg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRQo+ICsgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQo+ICsgKiBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTAo+ICsgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUwo+ICsgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKPiArICogSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QKPiArICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQo+ICsgKiBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
Cj4gKyAqIFNVQ0ggREFNQUdFLgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlIDxhc3NlcnQuaD4KPiAr
I2luY2x1ZGUgPGdlbGYuaD4KPiArI2luY2x1ZGUgPGxpbWl0cy5oPgo+ICsjaW5jbHVkZSA8c3Rk
aW50Lmg+Cj4gKwo+ICsjaW5jbHVkZSAiX2xpYmVsZi5oIgo+ICsKPiArRUxGVENfVkNTSUQoIiRJ
ZDogZ2VsZl9tb3ZlLmMgMzE3NyAyMDE1LTAzLTMwIDE4OjE5OjQxWiBlbWFzdGUgJCIpOwo+ICsK
PiArR0VsZl9Nb3ZlICoKPiArZ2VsZl9nZXRtb3ZlKEVsZl9EYXRhICplZCwgaW50IG5keCwgR0Vs
Zl9Nb3ZlICpkc3QpCj4gK3sKPiArICAgICAgIGludCBlYzsKPiArICAgICAgIEVsZiAqZTsKPiAr
ICAgICAgIHNpemVfdCBtc3o7Cj4gKyAgICAgICBFbGZfU2NuICpzY247Cj4gKyAgICAgICB1aW50
MzJfdCBzaF90eXBlOwo+ICsgICAgICAgRWxmMzJfTW92ZSAqbW92ZTMyOwo+ICsgICAgICAgRWxm
NjRfTW92ZSAqbW92ZTY0Owo+ICsgICAgICAgc3RydWN0IF9MaWJlbGZfRGF0YSAqZDsKPiArCj4g
KyAgICAgICBkID0gKHN0cnVjdCBfTGliZWxmX0RhdGEgKikgZWQ7Cj4gKwo+ICsgICAgICAgaWYg
KGQgPT0gTlVMTCB8fCBuZHggPCAwIHx8IGRzdCA9PSBOVUxMIHx8Cj4gKyAgICAgICAgICAgKHNj
biA9IGQtPmRfc2NuKSA9PSBOVUxMIHx8Cj4gKyAgICAgICAgICAgKGUgPSBzY24tPnNfZWxmKSA9
PSBOVUxMKSB7Cj4gKyAgICAgICAgICAgICAgIExJQkVMRl9TRVRfRVJST1IoQVJHVU1FTlQsIDAp
Owo+ICsgICAgICAgICAgICAgICByZXR1cm4gKE5VTEwpOwo+ICsgICAgICAgfQo+ICsKPiArICAg
ICAgIGVjID0gZS0+ZV9jbGFzczsKPiArICAgICAgIGFzc2VydChlYyA9PSBFTEZDTEFTUzMyIHx8
IGVjID09IEVMRkNMQVNTNjQpOwo+ICsKPiArICAgICAgIGlmIChlYyA9PSBFTEZDTEFTUzMyKQo+
ICsgICAgICAgICAgICAgICBzaF90eXBlID0gc2NuLT5zX3NoZHIuc19zaGRyMzIuc2hfdHlwZTsK
PiArICAgICAgIGVsc2UKPiArICAgICAgICAgICAgICAgc2hfdHlwZSA9IHNjbi0+c19zaGRyLnNf
c2hkcjY0LnNoX3R5cGU7Cj4gKwo+ICsgICAgICAgaWYgKF9saWJlbGZfeGxhdGVfc2h0eXBlKHNo
X3R5cGUpICE9IEVMRl9UX01PVkUpIHsKPiArICAgICAgICAgICAgICAgTElCRUxGX1NFVF9FUlJP
UihBUkdVTUVOVCwgMCk7Cj4gKyAgICAgICAgICAgICAgIHJldHVybiAoTlVMTCk7Cj4gKyAgICAg
ICB9Cj4gKwo+ICsgICAgICAgbXN6ID0gX2xpYmVsZl9tc2l6ZShFTEZfVF9NT1ZFLCBlYywgZS0+
ZV92ZXJzaW9uKTsKPiArCj4gKyAgICAgICBhc3NlcnQobXN6ID4gMCk7Cj4gKyAgICAgICBhc3Nl
cnQobmR4ID49IDApOwo+ICsKPiArICAgICAgIGlmIChtc3ogKiAoc2l6ZV90KSBuZHggPj0gZC0+
ZF9kYXRhLmRfc2l6ZSkgewo+ICsgICAgICAgICAgICAgICBMSUJFTEZfU0VUX0VSUk9SKEFSR1VN
RU5ULCAwKTsKPiArICAgICAgICAgICAgICAgcmV0dXJuIChOVUxMKTsKPiArICAgICAgIH0KPiAr
Cj4gKyAgICAgICBpZiAoZWMgPT0gRUxGQ0xBU1MzMikgewo+ICsKPiArICAgICAgICAgICAgICAg
bW92ZTMyID0gKEVsZjMyX01vdmUgKikgZC0+ZF9kYXRhLmRfYnVmICsgbmR4Owo+ICsKPiArICAg
ICAgICAgICAgICAgZHN0LT5tX3ZhbHVlICAgPSBtb3ZlMzItPm1fdmFsdWU7Cj4gKyAgICAgICAg
ICAgICAgIGRzdC0+bV9pbmZvICAgID0gKEVsZjY0X1h3b3JkKSBtb3ZlMzItPm1faW5mbzsKPiAr
ICAgICAgICAgICAgICAgZHN0LT5tX3BvZmZzZXQgPSAoRWxmNjRfWHdvcmQpIG1vdmUzMi0+bV9w
b2Zmc2V0Owo+ICsgICAgICAgICAgICAgICBkc3QtPm1fcmVwZWF0ICA9IG1vdmUzMi0+bV9yZXBl
YXQ7Cj4gKyAgICAgICAgICAgICAgIGRzdC0+bV9zdHJpZGUgPSBtb3ZlMzItPm1fc3RyaWRlOwo+
ICsgICAgICAgfSBlbHNlIHsKPiArCj4gKyAgICAgICAgICAgICAgIG1vdmU2NCA9IChFbGY2NF9N
b3ZlICopIGQtPmRfZGF0YS5kX2J1ZiArIG5keDsKPiArCj4gKyAgICAgICAgICAgICAgICpkc3Qg
PSAqbW92ZTY0Owo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIHJldHVybiAoZHN0KTsKPiArfQo+
ICsKPiAraW50Cj4gK2dlbGZfdXBkYXRlX21vdmUoRWxmX0RhdGEgKmVkLCBpbnQgbmR4LCBHRWxm
X01vdmUgKmdtKQo+ICt7Cj4gKyAgICAgICBpbnQgZWM7Cj4gKyAgICAgICBFbGYgKmU7Cj4gKyAg
ICAgICBzaXplX3QgbXN6Owo+ICsgICAgICAgRWxmX1NjbiAqc2NuOwo+ICsgICAgICAgdWludDMy
X3Qgc2hfdHlwZTsKPiArICAgICAgIEVsZjMyX01vdmUgKm1vdmUzMjsKPiArICAgICAgIEVsZjY0
X01vdmUgKm1vdmU2NDsKPiArICAgICAgIHN0cnVjdCBfTGliZWxmX0RhdGEgKmQ7Cj4gKwo+ICsg
ICAgICAgZCA9IChzdHJ1Y3QgX0xpYmVsZl9EYXRhICopIGVkOwo+ICsKPiArICAgICAgIGlmIChk
ID09IE5VTEwgfHwgbmR4IDwgMCB8fCBnbSA9PSBOVUxMIHx8Cj4gKyAgICAgICAgICAgKHNjbiA9
IGQtPmRfc2NuKSA9PSBOVUxMIHx8Cj4gKyAgICAgICAgICAgKGUgPSBzY24tPnNfZWxmKSA9PSBO
VUxMKSB7Cj4gKyAgICAgICAgICAgICAgIExJQkVMRl9TRVRfRVJST1IoQVJHVU1FTlQsIDApOwo+
ICsgICAgICAgICAgICAgICByZXR1cm4gKDApOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIGVj
ID0gZS0+ZV9jbGFzczsKPiArICAgICAgIGFzc2VydChlYyA9PSBFTEZDTEFTUzMyIHx8IGVjID09
IEVMRkNMQVNTNjQpOwo+ICsKPiArICAgICAgIGlmIChlYyA9PSBFTEZDTEFTUzMyKQo+ICsgICAg
ICAgICAgICAgICBzaF90eXBlID0gc2NuLT5zX3NoZHIuc19zaGRyMzIuc2hfdHlwZTsKPiArICAg
ICAgIGVsc2UKPiArICAgICAgICAgICAgICAgc2hfdHlwZSA9IHNjbi0+c19zaGRyLnNfc2hkcjY0
LnNoX3R5cGU7Cj4gKwo+ICsgICAgICAgaWYgKF9saWJlbGZfeGxhdGVfc2h0eXBlKHNoX3R5cGUp
ICE9IEVMRl9UX01PVkUpIHsKPiArICAgICAgICAgICAgICAgTElCRUxGX1NFVF9FUlJPUihBUkdV
TUVOVCwgMCk7Cj4gKyAgICAgICAgICAgICAgIHJldHVybiAoMCk7Cj4gKyAgICAgICB9Cj4gKwo+
ICsgICAgICAgbXN6ID0gX2xpYmVsZl9tc2l6ZShFTEZfVF9NT1ZFLCBlYywgZS0+ZV92ZXJzaW9u
KTsKPiArCj4gKyAgICAgICBhc3NlcnQobXN6ID4gMCk7Cj4gKyAgICAgICBhc3NlcnQobmR4ID49
IDApOwo+ICsKPiArICAgICAgIGlmIChtc3ogKiAoc2l6ZV90KSBuZHggPj0gZC0+ZF9kYXRhLmRf
c2l6ZSkgewo+ICsgICAgICAgICAgICAgICBMSUJFTEZfU0VUX0VSUk9SKEFSR1VNRU5ULCAwKTsK
PiArICAgICAgICAgICAgICAgcmV0dXJuICgwKTsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICBp
ZiAoZWMgPT0gRUxGQ0xBU1MzMikgewo+ICsgICAgICAgICAgICAgICBtb3ZlMzIgPSAoRWxmMzJf
TW92ZSAqKSBkLT5kX2RhdGEuZF9idWYgKyBuZHg7Cj4gKwo+ICsgICAgICAgICAgICAgICBtb3Zl
MzItPm1fdmFsdWUgID0gZ20tPm1fdmFsdWU7Cj4gKyAgICAgICAgICAgICAgIExJQkVMRl9DT1BZ
X1UzMihtb3ZlMzIsIGdtLCBtX2luZm8pOwo+ICsgICAgICAgICAgICAgICBMSUJFTEZfQ09QWV9V
MzIobW92ZTMyLCBnbSwgbV9wb2Zmc2V0KTsKPiArICAgICAgICAgICAgICAgbW92ZTMyLT5tX3Jl
cGVhdCAgPSBnbS0+bV9yZXBlYXQ7Cj4gKyAgICAgICAgICAgICAgIG1vdmUzMi0+bV9zdHJpZGUg
PSBnbS0+bV9zdHJpZGU7Cj4gKwo+ICsgICAgICAgfSBlbHNlIHsKPiArICAgICAgICAgICAgICAg
bW92ZTY0ID0gKEVsZjY0X01vdmUgKikgZC0+ZF9kYXRhLmRfYnVmICsgbmR4Owo+ICsKPiArICAg
ICAgICAgICAgICAgKm1vdmU2NCA9ICpnbTsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICByZXR1
cm4gKDEpOwo+ICt9Cj4gZGlmZiAtLWdpdCBhL2dlbGZfcGhkci5jIGIvZ2VsZl9waGRyLmMKPiBu
ZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLjMxZTIwYjAKPiAtLS0gL2Rldi9u
dWxsCj4gKysrIGIvZ2VsZl9waGRyLmMKPiBAQCAtMCwwICsxLDE3NyBAQAo+ICsvKi0KPiArICog
Q29weXJpZ2h0IChjKSAyMDA2LDIwMDggSm9zZXBoIEtvc2h5Cj4gKyAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCj4gKyAqCj4gKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAo+ICsgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKPiArICogYXJlIG1l
dDoKPiArICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKPiArICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgo+ICsgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAo+ICsgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCj4gKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCj4gKyAqCj4gKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBB
TkQKPiArICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCj4gKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCj4gKyAqIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFCj4gKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCj4gKyAqIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCj4g
KyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKQo+ICsgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAo+ICsgKiBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZCj4gKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKPiArICogU1VDSCBEQU1BR0UuCj4gKyAqLwo+ICsK
PiArI2luY2x1ZGUgPGdlbGYuaD4KPiArI2luY2x1ZGUgPGxpYmVsZi5oPgo+ICsjaW5jbHVkZSA8
bGltaXRzLmg+Cj4gKyNpbmNsdWRlIDxzdGRpbnQuaD4KPiArCj4gKyNpbmNsdWRlICJfbGliZWxm
LmgiCj4gKwo+ICtFTEZUQ19WQ1NJRCgiJElkOiBnZWxmX3BoZHIuYyAzMTc3IDIwMTUtMDMtMzAg
MTg6MTk6NDFaIGVtYXN0ZSAkIik7Cj4gKwo+ICtFbGYzMl9QaGRyICoKPiArZWxmMzJfZ2V0cGhk
cihFbGYgKmUpCj4gK3sKPiArICAgICAgIHJldHVybiAoX2xpYmVsZl9nZXRwaGRyKGUsIEVMRkNM
QVNTMzIpKTsKPiArfQo+ICsKPiArRWxmNjRfUGhkciAqCj4gK2VsZjY0X2dldHBoZHIoRWxmICpl
KQo+ICt7Cj4gKyAgICAgICByZXR1cm4gKF9saWJlbGZfZ2V0cGhkcihlLCBFTEZDTEFTUzY0KSk7
Cj4gK30KPiArCj4gK0dFbGZfUGhkciAqCj4gK2dlbGZfZ2V0cGhkcihFbGYgKmUsIGludCBpbmRl
eCwgR0VsZl9QaGRyICpkKQo+ICt7Cj4gKyAgICAgICBpbnQgZWM7Cj4gKyAgICAgICBFbGYzMl9F
aGRyICplaDMyOwo+ICsgICAgICAgRWxmNjRfRWhkciAqZWg2NDsKPiArICAgICAgIEVsZjMyX1Bo
ZHIgKmVwMzI7Cj4gKyAgICAgICBFbGY2NF9QaGRyICplcDY0Owo+ICsKPiArICAgICAgIGlmIChk
ID09IE5VTEwgfHwgZSA9PSBOVUxMIHx8Cj4gKyAgICAgICAgICAgKChlYyA9IGUtPmVfY2xhc3Mp
ICE9IEVMRkNMQVNTMzIgJiYgZWMgIT0gRUxGQ0xBU1M2NCkgfHwKPiArICAgICAgICAgICAoZS0+
ZV9raW5kICE9IEVMRl9LX0VMRikgfHwgaW5kZXggPCAwKSB7Cj4gKyAgICAgICAgICAgICAgIExJ
QkVMRl9TRVRfRVJST1IoQVJHVU1FTlQsIDApOwo+ICsgICAgICAgICAgICAgICByZXR1cm4gKE5V
TEwpOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIGlmIChlYyA9PSBFTEZDTEFTUzMyKSB7Cj4g
KyAgICAgICAgICAgICAgIGlmICgoZWgzMiA9IF9saWJlbGZfZWhkcihlLCBFTEZDTEFTUzMyLCAw
KSkgPT0gTlVMTCB8fAo+ICsgICAgICAgICAgICAgICAgICAgKChlcDMyID0gX2xpYmVsZl9nZXRw
aGRyKGUsIEVMRkNMQVNTMzIpKSA9PSBOVUxMKSkKPiArICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gKE5VTEwpOwo+ICsKPiArICAgICAgICAgICAgICAgaWYgKGluZGV4ID49IGVoMzItPmVf
cGhudW0pIHsKPiArICAgICAgICAgICAgICAgICAgICAgICBMSUJFTEZfU0VUX0VSUk9SKEFSR1VN
RU5ULCAwKTsKPiArICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKE5VTEwpOwo+ICsgICAg
ICAgICAgICAgICB9Cj4gKwo+ICsgICAgICAgICAgICAgICBlcDMyICs9IGluZGV4Owo+ICsKPiAr
ICAgICAgICAgICAgICAgZC0+cF90eXBlICAgPSBlcDMyLT5wX3R5cGU7Cj4gKyAgICAgICAgICAg
ICAgIGQtPnBfb2Zmc2V0ID0gZXAzMi0+cF9vZmZzZXQ7Cj4gKyAgICAgICAgICAgICAgIGQtPnBf
dmFkZHIgID0gKEVsZjY0X0FkZHIpIGVwMzItPnBfdmFkZHI7Cj4gKyAgICAgICAgICAgICAgIGQt
PnBfcGFkZHIgID0gKEVsZjY0X0FkZHIpIGVwMzItPnBfcGFkZHI7Cj4gKyAgICAgICAgICAgICAg
IGQtPnBfZmlsZXN6ID0gKEVsZjY0X1h3b3JkKSBlcDMyLT5wX2ZpbGVzejsKPiArICAgICAgICAg
ICAgICAgZC0+cF9tZW1zeiAgPSAoRWxmNjRfWHdvcmQpIGVwMzItPnBfbWVtc3o7Cj4gKyAgICAg
ICAgICAgICAgIGQtPnBfZmxhZ3MgID0gZXAzMi0+cF9mbGFnczsKPiArICAgICAgICAgICAgICAg
ZC0+cF9hbGlnbiAgPSAoRWxmNjRfWHdvcmQpIGVwMzItPnBfYWxpZ247Cj4gKwo+ICsgICAgICAg
fSBlbHNlIHsKPiArICAgICAgICAgICAgICAgaWYgKChlaDY0ID0gX2xpYmVsZl9laGRyKGUsIEVM
RkNMQVNTNjQsIDApKSA9PSBOVUxMIHx8Cj4gKyAgICAgICAgICAgICAgICAgICAoZXA2NCA9IF9s
aWJlbGZfZ2V0cGhkcihlLCBFTEZDTEFTUzY0KSkgPT0gTlVMTCkKPiArICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gKE5VTEwpOwo+ICsKPiArICAgICAgICAgICAgICAgaWYgKGluZGV4ID49
IGVoNjQtPmVfcGhudW0pIHsKPiArICAgICAgICAgICAgICAgICAgICAgICBMSUJFTEZfU0VUX0VS
Uk9SKEFSR1VNRU5ULCAwKTsKPiArICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKE5VTEwp
Owo+ICsgICAgICAgICAgICAgICB9Cj4gKwo+ICsgICAgICAgICAgICAgICBlcDY0ICs9IGluZGV4
Owo+ICsKPiArICAgICAgICAgICAgICAgKmQgPSAqZXA2NDsKPiArICAgICAgIH0KPiArCj4gKyAg
ICAgICByZXR1cm4gKGQpOwo+ICt9Cj4gKwo+ICtFbGYzMl9QaGRyICoKPiArZWxmMzJfbmV3cGhk
cihFbGYgKmUsIHNpemVfdCBjb3VudCkKPiArewo+ICsgICAgICAgcmV0dXJuIChfbGliZWxmX25l
d3BoZHIoZSwgRUxGQ0xBU1MzMiwgY291bnQpKTsKPiArfQo+ICsKPiArRWxmNjRfUGhkciAqCj4g
K2VsZjY0X25ld3BoZHIoRWxmICplLCBzaXplX3QgY291bnQpCj4gK3sKPiArICAgICAgIHJldHVy
biAoX2xpYmVsZl9uZXdwaGRyKGUsIEVMRkNMQVNTNjQsIGNvdW50KSk7Cj4gK30KPiArCj4gK3Zv
aWQgKgo+ICtnZWxmX25ld3BoZHIoRWxmICplLCBzaXplX3QgY291bnQpCj4gK3sKPiArICAgICAg
IGlmIChlID09IE5VTEwpIHsKPiArICAgICAgICAgICAgICAgTElCRUxGX1NFVF9FUlJPUihBUkdV
TUVOVCwgMCk7Cj4gKyAgICAgICAgICAgICAgIHJldHVybiAoTlVMTCk7Cj4gKyAgICAgICB9Cj4g
KyAgICAgICByZXR1cm4gKF9saWJlbGZfbmV3cGhkcihlLCBlLT5lX2NsYXNzLCBjb3VudCkpOwo+
ICt9Cj4gKwo+ICtpbnQKPiArZ2VsZl91cGRhdGVfcGhkcihFbGYgKmUsIGludCBuZHgsIEdFbGZf
UGhkciAqcykKPiArewo+ICsgICAgICAgaW50IGVjLCBwaG51bTsKPiArICAgICAgIHZvaWQgKmVo
ZHI7Cj4gKyAgICAgICBFbGYzMl9QaGRyICpwaDMyOwo+ICsgICAgICAgRWxmNjRfUGhkciAqcGg2
NDsKPiArCj4gKyAgICAgICBpZiAocyA9PSBOVUxMIHx8IGUgPT0gTlVMTCB8fCBlLT5lX2tpbmQg
IT0gRUxGX0tfRUxGIHx8Cj4gKyAgICAgICAgICAgKChlYyA9IGUtPmVfY2xhc3MpICE9IEVMRkNM
QVNTMzIgJiYgZWMgIT0gRUxGQ0xBU1M2NCkpIHsKPiArICAgICAgICAgICAgICAgTElCRUxGX1NF
VF9FUlJPUihBUkdVTUVOVCwgMCk7Cj4gKyAgICAgICAgICAgICAgIHJldHVybiAoMCk7Cj4gKyAg
ICAgICB9Cj4gKwo+ICsgICAgICAgaWYgKGUtPmVfY21kID09IEVMRl9DX1JFQUQpIHsKPiArICAg
ICAgICAgICAgICAgTElCRUxGX1NFVF9FUlJPUihNT0RFLCAwKTsKPiArICAgICAgICAgICAgICAg
cmV0dXJuICgwKTsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICBpZiAoKGVoZHIgPSBfbGliZWxm
X2VoZHIoZSwgZWMsIDApKSA9PSBOVUxMKQo+ICsgICAgICAgICAgICAgICByZXR1cm4gKDApOwo+
ICsKPiArICAgICAgIGlmIChlYyA9PSBFTEZDTEFTUzMyKQo+ICsgICAgICAgICAgICAgICBwaG51
bSA9ICgoRWxmMzJfRWhkciAqKSBlaGRyKS0+ZV9waG51bTsKPiArICAgICAgIGVsc2UKPiArICAg
ICAgICAgICAgICAgcGhudW0gPSAoKEVsZjY0X0VoZHIgKikgZWhkciktPmVfcGhudW07Cj4gKwo+
ICsgICAgICAgaWYgKG5keCA8IDAgfHwgbmR4ID4gcGhudW0pIHsKPiArICAgICAgICAgICAgICAg
TElCRUxGX1NFVF9FUlJPUihBUkdVTUVOVCwgMCk7Cj4gKyAgICAgICAgICAgICAgIHJldHVybiAo
MCk7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgKHZvaWQpIGVsZl9mbGFncGhkcihlLCBFTEZf
Q19TRVQsIEVMRl9GX0RJUlRZKTsKPiArCj4gKyAgICAgICBpZiAoZWMgPT0gRUxGQ0xBU1M2NCkg
ewo+ICsgICAgICAgICAgICAgICBwaDY0ID0gZS0+ZV91LmVfZWxmLmVfcGhkci5lX3BoZHI2NCAr
IG5keDsKPiArICAgICAgICAgICAgICAgKnBoNjQgPSAqczsKPiArICAgICAgICAgICAgICAgcmV0
dXJuICgxKTsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICBwaDMyID0gZS0+ZV91LmVfZWxmLmVf
cGhkci5lX3BoZHIzMiArIG5keDsKPiArCj4gKyAgICAgICBwaDMyLT5wX3R5cGUgICAgID0gIHMt
PnBfdHlwZTsKPiArICAgICAgIHBoMzItPnBfZmxhZ3MgICAgPSAgcy0+cF9mbGFnczsKPiArICAg
ICAgIExJQkVMRl9DT1BZX1UzMihwaDMyLCBzLCBwX29mZnNldCk7Cj4gKyAgICAgICBMSUJFTEZf
Q09QWV9VMzIocGgzMiwgcywgcF92YWRkcik7Cj4gKyAgICAgICBMSUJFTEZfQ09QWV9VMzIocGgz
MiwgcywgcF9wYWRkcik7Cj4gKyAgICAgICBMSUJFTEZfQ09QWV9VMzIocGgzMiwgcywgcF9maWxl
c3opOwo+ICsgICAgICAgTElCRUxGX0NPUFlfVTMyKHBoMzIsIHMsIHBfbWVtc3opOwo+ICsgICAg
ICAgTElCRUxGX0NPUFlfVTMyKHBoMzIsIHMsIHBfYWxpZ24pOwo+ICsKPiArICAgICAgIHJldHVy
biAoMSk7Cj4gK30KPiBkaWZmIC0tZ2l0IGEvZ2VsZl9yZWwuYyBiL2dlbGZfcmVsLmMKPiBuZXcg
ZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLjAyYTYxMzMKPiAtLS0gL2Rldi9udWxs
Cj4gKysrIGIvZ2VsZl9yZWwuYwo+IEBAIC0wLDAgKzEsMTYyIEBACj4gKy8qLQo+ICsgKiBDb3B5
cmlnaHQgKGMpIDIwMDYsMjAwOCBKb3NlcGggS29zaHkKPiArICogQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KPiArICoKPiArICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cj4gKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwo+ICsgKiBhcmUgbWV0Ogo+
ICsgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAo+ICsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCj4gKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cj4gKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKPiArICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KPiArICoKPiArICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAo+
ICsgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKPiArICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKPiArICogQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUKPiArICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKPiArICogREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKPiArICog
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pCj4gKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCj4gKyAqIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkKPiArICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRgo+ICsgKiBTVUNIIERBTUFHRS4KPiArICovCj4gKwo+ICsj
aW5jbHVkZSA8YXNzZXJ0Lmg+Cj4gKyNpbmNsdWRlIDxnZWxmLmg+Cj4gKyNpbmNsdWRlIDxsaW1p
dHMuaD4KPiArI2luY2x1ZGUgPHN0ZGludC5oPgo+ICsKPiArI2luY2x1ZGUgIl9saWJlbGYuaCIK
PiArCj4gK0VMRlRDX1ZDU0lEKCIkSWQ6IGdlbGZfcmVsLmMgMzE3NyAyMDE1LTAzLTMwIDE4OjE5
OjQxWiBlbWFzdGUgJCIpOwo+ICsKPiArR0VsZl9SZWwgKgo+ICtnZWxmX2dldHJlbChFbGZfRGF0
YSAqZWQsIGludCBuZHgsIEdFbGZfUmVsICpkc3QpCj4gK3sKPiArICAgICAgIGludCBlYzsKPiAr
ICAgICAgIEVsZiAqZTsKPiArICAgICAgIHNpemVfdCBtc3o7Cj4gKyAgICAgICBFbGZfU2NuICpz
Y247Cj4gKyAgICAgICB1aW50MzJfdCBzaF90eXBlOwo+ICsgICAgICAgRWxmMzJfUmVsICpyZWwz
MjsKPiArICAgICAgIEVsZjY0X1JlbCAqcmVsNjQ7Cj4gKyAgICAgICBzdHJ1Y3QgX0xpYmVsZl9E
YXRhICpkOwo+ICsKPiArICAgICAgIGQgPSAoc3RydWN0IF9MaWJlbGZfRGF0YSAqKSBlZDsKPiAr
Cj4gKyAgICAgICBpZiAoZCA9PSBOVUxMIHx8IG5keCA8IDAgfHwgZHN0ID09IE5VTEwgfHwKPiAr
ICAgICAgICAgICAoc2NuID0gZC0+ZF9zY24pID09IE5VTEwgfHwKPiArICAgICAgICAgICAoZSA9
IHNjbi0+c19lbGYpID09IE5VTEwpIHsKPiArICAgICAgICAgICAgICAgTElCRUxGX1NFVF9FUlJP
UihBUkdVTUVOVCwgMCk7Cj4gKyAgICAgICAgICAgICAgIHJldHVybiAoTlVMTCk7Cj4gKyAgICAg
ICB9Cj4gKwo+ICsgICAgICAgZWMgPSBlLT5lX2NsYXNzOwo+ICsgICAgICAgYXNzZXJ0KGVjID09
IEVMRkNMQVNTMzIgfHwgZWMgPT0gRUxGQ0xBU1M2NCk7Cj4gKwo+ICsgICAgICAgaWYgKGVjID09
IEVMRkNMQVNTMzIpCj4gKyAgICAgICAgICAgICAgIHNoX3R5cGUgPSBzY24tPnNfc2hkci5zX3No
ZHIzMi5zaF90eXBlOwo+ICsgICAgICAgZWxzZQo+ICsgICAgICAgICAgICAgICBzaF90eXBlID0g
c2NuLT5zX3NoZHIuc19zaGRyNjQuc2hfdHlwZTsKPiArCj4gKyAgICAgICBpZiAoX2xpYmVsZl94
bGF0ZV9zaHR5cGUoc2hfdHlwZSkgIT0gRUxGX1RfUkVMKSB7Cj4gKyAgICAgICAgICAgICAgIExJ
QkVMRl9TRVRfRVJST1IoQVJHVU1FTlQsIDApOwo+ICsgICAgICAgICAgICAgICByZXR1cm4gKE5V
TEwpOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIG1zeiA9IF9saWJlbGZfbXNpemUoRUxGX1Rf
UkVMLCBlYywgZS0+ZV92ZXJzaW9uKTsKPiArCj4gKyAgICAgICBhc3NlcnQobXN6ID4gMCk7Cj4g
KyAgICAgICBhc3NlcnQobmR4ID49IDApOwo+ICsKPiArICAgICAgIGlmIChtc3ogKiAoc2l6ZV90
KSBuZHggPj0gZC0+ZF9kYXRhLmRfc2l6ZSkgewo+ICsgICAgICAgICAgICAgICBMSUJFTEZfU0VU
X0VSUk9SKEFSR1VNRU5ULCAwKTsKPiArICAgICAgICAgICAgICAgcmV0dXJuIChOVUxMKTsKPiAr
ICAgICAgIH0KPiArCj4gKyAgICAgICBpZiAoZWMgPT0gRUxGQ0xBU1MzMikgewo+ICsgICAgICAg
ICAgICAgICByZWwzMiA9IChFbGYzMl9SZWwgKikgZC0+ZF9kYXRhLmRfYnVmICsgbmR4Owo+ICsK
PiArICAgICAgICAgICAgICAgZHN0LT5yX29mZnNldCA9IChFbGY2NF9BZGRyKSByZWwzMi0+cl9v
ZmZzZXQ7Cj4gKyAgICAgICAgICAgICAgIGRzdC0+cl9pbmZvICAgPSBFTEY2NF9SX0lORk8oCj4g
KyAgICAgICAgICAgICAgICAgICAoRWxmNjRfWHdvcmQpIEVMRjMyX1JfU1lNKHJlbDMyLT5yX2lu
Zm8pLAo+ICsgICAgICAgICAgICAgICAgICAgRUxGMzJfUl9UWVBFKHJlbDMyLT5yX2luZm8pKTsK
PiArCj4gKyAgICAgICB9IGVsc2Ugewo+ICsKPiArICAgICAgICAgICAgICAgcmVsNjQgPSAoRWxm
NjRfUmVsICopIGQtPmRfZGF0YS5kX2J1ZiArIG5keDsKPiArCj4gKyAgICAgICAgICAgICAgICpk
c3QgPSAqcmVsNjQ7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgcmV0dXJuIChkc3QpOwo+ICt9
Cj4gKwo+ICtpbnQKPiArZ2VsZl91cGRhdGVfcmVsKEVsZl9EYXRhICplZCwgaW50IG5keCwgR0Vs
Zl9SZWwgKmRyKQo+ICt7Cj4gKyAgICAgICBpbnQgZWM7Cj4gKyAgICAgICBFbGYgKmU7Cj4gKyAg
ICAgICBzaXplX3QgbXN6Owo+ICsgICAgICAgRWxmX1NjbiAqc2NuOwo+ICsgICAgICAgdWludDMy
X3Qgc2hfdHlwZTsKPiArICAgICAgIEVsZjMyX1JlbCAqcmVsMzI7Cj4gKyAgICAgICBFbGY2NF9S
ZWwgKnJlbDY0Owo+ICsgICAgICAgc3RydWN0IF9MaWJlbGZfRGF0YSAqZDsKPiArCj4gKyAgICAg
ICBkID0gKHN0cnVjdCBfTGliZWxmX0RhdGEgKikgZWQ7Cj4gKwo+ICsgICAgICAgaWYgKGQgPT0g
TlVMTCB8fCBuZHggPCAwIHx8IGRyID09IE5VTEwgfHwKPiArICAgICAgICAgICAoc2NuID0gZC0+
ZF9zY24pID09IE5VTEwgfHwKPiArICAgICAgICAgICAoZSA9IHNjbi0+c19lbGYpID09IE5VTEwp
IHsKPiArICAgICAgICAgICAgICAgTElCRUxGX1NFVF9FUlJPUihBUkdVTUVOVCwgMCk7Cj4gKyAg
ICAgICAgICAgICAgIHJldHVybiAoMCk7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgZWMgPSBl
LT5lX2NsYXNzOwo+ICsgICAgICAgYXNzZXJ0KGVjID09IEVMRkNMQVNTMzIgfHwgZWMgPT0gRUxG
Q0xBU1M2NCk7Cj4gKwo+ICsgICAgICAgaWYgKGVjID09IEVMRkNMQVNTMzIpCj4gKyAgICAgICAg
ICAgICAgIHNoX3R5cGUgPSBzY24tPnNfc2hkci5zX3NoZHIzMi5zaF90eXBlOwo+ICsgICAgICAg
ZWxzZQo+ICsgICAgICAgICAgICAgICBzaF90eXBlID0gc2NuLT5zX3NoZHIuc19zaGRyNjQuc2hf
dHlwZTsKPiArCj4gKyAgICAgICBpZiAoX2xpYmVsZl94bGF0ZV9zaHR5cGUoc2hfdHlwZSkgIT0g
RUxGX1RfUkVMKSB7Cj4gKyAgICAgICAgICAgICAgIExJQkVMRl9TRVRfRVJST1IoQVJHVU1FTlQs
IDApOwo+ICsgICAgICAgICAgICAgICByZXR1cm4gKDApOwo+ICsgICAgICAgfQo+ICsKPiArICAg
ICAgIG1zeiA9IF9saWJlbGZfbXNpemUoRUxGX1RfUkVMLCBlYywgZS0+ZV92ZXJzaW9uKTsKPiAr
Cj4gKyAgICAgICBhc3NlcnQobXN6ID4gMCk7Cj4gKyAgICAgICBhc3NlcnQobmR4ID49IDApOwo+
ICsKPiArICAgICAgIGlmIChtc3ogKiAoc2l6ZV90KSBuZHggPj0gZC0+ZF9kYXRhLmRfc2l6ZSkg
ewo+ICsgICAgICAgICAgICAgICBMSUJFTEZfU0VUX0VSUk9SKEFSR1VNRU5ULCAwKTsKPiArICAg
ICAgICAgICAgICAgcmV0dXJuICgwKTsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICBpZiAoZWMg
PT0gRUxGQ0xBU1MzMikgewo+ICsgICAgICAgICAgICAgICByZWwzMiA9IChFbGYzMl9SZWwgKikg
ZC0+ZF9kYXRhLmRfYnVmICsgbmR4Owo+ICsKPiArICAgICAgICAgICAgICAgTElCRUxGX0NPUFlf
VTMyKHJlbDMyLCBkciwgcl9vZmZzZXQpOwo+ICsKPiArICAgICAgICAgICAgICAgaWYgKEVMRjY0
X1JfU1lNKGRyLT5yX2luZm8pID4gRUxGMzJfUl9TWU0ofjBVTCkgfHwKPiArICAgICAgICAgICAg
ICAgICAgIEVMRjY0X1JfVFlQRShkci0+cl9pbmZvKSA+IEVMRjMyX1JfVFlQRSh+MFUpKSB7Cj4g
KyAgICAgICAgICAgICAgICAgICAgICAgTElCRUxGX1NFVF9FUlJPUihSQU5HRSwgMCk7Cj4gKyAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgwKTsKPiArICAgICAgICAgICAgICAgfQo+ICsg
ICAgICAgICAgICAgICByZWwzMi0+cl9pbmZvID0gRUxGMzJfUl9JTkZPKAo+ICsgICAgICAgICAg
ICAgICAgICAgICAgIChFbGYzMl9Xb3JkKSBFTEY2NF9SX1NZTShkci0+cl9pbmZvKSwKPiArICAg
ICAgICAgICAgICAgICAgICAgICAoRWxmMzJfV29yZCkgRUxGNjRfUl9UWVBFKGRyLT5yX2luZm8p
KTsKPiArICAgICAgIH0gZWxzZSB7Cj4gKyAgICAgICAgICAgICAgIHJlbDY0ID0gKEVsZjY0X1Jl
bCAqKSBkLT5kX2RhdGEuZF9idWYgKyBuZHg7Cj4gKwo+ICsgICAgICAgICAgICAgICAqcmVsNjQg
PSAqZHI7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgcmV0dXJuICgxKTsKPiArfQo+IGRpZmYg
LS1naXQgYS9nZWxmX3JlbGEuYyBiL2dlbGZfcmVsYS5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQK
PiBpbmRleCAwMDAwMDAwLi5kNDg1YWI5Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2dlbGZfcmVs
YS5jCj4gQEAgLTAsMCArMSwxNjUgQEAKPiArLyotCj4gKyAqIENvcHlyaWdodCAoYykgMjAwNiwy
MDA4IEpvc2VwaCBLb3NoeQo+ICsgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgo+ICsgKgo+ICsgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKPiArICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCj4gKyAqIGFyZSBtZXQ6Cj4gKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cj4g
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KPiArICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKPiArICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQo+ICsgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgo+ICsgKgo+ICsgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECj4gKyAqIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQo+ICsgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQo+ICsgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQo+ICsgKiBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTAo+ICsgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUwo+ICsgKiBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKPiAr
ICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QKPiArICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQo+ICsgKiBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GCj4gKyAqIFNVQ0ggREFNQUdFLgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlIDxhc3NlcnQu
aD4KPiArI2luY2x1ZGUgPGdlbGYuaD4KPiArI2luY2x1ZGUgPGxpbWl0cy5oPgo+ICsjaW5jbHVk
ZSA8c3RkaW50Lmg+Cj4gKwo+ICsjaW5jbHVkZSAiX2xpYmVsZi5oIgo+ICsKPiArRUxGVENfVkNT
SUQoIiRJZDogZ2VsZl9yZWxhLmMgMzE3NyAyMDE1LTAzLTMwIDE4OjE5OjQxWiBlbWFzdGUgJCIp
Owo+ICsKPiArR0VsZl9SZWxhICoKPiArZ2VsZl9nZXRyZWxhKEVsZl9EYXRhICplZCwgaW50IG5k
eCwgR0VsZl9SZWxhICpkc3QpCj4gK3sKPiArICAgICAgIGludCBlYzsKPiArICAgICAgIEVsZiAq
ZTsKPiArICAgICAgIHNpemVfdCBtc3o7Cj4gKyAgICAgICBFbGZfU2NuICpzY247Cj4gKyAgICAg
ICB1aW50MzJfdCBzaF90eXBlOwo+ICsgICAgICAgRWxmMzJfUmVsYSAqcmVsYTMyOwo+ICsgICAg
ICAgRWxmNjRfUmVsYSAqcmVsYTY0Owo+ICsgICAgICAgc3RydWN0IF9MaWJlbGZfRGF0YSAqZDsK
PiArCj4gKyAgICAgICBkID0gKHN0cnVjdCBfTGliZWxmX0RhdGEgKikgZWQ7Cj4gKwo+ICsgICAg
ICAgaWYgKGQgPT0gTlVMTCB8fCBuZHggPCAwIHx8IGRzdCA9PSBOVUxMIHx8Cj4gKyAgICAgICAg
ICAgKHNjbiA9IGQtPmRfc2NuKSA9PSBOVUxMIHx8Cj4gKyAgICAgICAgICAgKGUgPSBzY24tPnNf
ZWxmKSA9PSBOVUxMKSB7Cj4gKyAgICAgICAgICAgICAgIExJQkVMRl9TRVRfRVJST1IoQVJHVU1F
TlQsIDApOwo+ICsgICAgICAgICAgICAgICByZXR1cm4gKE5VTEwpOwo+ICsgICAgICAgfQo+ICsK
PiArICAgICAgIGVjID0gZS0+ZV9jbGFzczsKPiArICAgICAgIGFzc2VydChlYyA9PSBFTEZDTEFT
UzMyIHx8IGVjID09IEVMRkNMQVNTNjQpOwo+ICsKPiArICAgICAgIGlmIChlYyA9PSBFTEZDTEFT
UzMyKQo+ICsgICAgICAgICAgICAgICBzaF90eXBlID0gc2NuLT5zX3NoZHIuc19zaGRyMzIuc2hf
dHlwZTsKPiArICAgICAgIGVsc2UKPiArICAgICAgICAgICAgICAgc2hfdHlwZSA9IHNjbi0+c19z
aGRyLnNfc2hkcjY0LnNoX3R5cGU7Cj4gKwo+ICsgICAgICAgaWYgKF9saWJlbGZfeGxhdGVfc2h0
eXBlKHNoX3R5cGUpICE9IEVMRl9UX1JFTEEpIHsKPiArICAgICAgICAgICAgICAgTElCRUxGX1NF
VF9FUlJPUihBUkdVTUVOVCwgMCk7Cj4gKyAgICAgICAgICAgICAgIHJldHVybiAoTlVMTCk7Cj4g
KyAgICAgICB9Cj4gKwo+ICsgICAgICAgbXN6ID0gX2xpYmVsZl9tc2l6ZShFTEZfVF9SRUxBLCBl
YywgZS0+ZV92ZXJzaW9uKTsKPiArCj4gKyAgICAgICBhc3NlcnQobXN6ID4gMCk7Cj4gKyAgICAg
ICBhc3NlcnQobmR4ID49IDApOwo+ICsKPiArICAgICAgIGlmIChtc3ogKiAoc2l6ZV90KSBuZHgg
Pj0gZC0+ZF9kYXRhLmRfc2l6ZSkgewo+ICsgICAgICAgICAgICAgICBMSUJFTEZfU0VUX0VSUk9S
KEFSR1VNRU5ULCAwKTsKPiArICAgICAgICAgICAgICAgcmV0dXJuIChOVUxMKTsKPiArICAgICAg
IH0KPiArCj4gKyAgICAgICBpZiAoZWMgPT0gRUxGQ0xBU1MzMikgewo+ICsgICAgICAgICAgICAg
ICByZWxhMzIgPSAoRWxmMzJfUmVsYSAqKSBkLT5kX2RhdGEuZF9idWYgKyBuZHg7Cj4gKwo+ICsg
ICAgICAgICAgICAgICBkc3QtPnJfb2Zmc2V0ID0gKEVsZjY0X0FkZHIpIHJlbGEzMi0+cl9vZmZz
ZXQ7Cj4gKyAgICAgICAgICAgICAgIGRzdC0+cl9pbmZvICAgPSBFTEY2NF9SX0lORk8oCj4gKyAg
ICAgICAgICAgICAgICAgICAoRWxmNjRfWHdvcmQpIEVMRjMyX1JfU1lNKHJlbGEzMi0+cl9pbmZv
KSwKPiArICAgICAgICAgICAgICAgICAgIEVMRjMyX1JfVFlQRShyZWxhMzItPnJfaW5mbykpOwo+
ICsgICAgICAgICAgICAgICBkc3QtPnJfYWRkZW5kID0gKEVsZjY0X1N4d29yZCkgcmVsYTMyLT5y
X2FkZGVuZDsKPiArCj4gKyAgICAgICB9IGVsc2Ugewo+ICsKPiArICAgICAgICAgICAgICAgcmVs
YTY0ID0gKEVsZjY0X1JlbGEgKikgZC0+ZF9kYXRhLmRfYnVmICsgbmR4Owo+ICsKPiArICAgICAg
ICAgICAgICAgKmRzdCA9ICpyZWxhNjQ7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgcmV0dXJu
IChkc3QpOwo+ICt9Cj4gKwo+ICtpbnQKPiArZ2VsZl91cGRhdGVfcmVsYShFbGZfRGF0YSAqZWQs
IGludCBuZHgsIEdFbGZfUmVsYSAqZHIpCj4gK3sKPiArICAgICAgIGludCBlYzsKPiArICAgICAg
IEVsZiAqZTsKPiArICAgICAgIHNpemVfdCBtc3o7Cj4gKyAgICAgICBFbGZfU2NuICpzY247Cj4g
KyAgICAgICB1aW50MzJfdCBzaF90eXBlOwo+ICsgICAgICAgRWxmMzJfUmVsYSAqcmVsYTMyOwo+
ICsgICAgICAgRWxmNjRfUmVsYSAqcmVsYTY0Owo+ICsgICAgICAgc3RydWN0IF9MaWJlbGZfRGF0
YSAqZDsKPiArCj4gKyAgICAgICBkID0gKHN0cnVjdCBfTGliZWxmX0RhdGEgKikgZWQ7Cj4gKwo+
ICsgICAgICAgaWYgKGQgPT0gTlVMTCB8fCBuZHggPCAwIHx8IGRyID09IE5VTEwgfHwKPiArICAg
ICAgICAgICAoc2NuID0gZC0+ZF9zY24pID09IE5VTEwgfHwKPiArICAgICAgICAgICAoZSA9IHNj
bi0+c19lbGYpID09IE5VTEwpIHsKPiArICAgICAgICAgICAgICAgTElCRUxGX1NFVF9FUlJPUihB
UkdVTUVOVCwgMCk7Cj4gKyAgICAgICAgICAgICAgIHJldHVybiAoMCk7Cj4gKyAgICAgICB9Cj4g
Kwo+ICsgICAgICAgZWMgPSBlLT5lX2NsYXNzOwo+ICsgICAgICAgYXNzZXJ0KGVjID09IEVMRkNM
QVNTMzIgfHwgZWMgPT0gRUxGQ0xBU1M2NCk7Cj4gKwo+ICsgICAgICAgaWYgKGVjID09IEVMRkNM
QVNTMzIpCj4gKyAgICAgICAgICAgICAgIHNoX3R5cGUgPSBzY24tPnNfc2hkci5zX3NoZHIzMi5z
aF90eXBlOwo+ICsgICAgICAgZWxzZQo+ICsgICAgICAgICAgICAgICBzaF90eXBlID0gc2NuLT5z
X3NoZHIuc19zaGRyNjQuc2hfdHlwZTsKPiArCj4gKyAgICAgICBpZiAoX2xpYmVsZl94bGF0ZV9z
aHR5cGUoc2hfdHlwZSkgIT0gRUxGX1RfUkVMQSkgewo+ICsgICAgICAgICAgICAgICBMSUJFTEZf
U0VUX0VSUk9SKEFSR1VNRU5ULCAwKTsKPiArICAgICAgICAgICAgICAgcmV0dXJuICgwKTsKPiAr
ICAgICAgIH0KPiArCj4gKyAgICAgICBtc3ogPSBfbGliZWxmX21zaXplKEVMRl9UX1JFTEEsIGVj
LCBlLT5lX3ZlcnNpb24pOwo+ICsKPiArICAgICAgIGFzc2VydChtc3ogPiAwKTsKPiArICAgICAg
IGFzc2VydChuZHggPj0gMCk7Cj4gKwo+ICsgICAgICAgaWYgKG1zeiAqIChzaXplX3QpIG5keCA+
PSBkLT5kX2RhdGEuZF9zaXplKSB7Cj4gKyAgICAgICAgICAgICAgIExJQkVMRl9TRVRfRVJST1Io
QVJHVU1FTlQsIDApOwo+ICsgICAgICAgICAgICAgICByZXR1cm4gKDApOwo+ICsgICAgICAgfQo+
ICsKPiArICAgICAgIGlmIChlYyA9PSBFTEZDTEFTUzMyKSB7Cj4gKyAgICAgICAgICAgICAgIHJl
bGEzMiA9IChFbGYzMl9SZWxhICopIGQtPmRfZGF0YS5kX2J1ZiArIG5keDsKPiArCj4gKyAgICAg
ICAgICAgICAgIExJQkVMRl9DT1BZX1UzMihyZWxhMzIsIGRyLCByX29mZnNldCk7Cj4gKwo+ICsg
ICAgICAgICAgICAgICBpZiAoRUxGNjRfUl9TWU0oZHItPnJfaW5mbykgPiBFTEYzMl9SX1NZTSh+
MFVMKSB8fAo+ICsgICAgICAgICAgICAgICAgICAgRUxGNjRfUl9UWVBFKGRyLT5yX2luZm8pID4g
RUxGMzJfUl9UWVBFKH4wVSkpIHsKPiArICAgICAgICAgICAgICAgICAgICAgICBMSUJFTEZfU0VU
X0VSUk9SKFJBTkdFLCAwKTsKPiArICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKDApOwo+
ICsgICAgICAgICAgICAgICB9Cj4gKyAgICAgICAgICAgICAgIHJlbGEzMi0+cl9pbmZvID0gRUxG
MzJfUl9JTkZPKAo+ICsgICAgICAgICAgICAgICAgICAgICAgIChFbGYzMl9Xb3JkKSBFTEY2NF9S
X1NZTShkci0+cl9pbmZvKSwKPiArICAgICAgICAgICAgICAgICAgICAgICAoRWxmMzJfV29yZCkg
RUxGNjRfUl9UWVBFKGRyLT5yX2luZm8pKTsKPiArCj4gKyAgICAgICAgICAgICAgIExJQkVMRl9D
T1BZX1MzMihyZWxhMzIsIGRyLCByX2FkZGVuZCk7Cj4gKyAgICAgICB9IGVsc2Ugewo+ICsgICAg
ICAgICAgICAgICByZWxhNjQgPSAoRWxmNjRfUmVsYSAqKSBkLT5kX2RhdGEuZF9idWYgKyBuZHg7
Cj4gKwo+ICsgICAgICAgICAgICAgICAqcmVsYTY0ID0gKmRyOwo+ICsgICAgICAgfQo+ICsKPiAr
ICAgICAgIHJldHVybiAoMSk7Cj4gK30KPiBkaWZmIC0tZ2l0IGEvZ2VsZl9zaGRyLmMgYi9nZWxm
X3NoZHIuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uMWE5ZDk0OQo+
IC0tLSAvZGV2L251bGwKPiArKysgYi9nZWxmX3NoZHIuYwo+IEBAIC0wLDAgKzEsMTMwIEBACj4g
Ky8qLQo+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMDYsMjAwOCBKb3NlcGggS29zaHkKPiArICogQWxs
IHJpZ2h0cyByZXNlcnZlZC4KPiArICoKPiArICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cj4gKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwo+
ICsgKiBhcmUgbWV0Ogo+ICsgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAo+ICsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCj4gKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Cj4gKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKPiArICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KPiArICoKPiArICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMg
YGBBUyBJUycnIEFORAo+ICsgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKPiArICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UK
PiArICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUKPiArICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKPiArICogREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMKPiArICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCj4gKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCj4gKyAq
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkKPiArICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgo+ICsgKiBTVUNIIERBTUFHRS4K
PiArICovCj4gKwo+ICsjaW5jbHVkZSA8YXNzZXJ0Lmg+Cj4gKyNpbmNsdWRlIDxnZWxmLmg+Cj4g
KyNpbmNsdWRlIDxsaWJlbGYuaD4KPiArI2luY2x1ZGUgPGxpbWl0cy5oPgo+ICsjaW5jbHVkZSA8
c3RkaW50Lmg+Cj4gKwo+ICsjaW5jbHVkZSAiX2xpYmVsZi5oIgo+ICsKPiArRUxGVENfVkNTSUQo
IiRJZDogZ2VsZl9zaGRyLmMgMzE3NyAyMDE1LTAzLTMwIDE4OjE5OjQxWiBlbWFzdGUgJCIpOwo+
ICsKPiArRWxmMzJfU2hkciAqCj4gK2VsZjMyX2dldHNoZHIoRWxmX1NjbiAqcykKPiArewo+ICsg
ICAgICAgcmV0dXJuIChfbGliZWxmX2dldHNoZHIocywgRUxGQ0xBU1MzMikpOwo+ICt9Cj4gKwo+
ICtFbGY2NF9TaGRyICoKPiArZWxmNjRfZ2V0c2hkcihFbGZfU2NuICpzKQo+ICt7Cj4gKyAgICAg
ICByZXR1cm4gKF9saWJlbGZfZ2V0c2hkcihzLCBFTEZDTEFTUzY0KSk7Cj4gK30KPiArCj4gK0dF
bGZfU2hkciAqCj4gK2dlbGZfZ2V0c2hkcihFbGZfU2NuICpzLCBHRWxmX1NoZHIgKmQpCj4gK3sK
PiArICAgICAgIGludCBlYzsKPiArICAgICAgIHZvaWQgKnNoOwo+ICsgICAgICAgRWxmMzJfU2hk
ciAqc2gzMjsKPiArICAgICAgIEVsZjY0X1NoZHIgKnNoNjQ7Cj4gKwo+ICsgICAgICAgaWYgKGQg
PT0gTlVMTCkgewo+ICsgICAgICAgICAgICAgICBMSUJFTEZfU0VUX0VSUk9SKEFSR1VNRU5ULCAw
KTsKPiArICAgICAgICAgICAgICAgcmV0dXJuIChOVUxMKTsKPiArICAgICAgIH0KPiArCj4gKyAg
ICAgICBpZiAoKHNoID0gX2xpYmVsZl9nZXRzaGRyKHMsIEVMRkNMQVNTTk9ORSkpID09IE5VTEwp
Cj4gKyAgICAgICAgICAgICAgIHJldHVybiAoTlVMTCk7Cj4gKwo+ICsgICAgICAgZWMgPSBzLT5z
X2VsZi0+ZV9jbGFzczsKPiArICAgICAgIGFzc2VydChlYyA9PSBFTEZDTEFTUzMyIHx8IGVjID09
IEVMRkNMQVNTNjQpOwo+ICsKPiArICAgICAgIGlmIChlYyA9PSBFTEZDTEFTUzMyKSB7Cj4gKyAg
ICAgICAgICAgICAgIHNoMzIgPSAoRWxmMzJfU2hkciAqKSBzaDsKPiArCj4gKyAgICAgICAgICAg
ICAgIGQtPnNoX25hbWUgICAgICA9IHNoMzItPnNoX25hbWU7Cj4gKyAgICAgICAgICAgICAgIGQt
PnNoX3R5cGUgICAgICA9IHNoMzItPnNoX3R5cGU7Cj4gKyAgICAgICAgICAgICAgIGQtPnNoX2Zs
YWdzICAgICA9IChFbGY2NF9Yd29yZCkgc2gzMi0+c2hfZmxhZ3M7Cj4gKyAgICAgICAgICAgICAg
IGQtPnNoX2FkZHIgICAgICA9IChFbGY2NF9BZGRyKSBzaDMyLT5zaF9hZGRyOwo+ICsgICAgICAg
ICAgICAgICBkLT5zaF9vZmZzZXQgICAgPSAoRWxmNjRfT2ZmKSBzaDMyLT5zaF9vZmZzZXQ7Cj4g
KyAgICAgICAgICAgICAgIGQtPnNoX3NpemUgICAgICA9IChFbGY2NF9Yd29yZCkgc2gzMi0+c2hf
c2l6ZTsKPiArICAgICAgICAgICAgICAgZC0+c2hfbGluayAgICAgID0gc2gzMi0+c2hfbGluazsK
PiArICAgICAgICAgICAgICAgZC0+c2hfaW5mbyAgICAgID0gc2gzMi0+c2hfaW5mbzsKPiArICAg
ICAgICAgICAgICAgZC0+c2hfYWRkcmFsaWduID0gKEVsZjY0X1h3b3JkKSBzaDMyLT5zaF9hZGRy
YWxpZ247Cj4gKyAgICAgICAgICAgICAgIGQtPnNoX2VudHNpemUgICA9IChFbGY2NF9Yd29yZCkg
c2gzMi0+c2hfZW50c2l6ZTsKPiArICAgICAgIH0gZWxzZSB7Cj4gKyAgICAgICAgICAgICAgIHNo
NjQgPSAoRWxmNjRfU2hkciAqKSBzaDsKPiArICAgICAgICAgICAgICAgKmQgPSAqc2g2NDsKPiAr
ICAgICAgIH0KPiArCj4gKyAgICAgICByZXR1cm4gKGQpOwo+ICt9Cj4gKwo+ICtpbnQKPiArZ2Vs
Zl91cGRhdGVfc2hkcihFbGZfU2NuICpzY24sIEdFbGZfU2hkciAqcykKPiArewo+ICsgICAgICAg
aW50IGVjOwo+ICsgICAgICAgRWxmICplOwo+ICsgICAgICAgRWxmMzJfU2hkciAqc2gzMjsKPiAr
Cj4gKwo+ICsgICAgICAgaWYgKHMgPT0gTlVMTCB8fCBzY24gPT0gTlVMTCB8fCAoZSA9IHNjbi0+
c19lbGYpID09IE5VTEwgfHwKPiArICAgICAgICAgICBlLT5lX2tpbmQgIT0gRUxGX0tfRUxGIHx8
Cj4gKyAgICAgICAgICAgKChlYyA9IGUtPmVfY2xhc3MpICE9IEVMRkNMQVNTMzIgJiYgZWMgIT0g
RUxGQ0xBU1M2NCkpIHsKPiArICAgICAgICAgICAgICAgTElCRUxGX1NFVF9FUlJPUihBUkdVTUVO
VCwgMCk7Cj4gKyAgICAgICAgICAgICAgIHJldHVybiAoMCk7Cj4gKyAgICAgICB9Cj4gKwo+ICsg
ICAgICAgaWYgKGUtPmVfY21kID09IEVMRl9DX1JFQUQpIHsKPiArICAgICAgICAgICAgICAgTElC
RUxGX1NFVF9FUlJPUihNT0RFLCAwKTsKPiArICAgICAgICAgICAgICAgcmV0dXJuICgwKTsKPiAr
ICAgICAgIH0KPiArCj4gKyAgICAgICAodm9pZCkgZWxmX2ZsYWdzY24oc2NuLCBFTEZfQ19TRVQs
IEVMRl9GX0RJUlRZKTsKPiArCj4gKyAgICAgICBpZiAoZWMgPT0gRUxGQ0xBU1M2NCkgewo+ICsg
ICAgICAgICAgICAgICBzY24tPnNfc2hkci5zX3NoZHI2NCA9ICpzOwo+ICsgICAgICAgICAgICAg
ICByZXR1cm4gKDEpOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIHNoMzIgPSAmc2NuLT5zX3No
ZHIuc19zaGRyMzI7Cj4gKwo+ICsgICAgICAgc2gzMi0+c2hfbmFtZSAgICA9ICBzLT5zaF9uYW1l
Owo+ICsgICAgICAgc2gzMi0+c2hfdHlwZSAgICA9ICBzLT5zaF90eXBlOwo+ICsgICAgICAgTElC
RUxGX0NPUFlfVTMyKHNoMzIsIHMsIHNoX2ZsYWdzKTsKPiArICAgICAgIExJQkVMRl9DT1BZX1Uz
MihzaDMyLCBzLCBzaF9hZGRyKTsKPiArICAgICAgIExJQkVMRl9DT1BZX1UzMihzaDMyLCBzLCBz
aF9vZmZzZXQpOwo+ICsgICAgICAgTElCRUxGX0NPUFlfVTMyKHNoMzIsIHMsIHNoX3NpemUpOwo+
ICsgICAgICAgc2gzMi0+c2hfbGluayAgICA9ICBzLT5zaF9saW5rOwo+ICsgICAgICAgc2gzMi0+
c2hfaW5mbyAgICA9ICBzLT5zaF9pbmZvOwo+ICsgICAgICAgTElCRUxGX0NPUFlfVTMyKHNoMzIs
IHMsIHNoX2FkZHJhbGlnbik7Cj4gKyAgICAgICBMSUJFTEZfQ09QWV9VMzIoc2gzMiwgcywgc2hf
ZW50c2l6ZSk7Cj4gKwo+ICsgICAgICAgcmV0dXJuICgxKTsKPiArfQo+IGRpZmYgLS1naXQgYS9n
ZWxmX3N5bS5jIGIvZ2VsZl9zeW0uYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAw
MDAwMC4uZWNkODVmYwo+IC0tLSAvZGV2L251bGwKPiArKysgYi9nZWxmX3N5bS5jCj4gQEAgLTAs
MCArMSwxNTkgQEAKPiArLyotCj4gKyAqIENvcHlyaWdodCAoYykgMjAwNiwyMDA4IEpvc2VwaCBL
b3NoeQo+ICsgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgo+ICsgKgo+ICsgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKPiAr
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCj4gKyAqIGFyZSBtZXQ6Cj4gKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cj4gKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
PiArICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKPiArICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQo+ICsgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
Lgo+ICsgKgo+ICsgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5E
IENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECj4gKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQo+ICsgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRQo+ICsgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQo+ICsgKiBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TAo+ICsgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUwo+ICsgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKPiArICogSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QKPiArICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQo+ICsgKiBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCj4gKyAq
IFNVQ0ggREFNQUdFLgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlIDxhc3NlcnQuaD4KPiArI2luY2x1
ZGUgPGdlbGYuaD4KPiArI2luY2x1ZGUgPGxpbWl0cy5oPgo+ICsjaW5jbHVkZSA8c3RkaW50Lmg+
Cj4gKwo+ICsjaW5jbHVkZSAiX2xpYmVsZi5oIgo+ICsKPiArRUxGVENfVkNTSUQoIiRJZDogZ2Vs
Zl9zeW0uYyAzMTc3IDIwMTUtMDMtMzAgMTg6MTk6NDFaIGVtYXN0ZSAkIik7Cj4gKwo+ICtHRWxm
X1N5bSAqCj4gK2dlbGZfZ2V0c3ltKEVsZl9EYXRhICplZCwgaW50IG5keCwgR0VsZl9TeW0gKmRz
dCkKPiArewo+ICsgICAgICAgaW50IGVjOwo+ICsgICAgICAgRWxmICplOwo+ICsgICAgICAgc2l6
ZV90IG1zejsKPiArICAgICAgIEVsZl9TY24gKnNjbjsKPiArICAgICAgIHVpbnQzMl90IHNoX3R5
cGU7Cj4gKyAgICAgICBFbGYzMl9TeW0gKnN5bTMyOwo+ICsgICAgICAgRWxmNjRfU3ltICpzeW02
NDsKPiArICAgICAgIHN0cnVjdCBfTGliZWxmX0RhdGEgKmQ7Cj4gKwo+ICsgICAgICAgZCA9IChz
dHJ1Y3QgX0xpYmVsZl9EYXRhICopIGVkOwo+ICsKPiArICAgICAgIGlmIChkID09IE5VTEwgfHwg
bmR4IDwgMCB8fCBkc3QgPT0gTlVMTCB8fAo+ICsgICAgICAgICAgIChzY24gPSBkLT5kX3Njbikg
PT0gTlVMTCB8fAo+ICsgICAgICAgICAgIChlID0gc2NuLT5zX2VsZikgPT0gTlVMTCkgewo+ICsg
ICAgICAgICAgICAgICBMSUJFTEZfU0VUX0VSUk9SKEFSR1VNRU5ULCAwKTsKPiArICAgICAgICAg
ICAgICAgcmV0dXJuIChOVUxMKTsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICBlYyA9IGUtPmVf
Y2xhc3M7Cj4gKyAgICAgICBhc3NlcnQoZWMgPT0gRUxGQ0xBU1MzMiB8fCBlYyA9PSBFTEZDTEFT
UzY0KTsKPiArCj4gKyAgICAgICBpZiAoZWMgPT0gRUxGQ0xBU1MzMikKPiArICAgICAgICAgICAg
ICAgc2hfdHlwZSA9IHNjbi0+c19zaGRyLnNfc2hkcjMyLnNoX3R5cGU7Cj4gKyAgICAgICBlbHNl
Cj4gKyAgICAgICAgICAgICAgIHNoX3R5cGUgPSBzY24tPnNfc2hkci5zX3NoZHI2NC5zaF90eXBl
Owo+ICsKPiArICAgICAgIGlmIChfbGliZWxmX3hsYXRlX3NodHlwZShzaF90eXBlKSAhPSBFTEZf
VF9TWU0pIHsKPiArICAgICAgICAgICAgICAgTElCRUxGX1NFVF9FUlJPUihBUkdVTUVOVCwgMCk7
Cj4gKyAgICAgICAgICAgICAgIHJldHVybiAoTlVMTCk7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAg
ICAgbXN6ID0gX2xpYmVsZl9tc2l6ZShFTEZfVF9TWU0sIGVjLCBlLT5lX3ZlcnNpb24pOwo+ICsK
PiArICAgICAgIGFzc2VydChtc3ogPiAwKTsKPiArICAgICAgIGFzc2VydChuZHggPj0gMCk7Cj4g
Kwo+ICsgICAgICAgaWYgKG1zeiAqIChzaXplX3QpIG5keCA+PSBkLT5kX2RhdGEuZF9zaXplKSB7
Cj4gKyAgICAgICAgICAgICAgIExJQkVMRl9TRVRfRVJST1IoQVJHVU1FTlQsIDApOwo+ICsgICAg
ICAgICAgICAgICByZXR1cm4gKE5VTEwpOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIGlmIChl
YyA9PSBFTEZDTEFTUzMyKSB7Cj4gKyAgICAgICAgICAgICAgIHN5bTMyID0gKEVsZjMyX1N5bSAq
KSBkLT5kX2RhdGEuZF9idWYgKyBuZHg7Cj4gKwo+ICsgICAgICAgICAgICAgICBkc3QtPnN0X25h
bWUgID0gc3ltMzItPnN0X25hbWU7Cj4gKyAgICAgICAgICAgICAgIGRzdC0+c3RfdmFsdWUgPSAo
RWxmNjRfQWRkcikgc3ltMzItPnN0X3ZhbHVlOwo+ICsgICAgICAgICAgICAgICBkc3QtPnN0X3Np
emUgID0gKEVsZjY0X1h3b3JkKSBzeW0zMi0+c3Rfc2l6ZTsKPiArICAgICAgICAgICAgICAgZHN0
LT5zdF9pbmZvICA9IHN5bTMyLT5zdF9pbmZvOwo+ICsgICAgICAgICAgICAgICBkc3QtPnN0X290
aGVyID0gc3ltMzItPnN0X290aGVyOwo+ICsgICAgICAgICAgICAgICBkc3QtPnN0X3NobmR4ID0g
c3ltMzItPnN0X3NobmR4Owo+ICsgICAgICAgfSBlbHNlIHsKPiArICAgICAgICAgICAgICAgc3lt
NjQgPSAoRWxmNjRfU3ltICopIGQtPmRfZGF0YS5kX2J1ZiArIG5keDsKPiArCj4gKyAgICAgICAg
ICAgICAgICpkc3QgPSAqc3ltNjQ7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgcmV0dXJuIChk
c3QpOwo+ICt9Cj4gKwo+ICtpbnQKPiArZ2VsZl91cGRhdGVfc3ltKEVsZl9EYXRhICplZCwgaW50
IG5keCwgR0VsZl9TeW0gKmdzKQo+ICt7Cj4gKyAgICAgICBpbnQgZWM7Cj4gKyAgICAgICBFbGYg
KmU7Cj4gKyAgICAgICBzaXplX3QgbXN6Owo+ICsgICAgICAgRWxmX1NjbiAqc2NuOwo+ICsgICAg
ICAgdWludDMyX3Qgc2hfdHlwZTsKPiArICAgICAgIEVsZjMyX1N5bSAqc3ltMzI7Cj4gKyAgICAg
ICBFbGY2NF9TeW0gKnN5bTY0Owo+ICsgICAgICAgc3RydWN0IF9MaWJlbGZfRGF0YSAqZDsKPiAr
Cj4gKyAgICAgICBkID0gKHN0cnVjdCBfTGliZWxmX0RhdGEgKikgZWQ7Cj4gKwo+ICsgICAgICAg
aWYgKGQgPT0gTlVMTCB8fCBuZHggPCAwIHx8IGdzID09IE5VTEwgfHwKPiArICAgICAgICAgICAo
c2NuID0gZC0+ZF9zY24pID09IE5VTEwgfHwKPiArICAgICAgICAgICAoZSA9IHNjbi0+c19lbGYp
ID09IE5VTEwpIHsKPiArICAgICAgICAgICAgICAgTElCRUxGX1NFVF9FUlJPUihBUkdVTUVOVCwg
MCk7Cj4gKyAgICAgICAgICAgICAgIHJldHVybiAoMCk7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAg
ICAgZWMgPSBlLT5lX2NsYXNzOwo+ICsgICAgICAgYXNzZXJ0KGVjID09IEVMRkNMQVNTMzIgfHwg
ZWMgPT0gRUxGQ0xBU1M2NCk7Cj4gKwo+ICsgICAgICAgaWYgKGVjID09IEVMRkNMQVNTMzIpCj4g
KyAgICAgICAgICAgICAgIHNoX3R5cGUgPSBzY24tPnNfc2hkci5zX3NoZHIzMi5zaF90eXBlOwo+
ICsgICAgICAgZWxzZQo+ICsgICAgICAgICAgICAgICBzaF90eXBlID0gc2NuLT5zX3NoZHIuc19z
aGRyNjQuc2hfdHlwZTsKPiArCj4gKyAgICAgICBpZiAoX2xpYmVsZl94bGF0ZV9zaHR5cGUoc2hf
dHlwZSkgIT0gRUxGX1RfU1lNKSB7Cj4gKyAgICAgICAgICAgICAgIExJQkVMRl9TRVRfRVJST1Io
QVJHVU1FTlQsIDApOwo+ICsgICAgICAgICAgICAgICByZXR1cm4gKDApOwo+ICsgICAgICAgfQo+
ICsKPiArICAgICAgIG1zeiA9IF9saWJlbGZfbXNpemUoRUxGX1RfU1lNLCBlYywgZS0+ZV92ZXJz
aW9uKTsKPiArCj4gKyAgICAgICBhc3NlcnQobXN6ID4gMCk7Cj4gKyAgICAgICBhc3NlcnQobmR4
ID49IDApOwo+ICsKPiArICAgICAgIGlmIChtc3ogKiAoc2l6ZV90KSBuZHggPj0gZC0+ZF9kYXRh
LmRfc2l6ZSkgewo+ICsgICAgICAgICAgICAgICBMSUJFTEZfU0VUX0VSUk9SKEFSR1VNRU5ULCAw
KTsKPiArICAgICAgICAgICAgICAgcmV0dXJuICgwKTsKPiArICAgICAgIH0KPiArCj4gKyAgICAg
ICBpZiAoZWMgPT0gRUxGQ0xBU1MzMikgewo+ICsgICAgICAgICAgICAgICBzeW0zMiA9IChFbGYz
Ml9TeW0gKikgZC0+ZF9kYXRhLmRfYnVmICsgbmR4Owo+ICsKPiArICAgICAgICAgICAgICAgc3lt
MzItPnN0X25hbWUgID0gZ3MtPnN0X25hbWU7Cj4gKyAgICAgICAgICAgICAgIHN5bTMyLT5zdF9p
bmZvICA9IGdzLT5zdF9pbmZvOwo+ICsgICAgICAgICAgICAgICBzeW0zMi0+c3Rfb3RoZXIgPSBn
cy0+c3Rfb3RoZXI7Cj4gKyAgICAgICAgICAgICAgIHN5bTMyLT5zdF9zaG5keCA9IGdzLT5zdF9z
aG5keDsKPiArCj4gKyAgICAgICAgICAgICAgIExJQkVMRl9DT1BZX1UzMihzeW0zMiwgZ3MsIHN0
X3ZhbHVlKTsKPiArICAgICAgICAgICAgICAgTElCRUxGX0NPUFlfVTMyKHN5bTMyLCBncywgc3Rf
c2l6ZSk7Cj4gKyAgICAgICB9IGVsc2Ugewo+ICsgICAgICAgICAgICAgICBzeW02NCA9IChFbGY2
NF9TeW0gKikgZC0+ZF9kYXRhLmRfYnVmICsgbmR4Owo+ICsKPiArICAgICAgICAgICAgICAgKnN5
bTY0ID0gKmdzOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIHJldHVybiAoMSk7Cj4gK30KPiBk
aWZmIC0tZ2l0IGEvZ2VsZl9zeW1pbmZvLmMgYi9nZWxmX3N5bWluZm8uYwo+IG5ldyBmaWxlIG1v
ZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uZjZkN2I2Ywo+IC0tLSAvZGV2L251bGwKPiArKysg
Yi9nZWxmX3N5bWluZm8uYwo+IEBAIC0wLDAgKzEsMTUyIEBACj4gKy8qLQo+ICsgKiBDb3B5cmln
aHQgKGMpIDIwMDYsMjAwOCBKb3NlcGggS29zaHkKPiArICogQWxsIHJpZ2h0cyByZXNlcnZlZC4K
PiArICoKPiArICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Cj4gKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwo+ICsgKiBhcmUgbWV0Ogo+ICsg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAo+ICsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCj4gKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cj4gKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKPiArICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KPiArICoKPiArICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAo+ICsg
KiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKPiArICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKPiArICogQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUKPiArICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKPiArICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKPiArICogT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pCj4gKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCj4gKyAqIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkK
PiArICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRgo+ICsgKiBTVUNIIERBTUFHRS4KPiArICovCj4gKwo+ICsjaW5j
bHVkZSA8YXNzZXJ0Lmg+Cj4gKyNpbmNsdWRlIDxnZWxmLmg+Cj4gKwo+ICsjaW5jbHVkZSAiX2xp
YmVsZi5oIgo+ICsKPiArRUxGVENfVkNTSUQoIiRJZDogZ2VsZl9zeW1pbmZvLmMgMzE3NCAyMDE1
LTAzLTI3IDE3OjEzOjQxWiBlbWFzdGUgJCIpOwo+ICsKPiArR0VsZl9TeW1pbmZvICoKPiArZ2Vs
Zl9nZXRzeW1pbmZvKEVsZl9EYXRhICplZCwgaW50IG5keCwgR0VsZl9TeW1pbmZvICpkc3QpCj4g
K3sKPiArICAgICAgIGludCBlYzsKPiArICAgICAgIEVsZiAqZTsKPiArICAgICAgIHNpemVfdCBt
c3o7Cj4gKyAgICAgICBFbGZfU2NuICpzY247Cj4gKyAgICAgICB1aW50MzJfdCBzaF90eXBlOwo+
ICsgICAgICAgc3RydWN0IF9MaWJlbGZfRGF0YSAqZDsKPiArICAgICAgIEVsZjMyX1N5bWluZm8g
KnN5bWluZm8zMjsKPiArICAgICAgIEVsZjY0X1N5bWluZm8gKnN5bWluZm82NDsKPiArCj4gKyAg
ICAgICBkID0gKHN0cnVjdCBfTGliZWxmX0RhdGEgKikgZWQ7Cj4gKwo+ICsgICAgICAgaWYgKGQg
PT0gTlVMTCB8fCBuZHggPCAwIHx8IGRzdCA9PSBOVUxMIHx8Cj4gKyAgICAgICAgICAgKHNjbiA9
IGQtPmRfc2NuKSA9PSBOVUxMIHx8Cj4gKyAgICAgICAgICAgKGUgPSBzY24tPnNfZWxmKSA9PSBO
VUxMKSB7Cj4gKyAgICAgICAgICAgICAgIExJQkVMRl9TRVRfRVJST1IoQVJHVU1FTlQsIDApOwo+
ICsgICAgICAgICAgICAgICByZXR1cm4gKE5VTEwpOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAg
IGVjID0gZS0+ZV9jbGFzczsKPiArICAgICAgIGFzc2VydChlYyA9PSBFTEZDTEFTUzMyIHx8IGVj
ID09IEVMRkNMQVNTNjQpOwo+ICsKPiArICAgICAgIGlmIChlYyA9PSBFTEZDTEFTUzMyKQo+ICsg
ICAgICAgICAgICAgICBzaF90eXBlID0gc2NuLT5zX3NoZHIuc19zaGRyMzIuc2hfdHlwZTsKPiAr
ICAgICAgIGVsc2UKPiArICAgICAgICAgICAgICAgc2hfdHlwZSA9IHNjbi0+c19zaGRyLnNfc2hk
cjY0LnNoX3R5cGU7Cj4gKwo+ICsgICAgICAgaWYgKF9saWJlbGZfeGxhdGVfc2h0eXBlKHNoX3R5
cGUpICE9IEVMRl9UX1NZTUlORk8pIHsKPiArICAgICAgICAgICAgICAgTElCRUxGX1NFVF9FUlJP
UihBUkdVTUVOVCwgMCk7Cj4gKyAgICAgICAgICAgICAgIHJldHVybiAoTlVMTCk7Cj4gKyAgICAg
ICB9Cj4gKwo+ICsgICAgICAgbXN6ID0gX2xpYmVsZl9tc2l6ZShFTEZfVF9TWU1JTkZPLCBlYywg
ZS0+ZV92ZXJzaW9uKTsKPiArCj4gKyAgICAgICBhc3NlcnQobXN6ID4gMCk7Cj4gKyAgICAgICBh
c3NlcnQobmR4ID49IDApOwo+ICsKPiArICAgICAgIGlmIChtc3ogKiAoc2l6ZV90KSBuZHggPj0g
ZC0+ZF9kYXRhLmRfc2l6ZSkgewo+ICsgICAgICAgICAgICAgICBMSUJFTEZfU0VUX0VSUk9SKEFS
R1VNRU5ULCAwKTsKPiArICAgICAgICAgICAgICAgcmV0dXJuIChOVUxMKTsKPiArICAgICAgIH0K
PiArCj4gKyAgICAgICBpZiAoZWMgPT0gRUxGQ0xBU1MzMikgewo+ICsKPiArICAgICAgICAgICAg
ICAgc3ltaW5mbzMyID0gKEVsZjMyX1N5bWluZm8gKikgZC0+ZF9kYXRhLmRfYnVmICsgbmR4Owo+
ICsKPiArICAgICAgICAgICAgICAgZHN0LT5zaV9ib3VuZHRvID0gc3ltaW5mbzMyLT5zaV9ib3Vu
ZHRvOwo+ICsgICAgICAgICAgICAgICBkc3QtPnNpX2ZsYWdzICAgPSBzeW1pbmZvMzItPnNpX2Zs
YWdzOwo+ICsKPiArICAgICAgIH0gZWxzZSB7Cj4gKwo+ICsgICAgICAgICAgICAgICBzeW1pbmZv
NjQgPSAoRWxmNjRfU3ltaW5mbyAqKSBkLT5kX2RhdGEuZF9idWYgKyBuZHg7Cj4gKwo+ICsgICAg
ICAgICAgICAgICAqZHN0ID0gKnN5bWluZm82NDsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICBy
ZXR1cm4gKGRzdCk7Cj4gK30KPiArCj4gK2ludAo+ICtnZWxmX3VwZGF0ZV9zeW1pbmZvKEVsZl9E
YXRhICplZCwgaW50IG5keCwgR0VsZl9TeW1pbmZvICpncykKPiArewo+ICsgICAgICAgaW50IGVj
Owo+ICsgICAgICAgRWxmICplOwo+ICsgICAgICAgc2l6ZV90IG1zejsKPiArICAgICAgIEVsZl9T
Y24gKnNjbjsKPiArICAgICAgIHVpbnQzMl90IHNoX3R5cGU7Cj4gKyAgICAgICBzdHJ1Y3QgX0xp
YmVsZl9EYXRhICpkOwo+ICsgICAgICAgRWxmMzJfU3ltaW5mbyAqc3ltaW5mbzMyOwo+ICsgICAg
ICAgRWxmNjRfU3ltaW5mbyAqc3ltaW5mbzY0Owo+ICsKPiArICAgICAgIGQgPSAoc3RydWN0IF9M
aWJlbGZfRGF0YSAqKSBlZDsKPiArCj4gKyAgICAgICBpZiAoZCA9PSBOVUxMIHx8IG5keCA8IDAg
fHwgZ3MgPT0gTlVMTCB8fAo+ICsgICAgICAgICAgIChzY24gPSBkLT5kX3NjbikgPT0gTlVMTCB8
fAo+ICsgICAgICAgICAgIChlID0gc2NuLT5zX2VsZikgPT0gTlVMTCkgewo+ICsgICAgICAgICAg
ICAgICBMSUJFTEZfU0VUX0VSUk9SKEFSR1VNRU5ULCAwKTsKPiArICAgICAgICAgICAgICAgcmV0
dXJuICgwKTsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICBlYyA9IGUtPmVfY2xhc3M7Cj4gKyAg
ICAgICBhc3NlcnQoZWMgPT0gRUxGQ0xBU1MzMiB8fCBlYyA9PSBFTEZDTEFTUzY0KTsKPiArCj4g
KyAgICAgICBpZiAoZWMgPT0gRUxGQ0xBU1MzMikKPiArICAgICAgICAgICAgICAgc2hfdHlwZSA9
IHNjbi0+c19zaGRyLnNfc2hkcjMyLnNoX3R5cGU7Cj4gKyAgICAgICBlbHNlCj4gKyAgICAgICAg
ICAgICAgIHNoX3R5cGUgPSBzY24tPnNfc2hkci5zX3NoZHI2NC5zaF90eXBlOwo+ICsKPiArICAg
ICAgIGlmIChfbGliZWxmX3hsYXRlX3NodHlwZShzaF90eXBlKSAhPSBFTEZfVF9TWU1JTkZPKSB7
Cj4gKyAgICAgICAgICAgICAgIExJQkVMRl9TRVRfRVJST1IoQVJHVU1FTlQsIDApOwo+ICsgICAg
ICAgICAgICAgICByZXR1cm4gKDApOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIG1zeiA9IF9s
aWJlbGZfbXNpemUoRUxGX1RfU1lNSU5GTywgZWMsIGUtPmVfdmVyc2lvbik7Cj4gKwo+ICsgICAg
ICAgYXNzZXJ0KG1zeiA+IDApOwo+ICsgICAgICAgYXNzZXJ0KG5keCA+PSAwKTsKPiArCj4gKyAg
ICAgICBpZiAobXN6ICogKHNpemVfdCkgbmR4ID49IGQtPmRfZGF0YS5kX3NpemUpIHsKPiArICAg
ICAgICAgICAgICAgTElCRUxGX1NFVF9FUlJPUihBUkdVTUVOVCwgMCk7Cj4gKyAgICAgICAgICAg
ICAgIHJldHVybiAoMCk7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgaWYgKGVjID09IEVMRkNM
QVNTMzIpIHsKPiArICAgICAgICAgICAgICAgc3ltaW5mbzMyID0gKEVsZjMyX1N5bWluZm8gKikg
ZC0+ZF9kYXRhLmRfYnVmICsgbmR4Owo+ICsKPiArICAgICAgICAgICAgICAgc3ltaW5mbzMyLT5z
aV9ib3VuZHRvICA9IGdzLT5zaV9ib3VuZHRvOwo+ICsgICAgICAgICAgICAgICBzeW1pbmZvMzIt
PnNpX2ZsYWdzICA9IGdzLT5zaV9mbGFnczsKPiArCj4gKyAgICAgICB9IGVsc2Ugewo+ICsgICAg
ICAgICAgICAgICBzeW1pbmZvNjQgPSAoRWxmNjRfU3ltaW5mbyAqKSBkLT5kX2RhdGEuZF9idWYg
KyBuZHg7Cj4gKwo+ICsgICAgICAgICAgICAgICAqc3ltaW5mbzY0ID0gKmdzOwo+ICsgICAgICAg
fQo+ICsKPiArICAgICAgIHJldHVybiAoMSk7Cj4gK30KPiBkaWZmIC0tZ2l0IGEvZ2VsZl9zeW1z
aG5keC5jIGIvZ2VsZl9zeW1zaG5keC5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAw
MDAwMDAwLi5iNDkwYWEyCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2dlbGZfc3ltc2huZHguYwo+
IEBAIC0wLDAgKzEsMTM3IEBACj4gKy8qLQo+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMDYsMjAwOCBK
b3NlcGggS29zaHkKPiArICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KPiArICoKPiArICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Cj4gKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwo+ICsgKiBhcmUgbWV0Ogo+ICsgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAo+ICsgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCj4gKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cj4gKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKPiArICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KPiArICoKPiArICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVU
SE9SIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAo+ICsgKiBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKPiAr
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UKPiArICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKPiArICogRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwKPiArICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKPiArICogT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCj4gKyAqIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUCj4gKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKPiArICogT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
Rgo+ICsgKiBTVUNIIERBTUFHRS4KPiArICovCj4gKwo+ICsjaW5jbHVkZSA8YXNzZXJ0Lmg+Cj4g
KyNpbmNsdWRlIDxnZWxmLmg+Cj4gKwo+ICsjaW5jbHVkZSAiX2xpYmVsZi5oIgo+ICsKPiArRUxG
VENfVkNTSUQoIiRJZDogZ2VsZl9zeW1zaG5keC5jIDMxNzQgMjAxNS0wMy0yNyAxNzoxMzo0MVog
ZW1hc3RlICQiKTsKPiArCj4gK0dFbGZfU3ltICoKPiArZ2VsZl9nZXRzeW1zaG5keChFbGZfRGF0
YSAqZCwgRWxmX0RhdGEgKmlkLCBpbnQgbmR4LCBHRWxmX1N5bSAqZHN0LAo+ICsgICAgRWxmMzJf
V29yZCAqc2hpbmRleCkKPiArewo+ICsgICAgICAgaW50IGVjOwo+ICsgICAgICAgRWxmICplOwo+
ICsgICAgICAgc2l6ZV90IG1zejsKPiArICAgICAgIEVsZl9TY24gKnNjbjsKPiArICAgICAgIHVp
bnQzMl90IHNoX3R5cGU7Cj4gKyAgICAgICBzdHJ1Y3QgX0xpYmVsZl9EYXRhICpsZCwgKmxpZDsK
PiArCj4gKyAgICAgICBsZCA9IChzdHJ1Y3QgX0xpYmVsZl9EYXRhICopIGQ7Cj4gKyAgICAgICBs
aWQgPSAoc3RydWN0IF9MaWJlbGZfRGF0YSAqKSBpZDsKPiArCj4gKyAgICAgICBpZiAoZ2VsZl9n
ZXRzeW0oZCwgbmR4LCBkc3QpID09IDApCj4gKyAgICAgICAgICAgICAgIHJldHVybiAoTlVMTCk7
Cj4gKwo+ICsgICAgICAgaWYgKGxpZCA9PSBOVUxMIHx8IChzY24gPSBsaWQtPmRfc2NuKSA9PSBO
VUxMIHx8Cj4gKyAgICAgICAgICAgKGUgPSBzY24tPnNfZWxmKSA9PSBOVUxMIHx8IChlICE9IGxk
LT5kX3Njbi0+c19lbGYpIHx8Cj4gKyAgICAgICAgICAgc2hpbmRleCA9PSBOVUxMKSB7Cj4gKyAg
ICAgICAgICAgICAgIExJQkVMRl9TRVRfRVJST1IoQVJHVU1FTlQsIDApOwo+ICsgICAgICAgICAg
ICAgICByZXR1cm4gKE5VTEwpOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIGVjID0gZS0+ZV9j
bGFzczsKPiArICAgICAgIGFzc2VydChlYyA9PSBFTEZDTEFTUzMyIHx8IGVjID09IEVMRkNMQVNT
NjQpOwo+ICsKPiArICAgICAgIGlmIChlYyA9PSBFTEZDTEFTUzMyKQo+ICsgICAgICAgICAgICAg
ICBzaF90eXBlID0gc2NuLT5zX3NoZHIuc19zaGRyMzIuc2hfdHlwZTsKPiArICAgICAgIGVsc2UK
PiArICAgICAgICAgICAgICAgc2hfdHlwZSA9IHNjbi0+c19zaGRyLnNfc2hkcjY0LnNoX3R5cGU7
Cj4gKwo+ICsgICAgICAgaWYgKF9saWJlbGZfeGxhdGVfc2h0eXBlKHNoX3R5cGUpICE9IEVMRl9U
X1dPUkQgfHwKPiArICAgICAgICAgIGlkLT5kX3R5cGUgIT0gRUxGX1RfV09SRCkgewo+ICsgICAg
ICAgICAgICAgICBMSUJFTEZfU0VUX0VSUk9SKEFSR1VNRU5ULCAwKTsKPiArICAgICAgICAgICAg
ICAgcmV0dXJuIChOVUxMKTsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICBtc3ogPSBfbGliZWxm
X21zaXplKEVMRl9UX1dPUkQsIGVjLCBlLT5lX3ZlcnNpb24pOwo+ICsKPiArICAgICAgIGFzc2Vy
dChtc3ogPiAwKTsKPiArICAgICAgIGFzc2VydChuZHggPj0gMCk7Cj4gKwo+ICsgICAgICAgaWYg
KG1zeiAqIChzaXplX3QpIG5keCA+PSBpZC0+ZF9zaXplKSB7Cj4gKyAgICAgICAgICAgICAgIExJ
QkVMRl9TRVRfRVJST1IoQVJHVU1FTlQsIDApOwo+ICsgICAgICAgICAgICAgICByZXR1cm4gKE5V
TEwpOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAgICpzaGluZGV4ID0gKChFbGYzMl9Xb3JkICop
IGlkLT5kX2J1ZilbbmR4XTsKPiArCj4gKyAgICAgICByZXR1cm4gKGRzdCk7Cj4gK30KPiArCj4g
K2ludAo+ICtnZWxmX3VwZGF0ZV9zeW1zaG5keChFbGZfRGF0YSAqZCwgRWxmX0RhdGEgKmlkLCBp
bnQgbmR4LCBHRWxmX1N5bSAqZ3MsCj4gKyAgICBFbGYzMl9Xb3JkIHhpbmRleCkKPiArewo+ICsg
ICAgICAgaW50IGVjOwo+ICsgICAgICAgRWxmICplOwo+ICsgICAgICAgc2l6ZV90IG1zejsKPiAr
ICAgICAgIEVsZl9TY24gKnNjbjsKPiArICAgICAgIHVpbnQzMl90IHNoX3R5cGU7Cj4gKyAgICAg
ICBzdHJ1Y3QgX0xpYmVsZl9EYXRhICpsZCwgKmxpZDsKPiArCj4gKyAgICAgICBsZCA9IChzdHJ1
Y3QgX0xpYmVsZl9EYXRhICopIGQ7Cj4gKyAgICAgICBsaWQgPSAoc3RydWN0IF9MaWJlbGZfRGF0
YSAqKSBpZDsKPiArCj4gKyAgICAgICBpZiAoZ2VsZl91cGRhdGVfc3ltKGQsIG5keCwgZ3MpID09
IDApCj4gKyAgICAgICAgICAgICAgIHJldHVybiAoMCk7Cj4gKwo+ICsgICAgICAgaWYgKGxpZCA9
PSBOVUxMIHx8IChzY24gPSBsaWQtPmRfc2NuKSA9PSBOVUxMIHx8Cj4gKyAgICAgICAgICAgKGUg
PSBzY24tPnNfZWxmKSA9PSBOVUxMIHx8IChlICE9IGxkLT5kX3Njbi0+c19lbGYpKSB7Cj4gKyAg
ICAgICAgICAgICAgIExJQkVMRl9TRVRfRVJST1IoQVJHVU1FTlQsIDApOwo+ICsgICAgICAgICAg
ICAgICByZXR1cm4gKDApOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIGVjID0gZS0+ZV9jbGFz
czsKPiArICAgICAgIGFzc2VydChlYyA9PSBFTEZDTEFTUzMyIHx8IGVjID09IEVMRkNMQVNTNjQp
Owo+ICsKPiArICAgICAgIGlmIChlYyA9PSBFTEZDTEFTUzMyKQo+ICsgICAgICAgICAgICAgICBz
aF90eXBlID0gc2NuLT5zX3NoZHIuc19zaGRyMzIuc2hfdHlwZTsKPiArICAgICAgIGVsc2UKPiAr
ICAgICAgICAgICAgICAgc2hfdHlwZSA9IHNjbi0+c19zaGRyLnNfc2hkcjY0LnNoX3R5cGU7Cj4g
Kwo+ICsgICAgICAgaWYgKF9saWJlbGZfeGxhdGVfc2h0eXBlKHNoX3R5cGUpICE9IEVMRl9UX1dP
UkQgfHwKPiArICAgICAgICAgICBkLT5kX3R5cGUgIT0gRUxGX1RfV09SRCkgewo+ICsgICAgICAg
ICAgICAgICBMSUJFTEZfU0VUX0VSUk9SKEFSR1VNRU5ULCAwKTsKPiArICAgICAgICAgICAgICAg
cmV0dXJuICgwKTsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICBtc3ogPSBfbGliZWxmX21zaXpl
KEVMRl9UX1dPUkQsIGVjLCBlLT5lX3ZlcnNpb24pOwo+ICsKPiArICAgICAgIGFzc2VydChtc3og
PiAwKTsKPiArICAgICAgIGFzc2VydChuZHggPj0gMCk7Cj4gKwo+ICsgICAgICAgaWYgKG1zeiAq
IChzaXplX3QpIG5keCA+PSBpZC0+ZF9zaXplKSB7Cj4gKyAgICAgICAgICAgICAgIExJQkVMRl9T
RVRfRVJST1IoQVJHVU1FTlQsIDApOwo+ICsgICAgICAgICAgICAgICByZXR1cm4gKDApOwo+ICsg
ICAgICAgfQo+ICsKPiArICAgICAgICooKChFbGYzMl9Xb3JkICopIGlkLT5kX2J1ZikgKyBuZHgp
ID0geGluZGV4Owo+ICsKPiArICAgICAgIHJldHVybiAoMSk7Cj4gK30KPiBkaWZmIC0tZ2l0IGEv
Z2VsZl94bGF0ZS5jIGIvZ2VsZl94bGF0ZS5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRl
eCAwMDAwMDAwLi5mNTAxODE5Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2dlbGZfeGxhdGUuYwo+
IEBAIC0wLDAgKzEsNzkgQEAKPiArLyotCj4gKyAqIENvcHlyaWdodCAoYykgMjAwNiwyMDA4IEpv
c2VwaCBLb3NoeQo+ICsgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgo+ICsgKgo+ICsgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKPiArICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCj4gKyAqIGFyZSBtZXQ6Cj4gKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cj4gKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KPiArICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKPiArICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQo+ICsgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgo+ICsgKgo+ICsgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRI
T1IgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECj4gKyAqIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQo+ICsg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRQo+ICsgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQo+ICsgKiBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTAo+ICsgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUwo+ICsgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKPiArICogSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QKPiArICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQo+ICsgKiBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
Cj4gKyAqIFNVQ0ggREFNQUdFLgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlIDxnZWxmLmg+Cj4gKyNp
bmNsdWRlIDxsaWJlbGYuaD4KPiArI2luY2x1ZGUgPHN0cmluZy5oPgo+ICsKPiArI2luY2x1ZGUg
Il9saWJlbGYuaCIKPiArCj4gK0VMRlRDX1ZDU0lEKCIkSWQ6IGdlbGZfeGxhdGUuYyAzMTc0IDIw
MTUtMDMtMjcgMTc6MTM6NDFaIGVtYXN0ZSAkIik7Cj4gKwo+ICtFbGZfRGF0YSAqCj4gK2VsZjMy
X3hsYXRldG9mKEVsZl9EYXRhICpkc3QsIGNvbnN0IEVsZl9EYXRhICpzcmMsIHVuc2lnbmVkIGlu
dCBlbmNvZGluZykKPiArewo+ICsgICAgICAgcmV0dXJuIF9saWJlbGZfeGxhdGUoZHN0LCBzcmMs
IGVuY29kaW5nLCBFTEZDTEFTUzMyLCBFTEZfVE9GSUxFKTsKPiArfQo+ICsKPiArRWxmX0RhdGEg
Kgo+ICtlbGY2NF94bGF0ZXRvZihFbGZfRGF0YSAqZHN0LCBjb25zdCBFbGZfRGF0YSAqc3JjLCB1
bnNpZ25lZCBpbnQgZW5jb2RpbmcpCj4gK3sKPiArICAgICAgIHJldHVybiBfbGliZWxmX3hsYXRl
KGRzdCwgc3JjLCBlbmNvZGluZywgRUxGQ0xBU1M2NCwgRUxGX1RPRklMRSk7Cj4gK30KPiArCj4g
K0VsZl9EYXRhICoKPiArZWxmMzJfeGxhdGV0b20oRWxmX0RhdGEgKmRzdCwgY29uc3QgRWxmX0Rh
dGEgKnNyYywgdW5zaWduZWQgaW50IGVuY29kaW5nKQo+ICt7Cj4gKyAgICAgICByZXR1cm4gX2xp
YmVsZl94bGF0ZShkc3QsIHNyYywgZW5jb2RpbmcsIEVMRkNMQVNTMzIsIEVMRl9UT01FTU9SWSk7
Cj4gK30KPiArCj4gK0VsZl9EYXRhICoKPiArZWxmNjRfeGxhdGV0b20oRWxmX0RhdGEgKmRzdCwg
Y29uc3QgRWxmX0RhdGEgKnNyYywgdW5zaWduZWQgaW50IGVuY29kaW5nKQo+ICt7Cj4gKyAgICAg
ICByZXR1cm4gX2xpYmVsZl94bGF0ZShkc3QsIHNyYywgZW5jb2RpbmcsIEVMRkNMQVNTNjQsIEVM
Rl9UT01FTU9SWSk7Cj4gK30KPiArCj4gK0VsZl9EYXRhICoKPiArZ2VsZl94bGF0ZXRvbShFbGYg
KmUsIEVsZl9EYXRhICpkc3QsIGNvbnN0IEVsZl9EYXRhICpzcmMsCj4gKyAgICB1bnNpZ25lZCBp
bnQgZW5jb2RpbmcpCj4gK3sKPiArICAgICAgIGlmIChlICE9IE5VTEwpCj4gKyAgICAgICAgICAg
ICAgIHJldHVybiAoX2xpYmVsZl94bGF0ZShkc3QsIHNyYywgZW5jb2RpbmcsIGUtPmVfY2xhc3Ms
Cj4gKyAgICAgICAgICAgICAgICAgICBFTEZfVE9NRU1PUlkpKTsKPiArICAgICAgIExJQkVMRl9T
RVRfRVJST1IoQVJHVU1FTlQsIDApOwo+ICsgICAgICAgcmV0dXJuIChOVUxMKTsKPiArfQo+ICsK
PiArRWxmX0RhdGEgKgo+ICtnZWxmX3hsYXRldG9mKEVsZiAqZSwgRWxmX0RhdGEgKmRzdCwgY29u
c3QgRWxmX0RhdGEgKnNyYywKPiArICAgIHVuc2lnbmVkIGludCBlbmNvZGluZykKPiArewo+ICsg
ICAgICAgaWYgKGUgIT0gTlVMTCkKPiArICAgICAgICAgICAgICAgcmV0dXJuIChfbGliZWxmX3hs
YXRlKGRzdCwgc3JjLCBlbmNvZGluZywgZS0+ZV9jbGFzcywKPiArICAgICAgICAgICAgICAgICAg
IEVMRl9UT0ZJTEUpKTsKPiArICAgICAgIExJQkVMRl9TRVRfRVJST1IoQVJHVU1FTlQsIDApOwo+
ICsgICAgICAgcmV0dXJuIChOVUxMKTsKPiArfQo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2VsZmRl
ZmluaXRpb25zLmggYi9pbmNsdWRlL2VsZmRlZmluaXRpb25zLmgKPiBuZXcgZmlsZSBtb2RlIDEw
MDY0NAo+IGluZGV4IDAwMDAwMDAuLmNhYTZhMzAKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvaW5j
bHVkZS9lbGZkZWZpbml0aW9ucy5oCj4gQEAgLTAsMCArMSwyNzAwIEBACj4gKy8qLQo+ICsgKiBD
b3B5cmlnaHQgKGMpIDIwMTAgSm9zZXBoIEtvc2h5Cj4gKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Cj4gKyAqCj4gKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAo+ICsgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKPiArICogYXJlIG1ldDoKPiAr
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKPiArICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgo+ICsgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAo+ICsgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCj4gKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCj4gKyAqCj4gKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKPiAr
ICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCj4gKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCj4gKyAqIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFCj4gKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCj4gKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCj4gKyAqIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKQo+ICsgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAo+ICsgKiBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
Cj4gKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YKPiArICogU1VDSCBEQU1BR0UuCj4gKyAqCj4gKyAqICRJZDog
ZWxmZGVmaW5pdGlvbnMuaCAzNDAzIDIwMTYtMDItMTMgMTU6Mzk6MjdaIGprb3NoeSAkCj4gKyAq
Lwo+ICsKPiArLyoKPiArICogVGhlc2UgZGVmaW5pdGlvbnMgYXJlIGJhc2VkIG9uOgo+ICsgKiAt
IFRoZSBwdWJsaWMgc3BlY2lmaWNhdGlvbiBvZiB0aGUgRUxGIGZvcm1hdCBhcyBkZWZpbmVkIGlu
IHRoZQo+ICsgKiAgIE9jdG9iZXIgMjAwOSBkcmFmdCBvZiBTeXN0ZW0gViBBQkkuCj4gKyAqICAg
U2VlOiBodHRwOi8vd3d3LnNjby5jb20vZGV2ZWxvcGVycy9nYWJpL2xhdGVzdC9jaDQuaW50cm8u
aHRtbAo+ICsgKiAtIFRoZSBNYXkgMTk5OCAodmVyc2lvbiAxLjUpIGRyYWZ0IG9mICJUaGUgRUxG
LTY0IG9iamVjdCBmb3JtYXQiLgo+ICsgKiAtIFByb2Nlc3Nvci1zcGVjaWZpYyBFTEYgQUJJIGRl
ZmluaXRpb25zIGZvciBzcGFyYywgaTM4NiwgYW1kNjQsIG1pcHMsCj4gKyAqICAgaWE2NCwgYW5k
IHBvd2VycGMgcHJvY2Vzc29ycy4KPiArICogLSBUaGUgIkxpbmtlcnMgYW5kIExpYnJhcmllcyBH
dWlkZSIsIGZyb20gU3VuIE1pY3Jvc3lzdGVtcy4KPiArICovCj4gKwo+ICsjaWZuZGVmIF9FTEZE
RUZJTklUSU9OU19IXwo+ICsjZGVmaW5lIF9FTEZERUZJTklUSU9OU19IXwo+ICsKPiArI2luY2x1
ZGUgPHN0ZGludC5oPgo+ICsKPiArLyoKPiArICogVHlwZXMgb2YgY2FwYWJpbGl0aWVzLgo+ICsg
Ki8KPiArCj4gKyNkZWZpbmUgICAgICAgIF9FTEZfREVGSU5FX0NBUEFCSUxJVElFUygpICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9DQShDQV9TVU5XX05VTEws
ICAgMCwgICAgICAiaWdub3JlZCIpICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX0NBKENB
X1NVTldfSFdfMSwgICAxLCAgICAgICJoYXJkd2FyZSBjYXBhYmlsaXR5IikgIFwKPiArX0VMRl9E
RUZJTkVfQ0EoQ0FfU1VOV19TV18xLCAgIDIsICAgICAgInNvZnR3YXJlIGNhcGFiaWxpdHkiKQo+
ICsKPiArI3VuZGVmIF9FTEZfREVGSU5FX0NBCj4gKyNkZWZpbmUgICAgICAgIF9FTEZfREVGSU5F
X0NBKE4sIFYsIERFU0NSKSAgICAgTiA9IFYgLAo+ICtlbnVtIHsKPiArICAgICAgIF9FTEZfREVG
SU5FX0NBUEFCSUxJVElFUygpCj4gKyAgICAgICBDQV9fTEFTVF9fCj4gK307Cj4gKwo+ICsvKgo+
ICsgKiBGbGFncyB1c2VkIHdpdGggZHluYW1pYyBsaW5raW5nIGVudHJpZXMuCj4gKyAqLwo+ICsK
PiArI2RlZmluZSAgICAgICAgX0VMRl9ERUZJTkVfRFlOX0ZMQUdTKCkgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX0RGKERGX09SSUdJTiwgICAgICAgICAg
IDB4MSwgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICJvYmplY3QgYmVpbmcgbG9h
ZGVkIG1heSByZWZlciB0byAkT1JJR0lOIikgICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9E
RihERl9TWU1CT0xJQywgICAgICAgICAweDIsICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAg
ICAgICAic2VhcmNoIGxpYnJhcnkgZm9yIHJlZmVyZW5jZXMgYmVmb3JlIGV4ZWN1dGFibGUiKSAg
ICAgIFwKPiArX0VMRl9ERUZJTkVfREYoREZfVEVYVFJFTCwgICAgICAgICAgMHg0LCAgICAgICAg
ICAgICAgICAgICAgICAgXAo+ICsgICAgICAgInJlbG9jYXRpb24gZW50cmllcyBtYXkgbW9kaWZ5
IHRleHQgc2VnbWVudCIpICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX0RGKERGX0JJTkRfTk9X
LCAgICAgICAgIDB4OCwgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICJwcm9jZXNz
IHJlbG9jYXRpb24gZW50cmllcyBhdCBsb2FkIHRpbWUiKSAgICAgICAgICAgICAgXAo+ICtfRUxG
X0RFRklORV9ERihERl9TVEFUSUNfVExTLCAgICAgICAweDEwLCAgICAgICAgICAgICAgICAgICAg
ICBcCj4gKyAgICAgICAidXNlcyBzdGF0aWMgdGhyZWFkLWxvY2FsIHN0b3JhZ2UiKQo+ICsjdW5k
ZWYgX0VMRl9ERUZJTkVfREYKPiArI2RlZmluZSAgICAgICAgX0VMRl9ERUZJTkVfREYoTiwgViwg
REVTQ1IpICAgICBOID0gViAsCj4gK2VudW0gewo+ICsgICAgICAgX0VMRl9ERUZJTkVfRFlOX0ZM
QUdTKCkKPiArICAgICAgIERGX19MQVNUX18KPiArfTsKPiArCj4gKwo+ICsvKgo+ICsgKiBEeW5h
bWljIGxpbmtpbmcgZW50cnkgdHlwZXMuCj4gKyAqLwo+ICsKPiArI2RlZmluZSAgICAgICAgX0VM
Rl9ERUZJTkVfRFlOX1RZUEVTKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKPiArX0VMRl9ERUZJTkVfRFQoRFRfTlVMTCwgICAgICAgICAgICAgMCwgImVuZCBvZiBh
cnJheSIpICAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX0RUKERUX05FRURFRCwgICAg
ICAgICAgIDEsICJuYW1lcyBhIG5lZWRlZCBsaWJyYXJ5IikgICAgICAgXAo+ICtfRUxGX0RFRklO
RV9EVChEVF9QTFRSRUxTWiwgICAgICAgICAyLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKPiArICAgICAgICJzaXplIGluIGJ5dGVzIG9mIGFzc29jaWF0ZWQgcmVsb2NhdGlvbiBl
bnRyaWVzIikgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX0RUKERUX1BMVEdPVCwgICAg
ICAgICAgIDMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgImFk
ZHJlc3MgYXNzb2NpYXRlZCB3aXRoIHRoZSBwcm9jZWR1cmUgbGlua2FnZSB0YWJsZSIpICAgICAg
ICAgIFwKPiArX0VMRl9ERUZJTkVfRFQoRFRfSEFTSCwgICAgICAgICAgICAgNCwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAiYWRkcmVzcyBvZiB0aGUgc3ltYm9s
IGhhc2ggdGFibGUiKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklO
RV9EVChEVF9TVFJUQUIsICAgICAgICAgICA1LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKPiArICAgICAgICJhZGRyZXNzIG9mIHRoZSBzdHJpbmcgdGFibGUiKSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX0RUKERUX1NZTVRBQiwgICAg
ICAgICAgIDYsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgImFk
ZHJlc3Mgb2YgdGhlIHN5bWJvbCB0YWJsZSIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKPiArX0VMRl9ERUZJTkVfRFQoRFRfUkVMQSwgICAgICAgICAgICAgNywgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAiYWRkcmVzcyBvZiB0aGUgcmVsb2Nh
dGlvbiB0YWJsZSIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklO
RV9EVChEVF9SRUxBU1osICAgICAgICAgICA4LCAic2l6ZSBvZiB0aGUgRFRfUkVMQSB0YWJsZSIp
ICAgIFwKPiArX0VMRl9ERUZJTkVfRFQoRFRfUkVMQUVOVCwgICAgICAgICAgOSwgInNpemUgb2Yg
ZWFjaCBEVF9SRUxBIGVudHJ5IikgICBcCj4gK19FTEZfREVGSU5FX0RUKERUX1NUUlNaLCAgICAg
ICAgICAgIDEwLCAic2l6ZSBvZiB0aGUgc3RyaW5nIHRhYmxlIikgICAgXAo+ICtfRUxGX0RFRklO
RV9EVChEVF9TWU1FTlQsICAgICAgICAgICAxMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAo+ICsgICAgICAgInNpemUgb2YgYSBzeW1ib2wgdGFibGUgZW50cnkiKSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfRFQoRFRfSU5J
VCwgICAgICAgICAgICAgMTIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKPiArICAgICAgICJhZGRyZXNzIG9mIHRoZSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbiIpICAg
ICAgICAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX0RUKERUX0ZJTkksICAgICAgICAg
ICAgIDEzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAg
ICAiYWRkcmVzcyBvZiB0aGUgZmluYWxpemF0aW9uIGZ1bmN0aW9uIikgICAgICAgICAgICAgICAg
ICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9EVChEVF9TT05BTUUsICAgICAgICAgICAxNCwgIm5h
bWVzIHRoZSBzaGFyZWQgb2JqZWN0IikgICAgIFwKPiArX0VMRl9ERUZJTkVfRFQoRFRfUlBBVEgs
ICAgICAgICAgICAgMTUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
PiArICAgICAgICJydW50aW1lIGxpYnJhcnkgc2VhcmNoIHBhdGgiKSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX0RUKERUX1NZTUJPTElDLCAgICAgICAg
IDE2LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAi
YWx0ZXIgc3ltYm9sIHJlc29sdXRpb24gYWxnb3JpdGhtIikgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAo+ICtfRUxGX0RFRklORV9EVChEVF9SRUwsICAgICAgICAgICAgICAxNywgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgImFkZHJlc3Mgb2Yg
dGhlIERUX1JFTCB0YWJsZSIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiAr
X0VMRl9ERUZJTkVfRFQoRFRfUkVMU1osICAgICAgICAgICAgMTgsICJzaXplIG9mIHRoZSBEVF9S
RUwgdGFibGUiKSAgICBcCj4gK19FTEZfREVGSU5FX0RUKERUX1JFTEVOVCwgICAgICAgICAgIDE5
LCAic2l6ZSBvZiBlYWNoIERUX1JFTCBlbnRyeSIpICAgXAo+ICtfRUxGX0RFRklORV9EVChEVF9Q
TFRSRUwsICAgICAgICAgICAyMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAo+ICsgICAgICAgInR5cGUgb2YgcmVsb2NhdGlvbiBlbnRyeSBpbiB0aGUgcHJvY2VkdXJl
IGxpbmthZ2UgdGFibGUiKSAgICAgIFwKPiArX0VMRl9ERUZJTkVfRFQoRFRfREVCVUcsICAgICAg
ICAgICAgMjEsICJ1c2VkIGZvciBkZWJ1Z2dpbmciKSAgICAgICAgICBcCj4gK19FTEZfREVGSU5F
X0RUKERUX1RFWFRSRUwsICAgICAgICAgIDIyLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCj4gKyAgICAgICAidGV4dCBzZWdtZW50IG1heSBiZSB3cml0dGVuIHRvIGR1
cmluZyByZWxvY2F0aW9uIikgICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9EVChEVF9KTVBS
RUwsICAgICAgICAgICAyMywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAo+ICsgICAgICAgImFkZHJlc3Mgb2YgcmVsb2NhdGlvbiBlbnRyaWVzIGFzc29jaWF0ZWQgd2l0
aCB0aGUgcHJvY2VkdXJlIGxpbmthZ2UgdGFibGUiKSBcCj4gK19FTEZfREVGSU5FX0RUKERUX0JJ
TkRfTk9XLCAgICAgICAgIDI0LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCj4gKyAgICAgICAiYmluZCBzeW1ib2xzIGF0IGxvYWRpbmcgdGltZSIpICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9EVChEVF9JTklUX0FSUkFZLCAg
ICAgICAyNSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAg
ICAgInBvaW50ZXJzIHRvIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9ucyIpICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfRFQoRFRfRklOSV9BUlJBWSwgICAgICAgMjYsICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICJwb2ludGVy
cyB0byB0ZXJtaW5hdGlvbiBmdW5jdGlvbnMiKSAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
Cj4gK19FTEZfREVGSU5FX0RUKERUX0lOSVRfQVJSQVlTWiwgICAgIDI3LCAic2l6ZSBvZiB0aGUg
RFRfSU5JVF9BUlJBWSIpICAgXAo+ICtfRUxGX0RFRklORV9EVChEVF9GSU5JX0FSUkFZU1osICAg
ICAyOCwgInNpemUgb2YgdGhlIERUX0ZJTklfQVJSQVkiKSAgIFwKPiArX0VMRl9ERUZJTkVfRFQo
RFRfUlVOUEFUSCwgICAgICAgICAgMjksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKPiArICAgICAgICJpbmRleCBvZiBsaWJyYXJ5IHNlYXJjaCBwYXRoIHN0cmluZyIp
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX0RUKERUX0ZMQUdTLCAg
ICAgICAgICAgIDMwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4g
KyAgICAgICAiZmxhZ3Mgc3BlY2lmaWMgdG8gdGhlIG9iamVjdCBiZWluZyBsb2FkZWQiKSAgICAg
ICAgICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9EVChEVF9FTkNPRElORywgICAgICAgICAz
MiwgInN0YW5kYXJkIHNlbWFudGljcyIpICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfRFQoRFRf
UFJFSU5JVF9BUlJBWSwgICAgMzIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKPiArICAgICAgICJwb2ludGVycyB0byBwcmUtaW5pdGlhbGl6YXRpb24gZnVuY3Rpb25z
IikgICAgICAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX0RUKERUX1BSRUlOSVRfQVJS
QVlTWiwgIDMzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAg
ICAgICAic2l6ZSBvZiBwcmUtaW5pdGlhbGl6YXRpb24gYXJyYXkiKSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9EVChEVF9NQVhQT1NUQUdTLCAgICAgIDM0LCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICJ0aGUgbnVtYmVyIG9m
IHBvc2l0aXZlIHRhZ3MiKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gK19F
TEZfREVGSU5FX0RUKERUX0xPT1MsICAgICAgICAgICAgIDB4NjAwMDAwMERVTCwgICAgICAgICAg
ICAgICAgICAgICAgXAo+ICsgICAgICAgInN0YXJ0IG9mIE9TLXNwZWNpZmljIHR5cGVzIikgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfRFQoRFRfU1VO
V19BVVhJTElBUlksICAgMHg2MDAwMDAwRFVMLCAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAg
ICAgICAib2Zmc2V0IG9mIHN0cmluZyBuYW1pbmcgYXV4aWxpYXJ5IGZpbHRlZXMiKSAgICAgICAg
ICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9EVChEVF9TVU5XX1JUTERJTkYsICAgICAweDYw
MDAwMDBFVUwsICJydGxkIGludGVybmFsIHVzZSIpIFwKPiArX0VMRl9ERUZJTkVfRFQoRFRfU1VO
V19GSUxURVIsICAgICAgMHg2MDAwMDAwRlVMLCAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAg
ICAgICAib2Zmc2V0IG9mIHN0cmluZyBuYW1pbmcgc3RhbmRhcmQgZmlsdGVlcyIpICAgICAgICAg
ICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9EVChEVF9TVU5XX0NBUCwgICAgICAgICAweDYw
MDAwMDEwVUwsICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICJhZGRyZXNzIG9mIGhh
cmR3YXJlIGNhcGFiaWxpdGllcyBzZWN0aW9uIikgICAgICAgICAgICAgICAgICAgICBcCj4gK19F
TEZfREVGSU5FX0RUKERUX0hJT1MsICAgICAgICAgICAgIDB4NkZGRkYwMDBVTCwgICAgICAgICAg
ICAgICAgICAgICAgXAo+ICsgICAgICAgImVuZCBvZiBPUy1zcGVjaWZpYyB0eXBlcyIpICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfRFQoRFRfVkFM
Uk5HTE8sICAgICAgICAgMHg2RkZGRkQwMFVMLCAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAg
ICAgICAic3RhcnQgb2YgcmFuZ2UgdXNpbmcgdGhlIGRfdmFsIGZpZWxkIikgICAgICAgICAgICAg
ICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9EVChEVF9HTlVfUFJFTElOS0VELCAgICAweDZG
RkZGREY1VUwsICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICJwcmVsaW5raW5nIHRp
bWVzdGFtcCIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gK19F
TEZfREVGSU5FX0RUKERUX0dOVV9DT05GTElDVFNaLCAgIDB4NkZGRkZERjZVTCwgICAgICAgICAg
ICAgICAgICAgICAgXAo+ICsgICAgICAgInNpemUgb2YgY29uZmxpY3Qgc2VjdGlvbiIpICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfRFQoRFRfR05V
X0xJQkxJU1RTWiwgICAgMHg2RkZGRkRGN1VMLCAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAg
ICAgICAic2l6ZSBvZiBsaWJyYXJ5IGxpc3QiKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9EVChEVF9DSEVDS1NVTSwgICAgICAgICAweDZG
RkZGREY4VUwsICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICJjaGVja3N1bSBmb3Ig
dGhlIG9iamVjdCIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gK19F
TEZfREVGSU5FX0RUKERUX1BMVFBBRFNaLCAgICAgICAgIDB4NkZGRkZERjlVTCwgICAgICAgICAg
ICAgICAgICAgICAgXAo+ICsgICAgICAgInNpemUgb2YgUExUIHBhZGRpbmciKSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfRFQoRFRfTU9W
RUVOVCwgICAgICAgICAgMHg2RkZGRkRGQVVMLCAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAg
ICAgICAic2l6ZSBvZiBEVF9NT1ZFVEFCIGVudHJpZXMiKSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9EVChEVF9NT1ZFU1osICAgICAgICAgICAweDZG
RkZGREZCVUwsICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICJ0b3RhbCBzaXplIG9m
IHRoZSBNT1ZFVEFCIHRhYmxlIikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gK19F
TEZfREVGSU5FX0RUKERUX0ZFQVRVUkUsICAgICAgICAgIDB4NkZGRkZERkNVTCwgImZlYXR1cmUg
dmFsdWVzIikgICAgXAo+ICtfRUxGX0RFRklORV9EVChEVF9QT1NGTEFHXzEsICAgICAgICAweDZG
RkZGREZEVUwsICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICJkeW5hbWljIHBvc2l0
aW9uIGZsYWdzIikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gK19F
TEZfREVGSU5FX0RUKERUX1NZTUlOU1osICAgICAgICAgIDB4NkZGRkZERkVVTCwgICAgICAgICAg
ICAgICAgICAgICAgXAo+ICsgICAgICAgInNpemUgb2YgdGhlIERUX1NZTUlORk8gdGFibGUiKSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfRFQoRFRfU1lN
SU5FTlQsICAgICAgICAgMHg2RkZGRkRGRlVMLCAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAg
ICAgICAic2l6ZSBvZiBhIERUX1NZTUlORk8gZW50cnkiKSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9EVChEVF9WQUxSTkdISSwgICAgICAgICAweDZG
RkZGREZGVUwsICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICJlbmQgb2YgcmFuZ2Ug
dXNpbmcgdGhlIGRfdmFsIGZpZWxkIikgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gK19F
TEZfREVGSU5FX0RUKERUX0FERFJSTkdMTywgICAgICAgIDB4NkZGRkZFMDBVTCwgICAgICAgICAg
ICAgICAgICAgICAgXAo+ICsgICAgICAgInN0YXJ0IG9mIHJhbmdlIHVzaW5nIHRoZSBkX3B0ciBm
aWVsZCIpICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfRFQoRFRfR05V
X0hBU0gsICAgICAgICAweDZGRkZGRUY1VUwsICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAg
ICAgICAiR05VIHN0eWxlIGhhc2ggdGFibGVzIikgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9EVChEVF9HTlVfQ09ORkxJQ1QsICAgICAweDZG
RkZGRUY4VUwsICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICJhZGRyZXNzIG9mIGNv
bmZsaWN0IHNlY3Rpb24iKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gK19F
TEZfREVGSU5FX0RUKERUX0dOVV9MSUJMSVNULCAgICAgIDB4NkZGRkZFRjlVTCwgICAgICAgICAg
ICAgICAgICAgICAgXAo+ICsgICAgICAgImFkZHJlc3Mgb2YgY29uZmxpY3Qgc2VjdGlvbiIpICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfRFQoRFRfQ09O
RklHLCAgICAgICAgICAgMHg2RkZGRkVGQVVMLCAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAg
ICAgICAiY29uZmlndXJhdGlvbiBmaWxlIikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9EVChEVF9ERVBBVURJVCwgICAgICAgICAweDZG
RkZGRUZCVUwsICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICJzdHJpbmcgZGVmaW5p
bmcgYXVkaXQgbGlicmFyaWVzIikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gK19F
TEZfREVGSU5FX0RUKERUX0FVRElULCAgICAgICAgICAgIDB4NkZGRkZFRkNVTCwgICAgICAgICAg
ICAgICAgICAgICAgXAo+ICsgICAgICAgInN0cmluZyBkZWZpbmluZyBhdWRpdCBsaWJyYXJpZXMi
KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfRFQoRFRfUExU
UEFELCAgICAgICAgICAgMHg2RkZGRkVGRFVMLCAiUExUIHBhZGRpbmciKSAgICAgICBcCj4gK19F
TEZfREVGSU5FX0RUKERUX01PVkVUQUIsICAgICAgICAgIDB4NkZGRkZFRkVVTCwgICAgICAgICAg
ICAgICAgICAgICAgXAo+ICsgICAgICAgImFkZHJlc3Mgb2YgYSBtb3ZlIHRhYmxlIikgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfRFQoRFRfU1lN
SU5GTywgICAgICAgICAgMHg2RkZGRkVGRlVMLCAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAg
ICAgICAiYWRkcmVzcyBvZiB0aGUgc3ltYm9sIGluZm9ybWF0aW9uIHRhYmxlIikgICAgICAgICAg
ICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9EVChEVF9BRERSUk5HSEksICAgICAgICAweDZG
RkZGRUZGVUwsICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICJlbmQgb2YgcmFuZ2Ug
dXNpbmcgdGhlIGRfcHRyIGZpZWxkIikgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gK19F
TEZfREVGSU5FX0RUKERUX1ZFUlNZTSwgICAgICAgICAgMHg2RkZGRkZGMFVMLCAgICAgICAgICAg
ICAgICAgICAgICAgXAo+ICsgICAgICAgImFkZHJlc3Mgb2YgdGhlIHZlcnNpb24gc2VjdGlvbiIp
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfRFQoRFRfUkVM
QUNPVU5ULCAgICAgICAgMHg2RkZGRkZGOVVMLCAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAg
ICAgICAiY291bnQgb2YgUkVMQSByZWxvY2F0aW9ucyIpICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9EVChEVF9SRUxDT1VOVCwgICAgICAgICAweDZG
RkZGRkZBVUwsICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICJjb3VudCBvZiBSRUwg
cmVsb2NhdGlvbnMiKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gK19F
TEZfREVGSU5FX0RUKERUX0ZMQUdTXzEsICAgICAgICAgIDB4NkZGRkZGRkJVTCwgImZsYWcgdmFs
dWVzIikgICAgICAgXAo+ICtfRUxGX0RFRklORV9EVChEVF9WRVJERUYsICAgICAgICAgIDB4NkZG
RkZGRkNVTCwgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICJhZGRyZXNzIG9mIHRo
ZSB2ZXJzaW9uIGRlZmluaXRpb24gc2VnbWVudCIpICAgICAgICAgICAgICAgICAgICBcCj4gK19F
TEZfREVGSU5FX0RUKERUX1ZFUkRFRk5VTSwgICAgICAgMHg2RkZGRkZGRFVMLCAgICAgICAgICAg
ICAgICAgICAgICAgXAo+ICsgICAgICAgInRoZSBudW1iZXIgb2YgdmVyc2lvbiBkZWZpbml0aW9u
IGVudHJpZXMiKSAgICAgICAgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfRFQoRFRfVkVS
TkVFRCwgICAgICAgICAweDZGRkZGRkZFVUwsICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAg
ICAgICAiYWRkcmVzcyBvZiBzZWN0aW9uIHdpdGggbmVlZGVkIHZlcnNpb25zIikgICAgICAgICAg
ICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9EVChEVF9WRVJORUVETlVNLCAgICAgICAweDZG
RkZGRkZGVUwsICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICJ0aGUgbnVtYmVyIG9m
IHZlcnNpb24gbmVlZGVkIGVudHJpZXMiKSAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gK19F
TEZfREVGSU5FX0RUKERUX0xPUFJPQywgICAgICAgICAgIDB4NzAwMDAwMDBVTCwgICAgICAgICAg
ICAgICAgICAgICAgXAo+ICsgICAgICAgInN0YXJ0IG9mIHByb2Nlc3Nvci1zcGVjaWZpYyB0eXBl
cyIpICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfRFQoRFRfQVJN
X1NZTVRBQlNaLCAgICAgICAgICAgIDB4NzAwMDAwMDFVTCwgICAgICAgICAgICAgICAgICAgICAg
IFwKPiArICAgICAgICJudW1iZXIgb2YgZW50cmllcyBpbiB0aGUgZHluYW1pYyBzeW1ib2wgdGFi
bGUiKSAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX0RUKERUX1NQQVJDX1JFR0lTVEVS
LCAgIDB4NzAwMDAwMDFVTCwgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgImluZGV4
IG9mIGFuIFNUVF9TUEFSQ19SRUdJU1RFUiBzeW1ib2wiKSAgICAgICAgICAgICAgICAgICAgICAg
IFwKPiArX0VMRl9ERUZJTkVfRFQoRFRfQVJNX1BSRUVNUFRNQVAsICAgMHg3MDAwMDAwMlVMLCAg
ICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAiYWRkcmVzcyBvZiB0aGUgcHJlZW1wdGlv
biBtYXAiKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9E
VChEVF9NSVBTX1JMRF9WRVJTSU9OLCAweDcwMDAwMDAxVUwsICAgICAgICAgICAgICAgICAgICAg
IFwKPiArICAgICAgICJ2ZXJzaW9uIElEIGZvciBydW50aW1lIGxpbmtlciBpbnRlcmZhY2UiKSAg
ICAgICAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX0RUKERUX01JUFNfVElNRV9TVEFN
UCwgIDB4NzAwMDAwMDJVTCwgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgInRpbWVz
dGFtcCIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKPiArX0VMRl9ERUZJTkVfRFQoRFRfTUlQU19JQ0hFQ0tTVU0sICAgMHg3MDAwMDAwM1VMLCAg
ICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAiY2hlY2tzdW0gb2YgYWxsIGV4dGVybmFs
IHN0cmluZ3MgYW5kIGNvbW1vbiBzaXplcyIpICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9E
VChEVF9NSVBTX0lWRVJTSU9OLCAgICAweDcwMDAwMDA0VUwsICAgICAgICAgICAgICAgICAgICAg
IFwKPiArICAgICAgICJzdHJpbmcgdGFibGUgaW5kZXggb2YgYSB2ZXJzaW9uIHN0cmluZyIpICAg
ICAgICAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX0RUKERUX01JUFNfRkxBR1MsICAg
ICAgIDB4NzAwMDAwMDVVTCwgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgIk1JUFMt
c3BlY2lmaWMgZmxhZ3MiKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKPiArX0VMRl9ERUZJTkVfRFQoRFRfTUlQU19CQVNFX0FERFJFU1MsIDB4NzAwMDAwMDZVTCwg
ICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAiYmFzZSBhZGRyZXNzIGZvciB0aGUgZXhl
Y3V0YWJsZS9EU08iKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9E
VChEVF9NSVBTX0NPTkZMSUNULCAgICAweDcwMDAwMDA4VUwsICAgICAgICAgICAgICAgICAgICAg
IFwKPiArICAgICAgICJhZGRyZXNzIG9mIC5jb25mbGljdCBzZWN0aW9uIikgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX0RUKERUX01JUFNfTElCTElTVCwg
ICAgIDB4NzAwMDAwMDlVTCwgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgImFkZHJl
c3Mgb2YgLmxpYmxpc3Qgc2VjdGlvbiIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKPiArX0VMRl9ERUZJTkVfRFQoRFRfTUlQU19MT0NBTF9HT1ROTywgMHg3MDAwMDAwQVVMLCAg
ICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAibnVtYmVyIG9mIGxvY2FsIEdPVCBlbnRy
aWVzIikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9E
VChEVF9NSVBTX0NPTkZMSUNUTk8sICAweDcwMDAwMDBCVUwsICAgICAgICAgICAgICAgICAgICAg
IFwKPiArICAgICAgICJudW1iZXIgb2YgZW50cmllcyBpbiB0aGUgLmNvbmZsaWN0IHNlY3Rpb24i
KSAgICAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX0RUKERUX01JUFNfTElCTElTVE5P
LCAgIDB4NzAwMDAwMTBVTCwgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgIm51bWJl
ciBvZiBlbnRyaWVzIGluIHRoZSAubGlibGlzdCBzZWN0aW9uIikgICAgICAgICAgICAgICAgICAg
IFwKPiArX0VMRl9ERUZJTkVfRFQoRFRfTUlQU19TWU1UQUJOTywgICAgMHg3MDAwMDAxMVVMLCAg
ICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAibnVtYmVyIG9mIGVudHJpZXMgaW4gdGhl
IC5keW5zeW0gc2VjdGlvbiIpICAgICAgICAgICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9E
VChEVF9NSVBTX1VOUkVGRVhUTk8sICAweDcwMDAwMDEyVUwsICAgICAgICAgICAgICAgICAgICAg
IFwKPiArICAgICAgICJpbmRleCBvZiBmaXJzdCBleHRlcm5hbCBkeW5hbWljIHN5bWJvbCBub3Qg
cmVmJ2VkIGxvY2FsbHkiKSAgICBcCj4gK19FTEZfREVGSU5FX0RUKERUX01JUFNfR09UU1lNLCAg
ICAgIDB4NzAwMDAwMTNVTCwgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgImluZGV4
IG9mIGZpcnN0IGR5bmFtaWMgc3ltYm9sIGNvcnJlc3BvbmRzIHRvIGEgR09UIGVudHJ5IikgICAg
IFwKPiArX0VMRl9ERUZJTkVfRFQoRFRfTUlQU19ISVBBR0VOTywgICAgMHg3MDAwMDAxNFVMLCAg
ICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAibnVtYmVyIG9mIHBhZ2UgdGFibGUgZW50
cmllcyBpbiBHT1QiKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9E
VChEVF9NSVBTX1JMRF9NQVAsICAgICAweDcwMDAwMDE2VUwsICAgICAgICAgICAgICAgICAgICAg
IFwKPiArICAgICAgICJhZGRyZXNzIG9mIHJ1bnRpbWUgbGlua2VyIG1hcCIpICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX0RUKERUX01JUFNfREVMVEFfQ0xB
U1MsIDB4NzAwMDAwMTdVTCwgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgIkRlbHRh
IEMrKyBjbGFzcyBkZWZpbml0aW9uIikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKPiArX0VMRl9ERUZJTkVfRFQoRFRfTUlQU19ERUxUQV9DTEFTU19OTywgMHg3MDAwMDAxOFVM
LCAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAibnVtYmVyIG9mIGVudHJpZXMgaW4gRFRf
TUlQU19ERUxUQV9DTEFTUyIpICAgICAgICAgICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9E
VChEVF9NSVBTX0RFTFRBX0lOU1RBTkNFLCAweDcwMDAwMDE5VUwsICAgICAgICAgICAgICAgICAg
IFwKPiArICAgICAgICJEZWx0YSBDKysgY2xhc3MgaW5zdGFuY2VzIikgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX0RUKERUX01JUFNfREVMVEFfSU5T
VEFOQ0VfTk8sIDB4NzAwMDAwMUFVTCwgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAg
ICAibnVtYmVyIG9mIGVudHJpZXMgaW4gRFRfTUlQU19ERUxUQV9JTlNUQU5DRSIpICAgICAgICAg
ICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9EVChEVF9NSVBTX0RFTFRBX1JFTE9DLCAweDcwMDAw
MDFCVUwsICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICJEZWx0YSByZWxvY2F0aW9u
cyIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gK19FTEZf
REVGSU5FX0RUKERUX01JUFNfREVMVEFfUkVMT0NfTk8sIDB4NzAwMDAwMUNVTCwgICAgICAgICAg
ICAgICAgICAgXAo+ICsgICAgICAgIm51bWJlciBvZiBlbnRyaWVzIGluIERUX01JUFNfREVMVEFf
UkVMT0MiKSAgICAgICAgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfRFQoRFRfTUlQU19E
RUxUQV9TWU0sICAgMHg3MDAwMDAxRFVMLCAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAg
ICAiRGVsdGEgc3ltYm9scyByZWZlcmVkIGJ5IERlbHRhIHJlbG9jYXRpb25zIikgICAgICAgICAg
ICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9EVChEVF9NSVBTX0RFTFRBX1NZTV9OTywgMHg3MDAw
MDAxRVVMLCAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICJudW1iZXIgb2YgZW50cmll
cyBpbiBEVF9NSVBTX0RFTFRBX1NZTSIpICAgICAgICAgICAgICAgICAgICAgICBcCj4gK19FTEZf
REVGSU5FX0RUKERUX01JUFNfREVMVEFfQ0xBU1NTWU0sIDB4NzAwMDAwMjBVTCwgICAgICAgICAg
ICAgICAgICAgXAo+ICsgICAgICAgIkRlbHRhIHN5bWJvbHMgZm9yIGNsYXNzIGRlY2xhcmF0aW9u
cyIpICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfRFQoRFRfTUlQU19E
RUxUQV9DTEFTU1NZTV9OTywgMHg3MDAwMDAyMVVMLCAgICAgICAgICAgICAgICAgICAgICAgIFwK
PiArICAgICAgICJudW1iZXIgb2YgZW50cmllcyBpbiBEVF9NSVBTX0RFTFRBX0NMQVNTU1lNIikg
ICAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX0RUKERUX01JUFNfQ1hYX0ZMQUdTLCAg
IDB4NzAwMDAwMjJVTCwgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgIkMrKyBmbGF2
b3IgZmxhZ3MiKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
PiArX0VMRl9ERUZJTkVfRFQoRFRfTUlQU19QSVhJRV9JTklULCAgMHg3MDAwMDAyM1VMLCAgICAg
ICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAiYWRkcmVzcyBvZiBhbiBpbml0aWFsaXphdGlv
biByb3V0aW5lIGNyZWF0ZWQgYnkgcGl4aWUiKSAgICAgICAgXAo+ICtfRUxGX0RFRklORV9EVChE
VF9NSVBTX1NZTUJPTF9MSUIsICAweDcwMDAwMDI0VUwsICAgICAgICAgICAgICAgICAgICAgIFwK
PiArICAgICAgICJhZGRyZXNzIG9mIC5NSVBTLnN5bWxpYiBzZWN0aW9uIikgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX0RUKERUX01JUFNfTE9DQUxQQUdFX0dP
VElEWCwgMHg3MDAwMDAyNVVMLCAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgIkdPVCBpbmRl
eCBvZiBmaXJzdCBwYWdlIHRhYmxlIGVudHJ5IGZvciBhIHNlZ21lbnQiKSAgICAgICAgICAgIFwK
PiArX0VMRl9ERUZJTkVfRFQoRFRfTUlQU19MT0NBTF9HT1RJRFgsIDB4NzAwMDAwMjZVTCwgICAg
ICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAiR09UIGluZGV4IG9mIGZpcnN0IHBhZ2UgdGFi
bGUgZW50cnkgZm9yIGEgbG9jYWwgc3ltYm9sIikgICAgICAgXAo+ICtfRUxGX0RFRklORV9EVChE
VF9NSVBTX0hJRERFTl9HT1RJRFgsIDB4NzAwMDAwMjdVTCwgICAgICAgICAgICAgICAgICAgIFwK
PiArICAgICAgICJHT1QgaW5kZXggb2YgZmlyc3QgcGFnZSB0YWJsZSBlbnRyeSBmb3IgYSBoaWRk
ZW4gc3ltYm9sIikgICAgICBcCj4gK19FTEZfREVGSU5FX0RUKERUX01JUFNfUFJPVEVDVEVEX0dP
VElEWCwgMHg3MDAwMDAyOFVMLCAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgIkdPVCBpbmRl
eCBvZiBmaXJzdCBwYWdlIHRhYmxlIGVudHJ5IGZvciBhIHByb3RlY3RlZCBzeW1ib2wiKSAgIFwK
PiArX0VMRl9ERUZJTkVfRFQoRFRfTUlQU19PUFRJT05TLCAgICAgMHg3MDAwMDAyOVVMLCAgICAg
ICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAiYWRkcmVzcyBvZiAuTUlQUy5vcHRpb25zIHNl
Y3Rpb24iKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9EVChE
VF9NSVBTX0lOVEVSRkFDRSwgICAweDcwMDAwMDJBVUwsICAgICAgICAgICAgICAgICAgICAgIFwK
PiArICAgICAgICJhZGRyZXNzIG9mIC5NSVBTLmludGVyZmFjZSBzZWN0aW9uIikgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX0RUKERUX01JUFNfRFlOU1RSX0FMSUdO
LCAweDcwMDAwMDJCVUwsICI/Pz8iKSAgICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9EVChE
VF9NSVBTX0lOVEVSRkFDRV9TSVpFLCAweDcwMDAwMDJDVUwsICAgICAgICAgICAgICAgICAgIFwK
PiArICAgICAgICJzaXplIG9mIC5NSVBTLmludGVyZmFjZSBzZWN0aW9uIikgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX0RUKERUX01JUFNfUkxEX1RFWFRfUkVT
T0xWRV9BRERSLCAweDcwMDAwMDJEVUwsICAgICAgICAgICAgXAo+ICsgICAgICAgImFkZHJlc3Mg
b2YgX3JsZF90ZXh0X3Jlc29sdmUgaW4gR09UIikgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
PiArX0VMRl9ERUZJTkVfRFQoRFRfTUlQU19QRVJGX1NVRkZJWCwgMHg3MDAwMDAyRVVMLCAgICAg
ICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAiZGVmYXVsdCBzdWZmaXggb2YgRFNPIHRvIGJl
IGFwcGVuZGVkIGJ5IGRsb3BlbiIpICAgICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9EVChE
VF9NSVBTX0NPTVBBQ1RfU0laRSwgMHg3MDAwMDAyRlVMLCAgICAgICAgICAgICAgICAgICAgIFwK
PiArICAgICAgICJzaXplIG9mIGEgdWNvZGUgY29tcGFjdCByZWxvY2F0aW9uIHJlY29yZCAobzMy
KSIpICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX0RUKERUX01JUFNfR1BfVkFMVUUsICAg
IDB4NzAwMDAwMzBVTCwgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgIkdQIHZhbHVl
IG9mIGEgc3BlY2lmaWVkIEdQIHJlbGF0aXZlIHJhbmdlIikgICAgICAgICAgICAgICAgICAgIFwK
PiArX0VMRl9ERUZJTkVfRFQoRFRfTUlQU19BVVhfRFlOQU1JQywgMHg3MDAwMDAzMVVMLCAgICAg
ICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAiYWRkcmVzcyBvZiBhbiBhdXhpbGlhcnkgZHlu
YW1pYyB0YWJsZSIpICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9EVChE
VF9NSVBTX1BMVEdPVCwgICAgICAweDcwMDAwMDMyVUwsICAgICAgICAgICAgICAgICAgICAgIFwK
PiArICAgICAgICJhZGRyZXNzIG9mIHRoZSBQTFRHT1QiKSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX0RUKERUX01JUFNfUkxEX09CSl9VUERB
VEUsIDB4NzAwMDAwMzNVTCwgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgIm9iamVjdCBs
aXN0IHVwZGF0ZSBjYWxsYmFjayIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
PiArX0VMRl9ERUZJTkVfRFQoRFRfTUlQU19SV1BMVCwgICAgICAgMHg3MDAwMDAzNFVMLCAgICAg
ICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAiYWRkcmVzcyBvZiBhIHdyaXRhYmxlIFBMVCIp
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9EVChE
VF9QUENfR09ULCAgICAgICAgICAweDcwMDAwMDAwVUwsICAgICAgICAgICAgICAgICAgICAgIFwK
PiArICAgICAgICJ2YWx1ZSBvZiBfR0xPQkFMX09GRlNFVF9UQUJMRV8iKSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX0RUKERUX1BQQ19UTFNPUFQsICAgICAg
IDB4NzAwMDAwMDFVTCwgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgIlRMUyBkZXNj
cmlwdG9yIHNob3VsZCBiZSBvcHRpbWl6ZWQiKSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
PiArX0VMRl9ERUZJTkVfRFQoRFRfUFBDNjRfR0xJTkssICAgICAgMHg3MDAwMDAwMFVMLCAgICAg
ICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAiYWRkcmVzcyBvZiAuZ2xpbmsgc2VjdGlvbiIp
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9EVChE
VF9QUEM2NF9PUEQsICAgICAgICAweDcwMDAwMDAxVUwsICAgICAgICAgICAgICAgICAgICAgIFwK
PiArICAgICAgICJhZGRyZXNzIG9mIC5vcGQgc2VjdGlvbiIpICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX0RUKERUX1BQQzY0X09QRFNaLCAgICAg
IDB4NzAwMDAwMDJVTCwgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgInNpemUgb2Yg
Lm9wZCBzZWN0aW9uIikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
PiArX0VMRl9ERUZJTkVfRFQoRFRfUFBDNjRfVExTT1BULCAgICAgMHg3MDAwMDAwM1VMLCAgICAg
ICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAiVExTIGRlc2NyaXB0b3Igc2hvdWxkIGJlIG9w
dGltaXplZCIpICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9EVChE
VF9BVVhJTElBUlksICAgICAgICAweDdGRkZGRkZEVUwsICAgICAgICAgICAgICAgICAgICAgIFwK
PiArICAgICAgICJvZmZzZXQgb2Ygc3RyaW5nIG5hbWluZyBhdXhpbGlhcnkgZmlsdGVlcyIpICAg
ICAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX0RUKERUX1VTRUQsICAgICAgICAgICAg
IDB4N0ZGRkZGRkVVTCwgImlnbm9yZWQiKSAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9EVChE
VF9GSUxURVIsICAgICAgICAgICAweDdGRkZGRkZGVUwsICAgICAgICAgICAgICAgICAgICAgIFwK
PiArICAgICAgICJpbmRleCBvZiBzdHJpbmcgbmFtaW5nIGZpbHRlZXMiKSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX0RUKERUX0hJUFJPQywgICAgICAgICAg
IDB4N0ZGRkZGRkZVTCwgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgImVuZCBvZiBw
cm9jZXNzb3Itc3BlY2lmaWMgdHlwZXMiKQo+ICsKPiArI3VuZGVmIF9FTEZfREVGSU5FX0RUCj4g
KyNkZWZpbmUgICAgICAgIF9FTEZfREVGSU5FX0RUKE4sIFYsIERFU0NSKSAgICAgTiA9IFYgLAo+
ICtlbnVtIHsKPiArICAgICAgIF9FTEZfREVGSU5FX0RZTl9UWVBFUygpCj4gKyAgICAgICBEVF9f
TEFTVF9fID0gRFRfSElQUk9DCj4gK307Cj4gKwo+ICsjZGVmaW5lICAgICAgICBEVF9ERVBSRUNB
VEVEX1NQQVJDX1JFR0lTVEVSICAgIERUX1NQQVJDX1JFR0lTVEVSCj4gKwo+ICsvKgo+ICsgKiBG
bGFncyB1c2VkIGluIHRoZSBleGVjdXRhYmxlIGhlYWRlciAoZmllbGQ6IGVfZmxhZ3MpLgo+ICsg
Ki8KPiArI2RlZmluZSAgICAgICAgX0VMRl9ERUZJTkVfRUhEUl9GTEFHUygpICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfRUYoRUZfQVJNX1JF
TEVYRUMsICAgICAgMHgwMDAwMDAwMVVMLCAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAg
ICAiZHluYW1pYyBzZWdtZW50IGRlc2NyaWJlcyBvbmx5IGhvdyB0byByZWxvY2F0ZSBzZWdtZW50
cyIpICAgICAgXAo+ICtfRUxGX0RFRklORV9FRihFRl9BUk1fSEFTRU5UUlksICAgICAweDAwMDAw
MDAyVUwsICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICJlX2VudHJ5IGNvbnRhaW5z
IGEgcHJvZ3JhbSBlbnRyeSBwb2ludCIpICAgICAgICAgICAgICAgICAgICAgICBcCj4gK19FTEZf
REVGSU5FX0VGKEVGX0FSTV9TWU1TQVJFU09SVEVELCAweDAwMDAwMDA0VUwsICAgICAgICAgICAg
ICAgICAgICAgXAo+ICsgICAgICAgInN1YnNlY3Rpb24gb2Ygc3ltYm9sIHRhYmxlIGlzIHNvcnRl
ZCBieSBzeW1ib2wgdmFsdWUiKSAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfRUYoRUZfQVJNX0RZ
TlNZTVNVU0VTRUdJRFgsIDB4MDAwMDAwMDhVTCwgICAgICAgICAgICAgICAgICBcCj4gKyAgICAg
ICAiZHluYW1pYyBzeW1ib2wgc3Rfc2huZHggPSBjb250YWluaW5nIHNlZ21lbnQgaW5kZXggKyAx
IikgICAgICAgXAo+ICtfRUxGX0RFRklORV9FRihFRl9BUk1fTUFQU1lNU0ZJUlNULCAweDAwMDAw
MDEwVUwsICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICJtYXBwaW5nIHN5bWJvbHMg
cHJlY2VkZSBvdGhlciBsb2NhbCBzeW1ib2xzIGluIHN5bXRhYiIpICAgICAgICBcCj4gK19FTEZf
REVGSU5FX0VGKEVGX0FSTV9CRTgsICAgICAgICAgIDB4MDA4MDAwMDBVTCwgICAgICAgICAgICAg
ICAgICAgICAgXAo+ICsgICAgICAgImZpbGUgY29udGFpbnMgQkUtOCBjb2RlIikgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfRUYoRUZfQVJNX0xF
OCwgICAgICAgICAgMHgwMDQwMDAwMFVMLCAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAg
ICAiZmlsZSBjb250YWlucyBMRS04IGNvZGUiKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9FRihFRl9BUk1fRUFCSU1BU0ssICAgICAweEZGMDAw
MDAwVUwsICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICJtYXNrIGZvciBBUk0gRUFC
SSB2ZXJzaW9uIG51bWJlciAoMCBkZW5vdGVzIEdOVSBvciB1bmtub3duKSIpICBcCj4gK19FTEZf
REVGSU5FX0VGKEVGX0FSTV9FQUJJX1VOS05PV04sIDB4MDAwMDAwMDBVTCwgICAgICAgICAgICAg
ICAgICAgICAgXAo+ICsgICAgICAgIlVua25vd24gb3IgR05VIEFSTSBFQUJJIHZlcnNpb24gbnVt
YmVyIikgICAgICAgICAgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfRUYoRUZfQVJNX0VB
QklfVkVSMSwgICAgMHgwMTAwMDAwMFVMLCAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAg
ICAiQVJNIEVBQkkgdmVyc2lvbiAxIikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9FRihFRl9BUk1fRUFCSV9WRVIyLCAgICAweDAyMDAw
MDAwVUwsICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICJBUk0gRUFCSSB2ZXJzaW9u
IDIiKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gK19FTEZf
REVGSU5FX0VGKEVGX0FSTV9FQUJJX1ZFUjMsICAgIDB4MDMwMDAwMDBVTCwgICAgICAgICAgICAg
ICAgICAgICAgXAo+ICsgICAgICAgIkFSTSBFQUJJIHZlcnNpb24gMyIpICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfRUYoRUZfQVJNX0VB
QklfVkVSNCwgICAgMHgwNDAwMDAwMFVMLCAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAg
ICAiQVJNIEVBQkkgdmVyc2lvbiA0IikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9FRihFRl9BUk1fRUFCSV9WRVI1LCAgICAweDA1MDAw
MDAwVUwsICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICJBUk0gRUFCSSB2ZXJzaW9u
IDUiKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gK19FTEZf
REVGSU5FX0VGKEVGX0FSTV9JTlRFUldPUkssICAgIDB4MDAwMDAwMDRVTCwgICAgICAgICAgICAg
ICAgICAgICAgXAo+ICsgICAgICAgIkdOVSBFQUJJIGV4dGVuc2lvbiIpICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfRUYoRUZfQVJNX0FQ
Q1NfMjYsICAgICAgMHgwMDAwMDAwOFVMLCAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAg
ICAiR05VIEVBQkkgZXh0ZW5zaW9uIikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9FRihFRl9BUk1fQVBDU19GTE9BVCwgICAweDAwMDAw
MDEwVUwsICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICJHTlUgRUFCSSBleHRlbnNp
b24iKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gK19FTEZf
REVGSU5FX0VGKEVGX0FSTV9QSUMsICAgICAgICAgIDB4MDAwMDAwMjBVTCwgICAgICAgICAgICAg
ICAgICAgICAgXAo+ICsgICAgICAgIkdOVSBFQUJJIGV4dGVuc2lvbiIpICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfRUYoRUZfQVJNX0FM
SUdOOCwgICAgICAgMHgwMDAwMDA0MFVMLCAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAg
ICAiR05VIEVBQkkgZXh0ZW5zaW9uIikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9FRihFRl9BUk1fTkVXX0FCSSwgICAgICAweDAwMDAw
MDgwVUwsICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICJHTlUgRUFCSSBleHRlbnNp
b24iKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gK19FTEZf
REVGSU5FX0VGKEVGX0FSTV9PTERfQUJJLCAgICAgIDB4MDAwMDAxMDBVTCwgICAgICAgICAgICAg
ICAgICAgICAgXAo+ICsgICAgICAgIkdOVSBFQUJJIGV4dGVuc2lvbiIpICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfRUYoRUZfQVJNX1NP
RlRfRkxPQVQsICAgMHgwMDAwMDIwMFVMLCAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAg
ICAiR05VIEVBQkkgZXh0ZW5zaW9uIikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9FRihFRl9BUk1fVkZQX0ZMT0FULCAgICAweDAwMDAw
NDAwVUwsICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICJHTlUgRUFCSSBleHRlbnNp
b24iKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gK19FTEZf
REVGSU5FX0VGKEVGX0FSTV9NQVZFUklDS19GTE9BVCwgMHgwMDAwMDgwMFVMLCAgICAgICAgICAg
ICAgICAgICAgXAo+ICsgICAgICAgIkdOVSBFQUJJIGV4dGVuc2lvbiIpICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfRUYoRUZfTUlQU19O
T1JFT1JERVIsICAgMHgwMDAwMDAwMVVMLCAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAg
ICAiYXQgbGVhc3Qgb25lIC5ub3Jlb3JkZXIgZGlyZWN0aXZlIGFwcGVhcmVkIGluIHRoZSBzb3Vy
Y2UiKSAgICAgXAo+ICtfRUxGX0RFRklORV9FRihFRl9NSVBTX1BJQywgICAgICAgICAweDAwMDAw
MDAyVUwsICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICJmaWxlIGNvbnRhaW5zIHBv
c2l0aW9uIGluZGVwZW5kZW50IGNvZGUiKSAgICAgICAgICAgICAgICAgICAgICBcCj4gK19FTEZf
REVGSU5FX0VGKEVGX01JUFNfQ1BJQywgICAgICAgIDB4MDAwMDAwMDRVTCwgICAgICAgICAgICAg
ICAgICAgICAgXAo+ICsgICAgICAgImZpbGUncyBjb2RlIHVzZXMgc3RhbmRhcmQgY29udmVudGlv
bnMgZm9yIGNhbGxpbmcgUElDIikgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfRUYoRUZfTUlQU19V
Q09ERSwgICAgICAgMHgwMDAwMDAxMFVMLCAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAg
ICAiZmlsZSBjb250YWlucyBVQ09ERSAob2Jzb2xldGUpIikgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9FRihFRl9NSVBTX0FCSTIsICAgICAgICAweDAwMDAw
MDIwVUwsICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICJmaWxlIGZvbGxvd3MgTUlQ
UyBJSUkgMzItYml0IEFCSSIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gK19FTEZf
REVGSU5FX0VGKEVGX01JUFNfT1BUSU9OU19GSVJTVCwgMHgwMDAwMDA4MFVMLCAgICAgICAgICAg
ICAgICAgICAgXAo+ICsgICAgICAgImxkKDEpIHNob3VsZCBwcm9jZXNzIC5NSVBTLm9wdGlvbnMg
c2VjdGlvbiBmaXJzdCIpICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfRUYoRUZfTUlQU19B
UkNIX0FTRSwgICAgMHgwRjAwMDAwMFVMLCAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAg
ICAiZmlsZSB1c2VzIGFwcGxpY2F0aW9uLXNwZWNpZmljIGFyY2hpdGVjdHVyYWwgZXh0ZW5zaW9u
cyIpICAgICAgXAo+ICtfRUxGX0RFRklORV9FRihFRl9NSVBTX0FSQ0hfQVNFX01ETVgsIDB4MDgw
MDAwMDBVTCwgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICJmaWxlIHVzZXMgTURNWCBt
dWx0aW1lZGlhIGV4dGVuc2lvbnMiKSAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gK19FTEZf
REVGSU5FX0VGKEVGX01JUFNfQVJDSF9BU0VfTTE2LCAweDA0MDAwMDAwVUwsICAgICAgICAgICAg
ICAgICAgICAgXAo+ICsgICAgICAgImZpbGUgdXNlcyBNSVBTLTE2IElTQSBleHRlbnNpb25zIikg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfRUYoRUZfTUlQU19B
UkNILCAgICAgICAgIDB4RjAwMDAwMDBVTCwgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAg
ICAiNC1iaXQgTUlQUyBhcmNoaXRlY3R1cmUgZmllbGQiKSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9FRihFRl9QUENfRU1CLCAgICAgICAgICAweDgwMDAw
MDAwVUwsICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICJFbWJlZGRlZCBQb3dlclBD
IGZsYWciKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gK19FTEZf
REVGSU5FX0VGKEVGX1BQQ19SRUxPQ0FUQUJMRSwgIDB4MDAwMTAwMDBVTCwgICAgICAgICAgICAg
ICAgICAgICAgXAo+ICsgICAgICAgIi1tcmVsb2NhdGFibGUgZmxhZyIpICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfRUYoRUZfUFBDX1JF
TE9DQVRBQkxFX0xJQiwgMHgwMDAwODAwMFVMLCAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAg
ICAiLW1yZWxvY2F0YWJsZS1saWIgZmxhZyIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9FRihFRl9TUEFSQ19FWFRfTUFTSywgICAweDAwZmZm
ZjAwVUwsICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICJWZW5kb3IgRXh0ZW5zaW9u
IG1hc2siKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gK19FTEZf
REVGSU5FX0VGKEVGX1NQQVJDXzMyUExVUywgICAgIDB4MDAwMDAxMDBVTCwgICAgICAgICAgICAg
ICAgICAgICAgXAo+ICsgICAgICAgIkdlbmVyaWMgVjgrIGZlYXR1cmVzIikgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfRUYoRUZfU1BBUkNf
U1VOX1VTMSwgICAgMHgwMDAwMDIwMFVMLCAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAg
ICAiU3VuIFVsdHJhU1BBUkNUTSAxIEV4dGVuc2lvbnMiKSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9FRihFRl9TUEFSQ19IQUxfUjEsICAgICAweDAwMDAw
NDAwVUwsICJIQUwgUjEgRXh0ZW5zaW9ucyIpIFwKPiArX0VMRl9ERUZJTkVfRUYoRUZfU1BBUkNf
U1VOX1VTMywgICAgMHgwMDAwMDgwMFVMLCAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAg
ICAiU3VuIFVsdHJhU1BBUkMgMyBFeHRlbnNpb25zIikgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9FRihFRl9TUEFSQ1Y5X01NLCAgICAgICAweDAwMDAw
MDAzVUwsICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICJNYXNrIGZvciBNZW1vcnkg
TW9kZWwiKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gK19FTEZf
REVGSU5FX0VGKEVGX1NQQVJDVjlfVFNPLCAgICAgIDB4MDAwMDAwMDBVTCwgICAgICAgICAgICAg
ICAgICAgICAgXAo+ICsgICAgICAgIlRvdGFsIFN0b3JlIE9yZGVyaW5nIikgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfRUYoRUZfU1BBUkNW
OV9QU08sICAgICAgMHgwMDAwMDAwMVVMLCAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAg
ICAiUGFydGlhbCBTdG9yZSBPcmRlcmluZyIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9FRihFRl9TUEFSQ1Y5X1JNTywgICAgICAweDAwMDAw
MDAyVUwsICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICJSZWxheGVkIE1lbW9yeSBP
cmRlcmluZyIpCj4gKwo+ICsjdW5kZWYgX0VMRl9ERUZJTkVfRUYKPiArI2RlZmluZSAgICAgICAg
X0VMRl9ERUZJTkVfRUYoTiwgViwgREVTQ1IpICAgICBOID0gViAsCj4gK2VudW0gewo+ICsgICAg
ICAgX0VMRl9ERUZJTkVfRUhEUl9GTEFHUygpCj4gKyAgICAgICBFRl9fTEFTVF9fCj4gK307Cj4g
Kwo+ICsvKgo+ICsgKiBPZmZzZXRzIGluIHRoZSBgZWlfaWRlbnRbXWAgZmllbGQgb2YgYW4gRUxG
IGV4ZWN1dGFibGUgaGVhZGVyLgo+ICsgKi8KPiArI2RlZmluZSAgICAgICAgX0VMRl9ERUZJTkVf
RUlfT0ZGU0VUUygpICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9FSShF
SV9NQUcwLCAgICAgMCwgIm1hZ2ljIG51bWJlciIpICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9F
SShFSV9NQUcxLCAgICAgMSwgIm1hZ2ljIG51bWJlciIpICAgICAgICAgXAo+ICtfRUxGX0RFRklO
RV9FSShFSV9NQUcyLCAgICAgMiwgIm1hZ2ljIG51bWJlciIpICAgICAgICAgXAo+ICtfRUxGX0RF
RklORV9FSShFSV9NQUczLCAgICAgMywgIm1hZ2ljIG51bWJlciIpICAgICAgICAgXAo+ICtfRUxG
X0RFRklORV9FSShFSV9DTEFTUywgICAgNCwgImZpbGUgY2xhc3MiKSAgICAgICAgICAgXAo+ICtf
RUxGX0RFRklORV9FSShFSV9EQVRBLCAgICAgNSwgImRhdGEgZW5jb2RpbmciKSAgICAgICAgICAg
ICAgICBcCj4gK19FTEZfREVGSU5FX0VJKEVJX1ZFUlNJT04sICA2LCAiZmlsZSB2ZXJzaW9uIikg
ICAgICAgICBcCj4gK19FTEZfREVGSU5FX0VJKEVJX09TQUJJLCAgICA3LCAiT1MgQUJJIGtpbmQi
KSAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX0VJKEVJX0FCSVZFUlNJT04sIDgsICJPUyBBQkkg
dmVyc2lvbiIpICAgICBcCj4gK19FTEZfREVGSU5FX0VJKEVJX1BBRCwgICAgIDksICJwYWRkaW5n
IHN0YXJ0IikgICAgICAgICBcCj4gK19FTEZfREVGSU5FX0VJKEVJX05JREVOVCwgIDE2LCAidG90
YWwgc2l6ZSIpCj4gKwo+ICsjdW5kZWYgX0VMRl9ERUZJTkVfRUkKPiArI2RlZmluZSAgICAgICAg
X0VMRl9ERUZJTkVfRUkoTiwgViwgREVTQ1IpICAgICBOID0gViAsCj4gK2VudW0gewo+ICsgICAg
ICAgX0VMRl9ERUZJTkVfRUlfT0ZGU0VUUygpCj4gKyAgICAgICBFSV9fTEFTVF9fCj4gK307Cj4g
Kwo+ICsvKgo+ICsgKiBUaGUgRUxGIGNsYXNzIG9mIGFuIG9iamVjdC4KPiArICovCj4gKyNkZWZp
bmUgICAgICAgIF9FTEZfREVGSU5FX0VMRkNMQVNTKCkgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKPiArX0VMRl9ERUZJTkVfRUMoRUxGQ0xBU1NOT05FLCAwLCAiVW5rbm93biBFTEYgY2xhc3Mi
KSAgIFwKPiArX0VMRl9ERUZJTkVfRUMoRUxGQ0xBU1MzMiwgICAxLCAiMzIgYml0IG9iamVjdHMi
KSAgICAgIFwKPiArX0VMRl9ERUZJTkVfRUMoRUxGQ0xBU1M2NCwgICAyLCAiNjQgYml0IG9iamVj
dHMiKQo+ICsKPiArI3VuZGVmIF9FTEZfREVGSU5FX0VDCj4gKyNkZWZpbmUgICAgICAgIF9FTEZf
REVGSU5FX0VDKE4sIFYsIERFU0NSKSAgICAgTiA9IFYgLAo+ICtlbnVtIHsKPiArICAgICAgIF9F
TEZfREVGSU5FX0VMRkNMQVNTKCkKPiArICAgICAgIEVDX19MQVNUX18KPiArfTsKPiArCj4gKy8q
Cj4gKyAqIEVuZGlhbm5lc3Mgb2YgZGF0YSBpbiBhbiBFTEYgb2JqZWN0Lgo+ICsgKi8KPiArCj4g
KyNkZWZpbmUgICAgICAgIF9FTEZfREVGSU5FX0VMRl9EQVRBX0VORElBTk5FU1MoKSAgICAgICAg
ICAgICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9FRChFTEZEQVRBTk9ORSwgMCwgIlVua25v
d24gZGF0YSBlbmRpYW5uZXNzIikgICAgICBcCj4gK19FTEZfREVGSU5FX0VEKEVMRkRBVEEyTFNC
LCAxLCAibGl0dGxlIGVuZGlhbiIpICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICtfRUxGX0RF
RklORV9FRChFTEZEQVRBMk1TQiwgMiwgImJpZyBlbmRpYW4iKQo+ICsKPiArI3VuZGVmIF9FTEZf
REVGSU5FX0VECj4gKyNkZWZpbmUgICAgICAgIF9FTEZfREVGSU5FX0VEKE4sIFYsIERFU0NSKSAg
ICAgTiA9IFYgLAo+ICtlbnVtIHsKPiArICAgICAgIF9FTEZfREVGSU5FX0VMRl9EQVRBX0VORElB
Tk5FU1MoKQo+ICsgICAgICAgRURfX0xBU1RfXwo+ICt9Owo+ICsKPiArLyoKPiArICogVmFsdWVz
IG9mIHRoZSBtYWdpYyBudW1iZXJzIHVzZWQgaW4gaWRlbnRpZmljYXRpb24gYXJyYXkuCj4gKyAq
Lwo+ICsjZGVmaW5lICAgICAgICBfRUxGX0RFRklORV9FTEZfTUFHSUMoKSAgICAgICAgICAgICAg
ICAgXAo+ICtfRUxGX0RFRklORV9FTUFHKEVMRk1BRzAsIDB4N0ZVKSAgICAgICAgICAgICAgIFwK
PiArX0VMRl9ERUZJTkVfRU1BRyhFTEZNQUcxLCAnRScpICAgICAgICAgICAgICAgICBcCj4gK19F
TEZfREVGSU5FX0VNQUcoRUxGTUFHMiwgJ0wnKSAgICAgICAgICAgICAgICAgXAo+ICtfRUxGX0RF
RklORV9FTUFHKEVMRk1BRzMsICdGJykKPiArCj4gKyN1bmRlZiBfRUxGX0RFRklORV9FTUFHCj4g
KyNkZWZpbmUgICAgICAgIF9FTEZfREVGSU5FX0VNQUcoTiwgVikgICAgICAgICAgTiA9IFYgLAo+
ICtlbnVtIHsKPiArICAgICAgIF9FTEZfREVGSU5FX0VMRl9NQUdJQygpCj4gKyAgICAgICBFTEZN
QUdfX0xBU1RfXwo+ICt9Owo+ICsKPiArLyoKPiArICogRUxGIE9TIEFCSSBmaWVsZC4KPiArICov
Cj4gKyNkZWZpbmUgICAgICAgIF9FTEZfREVGSU5FX0VMRl9PU0FCSSgpICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX0VBQkkoRUxGT1NBQklf
Tk9ORSwgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAg
Ik5vIGV4dGVuc2lvbnMgb3IgdW5zcGVjaWZpZWQiKSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKPiArX0VMRl9ERUZJTkVfRUFCSShFTEZPU0FCSV9TWVNWLCAgICAgICAwLCAiU1lT
ViIpICAgICAgICAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX0VBQkkoRUxGT1NBQklf
SFBVWCwgICAgICAgMSwgIkhld2xldHQtUGFja2FyZCBIUC1VWCIpICAgICAgXAo+ICtfRUxGX0RF
RklORV9FQUJJKEVMRk9TQUJJX05FVEJTRCwgICAgIDIsICJOZXRCU0QiKSAgICAgICAgICAgICAg
ICAgICAgIFwKPiArX0VMRl9ERUZJTkVfRUFCSShFTEZPU0FCSV9HTlUsICAgICAgICAzLCAiR05V
IikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfRUFCSShF
TEZPU0FCSV9IVVJELCAgICAgICA0LCAiR05VL0hVUkQiKSAgICAgICAgICAgICAgICAgICBcCj4g
K19FTEZfREVGSU5FX0VBQkkoRUxGT1NBQklfODZPUEVOLCAgICAgNSwgIjg2T3BlbiBDb21tb24g
QUJJIikgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9FQUJJKEVMRk9TQUJJX1NPTEFSSVMsICAg
IDYsICJTdW4gU29sYXJpcyIpICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklO
RV9FQUJJKEVMRk9TQUJJX0FJWCwgICAgICAgIDcsICJBSVgiKSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9FQUJJKEVMRk9TQUJJX0lSSVgsICAgICAgIDgs
ICJJUklYIikgICAgICAgICAgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfRUFCSShFTEZP
U0FCSV9GUkVFQlNELCAgICA5LCAiRnJlZUJTRCIpICAgICAgICAgICAgICAgICAgICBcCj4gK19F
TEZfREVGSU5FX0VBQkkoRUxGT1NBQklfVFJVNjQsICAgICAgMTAsICJDb21wYXEgVFJVNjQgVU5J
WCIpICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9FQUJJKEVMRk9TQUJJX01PREVTVE8sICAgIDEx
LCAiTm92ZWxsIE1vZGVzdG8iKSAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfRUFCSShFTEZP
U0FCSV9PUEVOQlNELCAgICAxMiwgIk9wZW4gQlNEIikgICAgICAgICAgICAgICAgICBcCj4gK19F
TEZfREVGSU5FX0VBQkkoRUxGT1NBQklfT1BFTlZNUywgICAgMTMsICJPcGVuIFZNUyIpICAgICAg
ICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9FQUJJKEVMRk9TQUJJX05TSywgICAgICAgIDE0
LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICJIZXdsZXR0LVBhY2th
cmQgTm9uLVN0b3AgS2VybmVsIikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gK19F
TEZfREVGSU5FX0VBQkkoRUxGT1NBQklfQVJPUywgICAgICAgMTUsICJBbWlnYSBSZXNlYXJjaCBP
UyIpICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9FQUJJKEVMRk9TQUJJX0ZFTklYT1MsICAgIDE2
LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICJUaGUgRmVuaXhPUyBo
aWdobHkgc2NhbGFibGUgbXVsdGktY29yZSBPUyIpICAgICAgICAgICAgICAgICAgICBcCj4gK19F
TEZfREVGSU5FX0VBQkkoRUxGT1NBQklfQVJNX0FFQUJJLCAgNjQsICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAo+ICsgICAgICAgIkFSTSBzcGVjaWZpYyBzeW1ib2wgdmVyc2lvbmluZyBl
eHRlbnNpb25zIikgICAgICAgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfRUFCSShFTEZP
U0FCSV9BUk0sICAgICAgICA5NywgIkFSTSBBQkkiKSAgICAgICAgICAgICAgICAgICBcCj4gK19F
TEZfREVGSU5FX0VBQkkoRUxGT1NBQklfU1RBTkRBTE9ORSwgMjU1LCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAo+ICsgICAgICAgIlN0YW5kYWxvbmUgKGVtYmVkZGVkKSBhcHBsaWNhdGlv
biIpCj4gKwo+ICsjdW5kZWYgX0VMRl9ERUZJTkVfRUFCSQo+ICsjZGVmaW5lICAgICAgICBfRUxG
X0RFRklORV9FQUJJKE4sIFYsIERFU0NSKSAgIE4gPSBWICwKPiArZW51bSB7Cj4gKyAgICAgICBf
RUxGX0RFRklORV9FTEZfT1NBQkkoKQo+ICsgICAgICAgRUxGT1NBQklfX0xBU1RfXwo+ICt9Owo+
ICsKPiArI2RlZmluZSAgICAgICAgRUxGT1NBQklfTElOVVggICAgICAgICAgICAgICAgICBFTEZP
U0FCSV9HTlUKPiArCj4gKy8qCj4gKyAqIEVMRiBNYWNoaW5lIHR5cGVzOiAoRU1fKikuCj4gKyAq
Lwo+ICsjZGVmaW5lICAgICAgICBfRUxGX0RFRklORV9FTEZfTUFDSElORVMoKSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9FTShFTV9OT05FLCAg
ICAgICAgICAgICAwLCAiTm8gbWFjaGluZSIpICAgICAgICAgICAgICAgICAgIFwKPiArX0VMRl9E
RUZJTkVfRU0oRU1fTTMyLCAgICAgICAgICAgICAgMSwgIkFUJlQgV0UgMzIxMDAiKSAgICAgICAg
ICAgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfRU0oRU1fU1BBUkMsICAgICAgICAgICAg
MiwgIlNQQVJDIikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJ
TkVfRU0oRU1fMzg2LCAgICAgICAgICAgICAgMywgIkludGVsIDgwMzg2IikgICAgICAgICAgICAg
ICAgICBcCj4gK19FTEZfREVGSU5FX0VNKEVNXzY4SywgICAgICAgICAgICAgIDQsICJNb3Rvcm9s
YSA2ODAwMCIpICAgICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9FTShFTV84OEssICAgICAg
ICAgICAgICA1LCAiTW90b3JvbGEgODgwMDAiKSAgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJ
TkVfRU0oRU1fSUFNQ1UsICAgICAgICAgICAgNiwgIkludGVsIE1DVSIpICAgICAgICAgICAgICAg
ICAgICBcCj4gK19FTEZfREVGSU5FX0VNKEVNXzg2MCwgICAgICAgICAgICAgIDcsICJJbnRlbCA4
MDg2MCIpICAgICAgICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9FTShFTV9NSVBTLCAgICAg
ICAgICAgICA4LCAiTUlQUyBJIEFyY2hpdGVjdHVyZSIpICAgICAgICAgIFwKPiArX0VMRl9ERUZJ
TkVfRU0oRU1fUzM3MCwgICAgICAgICAgICAgOSwgIklCTSBTeXN0ZW0vMzcwIFByb2Nlc3NvciIp
ICAgICBcCj4gK19FTEZfREVGSU5FX0VNKEVNX01JUFNfUlMzX0xFLCAgICAgIDEwLCAiTUlQUyBS
UzMwMDAgTGl0dGxlLWVuZGlhbiIpICAgXAo+ICtfRUxGX0RFRklORV9FTShFTV9QQVJJU0MsICAg
ICAgICAgICAxNSwgIkhld2xldHQtUGFja2FyZCBQQS1SSVNDIikgICAgIFwKPiArX0VMRl9ERUZJ
TkVfRU0oRU1fVlBQNTAwLCAgICAgICAgICAgMTcsICJGdWppdHN1IFZQUDUwMCIpICAgICAgICAg
ICAgICBcCj4gK19FTEZfREVGSU5FX0VNKEVNX1NQQVJDMzJQTFVTLCAgICAgIDE4LCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAiRW5oYW5jZWQgaW5z
dHJ1Y3Rpb24gc2V0IFNQQVJDIikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICtf
RUxGX0RFRklORV9FTShFTV85NjAsICAgICAgICAgICAgICAxOSwgIkludGVsIDgwOTYwIikgICAg
ICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfRU0oRU1fUFBDLCAgICAgICAgICAgICAgMjAs
ICJQb3dlclBDIikgICAgICAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX0VNKEVNX1BQ
QzY0LCAgICAgICAgICAgIDIxLCAiNjQtYml0IFBvd2VyUEMiKSAgICAgICAgICAgICAgXAo+ICtf
RUxGX0RFRklORV9FTShFTV9TMzkwLCAgICAgICAgICAgICAyMiwgIklCTSBTeXN0ZW0vMzkwIFBy
b2Nlc3NvciIpICAgIFwKPiArX0VMRl9ERUZJTkVfRU0oRU1fU1BVLCAgICAgICAgICAgICAgMjMs
ICJJQk0gU1BVL1NQQyIpICAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX0VNKEVNX1Y4
MDAsICAgICAgICAgICAgIDM2LCAiTkVDIFY4MDAiKSAgICAgICAgICAgICAgICAgICAgXAo+ICtf
RUxGX0RFRklORV9FTShFTV9GUjIwLCAgICAgICAgICAgICAzNywgIkZ1aml0c3UgRlIyMCIpICAg
ICAgICAgICAgICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9FTShFTV9SSDMyLCAgICAgICAg
ICAgICAzOCwgIlRSVyBSSC0zMiIpICAgICAgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVf
RU0oRU1fUkNFLCAgICAgICAgICAgICAgMzksICJNb3Rvcm9sYSBSQ0UiKSAgICAgICAgICAgICAg
ICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfRU0oRU1fQVJNLCAgICAgICAgICAgICAgNDAsICJB
ZHZhbmNlZCBSSVNDIE1hY2hpbmVzIEFSTSIpICBcCj4gK19FTEZfREVGSU5FX0VNKEVNX0FMUEhB
LCAgICAgICAgICAgIDQxLCAiRGlnaXRhbCBBbHBoYSIpICAgICAgICAgICAgICAgXAo+ICtfRUxG
X0RFRklORV9FTShFTV9TSCwgICAgICAgICAgICAgICA0MiwgIkhpdGFjaGkgU0giKSAgICAgICAg
ICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfRU0oRU1fU1BBUkNWOSwgICAgICAgICAgNDMsICJT
UEFSQyBWZXJzaW9uIDkiKSAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX0VNKEVNX1RSSUNP
UkUsICAgICAgICAgIDQ0LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
Cj4gKyAgICAgICAiU2llbWVucyBUcmlDb3JlIGVtYmVkZGVkIHByb2Nlc3NvciIpICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9FTShFTV9BUkMsICAgICAgICAgICAg
ICA0NSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAg
IkFyZ29uYXV0IFJJU0MgQ29yZSwgQXJnb25hdXQgVGVjaG5vbG9naWVzIEluYy4iKSAgICAgICAg
ICAgICAgIFwKPiArX0VMRl9ERUZJTkVfRU0oRU1fSDhfMzAwLCAgICAgICAgICAgNDYsICJIaXRh
Y2hpIEg4LzMwMCIpICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX0VNKEVNX0g4XzMwMEgs
ICAgICAgICAgIDQ3LCAiSGl0YWNoaSBIOC8zMDBIIikgICAgICAgICAgICAgXAo+ICtfRUxGX0RF
RklORV9FTShFTV9IOFMsICAgICAgICAgICAgICA0OCwgIkhpdGFjaGkgSDhTIikgICAgICAgICAg
ICAgICAgIFwKPiArX0VMRl9ERUZJTkVfRU0oRU1fSDhfNTAwLCAgICAgICAgICAgNDksICJIaXRh
Y2hpIEg4LzUwMCIpICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX0VNKEVNX0lBXzY0LCAg
ICAgICAgICAgIDUwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4g
KyAgICAgICAiSW50ZWwgSUEtNjQgcHJvY2Vzc29yIGFyY2hpdGVjdHVyZSIpICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9FTShFTV9NSVBTX1gsICAgICAgICAgICA1
MSwgIlN0YW5mb3JkIE1JUFMtWCIpICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfRU0oRU1f
Q09MREZJUkUsICAgICAgICAgNTIsICJNb3Rvcm9sYSBDb2xkRmlyZSIpICAgICAgICAgICBcCj4g
K19FTEZfREVGSU5FX0VNKEVNXzY4SEMxMiwgICAgICAgICAgIDUzLCAiTW90b3JvbGEgTTY4SEMx
MiIpICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9FTShFTV9NTUEsICAgICAgICAgICAgICA1
NCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgIkZ1
aml0c3UgTU1BIE11bHRpbWVkaWEgQWNjZWxlcmF0b3IiKSAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKPiArX0VMRl9ERUZJTkVfRU0oRU1fUENQLCAgICAgICAgICAgICAgNTUsICJTaWVtZW5z
IFBDUCIpICAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX0VNKEVNX05DUFUsICAgICAg
ICAgICAgIDU2LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAg
ICAgICAiU29ueSBuQ1BVIGVtYmVkZGVkIFJJU0MgcHJvY2Vzc29yIikgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9FTShFTV9ORFIxLCAgICAgICAgICAgICA1Nywg
IkRlbnNvIE5EUjEgbWljcm9wcm9jZXNzb3IiKSAgIFwKPiArX0VMRl9ERUZJTkVfRU0oRU1fU1RB
UkNPUkUsICAgICAgICAgNTgsICJNb3Rvcm9sYSBTdGFyKkNvcmUgcHJvY2Vzc29yIikgICAgICAg
IFwKPiArX0VMRl9ERUZJTkVfRU0oRU1fTUUxNiwgICAgICAgICAgICAgNTksICJUb3lvdGEgTUUx
NiBwcm9jZXNzb3IiKSAgICAgICBcCj4gK19FTEZfREVGSU5FX0VNKEVNX1NUMTAwLCAgICAgICAg
ICAgIDYwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAg
ICAiU1RNaWNyb2VsZWN0cm9uaWNzIFNUMTAwIHByb2Nlc3NvciIpICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9FTShFTV9USU5ZSiwgICAgICAgICAgICA2MSwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgIkFkdmFuY2Vk
IExvZ2ljIENvcnAuIFRpbnlKIGVtYmVkZGVkIHByb2Nlc3NvciBmYW1pbHkiKSAgICAgICAgIFwK
PiArX0VMRl9ERUZJTkVfRU0oRU1fWDg2XzY0LCAgICAgICAgICAgNjIsICJBTUQgeDg2LTY0IGFy
Y2hpdGVjdHVyZSIpICAgICBcCj4gK19FTEZfREVGSU5FX0VNKEVNX1BEU1AsICAgICAgICAgICAg
IDYzLCAiU29ueSBEU1AgUHJvY2Vzc29yIikgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9FTShF
TV9QRFAxMCwgICAgICAgICAgICA2NCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAo+ICsgICAgICAgIkRpZ2l0YWwgRXF1aXBtZW50IENvcnAuIFBEUC0xMCIpICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfRU0oRU1fUERQMTEsICAg
ICAgICAgICAgNjUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiAr
ICAgICAgICJEaWdpdGFsIEVxdWlwbWVudCBDb3JwLiBQRFAtMTEiKSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX0VNKEVNX0ZYNjYsICAgICAgICAgICAgIDY2
LCAiU2llbWVucyBGWDY2IG1pY3JvY29udHJvbGxlciIpICAgICAgICBcCj4gK19FTEZfREVGSU5F
X0VNKEVNX1NUOVBMVVMsICAgICAgICAgIDY3LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCj4gKyAgICAgICAiU1RNaWNyb2VsZWN0cm9uaWNzIFNUOSsgOC8xNiBiaXQg
bWljcm9jb250cm9sbGVyIikgICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9FTShFTV9TVDcs
ICAgICAgICAgICAgICA2OCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAo+ICsgICAgICAgIlNUTWljcm9lbGVjdHJvbmljcyBTVDcgOC1iaXQgbWljcm9jb250cm9sbGVy
IikgICAgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfRU0oRU1fNjhIQzE2LCAgICAgICAg
ICAgNjksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAg
ICJNb3Rvcm9sYSBNQzY4SEMxNiBNaWNyb2NvbnRyb2xsZXIiKSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCj4gK19FTEZfREVGSU5FX0VNKEVNXzY4SEMxMSwgICAgICAgICAgIDcwLCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAiTW90b3JvbGEg
TUM2OEhDMTEgTWljcm9jb250cm9sbGVyIikgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+
ICtfRUxGX0RFRklORV9FTShFTV82OEhDMDgsICAgICAgICAgICA3MSwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgIk1vdG9yb2xhIE1DNjhIQzA4IE1p
Y3JvY29udHJvbGxlciIpICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJ
TkVfRU0oRU1fNjhIQzA1LCAgICAgICAgICAgNzIsICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKPiArICAgICAgICJNb3Rvcm9sYSBNQzY4SEMwNSBNaWNyb2NvbnRyb2xs
ZXIiKSAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX0VNKEVNX1NW
WCwgICAgICAgICAgICAgIDczLCAiU2lsaWNvbiBHcmFwaGljcyBTVngiKSAgICAgICAgICAgICAg
ICBcCj4gK19FTEZfREVGSU5FX0VNKEVNX1NUMTksICAgICAgICAgICAgIDc0LCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAiU1RNaWNyb2VsZWN0cm9u
aWNzIFNUMTkgOC1iaXQgbWljcm9jb250cm9sbGVyIikgICAgICAgICAgICAgICAgXAo+ICtfRUxG
X0RFRklORV9FTShFTV9WQVgsICAgICAgICAgICAgICA3NSwgIkRpZ2l0YWwgVkFYIikgICAgICAg
ICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfRU0oRU1fQ1JJUywgICAgICAgICAgICAgNzYsICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICJBeGlzIENv
bW11bmljYXRpb25zIDMyLWJpdCBlbWJlZGRlZCBwcm9jZXNzb3IiKSAgICAgICAgICAgICAgICBc
Cj4gK19FTEZfREVGSU5FX0VNKEVNX0pBVkVMSU4sICAgICAgICAgIDc3LCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAiSW5maW5lb24gVGVjaG5vbG9n
aWVzIDMyLWJpdCBlbWJlZGRlZCBwcm9jZXNzb3IiKSAgICAgICAgICAgICAgXAo+ICtfRUxGX0RF
RklORV9FTShFTV9GSVJFUEFUSCwgICAgICAgICA3OCwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAo+ICsgICAgICAgIkVsZW1lbnQgMTQgNjQtYml0IERTUCBQcm9jZXNz
b3IiKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfRU0oRU1f
WlNQLCAgICAgICAgICAgICAgNzksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKPiArICAgICAgICJMU0kgTG9naWMgMTYtYml0IERTUCBQcm9jZXNzb3IiKSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX0VNKEVNX01NSVgsICAgICAg
ICAgICAgIDgwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAg
ICAgICAiRG9uYWxkIEtudXRoJ3MgZWR1Y2F0aW9uYWwgNjQtYml0IHByb2Nlc3NvciIpICAgICAg
ICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9FTShFTV9IVUFOWSwgICAgICAgICAgICA4MSwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgIkhhcnZh
cmQgVW5pdmVyc2l0eSBtYWNoaW5lLWluZGVwZW5kZW50IG9iamVjdCBmaWxlcyIpICAgICAgICAg
IFwKPiArX0VMRl9ERUZJTkVfRU0oRU1fUFJJU00sICAgICAgICAgICAgODIsICJTaVRlcmEgUHJp
c20iKSAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfRU0oRU1fQVZSLCAg
ICAgICAgICAgICAgODMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
PiArICAgICAgICJBdG1lbCBBVlIgOC1iaXQgbWljcm9jb250cm9sbGVyIikgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX0VNKEVNX0ZSMzAsICAgICAgICAgICAg
IDg0LCAiRnVqaXRzdSBGUjMwIikgICAgICAgICAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVG
SU5FX0VNKEVNX0QxMFYsICAgICAgICAgICAgIDg1LCAiTWl0c3ViaXNoaSBEMTBWIikgICAgICAg
ICAgICAgXAo+ICtfRUxGX0RFRklORV9FTShFTV9EMzBWLCAgICAgICAgICAgICA4NiwgIk1pdHN1
YmlzaGkgRDMwViIpICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfRU0oRU1fVjg1MCwgICAg
ICAgICAgICAgODcsICJORUMgdjg1MCIpICAgICAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVG
SU5FX0VNKEVNX00zMlIsICAgICAgICAgICAgIDg4LCAiTWl0c3ViaXNoaSBNMzJSIikgICAgICAg
ICAgICAgXAo+ICtfRUxGX0RFRklORV9FTShFTV9NTjEwMzAwLCAgICAgICAgICA4OSwgIk1hdHN1
c2hpdGEgTU4xMDMwMCIpICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfRU0oRU1fTU4xMDIwMCwg
ICAgICAgICAgOTAsICJNYXRzdXNoaXRhIE1OMTAyMDAiKSAgICAgICAgICBcCj4gK19FTEZfREVG
SU5FX0VNKEVNX1BKLCAgICAgICAgICAgICAgIDkxLCAicGljb0phdmEiKSAgICAgICAgICAgICAg
ICAgICAgXAo+ICtfRUxGX0RFRklORV9FTShFTV9PUEVOUklTQywgICAgICAgICA5MiwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgIk9wZW5SSVNDIDMy
LWJpdCBlbWJlZGRlZCBwcm9jZXNzb3IiKSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiAr
X0VMRl9ERUZJTkVfRU0oRU1fQVJDX0NPTVBBQ1QsICAgICAgOTMsICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICJBUkMgSW50ZXJuYXRpb25hbCBBUkNv
bXBhY3QgcHJvY2Vzc29yIikgICAgICAgICAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5F
X0VNKEVNX1hURU5TQSwgICAgICAgICAgIDk0LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCj4gKyAgICAgICAiVGVuc2lsaWNhIFh0ZW5zYSBBcmNoaXRlY3R1cmUiKSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9FTShFTV9WSURF
T0NPUkUsICAgICAgICA5NSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAo+ICsgICAgICAgIkFscGhhbW9zYWljIFZpZGVvQ29yZSBwcm9jZXNzb3IiKSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfRU0oRU1fVE1NX0dQUCwgICAgICAg
ICAgOTYsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAg
ICJUaG9tcHNvbiBNdWx0aW1lZGlhIEdlbmVyYWwgUHVycG9zZSBQcm9jZXNzb3IiKSAgICAgICAg
ICAgICAgICBcCj4gK19FTEZfREVGSU5FX0VNKEVNX05TMzJLLCAgICAgICAgICAgIDk3LCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAiTmF0aW9uYWwg
U2VtaWNvbmR1Y3RvciAzMjAwMCBzZXJpZXMiKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+
ICtfRUxGX0RFRklORV9FTShFTV9UUEMsICAgICAgICAgICAgICA5OCwgIlRlbm9yIE5ldHdvcmsg
VFBDIHByb2Nlc3NvciIpIFwKPiArX0VMRl9ERUZJTkVfRU0oRU1fU05QMUssICAgICAgICAgICAg
OTksICJUcmViaWEgU05QIDEwMDAgcHJvY2Vzc29yIikgICBcCj4gK19FTEZfREVGSU5FX0VNKEVN
X1NUMjAwLCAgICAgICAgICAgIDEwMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+
ICsgICAgICAgIlNUTWljcm9lbGVjdHJvbmljcyAod3d3LnN0LmNvbSkgU1QyMDAgbWljcm9jb250
cm9sbGVyIikgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfRU0oRU1fSVAySywgICAgICAgICAgICAg
MTAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAiVWJpY29tIElQ
Mnh4eCBtaWNyb2NvbnRyb2xsZXIgZmFtaWx5IikgICAgICAgICAgICAgICAgICAgICAgICAgXAo+
ICtfRUxGX0RFRklORV9FTShFTV9NQVgsICAgICAgICAgICAgICAxMDIsICJNQVggUHJvY2Vzc29y
IikgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfRU0oRU1fQ1IsICAgICAgICAgICAgICAg
MTAzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAiTmF0aW9uYWwg
U2VtaWNvbmR1Y3RvciBDb21wYWN0UklTQyBtaWNyb3Byb2Nlc3NvciIpICAgICAgICAgICAgXAo+
ICtfRUxGX0RFRklORV9FTShFTV9GMk1DMTYsICAgICAgICAgICAxMDQsICJGdWppdHN1IEYyTUMx
NiIpICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfRU0oRU1fTVNQNDMwLCAgICAgICAgICAg
MTA1LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAiVGV4YXMgSW5z
dHJ1bWVudHMgZW1iZWRkZWQgbWljcm9jb250cm9sbGVyIG1zcDQzMCIpICAgICAgICAgICAgXAo+
ICtfRUxGX0RFRklORV9FTShFTV9CTEFDS0ZJTiwgICAgICAgICAxMDYsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKPiArICAgICAgICJBbmFsb2cgRGV2aWNlcyBCbGFja2ZpbiAoRFNQ
KSBwcm9jZXNzb3IiKSAgICAgICAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX0VNKEVN
X1NFX0MzMywgICAgICAgICAgIDEwNywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+
ICsgICAgICAgIlMxQzMzIEZhbWlseSBvZiBTZWlrbyBFcHNvbiBwcm9jZXNzb3JzIikgICAgICAg
ICAgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfRU0oRU1fU0VQLCAgICAgICAgICAgICAg
MTA4LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAiU2hhcnAgZW1i
ZWRkZWQgbWljcm9wcm9jZXNzb3IiKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+
ICtfRUxGX0RFRklORV9FTShFTV9BUkNBLCAgICAgICAgICAgICAxMDksICJBcmNhIFJJU0MgTWlj
cm9wcm9jZXNzb3IiKSAgIFwKPiArX0VMRl9ERUZJTkVfRU0oRU1fVU5JQ09SRSwgICAgICAgICAg
MTEwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAiTWljcm9wcm9j
ZXNzb3Igc2VyaWVzIGZyb20gUEtVLVVuaXR5IEx0ZC4gYW5kIE1QUkMgb2YgUGVraW5nIFVuaXZl
cnNpdHkiKSBcCj4gK19FTEZfREVGSU5FX0VNKEVNX0VYQ0VTUywgICAgICAgICAgIDExMSwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgImVYY2VzczogMTYvMzIvNjQt
Yml0IGNvbmZpZ3VyYWJsZSBlbWJlZGRlZCBDUFUiKSAgICAgICAgICAgICAgIFwKPiArX0VMRl9E
RUZJTkVfRU0oRU1fRFhQLCAgICAgICAgICAgICAgMTEyLCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCj4gKyAgICAgICAiSWNlcmEgU2VtaWNvbmR1Y3RvciBJbmMuIERlZXAgRXhlY3V0
aW9uIFByb2Nlc3NvciIpICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9FTShFTV9BTFRFUkFf
TklPUzIsICAgICAxMTMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAg
ICJBbHRlcmEgTmlvcyBJSSBzb2Z0LWNvcmUgcHJvY2Vzc29yIikgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCj4gK19FTEZfREVGSU5FX0VNKEVNX0NSWCwgICAgICAgICAgICAgIDExNCwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgIk5hdGlvbmFsIFNlbWljb25k
dWN0b3IgQ29tcGFjdFJJU0MgQ1JYIG1pY3JvcHJvY2Vzc29yIikgICAgICAgIFwKPiArX0VMRl9E
RUZJTkVfRU0oRU1fWEdBVEUsICAgICAgICAgICAgMTE1LCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCj4gKyAgICAgICAiTW90b3JvbGEgWEdBVEUgZW1iZWRkZWQgcHJvY2Vzc29yIikg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9FTShFTV9DMTY2LCAg
ICAgICAgICAgICAxMTYsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAg
ICJJbmZpbmVvbiBDMTZ4L1hDMTZ4IHByb2Nlc3NvciIpICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCj4gK19FTEZfREVGSU5FX0VNKEVNX00xNkMsICAgICAgICAgICAgIDExNywgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgIlJlbmVzYXMgTTE2QyBzZXJp
ZXMgbWljcm9wcm9jZXNzb3JzIikgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArX0VMRl9E
RUZJTkVfRU0oRU1fRFNQSUMzMEYsICAgICAgICAgMTE4LCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCj4gKyAgICAgICAiTWljcm9jaGlwIFRlY2hub2xvZ3kgZHNQSUMzMEYgRGlnaXRh
bCBTaWduYWwgQ29udHJvbGxlciIpICAgICAgXAo+ICtfRUxGX0RFRklORV9FTShFTV9DRSwgICAg
ICAgICAgICAgICAxMTksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAg
ICJGcmVlc2NhbGUgQ29tbXVuaWNhdGlvbiBFbmdpbmUgUklTQyBjb3JlIikgICAgICAgICAgICAg
ICAgICAgICBcCj4gK19FTEZfREVGSU5FX0VNKEVNX00zMkMsICAgICAgICAgICAgIDEyMCwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgIlJlbmVzYXMgTTMyQyBzZXJp
ZXMgbWljcm9wcm9jZXNzb3JzIikgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArX0VMRl9E
RUZJTkVfRU0oRU1fVFNLMzAwMCwgICAgICAgICAgMTMxLCAiQWx0aXVtIFRTSzMwMDAgY29yZSIp
ICAgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfRU0oRU1fUlMwOCwgICAgICAgICAgICAg
MTMyLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAiRnJlZXNjYWxl
IFJTMDggZW1iZWRkZWQgcHJvY2Vzc29yIikgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+
ICtfRUxGX0RFRklORV9FTShFTV9TSEFSQywgICAgICAgICAgICAxMzMsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKPiArICAgICAgICJBbmFsb2cgRGV2aWNlcyBTSEFSQyBmYW1pbHkg
b2YgMzItYml0IERTUCBwcm9jZXNzb3JzIikgICAgICAgICBcCj4gK19FTEZfREVGSU5FX0VNKEVN
X0VDT0cyLCAgICAgICAgICAgIDEzNCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+
ICsgICAgICAgIkN5YW4gVGVjaG5vbG9neSBlQ09HMiBtaWNyb3Byb2Nlc3NvciIpICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfRU0oRU1fU0NPUkU3LCAgICAgICAgICAg
MTM1LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAiU3VucGx1cyBT
K2NvcmU3IFJJU0MgcHJvY2Vzc29yIikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+
ICtfRUxGX0RFRklORV9FTShFTV9EU1AyNCwgICAgICAgICAgICAxMzYsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKPiArICAgICAgICJOZXcgSmFwYW4gUmFkaW8gKE5KUikgMjQtYml0
IERTUCBQcm9jZXNzb3IiKSAgICAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX0VNKEVN
X1ZJREVPQ09SRTMsICAgICAgIDEzNywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+
ICsgICAgICAgIkJyb2FkY29tIFZpZGVvQ29yZSBJSUkgcHJvY2Vzc29yIikgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfRU0oRU1fTEFUVElDRU1JQ08zMiwgICAg
MTM4LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAiUklTQyBwcm9j
ZXNzb3IgZm9yIExhdHRpY2UgRlBHQSBhcmNoaXRlY3R1cmUiKSAgICAgICAgICAgICAgICAgXAo+
ICtfRUxGX0RFRklORV9FTShFTV9TRV9DMTcsICAgICAgICAgICAxMzksICJTZWlrbyBFcHNvbiBD
MTcgZmFtaWx5IikgICAgIFwKPiArX0VMRl9ERUZJTkVfRU0oRU1fVElfQzYwMDAsICAgICAgICAg
MTQwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAiVGhlIFRleGFz
IEluc3RydW1lbnRzIFRNUzMyMEM2MDAwIERTUCBmYW1pbHkiKSAgICAgICAgICAgICAgICAgXAo+
ICtfRUxGX0RFRklORV9FTShFTV9USV9DMjAwMCwgICAgICAgICAxNDEsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKPiArICAgICAgICJUaGUgVGV4YXMgSW5zdHJ1bWVudHMgVE1TMzIw
QzIwMDAgRFNQIGZhbWlseSIpICAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX0VNKEVN
X1RJX0M1NTAwLCAgICAgICAgIDE0MiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+
ICsgICAgICAgIlRoZSBUZXhhcyBJbnN0cnVtZW50cyBUTVMzMjBDNTV4IERTUCBmYW1pbHkiKSAg
ICAgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfRU0oRU1fTU1EU1BfUExVUywgICAgICAg
MTYwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAiU1RNaWNyb2Vs
ZWN0cm9uaWNzIDY0Yml0IFZMSVcgRGF0YSBTaWduYWwgUHJvY2Vzc29yIikgICAgICAgICAgXAo+
ICtfRUxGX0RFRklORV9FTShFTV9DWVBSRVNTX004QywgICAgICAxNjEsICJDeXByZXNzIE04QyBt
aWNyb3Byb2Nlc3NvciIpIFwKPiArX0VMRl9ERUZJTkVfRU0oRU1fUjMyQywgICAgICAgICAgICAg
MTYyLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAiUmVuZXNhcyBS
MzJDIHNlcmllcyBtaWNyb3Byb2Nlc3NvcnMiKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+
ICtfRUxGX0RFRklORV9FTShFTV9UUklNRURJQSwgICAgICAgICAxNjMsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKPiArICAgICAgICJOWFAgU2VtaWNvbmR1Y3RvcnMgVHJpTWVkaWEg
YXJjaGl0ZWN0dXJlIGZhbWlseSIpICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX0VNKEVN
X1FEU1A2LCAgICAgICAgICAgIDE2NCwgIlFVQUxDT01NIERTUDYgUHJvY2Vzc29yIikgICAgXAo+
ICtfRUxGX0RFRklORV9FTShFTV84MDUxLCAgICAgICAgICAgICAxNjUsICJJbnRlbCA4MDUxIGFu
ZCB2YXJpYW50cyIpICAgIFwKPiArX0VMRl9ERUZJTkVfRU0oRU1fU1RYUDdYLCAgICAgICAgICAg
MTY2LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAiU1RNaWNyb2Vs
ZWN0cm9uaWNzIFNUeFA3eCBmYW1pbHkgb2YgY29uZmlndXJhYmxlIGFuZCBleHRlbnNpYmxlIFJJ
U0MgcHJvY2Vzc29ycyIpIFwKPiArX0VMRl9ERUZJTkVfRU0oRU1fTkRTMzIsICAgICAgICAgICAg
MTY3LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAiQW5kZXMgVGVj
aG5vbG9neSBjb21wYWN0IGNvZGUgc2l6ZSBlbWJlZGRlZCBSSVNDIHByb2Nlc3NvciBmYW1pbHki
KSBcCj4gK19FTEZfREVGSU5FX0VNKEVNX0VDT0cxLCAgICAgICAgICAgIDE2OCwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgIkN5YW4gVGVjaG5vbG9neSBlQ09HMVgg
ZmFtaWx5IikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVf
RU0oRU1fRUNPRzFYLCAgICAgICAgICAgMTY4LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCj4gKyAgICAgICAiQ3lhbiBUZWNobm9sb2d5IGVDT0cxWCBmYW1pbHkiKSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9FTShFTV9NQVhRMzAsICAgICAg
ICAgICAxNjksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICJEYWxs
YXMgU2VtaWNvbmR1Y3RvciBNQVhRMzAgQ29yZSBNaWNyby1jb250cm9sbGVycyIpICAgICAgICAg
ICBcCj4gK19FTEZfREVGSU5FX0VNKEVNX1hJTU8xNiwgICAgICAgICAgIDE3MCwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgIk5ldyBKYXBhbiBSYWRpbyAoTkpSKSAx
Ni1iaXQgRFNQIFByb2Nlc3NvciIpICAgICAgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVf
RU0oRU1fTUFOSUssICAgICAgICAgICAgMTcxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCj4gKyAgICAgICAiTTIwMDAgUmVjb25maWd1cmFibGUgUklTQyBNaWNyb3Byb2Nlc3NvciIp
ICAgICAgICAgICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9FTShFTV9DUkFZTlYyLCAgICAg
ICAgICAxNzIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICJDcmF5
IEluYy4gTlYyIHZlY3RvciBhcmNoaXRlY3R1cmUiKSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCj4gK19FTEZfREVGSU5FX0VNKEVNX1JYLCAgICAgICAgICAgICAgIDE3MywgIlJlbmVzYXMg
UlggZmFtaWx5IikgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9FTShFTV9NRVRBRywgICAgICAg
ICAgICAxNzQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICJJbWFn
aW5hdGlvbiBUZWNobm9sb2dpZXMgTUVUQSBwcm9jZXNzb3IgYXJjaGl0ZWN0dXJlIikgICAgICAg
ICBcCj4gK19FTEZfREVGSU5FX0VNKEVNX01DU1RfRUxCUlVTLCAgICAgIDE3NSwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgIk1DU1QgRWxicnVzIGdlbmVyYWwgcHVy
cG9zZSBoYXJkd2FyZSBhcmNoaXRlY3R1cmUiKSAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVf
RU0oRU1fRUNPRzE2LCAgICAgICAgICAgMTc2LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCj4gKyAgICAgICAiQ3lhbiBUZWNobm9sb2d5IGVDT0cxNiBmYW1pbHkiKSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9FTShFTV9DUjE2LCAgICAgICAg
ICAgICAxNzcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICJOYXRp
b25hbCBTZW1pY29uZHVjdG9yIENvbXBhY3RSSVNDIENSMTYgMTYtYml0IG1pY3JvcHJvY2Vzc29y
IikgXAo+ICtfRUxGX0RFRklORV9FTShFTV9FVFBVLCAgICAgICAgICAgICAxNzgsICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICJGcmVlc2NhbGUgRXh0ZW5kZWQgVGlt
ZSBQcm9jZXNzaW5nIFVuaXQiKSAgICAgICAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5F
X0VNKEVNX1NMRTlYLCAgICAgICAgICAgIDE3OSwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAo+ICsgICAgICAgIkluZmluZW9uIFRlY2hub2xvZ2llcyBTTEU5WCBjb3JlIikgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfRU0oRU1fQUFSQ0g2NCwgICAg
ICAgICAgMTgzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAiQUFy
Y2g2NCAoNjQtYml0IEFSTSkiKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAo+ICtfRUxGX0RFRklORV9FTShFTV9BVlIzMiwgICAgICAgICAgICAxODUsICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICJBdG1lbCBDb3Jwb3JhdGlvbiAzMi1i
aXQgbWljcm9wcm9jZXNzb3IgZmFtaWx5IikgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5F
X0VNKEVNX1NUTTgsICAgICAgICAgICAgIDE4NiwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAo+ICsgICAgICAgIlNUTWljcm9lbGV0cm9uaWNzIFNUTTggOC1iaXQgbWljcm9jb250cm9s
bGVyIikgICAgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfRU0oRU1fVElMRTY0LCAgICAg
ICAgICAgMTg3LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAiVGls
ZXJhIFRJTEU2NCBtdWx0aWNvcmUgYXJjaGl0ZWN0dXJlIGZhbWlseSIpICAgICAgICAgICAgICAg
ICAgXAo+ICtfRUxGX0RFRklORV9FTShFTV9USUxFUFJPLCAgICAgICAgICAxODgsICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICJUaWxlcmEgVElMRVBybyBtdWx0aWNv
cmUgYXJjaGl0ZWN0dXJlIGZhbWlseSIpICAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5F
X0VNKEVNX01JQ1JPQkxBWkUsICAgICAgIDE4OSwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAo+ICsgICAgICAgIlhpbGlueCBNaWNyb0JsYXplIDMyLWJpdCBSSVNDIHNvZnQgcHJvY2Vz
c29yIGNvcmUiKSAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfRU0oRU1fQ1VEQSwgICAgICAg
ICAgICAgMTkwLCAiTlZJRElBIENVREEgYXJjaGl0ZWN0dXJlIikgICBcCj4gK19FTEZfREVGSU5F
X0VNKEVNX1RJTEVHWCwgICAgICAgICAgIDE5MSwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAo+ICsgICAgICAgIlRpbGVyYSBUSUxFLUd4IG11bHRpY29yZSBhcmNoaXRlY3R1cmUgZmFt
aWx5IikgICAgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfRU0oRU1fQ0xPVURTSElFTEQs
ICAgICAgMTkyLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAiQ2xv
dWRTaGllbGQgYXJjaGl0ZWN0dXJlIGZhbWlseSIpICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAo+ICtfRUxGX0RFRklORV9FTShFTV9DT1JFQV8xU1QsICAgICAgICAxOTMsICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICJLSVBPLUtBSVNUIENvcmUtQSAxc3Qg
Z2VuZXJhdGlvbiBwcm9jZXNzb3IgZmFtaWx5IikgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5F
X0VNKEVNX0NPUkVBXzJORCwgICAgICAgIDE5NCwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAo+ICsgICAgICAgIktJUE8tS0FJU1QgQ29yZS1BIDJuZCBnZW5lcmF0aW9uIHByb2Nlc3Nv
ciBmYW1pbHkiKSAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfRU0oRU1fQVJDX0NPTVBBQ1Qy
LCAgICAgMTk1LCAiU3lub3BzeXMgQVJDb21wYWN0IFYyIikgICAgICBcCj4gK19FTEZfREVGSU5F
X0VNKEVNX09QRU44LCAgICAgICAgICAgIDE5NiwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAo+ICsgICAgICAgIk9wZW44IDgtYml0IFJJU0Mgc29mdCBwcm9jZXNzb3IgY29yZSIpICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfRU0oRU1fUkw3OCwgICAgICAg
ICAgICAgMTk3LCAiUmVuZXNhcyBSTDc4IGZhbWlseSIpICAgICAgICAgICAgICAgIFwKPiArX0VM
Rl9ERUZJTkVfRU0oRU1fVklERU9DT1JFNSwgICAgICAgMTk4LCAiQnJvYWRjb20gVmlkZW9Db3Jl
IFYgcHJvY2Vzc29yIikgXAo+ICtfRUxGX0RFRklORV9FTShFTV83OEtPUiwgICAgICAgICAgICAx
OTksICJSZW5lc2FzIDc4S09SIGZhbWlseSIpICAgICAgIFwKPiArX0VMRl9ERUZJTkVfRU0oRU1f
NTY4MDBFWCwgICAgICAgICAgMjAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4g
KyAgICAgICAiRnJlZXNjYWxlIDU2ODAwRVggRGlnaXRhbCBTaWduYWwgQ29udHJvbGxlciIpICAg
ICAgICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9FTShFTV9CQTEsICAgICAgICAgICAgICAy
MDEsICJCZXlvbmQgQkExIENQVSBhcmNoaXRlY3R1cmUiKSAgICAgICAgXAo+ICtfRUxGX0RFRklO
RV9FTShFTV9CQTIsICAgICAgICAgICAgICAyMDIsICJCZXlvbmQgQkEyIENQVSBhcmNoaXRlY3R1
cmUiKSAgICAgICAgXAo+ICtfRUxGX0RFRklORV9FTShFTV9YQ09SRSwgICAgICAgICAgICAyMDMs
ICJYTU9TIHhDT1JFIHByb2Nlc3NvciBmYW1pbHkiKSBcCj4gK19FTEZfREVGSU5FX0VNKEVNX01D
SFBfUElDLCAgICAgICAgIDIwNCwgIk1pY3JvY2hpcCA4LWJpdCBQSUMocikgZmFtaWx5IikgXAo+
ICtfRUxGX0RFRklORV9FTShFTV9JTlRFTDIwNSwgICAgICAgICAyMDUsICJSZXNlcnZlZCBieSBJ
bnRlbCIpICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX0VNKEVNX0lOVEVMMjA2LCAgICAgICAg
IDIwNiwgIlJlc2VydmVkIGJ5IEludGVsIikgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfRU0o
RU1fSU5URUwyMDcsICAgICAgICAgMjA3LCAiUmVzZXJ2ZWQgYnkgSW50ZWwiKSAgICAgICAgICAg
XAo+ICtfRUxGX0RFRklORV9FTShFTV9JTlRFTDIwOCwgICAgICAgICAyMDgsICJSZXNlcnZlZCBi
eSBJbnRlbCIpICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX0VNKEVNX0lOVEVMMjA5LCAgICAg
ICAgIDIwOSwgIlJlc2VydmVkIGJ5IEludGVsIikgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVf
RU0oRU1fS00zMiwgICAgICAgICAgICAgMjEwLCAiS00yMTEgS00zMiAzMi1iaXQgcHJvY2Vzc29y
IikgXAo+ICtfRUxGX0RFRklORV9FTShFTV9LTVgzMiwgICAgICAgICAgICAyMTEsICJLTTIxMSBL
TVgzMiAzMi1iaXQgcHJvY2Vzc29yIikgXAo+ICtfRUxGX0RFRklORV9FTShFTV9LTVgxNiwgICAg
ICAgICAgICAyMTIsICJLTTIxMSBLTVgxNiAxNi1iaXQgcHJvY2Vzc29yIikgXAo+ICtfRUxGX0RF
RklORV9FTShFTV9LTVg4LCAgICAgICAgICAgICAyMTMsICJLTTIxMSBLTVg4IDgtYml0IHByb2Nl
c3NvciIpICBcCj4gK19FTEZfREVGSU5FX0VNKEVNX0tWQVJDLCAgICAgICAgICAgIDIxNCwgIktN
MjExIEtNWDMyIEtWQVJDIHByb2Nlc3NvciIpIFwKPiArX0VMRl9ERUZJTkVfRU0oRU1fUklTQ1Ys
ICAgICAgICAgICAgMjQzLCAiUklTQy1WIikKPiArCj4gKyN1bmRlZiBfRUxGX0RFRklORV9FTQo+
ICsjZGVmaW5lICAgICAgICBfRUxGX0RFRklORV9FTShOLCBWLCBERVNDUikgICAgIE4gPSBWICwK
PiArZW51bSB7Cj4gKyAgICAgICBfRUxGX0RFRklORV9FTEZfTUFDSElORVMoKQo+ICsgICAgICAg
RU1fX0xBU1RfXwo+ICt9Owo+ICsKPiArLyogT3RoZXIgc3lub255bXMuICovCj4gKyNkZWZpbmUg
ICAgICAgIEVNX0FNRDY0ICAgICAgICAgICAgICAgIEVNX1g4Nl82NAo+ICsjZGVmaW5lICAgICAg
ICBFTV9BUkNfQTUgICAgICAgICAgICAgICBFTV9BUkNfQ09NUEFDVAo+ICsKPiArLyoKPiArICog
RUxGIGZpbGUgdHlwZXM6IChFVF8qKS4KPiArICovCj4gKyNkZWZpbmUgICAgICAgIF9FTEZfREVG
SU5FX0VMRl9UWVBFUygpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
Cj4gK19FTEZfREVGSU5FX0VUKEVUX05PTkUsICAgMCwgICAgICAgIk5vIGZpbGUgdHlwZSIpICAg
ICAgICAgICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9FVChFVF9SRUwsICAgIDEsICAgICAg
ICJSZWxvY2F0YWJsZSBvYmplY3QiKSAgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfRVQo
RVRfRVhFQywgICAyLCAgICAgICAiRXhlY3V0YWJsZSIpICAgICAgICAgICAgICAgICAgICAgICBc
Cj4gK19FTEZfREVGSU5FX0VUKEVUX0RZTiwgICAgMywgICAgICAgIlNoYXJlZCBvYmplY3QiKSAg
ICAgICAgICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9FVChFVF9DT1JFLCAgIDQsICAgICAg
ICJDb3JlIGZpbGUiKSAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfRVQo
RVRfTE9PUywgICAweEZFMDBVLCAgIkJlZ2luIE9TLXNwZWNpZmljIHJhbmdlIikgICAgICAgICBc
Cj4gK19FTEZfREVGSU5FX0VUKEVUX0hJT1MsICAgMHhGRUZGVSwgICJFbmQgT1Mtc3BlY2lmaWMg
cmFuZ2UiKSAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9FVChFVF9MT1BST0MsIDB4RkYwMFUs
ICAiQmVnaW4gcHJvY2Vzc29yLXNwZWNpZmljIHJhbmdlIikgIFwKPiArX0VMRl9ERUZJTkVfRVQo
RVRfSElQUk9DLCAweEZGRkZVLCAgIkVuZCBwcm9jZXNzb3Itc3BlY2lmaWMgcmFuZ2UiKQo+ICsK
PiArI3VuZGVmIF9FTEZfREVGSU5FX0VUCj4gKyNkZWZpbmUgICAgICAgIF9FTEZfREVGSU5FX0VU
KE4sIFYsIERFU0NSKSAgICAgTiA9IFYgLAo+ICtlbnVtIHsKPiArICAgICAgIF9FTEZfREVGSU5F
X0VMRl9UWVBFUygpCj4gKyAgICAgICBFVF9fTEFTVF9fCj4gK307Cj4gKwo+ICsvKiBFTEYgZmls
ZSBmb3JtYXQgdmVyc2lvbiBudW1iZXJzLiAqLwo+ICsjZGVmaW5lICAgICAgICBFVl9OT05FICAg
ICAgICAgMAo+ICsjZGVmaW5lICAgICAgICBFVl9DVVJSRU5UICAgICAgMQo+ICsKPiArLyoKPiAr
ICogRmxhZ3MgZm9yIHNlY3Rpb24gZ3JvdXBzLgo+ICsgKi8KPiArI2RlZmluZSAgICAgICAgR1JQ
X0NPTURBVCAgICAgIDB4MSAgICAgICAgICAgICAvKiBDT01EQVQgc2VtYW50aWNzICovCj4gKyNk
ZWZpbmUgICAgICAgIEdSUF9NQVNLT1MgICAgICAweDBmZjAwMDAwICAgICAgLyogT1Mtc3BlY2lm
aWMgZmxhZ3MgKi8KPiArI2RlZmluZSAgICAgICAgR1JQX01BU0tQUk9DICAgIDB4ZjAwMDAwMDAg
ICAgICAvKiBwcm9jZXNzb3Itc3BlY2lmaWMgZmxhZ3MgKi8KPiArCj4gKy8qCj4gKyAqIEZsYWdz
IC8gbWFzayBmb3IgLmdudS52ZXJzeW0gc2VjdGlvbnMuCj4gKyAqLwo+ICsjZGVmaW5lICAgICAg
ICBWRVJTWU1fVkVSU0lPTiAgMHg3ZmZmCj4gKyNkZWZpbmUgICAgICAgIFZFUlNZTV9ISURERU4g
ICAweDgwMDAKPiArCj4gKy8qCj4gKyAqIEZsYWdzIHVzZWQgYnkgcHJvZ3JhbSBoZWFkZXIgdGFi
bGUgZW50cmllcy4KPiArICovCj4gKwo+ICsjZGVmaW5lICAgICAgICBfRUxGX0RFRklORV9QSERS
X0ZMQUdTKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICtfRUxG
X0RFRklORV9QRihQRl9YLCAgICAgICAgICAgICAgICAweDEsICJFeGVjdXRlIikgICAgICAgICAg
ICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfUEYoUEZfVywgICAgICAgICAgICAgICAgMHgyLCAi
V3JpdGUiKSAgICAgICAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX1BGKFBGX1IsICAg
ICAgICAgICAgICAgIDB4NCwgIlJlYWQiKSAgICAgICAgICAgICAgICAgICAgICAgXAo+ICtfRUxG
X0RFRklORV9QRihQRl9NQVNLT1MsICAgICAgICAgICAweDBmZjAwMDAwLCAiT1Mtc3BlY2lmaWMg
ZmxhZ3MiKSAgIFwKPiArX0VMRl9ERUZJTkVfUEYoUEZfTUFTS1BST0MsICAgICAgICAgMHhmMDAw
MDAwMCwgIlByb2Nlc3Nvci1zcGVjaWZpYyBmbGFncyIpIFwKPiArX0VMRl9ERUZJTkVfUEYoUEZf
QVJNX1NCLCAgICAgICAgICAgMHgxMDAwMDAwMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKPiArICAgICAgICJzZWdtZW50IGNvbnRhaW5zIHRoZSBsb2NhdGlvbiBhZGRyZXNzZWQg
YnkgdGhlIHN0YXRpYyBiYXNlIikgICBcCj4gK19FTEZfREVGSU5FX1BGKFBGX0FSTV9QSSwgICAg
ICAgICAgIDB4MjAwMDAwMDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAg
ICAgICAic2VnbWVudCBpcyBwb3NpdGlvbi1pbmRlcGVuZGVudCIpICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9QRihQRl9BUk1fQUJTLCAgICAgICAgICAweDQw
MDAwMDAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgInNlZ21l
bnQgbXVzdCBiZSBsb2FkZWQgYXQgaXRzIGJhc2UgYWRkcmVzcyIpCj4gKwo+ICsjdW5kZWYgX0VM
Rl9ERUZJTkVfUEYKPiArI2RlZmluZSAgICAgICAgX0VMRl9ERUZJTkVfUEYoTiwgViwgREVTQ1Ip
ICAgICBOID0gViAsCj4gK2VudW0gewo+ICsgICAgICAgX0VMRl9ERUZJTkVfUEhEUl9GTEFHUygp
Cj4gKyAgICAgICBQRl9fTEFTVF9fCj4gK307Cj4gKwo+ICsvKgo+ICsgKiBUeXBlcyBvZiBwcm9n
cmFtIGhlYWRlciB0YWJsZSBlbnRyaWVzLgo+ICsgKi8KPiArCj4gKyNkZWZpbmUgICAgICAgIF9F
TEZfREVGSU5FX1BIRFJfVFlQRVMoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+
ICtfRUxGX0RFRklORV9QVChQVF9OVUxMLCAgICAgICAgICAgICAwLCAiaWdub3JlZCBlbnRyeSIp
ICAgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfUFQoUFRfTE9BRCwgICAgICAgICAgICAg
MSwgImxvYWRhYmxlIHNlZ21lbnQiKSAgICAgXAo+ICtfRUxGX0RFRklORV9QVChQVF9EWU5BTUlD
LCAgICAgICAgICAyLCAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAiY29udGFp
bnMgZHluYW1pYyBsaW5raW5nIGluZm9ybWF0aW9uIikgICAgICAgICAgICAgICAgIFwKPiArX0VM
Rl9ERUZJTkVfUFQoUFRfSU5URVJQLCAgICAgICAgICAgMywgIm5hbWVzIGFuIGludGVycHJldGVy
IikgXAo+ICtfRUxGX0RFRklORV9QVChQVF9OT1RFLCAgICAgICAgICAgICA0LCAiYXV4aWxpYXJ5
IGluZm9ybWF0aW9uIikgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfUFQoUFRfU0hMSUIsICAgICAg
ICAgICAgNSwgInJlc2VydmVkIikgICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9QVChQVF9Q
SERSLCAgICAgICAgICAgICA2LCAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAi
ZGVzY3JpYmVzIHRoZSBwcm9ncmFtIGhlYWRlciBpdHNlbGYiKSAgICAgICAgICAgICAgICAgIFwK
PiArX0VMRl9ERUZJTkVfUFQoUFRfVExTLCAgICAgICAgICAgICAgNywgInRocmVhZCBsb2NhbCBz
dG9yYWdlIikgXAo+ICtfRUxGX0RFRklORV9QVChQVF9MT09TLCAgICAgICAgICAgICAweDYwMDAw
MDAwVUwsICAgICAgICAgICAgICBcCj4gKyAgICAgICAic3RhcnQgb2YgT1Mtc3BlY2lmaWMgcmFu
Z2UiKSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfUFQoUFRfU1VO
V19VTldJTkQsICAgICAgMHg2NDY0RTU1MFVMLCAgICAgICAgICAgICAgXAo+ICsgICAgICAgIlNv
bGFyaXMvYW1kNjQgc3RhY2sgdW53aW5kIHRhYmxlcyIpICAgICAgICAgICAgICAgICAgICBcCj4g
K19FTEZfREVGSU5FX1BUKFBUX0dOVV9FSF9GUkFNRSwgICAgIDB4NjQ3NEU1NTBVTCwgICAgICAg
ICAgICAgIFwKPiArICAgICAgICJHQ0MgZ2VuZXJhdGVkIC5laF9mcmFtZV9oZHIgc2VnbWVudCIp
ICAgICAgICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9QVChQVF9HTlVfU1RBQ0ssICAgICAg
IDB4NjQ3NEU1NTFVTCwgICAgICAgICAgICAgICBcCj4gKyAgICAgICAiU3RhY2sgZmxhZ3MiKSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVf
UFQoUFRfR05VX1JFTFJPLCAgICAgICAweDY0NzRFNTUyVUwsICAgICAgICAgICAgICAgXAo+ICsg
ICAgICAgIlNlZ21lbnQgYmVjb21lcyByZWFkLW9ubHkgYWZ0ZXIgcmVsb2NhdGlvbiIpICAgICAg
ICAgICBcCj4gK19FTEZfREVGSU5FX1BUKFBUX1NVTldCU1MsICAgICAgICAgIDB4NkZGRkZGRkFV
TCwgICAgICAgICAgICAgIFwKPiArICAgICAgICJBIFNvbGFyaXMgLlNVTldfYnNzIHNlY3Rpb24i
KSAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9QVChQVF9TVU5XU1RB
Q0ssICAgICAgICAweDZGRkZGRkZCVUwsICAgICAgICAgICAgICBcCj4gKyAgICAgICAiQSBTb2xh
cmlzIHByb2Nlc3Mgc3RhY2siKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArX0VM
Rl9ERUZJTkVfUFQoUFRfU1VOV0RUUkFDRSwgICAgICAgMHg2RkZGRkZGQ1VMLCAgICAgICAgICAg
ICAgXAo+ICsgICAgICAgIlVzZWQgYnkgZHRyYWNlKDEpIikgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX1BUKFBUX1NVTldDQVAsICAgICAgICAgIDB4
NkZGRkZGRkRVTCwgICAgICAgICAgICAgIFwKPiArICAgICAgICJTcGVjaWFsIGhhcmR3YXJlIGNh
cGFiaWxpdHkgcmVxdWlyZW1lbnRzIikgICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9QVChQ
VF9ISU9TLCAgICAgICAgICAgICAweDZGRkZGRkZGVUwsICAgICAgICAgICAgICBcCj4gKyAgICAg
ICAiZW5kIG9mIE9TLXNwZWNpZmljIHJhbmdlIikgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKPiArX0VMRl9ERUZJTkVfUFQoUFRfTE9QUk9DLCAgICAgICAgICAgMHg3MDAwMDAwMFVMLCAg
ICAgICAgICAgICAgXAo+ICsgICAgICAgInN0YXJ0IG9mIHByb2Nlc3Nvci1zcGVjaWZpYyByYW5n
ZSIpICAgICAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX1BUKFBUX0FSTV9BUkNIRVhU
LCAgICAgIDB4NzAwMDAwMDBVTCwgICAgICAgICAgICAgIFwKPiArICAgICAgICJwbGF0Zm9ybSBh
cmNoaXRlY3R1cmUgY29tcGF0aWJpbGl0eSBpbmZvcm1hdGlvbiIpICAgICAgXAo+ICtfRUxGX0RF
RklORV9QVChQVF9BUk1fRVhJRFgsICAgICAgICAweDcwMDAwMDAxVUwsICAgICAgICAgICAgICBc
Cj4gKyAgICAgICAiZXhjZXB0aW9uIHVud2luZCB0YWJsZXMiKSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfUFQoUFRfTUlQU19SRUdJTkZPLCAgICAgMHg3MDAw
MDAwMFVMLCAgICAgICAgICAgICAgXAo+ICsgICAgICAgInJlZ2lzdGVyIHVzYWdlIGluZm9ybWF0
aW9uIikgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX1BUKFBUX01J
UFNfUlRQUk9DLCAgICAgIDB4NzAwMDAwMDFVTCwgICAgICAgICAgICAgIFwKPiArICAgICAgICJy
dW50aW1lIHByb2NlZHVyZSB0YWJsZSIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+
ICtfRUxGX0RFRklORV9QVChQVF9NSVBTX09QVElPTlMsICAgICAweDcwMDAwMDAyVUwsICAgICAg
ICAgICAgICBcCj4gKyAgICAgICAib3B0aW9ucyBzZWdtZW50IikgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfUFQoUFRfSElQUk9DLCAgICAgICAg
ICAgMHg3RkZGRkZGRlVMLCAgICAgICAgICAgICAgXAo+ICsgICAgICAgImVuZCBvZiBwcm9jZXNz
b3Itc3BlY2lmaWMgcmFuZ2UiKQo+ICsKPiArI3VuZGVmIF9FTEZfREVGSU5FX1BUCj4gKyNkZWZp
bmUgICAgICAgIF9FTEZfREVGSU5FX1BUKE4sIFYsIERFU0NSKSAgICAgTiA9IFYgLAo+ICtlbnVt
IHsKPiArICAgICAgIF9FTEZfREVGSU5FX1BIRFJfVFlQRVMoKQo+ICsgICAgICAgUFRfX0xBU1Rf
XyA9IFBUX0hJUFJPQwo+ICt9Owo+ICsKPiArLyogc3lub255bXMuICovCj4gKyNkZWZpbmUgICAg
ICAgIFBUX0FSTV9VTldJTkQgICBQVF9BUk1fRVhJRFgKPiArI2RlZmluZSAgICAgICAgUFRfSElT
VU5XICAgICAgIFBUX0hJT1MKPiArI2RlZmluZSAgICAgICAgUFRfTE9TVU5XICAgICAgIFBUX1NV
TldCU1MKPiArCj4gKy8qCj4gKyAqIFNlY3Rpb24gZmxhZ3MuCj4gKyAqLwo+ICsKPiArI2RlZmlu
ZSAgICAgICAgX0VMRl9ERUZJTkVfU0VDVElPTl9GTEFHUygpICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfU0hGKFNIRl9XUklURSwgICAgICAgICAg
IDB4MSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAid3JpdGFibGUg
ZHVyaW5nIHByb2dyYW0gZXhlY3V0aW9uIikgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+
ICtfRUxGX0RFRklORV9TSEYoU0hGX0FMTE9DLCAgICAgICAgICAgMHgyLCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKPiArICAgICAgICJvY2N1cGllcyBtZW1vcnkgZHVyaW5nIHByb2dy
YW0gZXhlY3V0aW9uIikgICAgICAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX1NIRihT
SEZfRVhFQ0lOU1RSLCAgICAgICAweDQsICJleGVjdXRhYmxlIGluc3RydWN0aW9ucyIpICAgXAo+
ICtfRUxGX0RFRklORV9TSEYoU0hGX01FUkdFLCAgICAgICAgICAgMHgxMCwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKPiArICAgICAgICJtYXkgYmUgbWVyZ2VkIHRvIHByZXZlbnQgZHVw
bGljYXRpb24iKSAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX1NIRihT
SEZfU1RSSU5HUywgICAgICAgICAweDIwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+
ICsgICAgICAgIk5VTC10ZXJtaW5hdGVkIGNoYXJhY3RlciBzdHJpbmdzIikgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfU0hGKFNIRl9JTkZPX0xJTkssICAgICAg
IDB4NDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAidGhlIHNoX2lu
Zm8gZmllbGQgaG9sZHMgYSBsaW5rIikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+
ICtfRUxGX0RFRklORV9TSEYoU0hGX0xJTktfT1JERVIsICAgICAgMHg4MCwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKPiArICAgICAgICJzcGVjaWFsIG9yZGVyaW5nIHJlcXVpcmVtZW50
cyBkdXJpbmcgbGlua2luZyIpICAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX1NIRihT
SEZfT1NfTk9OQ09ORk9STUlORywgMHgxMDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+
ICsgICAgICAgInJlcXVpcmVzIE9TLXNwZWNpZmljIHByb2Nlc3NpbmcgZHVyaW5nIGxpbmtpbmci
KSAgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfU0hGKFNIRl9HUk9VUCwgICAgICAgICAg
IDB4MjAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAibWVtYmVyIG9m
IGEgc2VjdGlvbiBncm91cCIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+
ICtfRUxGX0RFRklORV9TSEYoU0hGX1RMUywgICAgICAgICAgICAgMHg0MDAsICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKPiArICAgICAgICJob2xkcyB0aHJlYWQtbG9jYWwgc3RvcmFnZSIp
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX1NIRihT
SEZfQ09NUFJFU1NFRCwgICAgICAweDgwMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+
ICsgICAgICAgImhvbGRzIGNvbXByZXNzZWQgZGF0YSIpICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfU0hGKFNIRl9NQVNLT1MsICAgICAgICAg
IDB4MEZGMDAwMDBVTCwgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAiYml0cyByZXNl
cnZlZCBmb3IgT1Mtc3BlY2lmaWMgc2VtYW50aWNzIikgICAgICAgICAgICAgICAgICAgICAgXAo+
ICtfRUxGX0RFRklORV9TSEYoU0hGX0FNRDY0X0xBUkdFLCAgICAgMHgxMDAwMDAwMFVMLCAgICAg
ICAgICAgICAgICAgICAgIFwKPiArICAgICAgICJzZWN0aW9uIHVzZXMgbGFyZ2UgY29kZSBtb2Rl
bCIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX1NIRihT
SEZfRU5UUllTRUNULCAgICAgICAweDEwMDAwMDAwVUwsICAgICAgICAgICAgICAgICAgICAgXAo+
ICsgICAgICAgInNlY3Rpb24gY29udGFpbnMgYW4gZW50cnkgcG9pbnQgKEFSTSkiKSAgICAgICAg
ICAgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfU0hGKFNIRl9DT01ERUYsICAgICAgICAg
IDB4ODAwMDAwMDBVTCwgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAic2VjdGlvbiBt
YXkgYmUgbXVsdGlwbHkgZGVmaW5lZCBpbiBpbnB1dCB0byBsaW5rIHN0ZXAgKEFSTSkiKSAgXAo+
ICtfRUxGX0RFRklORV9TSEYoU0hGX01JUFNfR1BSRUwsICAgICAgMHgxMDAwMDAwMFVMLCAgICAg
ICAgICAgICAgICAgICAgIFwKPiArICAgICAgICJzZWN0aW9uIG11c3QgYmUgcGFydCBvZiBnbG9i
YWwgZGF0YSBhcmVhIikgICAgICAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX1NIRihT
SEZfTUlQU19NRVJHRSwgICAgICAweDIwMDAwMDAwVUwsICAgICAgICAgICAgICAgICAgICAgXAo+
ICsgICAgICAgInNlY3Rpb24gZGF0YSBzaG91bGQgYmUgbWVyZ2VkIHRvIGVsaW1pbmF0ZSBkdXBs
aWNhdGlvbiIpICAgICAgIFwKPiArX0VMRl9ERUZJTkVfU0hGKFNIRl9NSVBTX0FERFIsICAgICAg
IDB4NDAwMDAwMDBVTCwgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAic2VjdGlvbiBk
YXRhIGlzIGFkZHJlc3NlZCBieSBkZWZhdWx0IikgICAgICAgICAgICAgICAgICAgICAgICAgXAo+
ICtfRUxGX0RFRklORV9TSEYoU0hGX01JUFNfU1RSSU5HLCAgICAgMHg4MDAwMDAwMFVMLCAgICAg
ICAgICAgICAgICAgICAgIFwKPiArICAgICAgICJzZWN0aW9uIGRhdGEgaXMgc3RyaW5nIGRhdGEg
YnkgZGVmYXVsdCIpICAgICAgICAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX1NIRihT
SEZfTUlQU19OT1NUUklQLCAgICAweDA4MDAwMDAwVUwsICAgICAgICAgICAgICAgICAgICAgXAo+
ICsgICAgICAgInNlY3Rpb24gZGF0YSBtYXkgbm90IGJlIHN0cmlwcGVkIikgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfU0hGKFNIRl9NSVBTX0xPQ0FMLCAgICAg
IDB4MDQwMDAwMDBVTCwgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAic2VjdGlvbiBk
YXRhIGxvY2FsIHRvIHByb2Nlc3MiKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+
ICtfRUxGX0RFRklORV9TSEYoU0hGX01JUFNfTkFNRVMsICAgICAgMHgwMjAwMDAwMFVMLCAgICAg
ICAgICAgICAgICAgICAgIFwKPiArICAgICAgICJsaW5rZXIgbXVzdCBnZW5lcmF0ZSBpbXBsaWNp
dCBoaWRkZW4gd2VhayBuYW1lcyIpICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX1NIRihT
SEZfTUlQU19OT0RVUEUsICAgICAweDAxMDAwMDAwVUwsICAgICAgICAgICAgICAgICAgICAgXAo+
ICsgICAgICAgImxpbmtlciBtdXN0IHJldGFpbiBvbmx5IG9uZSBjb3B5IikgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfU0hGKFNIRl9PUkRFUkVELCAgICAgICAg
IDB4NDAwMDAwMDBVTCwgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAic2VjdGlvbiBp
cyBvcmRlcmVkIHdpdGggcmVzcGVjdCB0byBvdGhlciBzZWN0aW9ucyIpICAgICAgICAgICAgXAo+
ICtfRUxGX0RFRklORV9TSEYoU0hGX0VYQ0xVREUsICAgICAgICAweDgwMDAwMDAwVUwsICAgICAg
ICAgICAgICAgICAgICAgIFwKPiArICAgICAgICJzZWN0aW9uIGlzIGV4Y2x1ZGVkIGZyb20gZXhl
Y3V0YWJsZXMgYW5kIHNoYXJlZCBvYmplY3RzIikgICAgICBcCj4gK19FTEZfREVGSU5FX1NIRihT
SEZfTUFTS1BST0MsICAgICAgICAweEYwMDAwMDAwVUwsICAgICAgICAgICAgICAgICAgICAgXAo+
ICsgICAgICAgImJpdHMgcmVzZXJ2ZWQgZm9yIHByb2Nlc3Nvci1zcGVjaWZpYyBzZW1hbnRpY3Mi
KQo+ICsKPiArI3VuZGVmIF9FTEZfREVGSU5FX1NIRgo+ICsjZGVmaW5lICAgICAgICBfRUxGX0RF
RklORV9TSEYoTiwgViwgREVTQ1IpICAgIE4gPSBWICwKPiArZW51bSB7Cj4gKyAgICAgICBfRUxG
X0RFRklORV9TRUNUSU9OX0ZMQUdTKCkKPiArICAgICAgIFNIRl9fTEFTVF9fCj4gK307Cj4gKwo+
ICsvKgo+ICsgKiBTcGVjaWFsIHNlY3Rpb24gaW5kaWNlcy4KPiArICovCj4gKyNkZWZpbmUgX0VM
Rl9ERUZJTkVfU0VDVElPTl9JTkRJQ0VTKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAo+ICtfRUxGX0RFRklORV9TSE4oU0hOX1VOREVGLCAgICAgMCwgICAgICAgInVuZGVmaW5l
ZCBzZWN0aW9uIikgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfU0hOKFNITl9MT1JFU0VSVkUs
ICAgICAgICAgMHhGRjAwVSwgInN0YXJ0IG9mIHJlc2VydmVkIGFyZWEiKSAgICAgIFwKPiArX0VM
Rl9ERUZJTkVfU0hOKFNITl9MT1BST0MsICAgIDB4RkYwMFUsICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCj4gKyAgICAgICAic3RhcnQgb2YgcHJvY2Vzc29yLXNwZWNpZmljIHJhbmdl
IikgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9TSE4oU0hOX0JF
Rk9SRSwgICAgMHhGRjAwVSwgInVzZWQgZm9yIHNlY3Rpb24gb3JkZXJpbmciKSAgIFwKPiArX0VM
Rl9ERUZJTkVfU0hOKFNITl9BRlRFUiwgICAgIDB4RkYwMVUsICJ1c2VkIGZvciBzZWN0aW9uIG9y
ZGVyaW5nIikgICBcCj4gK19FTEZfREVGSU5FX1NITihTSE5fQU1ENjRfTENPTU1PTiwgMHhGRjAy
VSwgImxhcmdlIGNvbW1vbiBibG9jayBsYWJlbCIpIFwKPiArX0VMRl9ERUZJTkVfU0hOKFNITl9N
SVBTX0FDT01NT04sIDB4RkYwMFUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAg
ICAgICAiYWxsb2NhdGVkIGNvbW1vbiBzeW1ib2xzIGluIGEgRFNPIikgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9TSE4oU0hOX01JUFNfVEVYVCwgMHhGRjAxVSwg
IlJlc2VydmVkIChvYnNvbGV0ZSkiKSAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfU0hOKFNITl9N
SVBTX0RBVEEsIDB4RkYwMlUsICJSZXNlcnZlZCAob2Jzb2xldGUpIikgICAgICAgICBcCj4gK19F
TEZfREVGSU5FX1NITihTSE5fTUlQU19TQ09NTU9OLCAweEZGMDNVLCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAo+ICsgICAgICAgImdwLWFkZHJlc3NhYmxlIGNvbW1vbiBzeW1ib2xzIikg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfU0hOKFNITl9N
SVBTX1NVTkRFRklORUQsIDB4RkYwNFUsICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAg
ICAgICAiZ3AtYWRkcmVzc2FibGUgdW5kZWZpbmVkIHN5bWJvbHMiKSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9TSE4oU0hOX01JUFNfTENPTU1PTiwgMHhGRjA1
VSwgImxvY2FsIGNvbW1vbiBzeW1ib2xzIikgICAgIFwKPiArX0VMRl9ERUZJTkVfU0hOKFNITl9N
SVBTX0xVTkRFRklORUQsIDB4RkYwNlUsICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAg
ICAgICAibG9jYWwgdW5kZWZpbmVkIHN5bWJvbHMiKSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9TSE4oU0hOX0hJUFJPQywgICAgMHhGRjFGVSwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICJlbmQgb2YgcHJvY2Vz
c29yLXNwZWNpZmljIHJhbmdlIikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gK19F
TEZfREVGSU5FX1NITihTSE5fTE9PUywgICAgICAweEZGMjBVLCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAo+ICsgICAgICAgInN0YXJ0IG9mIE9TLXNwZWNpZmljIHJhbmdlIikgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfU0hOKFNITl9T
VU5XX0lHTk9SRSwgMHhGRjNGVSwgInVzZWQgYnkgZHRyYWNlIikgICAgICAgICAgICBcCj4gK19F
TEZfREVGSU5FX1NITihTSE5fSElPUywgICAgICAweEZGM0ZVLCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAo+ICsgICAgICAgImVuZCBvZiBPUy1zcGVjaWZpYyByYW5nZSIpICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfU0hOKFNITl9B
QlMsICAgICAgIDB4RkZGMVUsICJhYnNvbHV0ZSByZWZlcmVuY2VzIikgICAgICAgICBcCj4gK19F
TEZfREVGSU5FX1NITihTSE5fQ09NTU9OLCAgICAweEZGRjJVLCAicmVmZXJlbmNlcyB0byBDT01N
T04gYXJlYXMiKSAgXAo+ICtfRUxGX0RFRklORV9TSE4oU0hOX1hJTkRFWCwgICAgMHhGRkZGVSwg
ImV4dGVuZGVkIGluZGV4IikgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfU0hOKFNITl9I
SVJFU0VSVkUsICAgICAgICAgMHhGRkZGVSwgImVuZCBvZiByZXNlcnZlZCBhcmVhIikKPiArCj4g
KyN1bmRlZiBfRUxGX0RFRklORV9TSE4KPiArI2RlZmluZSAgICAgICAgX0VMRl9ERUZJTkVfU0hO
KE4sIFYsIERFU0NSKSAgICBOID0gViAsCj4gK2VudW0gewo+ICsgICAgICAgX0VMRl9ERUZJTkVf
U0VDVElPTl9JTkRJQ0VTKCkKPiArICAgICAgIFNITl9fTEFTVF9fCj4gK307Cj4gKwo+ICsvKgo+
ICsgKiBTZWN0aW9uIHR5cGVzLgo+ICsgKi8KPiArCj4gKyNkZWZpbmUgICAgICAgIF9FTEZfREVG
SU5FX1NFQ1RJT05fVFlQRVMoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
Cj4gK19FTEZfREVGSU5FX1NIVChTSFRfTlVMTCwgICAgICAgICAgICAwLCAiaW5hY3RpdmUgaGVh
ZGVyIikgICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9TSFQoU0hUX1BST0dCSVRTLCAgICAg
ICAgMSwgInByb2dyYW0gZGVmaW5lZCBpbmZvcm1hdGlvbiIpIFwKPiArX0VMRl9ERUZJTkVfU0hU
KFNIVF9TWU1UQUIsICAgICAgICAgIDIsICJzeW1ib2wgdGFibGUiKSAgICAgICAgICAgICAgICAg
ICAgICAgIFwKPiArX0VMRl9ERUZJTkVfU0hUKFNIVF9TVFJUQUIsICAgICAgICAgIDMsICJzdHJp
bmcgdGFibGUiKSAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfU0hUKFNI
VF9SRUxBLCAgICAgICAgICAgIDQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKPiArICAgICAgICJyZWxvY2F0aW9uIGVudHJpZXMgd2l0aCBhZGRlbmRzIikgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX1NIVChTSFRfSEFTSCwgICAg
ICAgICAgICA1LCAic3ltYm9sIGhhc2ggdGFibGUiKSAgICAgICAgICAgXAo+ICtfRUxGX0RFRklO
RV9TSFQoU0hUX0RZTkFNSUMsICAgICAgICAgNiwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAo+ICsgICAgICAgImluZm9ybWF0aW9uIGZvciBkeW5hbWljIGxpbmtpbmci
KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfU0hUKFNIVF9O
T1RFLCAgICAgICAgICAgIDcsICJhZGRpdGlvbmFsIG5vdGVzIikgICAgICAgICAgICBcCj4gK19F
TEZfREVGSU5FX1NIVChTSFRfTk9CSVRTLCAgICAgICAgICA4LCAic2VjdGlvbiBvY2N1cHlpbmcg
bm8gc3BhY2UiKSAgXAo+ICtfRUxGX0RFRklORV9TSFQoU0hUX1JFTCwgICAgICAgICAgICAgOSwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgInJlbG9j
YXRpb24gZW50cmllcyB3aXRob3V0IGFkZGVuZHMiKSAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKPiArX0VMRl9ERUZJTkVfU0hUKFNIVF9TSExJQiwgICAgICAgICAgIDEwLCAicmVzZXJ2ZWQi
KSAgICAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX1NIVChTSFRfRFlOU1lNLCAgICAg
ICAgICAxMSwgInN5bWJvbCB0YWJsZSIpICAgICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9T
SFQoU0hUX0lOSVRfQVJSQVksICAgICAgMTQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKPiArICAgICAgICJwb2ludGVycyB0byBpbml0aWFsaXphdGlvbiBmdW5jdGlvbnMiKSAgICAg
ICAgICAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX1NIVChTSFRfRklOSV9BUlJBWSwg
ICAgICAxNSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgInBvaW50
ZXJzIHRvIHRlcm1pbmF0aW9uIGZ1bmN0aW9ucyIpICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKPiArX0VMRl9ERUZJTkVfU0hUKFNIVF9QUkVJTklUX0FSUkFZLCAgIDE2LCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAicG9pbnRlcnMgdG8gZnVuY3Rpb25zIGNh
bGxlZCBiZWZvcmUgaW5pdGlhbGl6YXRpb24iKSAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9T
SFQoU0hUX0dST1VQLCAgICAgICAgICAgMTcsICJkZWZpbmVzIGEgc2VjdGlvbiBncm91cCIpICAg
IFwKPiArX0VMRl9ERUZJTkVfU0hUKFNIVF9TWU1UQUJfU0hORFgsICAgIDE4LCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAidXNlZCBmb3IgZXh0ZW5kZWQgc2VjdGlv
biBudW1iZXJpbmciKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9T
SFQoU0hUX0xPT1MsICAgICAgICAgICAgMHg2MDAwMDAwMFVMLCAgICAgICAgICAgICAgICAgICAg
IFwKPiArICAgICAgICJzdGFydCBvZiBPUy1zcGVjaWZpYyByYW5nZSIpICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX1NIVChTSFRfU1VOV19kb2YsICAg
ICAgIDB4NkZGRkZGRjRVTCwgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgInVzZWQg
YnkgZHRyYWNlIikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKPiArX0VMRl9ERUZJTkVfU0hUKFNIVF9TVU5XX2NhcCwgICAgICAgMHg2RkZGRkZGNVVMLCAg
ICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAiY2FwYWJpbGl0eSByZXF1aXJlbWVudHMi
KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9T
SFQoU0hUX0dOVV9BVFRSSUJVVEVTLCAgMHg2RkZGRkZGNVVMLCAgICAgICAgICAgICAgICAgICAg
IFwKPiArICAgICAgICJvYmplY3QgYXR0cmlidXRlcyIpICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX1NIVChTSFRfU1VOV19TSUdOQVRV
UkUsICAweDZGRkZGRkY2VUwsICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgIm1vZHVs
ZSB2ZXJpZmljYXRpb24gc2lnbmF0dXJlIikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKPiArX0VMRl9ERUZJTkVfU0hUKFNIVF9HTlVfSEFTSCwgICAgICAgMHg2RkZGRkZGNlVMLCAg
ICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAiR05VIEhhc2ggc2VjdGlvbnMiKSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9T
SFQoU0hUX0dOVV9MSUJMSVNULCAgICAgMHg2RkZGRkZGN1VMLCAgICAgICAgICAgICAgICAgICAg
IFwKPiArICAgICAgICJMaXN0IG9mIGxpYnJhcmllcyB0byBiZSBwcmVsaW5rZWQiKSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX1NIVChTSFRfU1VOV19BTk5PVEFU
RSwgICAweDZGRkZGRkY3VUwsICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgInNwZWNp
YWwgc2VjdGlvbiB3aGVyZSB1bnJlc29sdmVkIHJlZmVyZW5jZXMgYXJlIGFsbG93ZWQiKSAgICAg
IFwKPiArX0VMRl9ERUZJTkVfU0hUKFNIVF9TVU5XX0RFQlVHU1RSLCAgIDB4NkZGRkZGRjhVTCwg
ICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAiZGVidWdnaW5nIGluZm9ybWF0aW9uIikg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9T
SFQoU0hUX0NIRUNLU1VNLCAgICAgICAweDZGRkZGRkY4VUwsICAgICAgICAgICAgICAgICAgICAg
IFwKPiArICAgICAgICJjaGVja3N1bSBmb3IgZHluYW1pYyBzaGFyZWQgb2JqZWN0cyIpICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX1NIVChTSFRfU1VOV19ERUJVRywg
ICAgICAweDZGRkZGRkY5VUwsICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgImRlYnVn
Z2luZyBpbmZvcm1hdGlvbiIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKPiArX0VMRl9ERUZJTkVfU0hUKFNIVF9TVU5XX21vdmUsICAgICAgIDB4NkZGRkZGRkFVTCwg
ICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAiaW5mb3JtYXRpb24gdG8gaGFuZGxlIHBh
cnRpYWxseSBpbml0aWFsaXplZCBzeW1ib2xzIikgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9T
SFQoU0hUX1NVTldfQ09NREFULCAgICAgMHg2RkZGRkZGQlVMLCAgICAgICAgICAgICAgICAgICAg
IFwKPiArICAgICAgICJzZWN0aW9uIHN1cHBvcnRpbmcgbWVyZ2luZyBvZiBtdWx0aXBsZSBjb3Bp
ZXMgb2YgZGF0YSIpICAgICAgICBcCj4gK19FTEZfREVGSU5FX1NIVChTSFRfU1VOV19zeW1pbmZv
LCAgICAweDZGRkZGRkZDVUwsICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgImFkZGl0
aW9uYWwgc3ltYm9sIGluZm9ybWF0aW9uIikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKPiArX0VMRl9ERUZJTkVfU0hUKFNIVF9TVU5XX3ZlcmRlZiwgICAgIDB4NkZGRkZGRkRVTCwg
ICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAic3ltYm9sIHZlcnNpb25pbmcgaW5mb3Jt
YXRpb24iKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9T
SFQoU0hUX1NVTldfdmVybmVlZCwgICAgMHg2RkZGRkZGRVVMLCAgICAgICAgICAgICAgICAgICAg
IFwKPiArICAgICAgICJzeW1ib2wgdmVyc2lvbmluZyByZXF1aXJlbWVudHMiKSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX1NIVChTSFRfU1VOV192ZXJzeW0s
ICAgICAweDZGRkZGRkZGVUwsICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgInN5bWJv
bCB2ZXJzaW9uaW5nIHRhYmxlIikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKPiArX0VMRl9ERUZJTkVfU0hUKFNIVF9ISU9TLCAgICAgICAgICAgIDB4NkZGRkZGRkZVTCwg
ICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAiZW5kIG9mIE9TLXNwZWNpZmljIHJhbmdl
IikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9T
SFQoU0hUX0xPUFJPQywgICAgICAgICAgMHg3MDAwMDAwMFVMLCAgICAgICAgICAgICAgICAgICAg
IFwKPiArICAgICAgICJzdGFydCBvZiBwcm9jZXNzb3Itc3BlY2lmaWMgcmFuZ2UiKSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX1NIVChTSFRfQVJNX0VYSURYLCAg
ICAgICAweDcwMDAwMDAxVUwsICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgImV4Y2Vw
dGlvbiBpbmRleCB0YWJsZSIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKPiArX0VMRl9ERUZJTkVfU0hUKFNIVF9BUk1fUFJFRU1QVE1BUCwgIDB4NzAwMDAwMDJVTCwg
ICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAiQlBBQkkgRExMIGR5bmFtaWMgbGlua2lu
ZyBwcmVlbXB0aW9uIG1hcCIpICAgICAgICAgICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9T
SFQoU0hUX0FSTV9BVFRSSUJVVEVTLCAgMHg3MDAwMDAwM1VMLCAgICAgICAgICAgICAgICAgICAg
IFwKPiArICAgICAgICJvYmplY3QgZmlsZSBjb21wYXRpYmlsaXR5IGF0dHJpYnV0ZXMiKSAgICAg
ICAgICAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX1NIVChTSFRfQVJNX0RFQlVHT1ZF
UkxBWSwgMHg3MDAwMDAwNFVMLCAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgIm92ZXJs
YXkgZGVidWcgaW5mb3JtYXRpb24iKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKPiArX0VMRl9ERUZJTkVfU0hUKFNIVF9BUk1fT1ZFUkxBWVNFQ1RJT04sIDB4NzAwMDAwMDVV
TCwgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAib3ZlcmxheSBkZWJ1ZyBpbmZvcm1hdGlv
biIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9T
SFQoU0hUX01JUFNfTElCTElTVCwgICAgMHg3MDAwMDAwMFVMLCAgICAgICAgICAgICAgICAgICAg
IFwKPiArICAgICAgICJEU08gbGlicmFyeSBpbmZvcm1hdGlvbiB1c2VkIGluIGxpbmsiKSAgICAg
ICAgICAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX1NIVChTSFRfTUlQU19NU1lNLCAg
ICAgICAweDcwMDAwMDAxVUwsICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgIk1JUFMg
c3ltYm9sIHRhYmxlIGV4dGVuc2lvbiIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKPiArX0VMRl9ERUZJTkVfU0hUKFNIVF9NSVBTX0NPTkZMSUNULCAgIDB4NzAwMDAwMDJVTCwg
ICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAic3ltYm9sIGNvbmZsaWN0aW5nIHdpdGgg
RFNPLWRlZmluZWQgc3ltYm9scyAiKSAgICAgICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9T
SFQoU0hUX01JUFNfR1BUQUIsICAgICAgMHg3MDAwMDAwM1VMLCAgICAgICAgICAgICAgICAgICAg
IFwKPiArICAgICAgICJnbG9iYWwgcG9pbnRlciB0YWJsZSIpICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX1NIVChTSFRfTUlQU19VQ09ERSwg
ICAgICAweDcwMDAwMDA0VUwsICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgInJlc2Vy
dmVkIikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKPiArX0VMRl9ERUZJTkVfU0hUKFNIVF9NSVBTX0RFQlVHLCAgICAgIDB4NzAwMDAwMDVVTCwg
ICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAicmVzZXJ2ZWQgKG9ic29sZXRlIGRlYnVn
IGluZm9ybWF0aW9uKSIpICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9T
SFQoU0hUX01JUFNfUkVHSU5GTywgICAgMHg3MDAwMDAwNlVMLCAgICAgICAgICAgICAgICAgICAg
IFwKPiArICAgICAgICJyZWdpc3RlciB1c2FnZSBpbmZvcm1hdGlvbiIpICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX1NIVChTSFRfTUlQU19QQUNLQUdF
LCAgICAweDcwMDAwMDA3VUwsICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgIk9TRiBy
ZXNlcnZlZCIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKPiArX0VMRl9ERUZJTkVfU0hUKFNIVF9NSVBTX1BBQ0tTWU0sICAgIDB4NzAwMDAwMDhVTCwg
ICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAiT1NGIHJlc2VydmVkIikgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9T
SFQoU0hUX01JUFNfUkVMRCwgICAgICAgMHg3MDAwMDAwOVVMLCAgICAgICAgICAgICAgICAgICAg
IFwKPiArICAgICAgICJkeW5hbWljIHJlbG9jYXRpb24iKSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX1NIVChTSFRfTUlQU19JRkFDRSwg
ICAgICAweDcwMDAwMDBCVUwsICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgInN1YnBy
b2dyYW0gaW50ZXJmYWNlIGluZm9ybWF0aW9uIikgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKPiArX0VMRl9ERUZJTkVfU0hUKFNIVF9NSVBTX0NPTlRFTlQsICAgIDB4NzAwMDAwMENVTCwg
ICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAic2VjdGlvbiBjb250ZW50IGNsYXNzaWZp
Y2F0aW9uIikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9T
SFQoU0hUX01JUFNfT1BUSU9OUywgICAgIDB4NzAwMDAwMERVTCwgICAgICAgICAgICAgICAgICAg
IFwKPiArICAgICAgICJnZW5lcmFsIG9wdGlvbnMiKSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX1NIVChTSFRfTUlQU19ERUxUQVNZ
TSwgICAweDcwMDAwMDFCVUwsICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgIkRlbHRh
IEMrKzogc3ltYm9sIHRhYmxlIikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKPiArX0VMRl9ERUZJTkVfU0hUKFNIVF9NSVBTX0RFTFRBSU5TVCwgIDB4NzAwMDAwMUNVTCwg
ICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAiRGVsdGEgQysrOiBpbnN0YW5jZSB0YWJs
ZSIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9T
SFQoU0hUX01JUFNfREVMVEFDTEFTUywgMHg3MDAwMDAxRFVMLCAgICAgICAgICAgICAgICAgICAg
IFwKPiArICAgICAgICJEZWx0YSBDKys6IGNsYXNzIHRhYmxlIikgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX1NIVChTSFRfTUlQU19EV0FSRiwg
ICAgICAweDcwMDAwMDFFVUwsICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgIkRXQVJG
IGRlYnVnIGluZm9ybWF0aW9uIikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKPiArX0VMRl9ERUZJTkVfU0hUKFNIVF9NSVBTX0RFTFRBREVDTCwgIDB4NzAwMDAwMUZVTCwg
ICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAiRGVsdGEgQysrOiBkZWNsYXJhdGlvbnMi
KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9T
SFQoU0hUX01JUFNfU1lNQk9MX0xJQiwgMHg3MDAwMDAyMFVMLCAgICAgICAgICAgICAgICAgICAg
IFwKPiArICAgICAgICJzeW1ib2wtdG8tbGlicmFyeSBtYXBwaW5nIikgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX1NIVChTSFRfTUlQU19FVkVOVFMs
ICAgICAweDcwMDAwMDIxVUwsICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgImV2ZW50
IGxvY2F0aW9ucyIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKPiArX0VMRl9ERUZJTkVfU0hUKFNIVF9NSVBTX1RSQU5TTEFURSwgIDB4NzAwMDAwMjJVTCwg
ICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAiPz8/IikgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9T
SFQoU0hUX01JUFNfUElYSUUsICAgICAgMHg3MDAwMDAyM1VMLCAgICAgICAgICAgICAgICAgICAg
IFwKPiArICAgICAgICJzcGVjaWFsIHBpeGllIHNlY3Rpb25zIikgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX1NIVChTSFRfTUlQU19YTEFURSwg
ICAgICAweDcwMDAwMDI0VUwsICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgImFkZHJl
c3MgdHJhbnNsYXRpb24gdGFibGUiKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKPiArX0VMRl9ERUZJTkVfU0hUKFNIVF9NSVBTX1hMQVRFX0RFQlVHLCAweDcwMDAwMDI1VUws
ICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAiU0dJIGludGVybmFsIGFkZHJlc3MgdHJh
bnNsYXRpb24gdGFibGUiKSAgICAgICAgICAgICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9T
SFQoU0hUX01JUFNfV0hJUkwsICAgICAgMHg3MDAwMDAyNlVMLCAgICAgICAgICAgICAgICAgICAg
IFwKPiArICAgICAgICJpbnRlcm1lZGlhdGUgY29kZSIpICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX1NIVChTSFRfTUlQU19FSF9SRUdJ
T04sICAweDcwMDAwMDI3VUwsICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgIkMrKyBl
eGNlcHRpb24gaGFuZGxpbmcgcmVnaW9uIGluZm8iKSAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKPiArX0VMRl9ERUZJTkVfU0hUKFNIVF9NSVBTX1hMQVRFX09MRCwgIDB4NzAwMDAwMjhVTCwg
ICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAib2Jzb2xldGUiKSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9T
SFQoU0hUX01JUFNfUERSX0VYQ0VQVElPTiwgMHg3MDAwMDAyOVVMLCAgICAgICAgICAgICAgICAg
IFwKPiArICAgICAgICJydW50aW1lIHByb2NlZHVyZSBkZXNjcmlwdG9yIHRhYmxlIGV4Y2VwdGlv
biBpbmZvcm1hdGlvbiIpICAgICBcCj4gK19FTEZfREVGSU5FX1NIVChTSFRfTUlQU19BQklGTEFH
UywgICAweDcwMDAwMDJBVUwsICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgIkFCSSBm
bGFncyIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKPiArX0VMRl9ERUZJTkVfU0hUKFNIVF9TUEFSQ19HT1REQVRBLCAgIDB4NzAwMDAwMDBVTCwg
ICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAiU1BBUkMtc3BlY2lmaWMgZGF0YSIpICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9T
SFQoU0hUX0FNRDY0X1VOV0lORCwgICAgMHg3MDAwMDAwMVVMLCAgICAgICAgICAgICAgICAgICAg
IFwKPiArICAgICAgICJ1bndpbmQgdGFibGVzIGZvciB0aGUgQU1ENjQiKSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX1NIVChTSFRfT1JERVJFRCwgICAg
ICAgICAweDdGRkZGRkZGVUwsICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgInNvcnQg
ZW50cmllcyBpbiB0aGUgc2VjdGlvbiIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKPiArX0VMRl9ERUZJTkVfU0hUKFNIVF9ISVBST0MsICAgICAgICAgIDB4N0ZGRkZGRkZVTCwg
ICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAiZW5kIG9mIHByb2Nlc3Nvci1zcGVjaWZp
YyByYW5nZSIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9T
SFQoU0hUX0xPVVNFUiwgICAgICAgICAgMHg4MDAwMDAwMFVMLCAgICAgICAgICAgICAgICAgICAg
IFwKPiArICAgICAgICJzdGFydCBvZiBhcHBsaWNhdGlvbi1zcGVjaWZpYyByYW5nZSIpICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX1NIVChTSFRfSElVU0VSLCAgICAg
ICAgICAweEZGRkZGRkZGVUwsICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgImVuZCBv
ZiBhcHBsaWNhdGlvbi1zcGVjaWZpYyByYW5nZSIpCj4gKwo+ICsjdW5kZWYgX0VMRl9ERUZJTkVf
U0hUCj4gKyNkZWZpbmUgICAgICAgIF9FTEZfREVGSU5FX1NIVChOLCBWLCBERVNDUikgICAgTiA9
IFYgLAo+ICtlbnVtIHsKPiArICAgICAgIF9FTEZfREVGSU5FX1NFQ1RJT05fVFlQRVMoKQo+ICsg
ICAgICAgU0hUX19MQVNUX18gPSBTSFRfSElVU0VSCj4gK307Cj4gKwo+ICsvKiBBbGlhc2VzIGZv
ciBzZWN0aW9uIHR5cGVzLiAqLwo+ICsjZGVmaW5lICAgICAgICBTSFRfR05VX3ZlcmRlZiAgICAg
ICAgICBTSFRfU1VOV192ZXJkZWYKPiArI2RlZmluZSAgICAgICAgU0hUX0dOVV92ZXJuZWVkICAg
ICAgICAgU0hUX1NVTldfdmVybmVlZAo+ICsjZGVmaW5lICAgICAgICBTSFRfR05VX3ZlcnN5bSAg
ICAgICAgICBTSFRfU1VOV192ZXJzeW0KPiArCj4gKy8qCj4gKyAqIFN5bWJvbCBiaW5kaW5nIGlu
Zm9ybWF0aW9uLgo+ICsgKi8KPiArCj4gKyNkZWZpbmUgICAgICAgIF9FTEZfREVGSU5FX1NZTUJP
TF9CSU5ESU5HKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gK19FTEZf
REVGSU5FX1NUQihTVEJfTE9DQUwsICAgICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAibm90IHZpc2libGUgb3V0c2lkZSBkZWZpbmlu
ZyBvYmplY3QgZmlsZSIpICAgICAgICAgICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9TVEIo
U1RCX0dMT0JBTCwgICAgICAgICAgMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAo+ICsgICAgICAgInZpc2libGUgYWNyb3NzIGFsbCBvYmplY3QgZmlsZXMgYmVpbmcg
Y29tYmluZWQiKSAgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfU1RCKFNUQl9XRUFLLCAg
ICAgICAgICAgIDIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiAr
ICAgICAgICJ2aXNpYmxlIGFjcm9zcyBhbGwgb2JqZWN0IGZpbGVzIGJ1dCB3aXRoIGxvdyBwcmVj
ZWRlbmNlIikgICAgICBcCj4gK19FTEZfREVGSU5FX1NUQihTVEJfTE9PUywgICAgICAgICAgICAx
MCwgInN0YXJ0IG9mIE9TLXNwZWNpZmljIHJhbmdlIikgXAo+ICtfRUxGX0RFRklORV9TVEIoU1RC
X0dOVV9VTklRVUUsICAgICAgMTAsICJ1bmlxdWUgc3ltYm9sIChHTlUpIikgICAgICAgICAgICAg
ICAgXAo+ICtfRUxGX0RFRklORV9TVEIoU1RCX0hJT1MsICAgICAgICAgICAgMTIsICJlbmQgb2Yg
T1Mtc3BlY2lmaWMgcmFuZ2UiKSAgIFwKPiArX0VMRl9ERUZJTkVfU1RCKFNUQl9MT1BST0MsICAg
ICAgICAgIDEzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAic3Rh
cnQgb2YgcHJvY2Vzc29yLXNwZWNpZmljIHJhbmdlIikgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAo+ICtfRUxGX0RFRklORV9TVEIoU1RCX0hJUFJPQywgICAgICAgICAgMTUsICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICJlbmQgb2YgcHJvY2Vzc29yLXNwZWNp
ZmljIHJhbmdlIikKPiArCj4gKyN1bmRlZiBfRUxGX0RFRklORV9TVEIKPiArI2RlZmluZSAgICAg
ICAgX0VMRl9ERUZJTkVfU1RCKE4sIFYsIERFU0NSKSAgICBOID0gViAsCj4gK2VudW0gewo+ICsg
ICAgICAgX0VMRl9ERUZJTkVfU1lNQk9MX0JJTkRJTkcoKQo+ICsgICAgICAgU1RCX19MQVNUX18K
PiArfTsKPiArCj4gKy8qCj4gKyAqIFN5bWJvbCB0eXBlcwo+ICsgKi8KPiArCj4gKyNkZWZpbmUg
ICAgICAgIF9FTEZfREVGSU5FX1NZTUJPTF9UWVBFUygpICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX1NUVChTVFRfTk9UWVBFLCAgICAgICAgICAw
LCAidW5zcGVjaWZpZWQgdHlwZSIpICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9TVFQoU1RU
X09CSkVDVCwgICAgICAgICAgMSwgImRhdGEgb2JqZWN0IikgICAgICAgICAgICAgICAgIFwKPiAr
X0VMRl9ERUZJTkVfU1RUKFNUVF9GVU5DLCAgICAgICAgICAgIDIsICJleGVjdXRhYmxlIGNvZGUi
KSAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX1NUVChTVFRfU0VDVElPTiwgICAgICAgICAz
LCAic2VjdGlvbiIpICAgICAgICAgICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9TVFQoU1RU
X0ZJTEUsICAgICAgICAgICAgNCwgInNvdXJjZSBmaWxlIikgICAgICAgICAgICAgICAgIFwKPiAr
X0VMRl9ERUZJTkVfU1RUKFNUVF9DT01NT04sICAgICAgICAgIDUsICJ1bmluaXRpYWxpemVkIGNv
bW1vbiBibG9jayIpICBcCj4gK19FTEZfREVGSU5FX1NUVChTVFRfVExTLCAgICAgICAgICAgICA2
LCAidGhyZWFkIGxvY2FsIHN0b3JhZ2UiKSAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5F
X1NUVChTVFRfTE9PUywgICAgICAgICAgICAxMCwgInN0YXJ0IG9mIE9TLXNwZWNpZmljIHR5cGVz
IikgXAo+ICtfRUxGX0RFRklORV9TVFQoU1RUX0hJT1MsICAgICAgICAgICAgMTIsICJlbmQgb2Yg
T1Mtc3BlY2lmaWMgdHlwZXMiKSAgIFwKPiArX0VMRl9ERUZJTkVfU1RUKFNUVF9MT1BST0MsICAg
ICAgICAgIDEzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAic3Rh
cnQgb2YgcHJvY2Vzc29yLXNwZWNpZmljIHR5cGVzIikgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAo+ICtfRUxGX0RFRklORV9TVFQoU1RUX0FSTV9URlVOQywgICAgICAgMTMsICJUaHVtYiBm
dW5jdGlvbiAoR05VKSIpICAgICAgIFwKPiArX0VMRl9ERUZJTkVfU1RUKFNUVF9BUk1fMTZCSVQs
ICAgICAgIDE1LCAiVGh1bWIgbGFiZWwgKEdOVSkiKSAgICAgICAgICBcCj4gK19FTEZfREVGSU5F
X1NUVChTVFRfU1BBUkNfUkVHSVNURVIsICAxMywgIlNQQVJDIHJlZ2lzdGVyIGluZm9ybWF0aW9u
IikgXAo+ICtfRUxGX0RFRklORV9TVFQoU1RUX0hJUFJPQywgICAgICAgICAgMTUsICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICJlbmQgb2YgcHJvY2Vzc29yLXNwZWNp
ZmljIHR5cGVzIikKPiArCj4gKyN1bmRlZiBfRUxGX0RFRklORV9TVFQKPiArI2RlZmluZSAgICAg
ICAgX0VMRl9ERUZJTkVfU1RUKE4sIFYsIERFU0NSKSAgICBOID0gViAsCj4gK2VudW0gewo+ICsg
ICAgICAgX0VMRl9ERUZJTkVfU1lNQk9MX1RZUEVTKCkKPiArICAgICAgIFNUVF9fTEFTVF9fCj4g
K307Cj4gKwo+ICsvKgo+ICsgKiBTeW1ib2wgYmluZGluZy4KPiArICovCj4gKwo+ICsjZGVmaW5l
ICAgICAgICBfRUxGX0RFRklORV9TWU1CT0xfQklORElOR19LSU5EUygpICAgICAgICAgICAgICBc
Cj4gK19FTEZfREVGSU5FX1NZQihTWU1JTkZPX0JUX1NFTEYsICAgICAgIDB4RkZGRlUsICAgICAg
ICBcCj4gKyAgICAgICAiYm91bmQgdG8gc2VsZiIpICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCj4gK19FTEZfREVGSU5FX1NZQihTWU1JTkZPX0JUX1BBUkVOVCwgICAgIDB4RkZGRVUs
ICAgICAgICBcCj4gKyAgICAgICAiYm91bmQgdG8gcGFyZW50IikgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX1NZQihTWU1JTkZPX0JUX05PTkUsICAgICAgIDB4
RkZGRFUsICAgICAgICBcCj4gKyAgICAgICAibm8gc3BlY2lhbCBiaW5kaW5nIikKPiArCj4gKyN1
bmRlZiBfRUxGX0RFRklORV9TWUIKPiArI2RlZmluZSAgICAgICAgX0VMRl9ERUZJTkVfU1lCKE4s
IFYsIERFU0NSKSAgICBOID0gViAsCj4gK2VudW0gewo+ICsgICAgICAgX0VMRl9ERUZJTkVfU1lN
Qk9MX0JJTkRJTkdfS0lORFMoKQo+ICsgICAgICAgU1lNSU5GT19fTEFTVF9fCj4gK307Cj4gKwo+
ICsvKgo+ICsgKiBTeW1ib2wgdmlzaWJpbGl0eS4KPiArICovCj4gKwo+ICsjZGVmaW5lICAgICAg
ICBfRUxGX0RFRklORV9TWU1CT0xfVklTSUJJTElUWSgpICAgICAgICAgXAo+ICtfRUxGX0RFRklO
RV9TVFYoU1RWX0RFRkFVTFQsICAgICAgICAgMCwgICAgICAgICAgICAgICAgXAo+ICsgICAgICAg
ImFzIHNwZWNpZmllZCBieSBzeW1ib2wgdHlwZSIpICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVf
U1RWKFNUVl9JTlRFUk5BTCwgICAgICAgIDEsICAgICAgICAgICAgICAgIFwKPiArICAgICAgICJh
cyBkZWZpbmVkIGJ5IHByb2Nlc3NvciBzZW1hbnRpY3MiKSAgICBcCj4gK19FTEZfREVGSU5FX1NU
VihTVFZfSElEREVOLCAgICAgICAgICAyLCAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAiaGlk
ZGVuIGZyb20gb3RoZXIgY29tcG9uZW50cyIpICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9TVFYo
U1RWX1BST1RFQ1RFRCwgICAgICAgMywgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgImxvY2Fs
IHJlZmVyZW5jZXMgYXJlIG5vdCBwcmVlbXB0YWJsZSIpCj4gKwo+ICsjdW5kZWYgX0VMRl9ERUZJ
TkVfU1RWCj4gKyNkZWZpbmUgICAgICAgIF9FTEZfREVGSU5FX1NUVihOLCBWLCBERVNDUikgICAg
TiA9IFYgLAo+ICtlbnVtIHsKPiArICAgICAgIF9FTEZfREVGSU5FX1NZTUJPTF9WSVNJQklMSVRZ
KCkKPiArICAgICAgIFNUVl9fTEFTVF9fCj4gK307Cj4gKwo+ICsvKgo+ICsgKiBTeW1ib2wgZmxh
Z3MuCj4gKyAqLwo+ICsjZGVmaW5lICAgICAgICBfRUxGX0RFRklORV9TWU1CT0xfRkxBR1MoKSAg
ICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9TWUYoU1lNSU5GT19GTEdfRElSRUNULCAgICAw
eDAxLCAgIFwKPiArICAgICAgICJkaXJlY3RseSBhc3NvY2F0ZWQgcmVmZXJlbmNlIikgICAgICAg
ICBcCj4gK19FTEZfREVGSU5FX1NZRihTWU1JTkZPX0ZMR19DT1BZLCAgICAgIDB4MDQsICAgXAo+
ICsgICAgICAgImRlZmluaXRpb24gYnkgY29weS1yZWxvY2F0aW9uIikgICAgICAgIFwKPiArX0VM
Rl9ERUZJTkVfU1lGKFNZTUlORk9fRkxHX0xBWllMT0FELCAgMHgwOCwgICBcCj4gKyAgICAgICAi
b2JqZWN0IHNob3VsZCBiZSBsYXppbHkgbG9hZGVkIikgICAgICAgXAo+ICtfRUxGX0RFRklORV9T
WUYoU1lNSU5GT19GTEdfRElSRUNUQklORCwgICAgICAgIDB4MTAsICAgXAo+ICsgICAgICAgInJl
ZmVyZW5jZSBzaG91bGQgYmUgZGlyZWN0bHkgYm91bmQiKSAgIFwKPiArX0VMRl9ERUZJTkVfU1lG
KFNZTUlORk9fRkxHX05PRVhURElSRUNULCAweDIwLCBcCj4gKyAgICAgICAiZXh0ZXJuYWwgcmVm
ZXJlbmNlcyBub3QgYWxsb3dlZCB0byBiaW5kIHRvIGRlZmluaXRpb24iKQo+ICsKPiArI3VuZGVm
IF9FTEZfREVGSU5FX1NZRgo+ICsjZGVmaW5lICAgICAgICBfRUxGX0RFRklORV9TWUYoTiwgViwg
REVTQ1IpICAgIE4gPSBWICwKPiArZW51bSB7Cj4gKyAgICAgICBfRUxGX0RFRklORV9TWU1CT0xf
RkxBR1MoKQo+ICsgICAgICAgU1lNSU5GT19GTEdfX0xBU1RfXwo+ICt9Owo+ICsKPiArLyoKPiAr
ICogVmVyc2lvbiBkZXBlbmRlbmNpZXMuCj4gKyAqLwo+ICsjZGVmaW5lICAgICAgICBfRUxGX0RF
RklORV9WRVJTSU9OSU5HX0RFUEVOREVOQ0lFUygpICAgICAgICAgICAgICAgICAgIFwKPiArX0VM
Rl9ERUZJTkVfVkVSRChWRVJfTkRYX0xPQ0FMLCAgICAgICAgICAgICAgICAwLCAgICAgICJsb2Nh
bCBzY29wZSIpICBcCj4gK19FTEZfREVGSU5FX1ZFUkQoVkVSX05EWF9HTE9CQUwsICAgICAgIDEs
ICAgICAgImdsb2JhbCBzY29wZSIpCj4gKyN1bmRlZiBfRUxGX0RFRklORV9WRVJECj4gKyNkZWZp
bmUgICAgICAgIF9FTEZfREVGSU5FX1ZFUkQoTiwgViwgREVTQ1IpICAgTiA9IFYgLAo+ICtlbnVt
IHsKPiArICAgICAgIF9FTEZfREVGSU5FX1ZFUlNJT05JTkdfREVQRU5ERU5DSUVTKCkKPiArICAg
ICAgIFZFUl9ORFhfX0xBU1RfXwo+ICt9Owo+ICsKPiArLyoKPiArICogVmVyc2lvbiBmbGFncy4K
PiArICovCj4gKyNkZWZpbmUgICAgICAgIF9FTEZfREVGSU5FX1ZFUlNJT05JTkdfRkxBR1MoKSAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9WRVJGKFZFUl9GTEdfQkFT
RSwgICAgICAgICAweDEsICAgICJmaWxlIHZlcnNpb24iKSBcCj4gK19FTEZfREVGSU5FX1ZFUkYo
VkVSX0ZMR19XRUFLLCAgICAgICAgIDB4MiwgICAgIndlYWsgdmVyc2lvbiIpCj4gKyN1bmRlZiBf
RUxGX0RFRklORV9WRVJGCj4gKyNkZWZpbmUgICAgICAgIF9FTEZfREVGSU5FX1ZFUkYoTiwgViwg
REVTQ1IpICAgTiA9IFYgLAo+ICtlbnVtIHsKPiArICAgICAgIF9FTEZfREVGSU5FX1ZFUlNJT05J
TkdfRkxBR1MoKQo+ICsgICAgICAgVkVSX0ZMR19fTEFTVF9fCj4gK307Cj4gKwo+ICsvKgo+ICsg
KiBWZXJzaW9uIG5lZWRzCj4gKyAqLwo+ICsjZGVmaW5lICAgICAgICBfRUxGX0RFRklORV9WRVJT
SU9OSU5HX05FRURTKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICtfRUxG
X0RFRklORV9WUk4oVkVSX05FRURfTk9ORSwgICAgICAgICAwLCAgICAgICJpbnZhbGlkIHZlcnNp
b24iKSAgICAgIFwKPiArX0VMRl9ERUZJTkVfVlJOKFZFUl9ORUVEX0NVUlJFTlQsICAgICAgMSwg
ICAgICAiY3VycmVudCB2ZXJzaW9uIikKPiArI3VuZGVmIF9FTEZfREVGSU5FX1ZSTgo+ICsjZGVm
aW5lICAgICAgICBfRUxGX0RFRklORV9WUk4oTiwgViwgREVTQ1IpICAgIE4gPSBWICwKPiArZW51
bSB7Cj4gKyAgICAgICBfRUxGX0RFRklORV9WRVJTSU9OSU5HX05FRURTKCkKPiArICAgICAgIFZF
Ul9ORUVEX19MQVNUX18KPiArfTsKPiArCj4gKy8qCj4gKyAqIFZlcnNpb24gbnVtYmVycy4KPiAr
ICovCj4gKyNkZWZpbmUgICAgICAgIF9FTEZfREVGSU5FX1ZFUlNJT05JTkdfTlVNQkVSUygpICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX1ZSTlUoVkVSX0RF
Rl9OT05FLCAgICAgICAgIDAsICAgICAgImludmFsaWQgdmVyc2lvbiIpICAgICAgXAo+ICtfRUxG
X0RFRklORV9WUk5VKFZFUl9ERUZfQ1VSUkVOVCwgICAgICAxLCAgICAgICJjdXJyZW50IHZlcnNp
b24iKQo+ICsjdW5kZWYgX0VMRl9ERUZJTkVfVlJOVQo+ICsjZGVmaW5lICAgICAgICBfRUxGX0RF
RklORV9WUk5VKE4sIFYsIERFU0NSKSAgIE4gPSBWICwKPiArZW51bSB7Cj4gKyAgICAgICBfRUxG
X0RFRklORV9WRVJTSU9OSU5HX05VTUJFUlMoKQo+ICsgICAgICAgVkVSX0RFRl9fTEFTVF9fCj4g
K307Cj4gKwo+ICsvKioKPiArICoqIFJlbG9jYXRpb24gdHlwZXMuCj4gKyAqKi8KPiArCj4gKyNk
ZWZpbmUgICAgICAgIF9FTEZfREVGSU5FXzM4Nl9SRUxPQ0FUSU9OUygpICAgICAgICAgICBcCj4g
K19FTEZfREVGSU5FX1JFTE9DKFJfMzg2X05PTkUsICAgICAgICAgIDApICAgICAgXAo+ICtfRUxG
X0RFRklORV9SRUxPQyhSXzM4Nl8zMiwgICAgICAgICAgICAxKSAgICAgIFwKPiArX0VMRl9ERUZJ
TkVfUkVMT0MoUl8zODZfUEMzMiwgICAgICAgICAgMikgICAgICBcCj4gK19FTEZfREVGSU5FX1JF
TE9DKFJfMzg2X0dPVDMyLCAgICAgICAgIDMpICAgICAgXAo+ICtfRUxGX0RFRklORV9SRUxPQyhS
XzM4Nl9QTFQzMiwgICAgICAgICA0KSAgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl8zODZf
Q09QWSwgICAgICAgICAgNSkgICAgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfMzg2X0dMT0Jf
REFULCAgICAgIDYpICAgICAgXAo+ICtfRUxGX0RFRklORV9SRUxPQyhSXzM4Nl9KVU1QX1NMT1Qs
ICAgICA3KSAgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl8zODZfUkVMQVRJVkUsICAgICAg
OCkgICAgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfMzg2X0dPVE9GRiwgICAgICAgICAgICAg
ICAgOSkgICAgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfMzg2X0dPVFBDLCAgICAgICAgIDEw
KSAgICAgXAo+ICtfRUxGX0RFRklORV9SRUxPQyhSXzM4Nl8zMlBMVCwgICAgICAgICAxMSkgICAg
IFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl8zODZfMTYsICAgICAgICAgICAgMjApICAgICBcCj4g
K19FTEZfREVGSU5FX1JFTE9DKFJfMzg2X1BDMTYsICAgICAgICAgIDIxKSAgICAgXAo+ICtfRUxG
X0RFRklORV9SRUxPQyhSXzM4Nl84LCAgICAgICAgICAgICAyMikgICAgIFwKPiArX0VMRl9ERUZJ
TkVfUkVMT0MoUl8zODZfUEM4LCAgICAgICAgICAgMjMpCj4gKwo+ICsvKgo+ICsgKi8KPiArI2Rl
ZmluZSAgICAgICAgX0VMRl9ERUZJTkVfQUFSQ0g2NF9SRUxPQ0FUSU9OUygpICAgICAgICAgICAg
ICAgXAo+ICtfRUxGX0RFRklORV9SRUxPQyhSX0FBUkNINjRfQUJTNjQsICAgICAgICAgICAgIDI1
NykgICAgXAo+ICtfRUxGX0RFRklORV9SRUxPQyhSX0FBUkNINjRfQUJTMzIsICAgICAgICAgICAg
IDI1OCkgICAgXAo+ICsKPiArLyoKPiArICogVGhlc2UgYXJlIHRoZSBzeW1ib2xzIHVzZWQgaW4g
dGhlIFN1biBgYExpbmtlcnMgYW5kIExvYWRlcnMKPiArICogR3VpZGUnJywgRG9jdW1lbnQgTm86
IDgxNy0xOTg0LTE3LiAgU2VlIHRoZSBYODZfNjQgcmVsb2NhdGlvbnMgbGlzdAo+ICsgKiBiZWxv
dyBmb3IgdGhlIHNwZWxsaW5ncyB1c2VkIGluIHRoZSBFTEYgc3BlY2lmaWNhdGlvbi4KPiArICov
Cj4gKyNkZWZpbmUgICAgICAgIF9FTEZfREVGSU5FX0FNRDY0X1JFTE9DQVRJT05TKCkgICAgICAg
ICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfQU1ENjRfTk9ORSwgICAgICAgICAgICAgICAgMCkg
ICAgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfQU1ENjRfNjQsICAgICAgICAgIDEpICAgICAg
XAo+ICtfRUxGX0RFRklORV9SRUxPQyhSX0FNRDY0X1BDMzIsICAgICAgICAgICAgICAgIDIpICAg
ICAgXAo+ICtfRUxGX0RFRklORV9SRUxPQyhSX0FNRDY0X0dPVDMyLCAgICAgICAzKSAgICAgIFwK
PiArX0VMRl9ERUZJTkVfUkVMT0MoUl9BTUQ2NF9QTFQzMiwgICAgICAgNCkgICAgICBcCj4gK19F
TEZfREVGSU5FX1JFTE9DKFJfQU1ENjRfQ09QWSwgICAgICAgICAgICAgICAgNSkgICAgICBcCj4g
K19FTEZfREVGSU5FX1JFTE9DKFJfQU1ENjRfR0xPQl9EQVQsICAgIDYpICAgICAgXAo+ICtfRUxG
X0RFRklORV9SRUxPQyhSX0FNRDY0X0pVTVBfU0xPVCwgICA3KSAgICAgIFwKPiArX0VMRl9ERUZJ
TkVfUkVMT0MoUl9BTUQ2NF9SRUxBVElWRSwgICAgOCkgICAgICBcCj4gK19FTEZfREVGSU5FX1JF
TE9DKFJfQU1ENjRfR09UUENSRUwsICAgIDkpICAgICAgXAo+ICtfRUxGX0RFRklORV9SRUxPQyhS
X0FNRDY0XzMyLCAgICAgICAgICAxMCkgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9BTUQ2
NF8zMlMsICAgICAgICAgMTEpICAgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfQU1ENjRfMTYs
ICAgICAgICAgIDEyKSAgICAgXAo+ICtfRUxGX0RFRklORV9SRUxPQyhSX0FNRDY0X1BDMTYsICAg
ICAgICAgICAgICAgIDEzKSAgICAgXAo+ICtfRUxGX0RFRklORV9SRUxPQyhSX0FNRDY0XzgsICAg
ICAgICAgICAxNCkgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9BTUQ2NF9QQzgsICAgICAg
ICAgMTUpICAgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfQU1ENjRfUEM2NCwgICAgICAgICAg
ICAgICAgMjQpICAgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfQU1ENjRfR09UT0ZGNjQsICAg
IDI1KSAgICAgXAo+ICtfRUxGX0RFRklORV9SRUxPQyhSX0FNRDY0X0dPVFBDMzIsICAgICAyNikK
PiArCj4gKy8qCj4gKyAqIFJlbG9jYXRpb24gZGVmaW5pdGlvbnMgZnJvbSB0aGUgQVJNIEVMRiBB
QkksIHZlcnNpb24gIkFSTSBJSEkKPiArICogMDA0NEUiIHJlbGVhc2VkIG9uIDMwdGggTm92ZW1i
ZXIgMjAxMi4KPiArICovCj4gKyNkZWZpbmUgICAgICAgIF9FTEZfREVGSU5FX0FSTV9SRUxPQ0FU
SU9OUygpICAgICAgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9BUk1fTk9O
RSwgICAgICAgICAgICAgICAgICAwKSAgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9BUk1f
UEMyNCwgICAgICAgICAgICAgICAgICAxKSAgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9B
Uk1fQUJTMzIsICAgICAgICAgICAgICAgICAyKSAgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0Mo
Ul9BUk1fUkVMMzIsICAgICAgICAgICAgICAgICAzKSAgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVM
T0MoUl9BUk1fTERSX1BDX0cwLCAgICAgICAgICAgICA0KSAgICAgIFwKPiArX0VMRl9ERUZJTkVf
UkVMT0MoUl9BUk1fQUJTMTYsICAgICAgICAgICAgICAgICA1KSAgICAgIFwKPiArX0VMRl9ERUZJ
TkVfUkVMT0MoUl9BUk1fQUJTMTIsICAgICAgICAgICAgICAgICA2KSAgICAgIFwKPiArX0VMRl9E
RUZJTkVfUkVMT0MoUl9BUk1fVEhNX0FCUzUsICAgICAgICAgICAgICA3KSAgICAgIFwKPiArX0VM
Rl9ERUZJTkVfUkVMT0MoUl9BUk1fQUJTOCwgICAgICAgICAgICAgICAgICA4KSAgICAgIFwKPiAr
X0VMRl9ERUZJTkVfUkVMT0MoUl9BUk1fU0JSRUwzMiwgICAgICAgICAgICAgICA5KSAgICAgIFwK
PiArX0VMRl9ERUZJTkVfUkVMT0MoUl9BUk1fVEhNX0NBTEwsICAgICAgICAgICAgICAxMCkgICAg
IFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9BUk1fVEhNX1BDOCwgICAgICAgICAgICAgICAxMSkg
ICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9BUk1fQlJFTF9BREosICAgICAgICAgICAgICAx
MikgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9BUk1fU1dJMjQsICAgICAgICAgICAgICAg
ICAxMykgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9BUk1fVExTX0RFU0MsICAgICAgICAg
ICAgICAxMykgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9BUk1fVEhNX1NXSTgsICAgICAg
ICAgICAgICAxNCkgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9BUk1fWFBDMjUsICAgICAg
ICAgICAgICAgICAxNSkgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9BUk1fVEhNX1hQQzIy
LCAgICAgICAgICAgICAxNikgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9BUk1fVExTX0RU
UE1PRDMyLCAgICAgICAgICAxNykgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9BUk1fVExT
X0RUUE9GRjMyLCAgICAgICAgICAxOCkgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9BUk1f
VExTX1RQT0ZGMzIsICAgICAgICAgICAxOSkgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9B
Uk1fQ09QWSwgICAgICAgICAgICAgICAgICAyMCkgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0Mo
Ul9BUk1fR0xPQl9EQVQsICAgICAgICAgICAgICAyMSkgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVM
T0MoUl9BUk1fSlVNUF9TTE9ULCAgICAgICAgICAgICAyMikgICAgIFwKPiArX0VMRl9ERUZJTkVf
UkVMT0MoUl9BUk1fUkVMQVRJVkUsICAgICAgICAgICAgICAyMykgICAgIFwKPiArX0VMRl9ERUZJ
TkVfUkVMT0MoUl9BUk1fR09UT0ZGMzIsICAgICAgICAgICAgICAyNCkgICAgIFwKPiArX0VMRl9E
RUZJTkVfUkVMT0MoUl9BUk1fQkFTRV9QUkVMLCAgICAgICAgICAgICAyNSkgICAgIFwKPiArX0VM
Rl9ERUZJTkVfUkVMT0MoUl9BUk1fR09UX0JSRUwsICAgICAgICAgICAgICAyNikgICAgIFwKPiAr
X0VMRl9ERUZJTkVfUkVMT0MoUl9BUk1fUExUMzIsICAgICAgICAgICAgICAgICAyNykgICAgIFwK
PiArX0VMRl9ERUZJTkVfUkVMT0MoUl9BUk1fQ0FMTCwgICAgICAgICAgICAgICAgICAyOCkgICAg
IFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9BUk1fSlVNUDI0LCAgICAgICAgICAgICAgICAgICAg
ICAgIDI5KSAgICAgXAo+ICtfRUxGX0RFRklORV9SRUxPQyhSX0FSTV9USE1fSlVNUDI0LCAgICAg
ICAgICAgIDMwKSAgICAgXAo+ICtfRUxGX0RFRklORV9SRUxPQyhSX0FSTV9CQVNFX0FCUywgICAg
ICAgICAgICAgIDMxKSAgICAgXAo+ICtfRUxGX0RFRklORV9SRUxPQyhSX0FSTV9BTFVfUENSRUxf
N18wLCAgICAgICAgIDMyKSAgICAgXAo+ICtfRUxGX0RFRklORV9SRUxPQyhSX0FSTV9BTFVfUENS
RUxfMTVfOCwgICAgICAgICAgICAgICAgMzMpICAgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJf
QVJNX0FMVV9QQ1JFTF8yM18xNSwgICAgICAgMzQpICAgICBcCj4gK19FTEZfREVGSU5FX1JFTE9D
KFJfQVJNX0xEUl9TQlJFTF8xMV8wX05DLCAgICAgMzUpICAgICBcCj4gK19FTEZfREVGSU5FX1JF
TE9DKFJfQVJNX0FMVV9TQlJFTF8xOV8xMl9OQywgICAgMzYpICAgICBcCj4gK19FTEZfREVGSU5F
X1JFTE9DKFJfQVJNX0FMVV9TQlJFTF8yN18yMF9DSywgICAgMzcpICAgICBcCj4gK19FTEZfREVG
SU5FX1JFTE9DKFJfQVJNX1RBUkdFVDEsICAgICAgICAgICAgICAgMzgpICAgICBcCj4gK19FTEZf
REVGSU5FX1JFTE9DKFJfQVJNX1NCUkVMMzEsICAgICAgICAgICAgICAgMzkpICAgICBcCj4gK19F
TEZfREVGSU5FX1JFTE9DKFJfQVJNX1Y0QlgsICAgICAgICAgICAgICAgICAgNDApICAgICBcCj4g
K19FTEZfREVGSU5FX1JFTE9DKFJfQVJNX1RBUkdFVDIsICAgICAgICAgICAgICAgNDEpICAgICBc
Cj4gK19FTEZfREVGSU5FX1JFTE9DKFJfQVJNX1BSRUwzMSwgICAgICAgICAgICAgICAgICAgICAg
ICA0MikgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9BUk1fTU9WV19BQlNfTkMsICAgICAg
ICAgICA0MykgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9BUk1fTU9WVF9BQlMsICAgICAg
ICAgICAgICA0NCkgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9BUk1fTU9WV19QUkVMX05D
LCAgICAgICAgICA0NSkgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9BUk1fTU9WVF9QUkVM
LCAgICAgICAgICAgICA0NikgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9BUk1fVEhNX01P
VldfQUJTX05DLCAgICAgICA0NykgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9BUk1fVEhN
X01PVlRfQUJTLCAgICAgICAgICA0OCkgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9BUk1f
VEhNX01PVldfUFJFTF9OQywgICAgICA0OSkgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9B
Uk1fVEhNX01PVlRfUFJFTCwgICAgICAgICA1MCkgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0Mo
Ul9BUk1fVEhNX0pVTVAxOSwgICAgICAgICAgICA1MSkgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVM
T0MoUl9BUk1fVEhNX0pVTVA2LCAgICAgICAgICAgICA1MikgICAgIFwKPiArX0VMRl9ERUZJTkVf
UkVMT0MoUl9BUk1fVEhNX0FMVV9QUkVMXzExXzAsICAgICA1MykgICAgIFwKPiArX0VMRl9ERUZJ
TkVfUkVMT0MoUl9BUk1fVEhNX1BDMTIsICAgICAgICAgICAgICA1NCkgICAgIFwKPiArX0VMRl9E
RUZJTkVfUkVMT0MoUl9BUk1fQUJTMzJfTk9JLCAgICAgICAgICAgICA1NSkgICAgIFwKPiArX0VM
Rl9ERUZJTkVfUkVMT0MoUl9BUk1fUkVMMzJfTk9JLCAgICAgICAgICAgICA1NikgICAgIFwKPiAr
X0VMRl9ERUZJTkVfUkVMT0MoUl9BUk1fQUxVX1BDX0cwX05DLCAgICAgICAgICA1NykgICAgIFwK
PiArX0VMRl9ERUZJTkVfUkVMT0MoUl9BUk1fQUxVX1BDX0cwLCAgICAgICAgICAgICA1OCkgICAg
IFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9BUk1fQUxVX1BDX0cxX05DLCAgICAgICAgICA1OSkg
ICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9BUk1fQUxVX1BDX0cxLCAgICAgICAgICAgICA2
MCkgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9BUk1fQUxVX1BDX0cyLCAgICAgICAgICAg
ICA2MSkgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9BUk1fTERSX1BDX0cxLCAgICAgICAg
ICAgICA2MikgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9BUk1fTERSX1BDX0cyLCAgICAg
ICAgICAgICA2MykgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9BUk1fTERSU19QQ19HMCwg
ICAgICAgICAgICA2NCkgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9BUk1fTERSU19QQ19H
MSwgICAgICAgICAgICA2NSkgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9BUk1fTERSU19Q
Q19HMiwgICAgICAgICAgICA2NikgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9BUk1fTERD
X1BDX0cwLCAgICAgICAgICAgICA2NykgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9BUk1f
TERDX1BDX0cxLCAgICAgICAgICAgICA2OCkgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9B
Uk1fTERDX1BDX0cyLCAgICAgICAgICAgICA2OSkgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0Mo
Ul9BUk1fQUxVX1NCX0cwX05DLCAgICAgICAgICA3MCkgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVM
T0MoUl9BUk1fQUxVX1NCX0cwLCAgICAgICAgICAgICA3MSkgICAgIFwKPiArX0VMRl9ERUZJTkVf
UkVMT0MoUl9BUk1fQUxVX1NCX0cxX05DLCAgICAgICAgICA3MikgICAgIFwKPiArX0VMRl9ERUZJ
TkVfUkVMT0MoUl9BUk1fQUxVX1NCX0cxLCAgICAgICAgICAgICA3MykgICAgIFwKPiArX0VMRl9E
RUZJTkVfUkVMT0MoUl9BUk1fQUxVX1NCX0cyLCAgICAgICAgICAgICA3NCkgICAgIFwKPiArX0VM
Rl9ERUZJTkVfUkVMT0MoUl9BUk1fTERSX1NCX0cwLCAgICAgICAgICAgICA3NSkgICAgIFwKPiAr
X0VMRl9ERUZJTkVfUkVMT0MoUl9BUk1fTERSX1NCX0cxLCAgICAgICAgICAgICA3NikgICAgIFwK
PiArX0VMRl9ERUZJTkVfUkVMT0MoUl9BUk1fTERSX1NCX0cyLCAgICAgICAgICAgICA3NykgICAg
IFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9BUk1fTERSU19TQl9HMCwgICAgICAgICAgICA3OCkg
ICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9BUk1fTERSU19TQl9HMSwgICAgICAgICAgICA3
OSkgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9BUk1fTERSU19TQl9HMiwgICAgICAgICAg
ICA4MCkgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9BUk1fTERDX1NCX0cwLCAgICAgICAg
ICAgICA4MSkgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9BUk1fTERDX1NCX0cxLCAgICAg
ICAgICAgICA4MikgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9BUk1fTERDX1NCX0cyLCAg
ICAgICAgICAgICA4MykgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9BUk1fTU9WV19CUkVM
X05DLCAgICAgICAgICA4NCkgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9BUk1fTU9WVF9C
UkVMLCAgICAgICAgICAgICA4NSkgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9BUk1fTU9W
V19CUkVMLCAgICAgICAgICAgICA4NikgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9BUk1f
VEhNX01PVldfQlJFTF9OQywgICAgICA4NykgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9B
Uk1fVEhNX01PVlRfQlJFTCwgICAgICAgICA4OCkgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0Mo
Ul9BUk1fVEhNX01PVldfQlJFTCwgICAgICAgICA4OSkgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVM
T0MoUl9BUk1fVExTX0dPVERFU0MsICAgICAgICAgICA5MCkgICAgIFwKPiArX0VMRl9ERUZJTkVf
UkVMT0MoUl9BUk1fVExTX0NBTEwsICAgICAgICAgICAgICA5MSkgICAgIFwKPiArX0VMRl9ERUZJ
TkVfUkVMT0MoUl9BUk1fVExTX0RFU0NTRVEsICAgICAgICAgICA5MikgICAgIFwKPiArX0VMRl9E
RUZJTkVfUkVMT0MoUl9BUk1fVEhNX1RMU19DQUxMLCAgICAgICAgICA5MykgICAgIFwKPiArX0VM
Rl9ERUZJTkVfUkVMT0MoUl9BUk1fUExUMzJfQUJTLCAgICAgICAgICAgICA5NCkgICAgIFwKPiAr
X0VMRl9ERUZJTkVfUkVMT0MoUl9BUk1fR09UX0FCUywgICAgICAgICAgICAgICA5NSkgICAgIFwK
PiArX0VMRl9ERUZJTkVfUkVMT0MoUl9BUk1fR09UX1BSRUwsICAgICAgICAgICAgICA5NikgICAg
IFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9BUk1fR09UX0JSRUwxMiwgICAgICAgICAgICA5Nykg
ICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9BUk1fR09UT0ZGMTIsICAgICAgICAgICAgICA5
OCkgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9BUk1fR09UUkVMQVgsICAgICAgICAgICAg
ICA5OSkgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9BUk1fR05VX1ZURU5UUlksICAgICAg
ICAgICAxMDApICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9BUk1fR05VX1ZUSU5IRVJJVCwg
ICAgICAgICAxMDEpICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9BUk1fVEhNX0pVTVAxMSwg
ICAgICAgICAgICAxMDIpICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9BUk1fVEhNX0pVTVA4
LCAgICAgICAgICAgICAxMDMpICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9BUk1fVExTX0dE
MzIsICAgICAgICAgICAgICAxMDQpICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9BUk1fVExT
X0xETTMyLCAgICAgICAgICAgICAxMDUpICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9BUk1f
VExTX0xETzMyLCAgICAgICAgICAgICAxMDYpICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9B
Uk1fVExTX0lFMzIsICAgICAgICAgICAgICAxMDcpICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0Mo
Ul9BUk1fVExTX0xFMzIsICAgICAgICAgICAgICAxMDgpICAgIFwKPiArX0VMRl9ERUZJTkVfUkVM
T0MoUl9BUk1fVExTX0xETzEyLCAgICAgICAgICAgICAxMDkpICAgIFwKPiArX0VMRl9ERUZJTkVf
UkVMT0MoUl9BUk1fVExTX0xFMTIsICAgICAgICAgICAgICAxMTApICAgIFwKPiArX0VMRl9ERUZJ
TkVfUkVMT0MoUl9BUk1fVExTX0lFMTJHUCwgICAgICAgICAgICAxMTEpICAgIFwKPiArX0VMRl9E
RUZJTkVfUkVMT0MoUl9BUk1fUFJJVkFURV8wLCAgICAgICAgICAgICAxMTIpICAgIFwKPiArX0VM
Rl9ERUZJTkVfUkVMT0MoUl9BUk1fUFJJVkFURV8xLCAgICAgICAgICAgICAxMTMpICAgIFwKPiAr
X0VMRl9ERUZJTkVfUkVMT0MoUl9BUk1fUFJJVkFURV8yLCAgICAgICAgICAgICAxMTQpICAgIFwK
PiArX0VMRl9ERUZJTkVfUkVMT0MoUl9BUk1fUFJJVkFURV8zLCAgICAgICAgICAgICAxMTUpICAg
IFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9BUk1fUFJJVkFURV80LCAgICAgICAgICAgICAxMTYp
ICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9BUk1fUFJJVkFURV81LCAgICAgICAgICAgICAx
MTcpICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9BUk1fUFJJVkFURV82LCAgICAgICAgICAg
ICAxMTgpICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9BUk1fUFJJVkFURV83LCAgICAgICAg
ICAgICAxMTkpICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9BUk1fUFJJVkFURV84LCAgICAg
ICAgICAgICAxMjApICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9BUk1fUFJJVkFURV85LCAg
ICAgICAgICAgICAxMjEpICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9BUk1fUFJJVkFURV8x
MCwgICAgICAgICAgICAxMjIpICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9BUk1fUFJJVkFU
RV8xMSwgICAgICAgICAgICAxMjMpICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9BUk1fUFJJ
VkFURV8xMiwgICAgICAgICAgICAxMjQpICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9BUk1f
UFJJVkFURV8xMywgICAgICAgICAgICAxMjUpICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9B
Uk1fUFJJVkFURV8xNCwgICAgICAgICAgICAxMjYpICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0Mo
Ul9BUk1fUFJJVkFURV8xNSwgICAgICAgICAgICAxMjcpICAgIFwKPiArX0VMRl9ERUZJTkVfUkVM
T0MoUl9BUk1fTUVfVE9PLCAgICAgICAgICAgICAgICAgICAgICAgIDEyOCkgICAgXAo+ICtfRUxG
X0RFRklORV9SRUxPQyhSX0FSTV9USE1fVExTX0RFU0NTRVExNiwgICAgIDEyOSkgICAgXAo+ICtf
RUxGX0RFRklORV9SRUxPQyhSX0FSTV9USE1fVExTX0RFU0NTRVEzMiwgICAgIDEzMCkgICAgXAo+
ICtfRUxGX0RFRklORV9SRUxPQyhSX0FSTV9USE1fR09UX0JSRUwxMiwgICAgICAgICAgICAgICAg
MTMxKSAgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfQVJNX0lSRUxBVElWRSwgICAgICAgICAg
ICAgMTQwKQo+ICsKPiArI2RlZmluZSAgICAgICAgX0VMRl9ERUZJTkVfSUE2NF9SRUxPQ0FUSU9O
UygpICAgICAgICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9SRUxPQyhSX0lBXzY0X05PTkUs
ICAgICAgICAgICAgICAgICAgICAgICAgMCkgICAgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJf
SUFfNjRfSU1NMTQsICAgICAgICAgICAgICAgMHgyMSkgICBcCj4gK19FTEZfREVGSU5FX1JFTE9D
KFJfSUFfNjRfSU1NMjIsICAgICAgICAgICAgICAgMHgyMikgICBcCj4gK19FTEZfREVGSU5FX1JF
TE9DKFJfSUFfNjRfSU1NNjQsICAgICAgICAgICAgICAgMHgyMykgICBcCj4gK19FTEZfREVGSU5F
X1JFTE9DKFJfSUFfNjRfRElSMzJNU0IsICAgICAgICAgICAgMHgyNCkgICBcCj4gK19FTEZfREVG
SU5FX1JFTE9DKFJfSUFfNjRfRElSMzJMU0IsICAgICAgICAgICAgMHgyNSkgICBcCj4gK19FTEZf
REVGSU5FX1JFTE9DKFJfSUFfNjRfRElSNjRNU0IsICAgICAgICAgICAgMHgyNikgICBcCj4gK19F
TEZfREVGSU5FX1JFTE9DKFJfSUFfNjRfRElSNjRMU0IsICAgICAgICAgICAgMHgyNykgICBcCj4g
K19FTEZfREVGSU5FX1JFTE9DKFJfSUFfNjRfR1BSRUwyMiwgICAgICAgICAgICAgMHgyYSkgICBc
Cj4gK19FTEZfREVGSU5FX1JFTE9DKFJfSUFfNjRfR1BSRUw2NEksICAgICAgICAgICAgMHgyYikg
ICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfSUFfNjRfR1BSRUwzMk1TQiwgICAgICAgICAgMHgy
YykgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfSUFfNjRfR1BSRUwzMkxTQiwgICAgICAgICAg
MHgyZCkgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfSUFfNjRfR1BSRUw2NE1TQiwgICAgICAg
ICAgMHgyZSkgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfSUFfNjRfR1BSRUw2NExTQiwgICAg
ICAgICAgMHgyZikgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfSUFfNjRfTFRPRkYyMiwgICAg
ICAgICAgICAgMHgzMikgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfSUFfNjRfTFRPRkY2NEks
ICAgICAgICAgICAgMHgzMykgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfSUFfNjRfUExUT0ZG
MjIsICAgICAgICAgICAgMHgzYSkgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfSUFfNjRfUExU
T0ZGNjRJLCAgICAgICAgICAgMHgzYikgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfSUFfNjRf
UExUT0ZGNjRNU0IsICAgICAgICAgMHgzZSkgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfSUFf
NjRfUExUT0ZGNjRMU0IsICAgICAgICAgMHgzZikgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJf
SUFfNjRfRlBUUjY0SSwgICAgICAgICAgICAgMHg0MykgICBcCj4gK19FTEZfREVGSU5FX1JFTE9D
KFJfSUFfNjRfRlBUUjMyTVNCLCAgICAgICAgICAgMHg0NCkgICBcCj4gK19FTEZfREVGSU5FX1JF
TE9DKFJfSUFfNjRfRlBUUjMyTFNCLCAgICAgICAgICAgMHg0NSkgICBcCj4gK19FTEZfREVGSU5F
X1JFTE9DKFJfSUFfNjRfRlBUUjY0TVNCLCAgICAgICAgICAgMHg0NikgICBcCj4gK19FTEZfREVG
SU5FX1JFTE9DKFJfSUFfNjRfRlBUUjY0TFNCLCAgICAgICAgICAgMHg0NykgICBcCj4gK19FTEZf
REVGSU5FX1JFTE9DKFJfSUFfNjRfUENSRUw2MEIsICAgICAgICAgICAgMHg0OCkgICBcCj4gK19F
TEZfREVGSU5FX1JFTE9DKFJfSUFfNjRfUENSRUwyMUIsICAgICAgICAgICAgMHg0OSkgICBcCj4g
K19FTEZfREVGSU5FX1JFTE9DKFJfSUFfNjRfUENSRUwyMU0sICAgICAgICAgICAgMHg0YSkgICBc
Cj4gK19FTEZfREVGSU5FX1JFTE9DKFJfSUFfNjRfUENSRUwyMUYsICAgICAgICAgICAgMHg0Yikg
ICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfSUFfNjRfUENSRUwzMk1TQiwgICAgICAgICAgMHg0
YykgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfSUFfNjRfUENSRUwzMkxTQiwgICAgICAgICAg
MHg0ZCkgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfSUFfNjRfUENSRUw2NE1TQiwgICAgICAg
ICAgMHg0ZSkgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfSUFfNjRfUENSRUw2NExTQiwgICAg
ICAgICAgMHg0ZikgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfSUFfNjRfTFRPRkZfRlBUUjIy
LCAgICAgICAgICAgICAgICAweDUyKSAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9JQV82NF9M
VE9GRl9GUFRSNjRJLCAgICAgICAweDUzKSAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9JQV82
NF9MVE9GRl9GUFRSMzJNU0IsICAgICAweDU0KSAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9J
QV82NF9MVE9GRl9GUFRSMzJMU0IsICAgICAweDU1KSAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0Mo
Ul9JQV82NF9MVE9GRl9GUFRSNjRNU0IsICAgICAweDU2KSAgIFwKPiArX0VMRl9ERUZJTkVfUkVM
T0MoUl9JQV82NF9MVE9GRl9GUFRSNjRMU0IsICAgICAweDU3KSAgIFwKPiArX0VMRl9ERUZJTkVf
UkVMT0MoUl9JQV82NF9TRUdSRUwzMk1TQiwgICAgICAgICAweDVjKSAgIFwKPiArX0VMRl9ERUZJ
TkVfUkVMT0MoUl9JQV82NF9TRUdSRUwzMkxTQiwgICAgICAgICAweDVkKSAgIFwKPiArX0VMRl9E
RUZJTkVfUkVMT0MoUl9JQV82NF9TRUdSRUw2NE1TQiwgICAgICAgICAweDVlKSAgIFwKPiArX0VM
Rl9ERUZJTkVfUkVMT0MoUl9JQV82NF9TRUdSRUw2NExTQiwgICAgICAgICAweDVmKSAgIFwKPiAr
X0VMRl9ERUZJTkVfUkVMT0MoUl9JQV82NF9TRUNSRUwzMk1TQiwgICAgICAgICAweDY0KSAgIFwK
PiArX0VMRl9ERUZJTkVfUkVMT0MoUl9JQV82NF9TRUNSRUwzMkxTQiwgICAgICAgICAweDY1KSAg
IFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9JQV82NF9TRUNSRUw2NE1TQiwgICAgICAgICAweDY2
KSAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9JQV82NF9TRUNSRUw2NExTQiwgICAgICAgICAw
eDY3KSAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9JQV82NF9SRUwzMk1TQiwgICAgICAgICAg
ICAweDZjKSAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9JQV82NF9SRUwzMkxTQiwgICAgICAg
ICAgICAweDZkKSAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9JQV82NF9SRUw2NE1TQiwgICAg
ICAgICAgICAweDZlKSAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9JQV82NF9SRUw2NExTQiwg
ICAgICAgICAgICAweDZmKSAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9JQV82NF9MVFYzMk1T
QiwgICAgICAgICAgICAweDc0KSAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9JQV82NF9MVFYz
MkxTQiwgICAgICAgICAgICAweDc1KSAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9JQV82NF9M
VFY2NE1TQiwgICAgICAgICAgICAweDc2KSAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9JQV82
NF9MVFY2NExTQiwgICAgICAgICAgICAweDc3KSAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9J
QV82NF9QQ1JFTDIxQkksICAgICAgICAgICAweDc5KSAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0Mo
Ul9JQV82NF9QQ1JFTDIyLCAgICAgICAgICAgICAweDdBKSAgIFwKPiArX0VMRl9ERUZJTkVfUkVM
T0MoUl9JQV82NF9QQ1JFTDY0SSwgICAgICAgICAgICAweDdCKSAgIFwKPiArX0VMRl9ERUZJTkVf
UkVMT0MoUl9JQV82NF9JUExUTVNCLCAgICAgICAgICAgICAweDgwKSAgIFwKPiArX0VMRl9ERUZJ
TkVfUkVMT0MoUl9JQV82NF9JUExUTFNCLCAgICAgICAgICAgICAweDgxKSAgIFwKPiArX0VMRl9E
RUZJTkVfUkVMT0MoUl9JQV82NF9TVUIsICAgICAgICAgICAgICAgICAweDg1KSAgIFwKPiArX0VM
Rl9ERUZJTkVfUkVMT0MoUl9JQV82NF9MVE9GRjIyWCwgICAgICAgICAgICAweDg2KSAgIFwKPiAr
X0VMRl9ERUZJTkVfUkVMT0MoUl9JQV82NF9MRFhNT1YsICAgICAgICAgICAgICAweDg3KSAgIFwK
PiArX0VMRl9ERUZJTkVfUkVMT0MoUl9JQV82NF9UUFJFTDE0LCAgICAgICAgICAgICAweDkxKSAg
IFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9JQV82NF9UUFJFTDIyLCAgICAgICAgICAgICAweDky
KSAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9JQV82NF9UUFJFTDY0SSwgICAgICAgICAgICAw
eDkzKSAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9JQV82NF9UUFJFTDY0TVNCLCAgICAgICAg
ICAweDk2KSAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9JQV82NF9UUFJFTDY0TFNCLCAgICAg
ICAgICAweDk3KSAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9JQV82NF9MVE9GRl9UUFJFTDIy
LCAgICAgICAweDlBKSAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9JQV82NF9EVFBNT0Q2NE1T
QiwgICAgICAgICAweEE2KSAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9JQV82NF9EVFBNT0Q2
NExTQiwgICAgICAgICAweEE3KSAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9JQV82NF9MVE9G
Rl9EVFBNT0QyMiwgICAgICAweEFBKSAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9JQV82NF9E
VFBSRUwxNCwgICAgICAgICAgICAweEIxKSAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9JQV82
NF9EVFBSRUwyMiwgICAgICAgICAgICAweEIyKSAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9J
QV82NF9EVFBSRUw2NEksICAgICAgICAgICAweEIzKSAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0Mo
Ul9JQV82NF9EVFBSRUwzMk1TQiwgICAgICAgICAweEI0KSAgIFwKPiArX0VMRl9ERUZJTkVfUkVM
T0MoUl9JQV82NF9EVFBSRUwzMkxTQiwgICAgICAgICAweEI1KSAgIFwKPiArX0VMRl9ERUZJTkVf
UkVMT0MoUl9JQV82NF9EVFBSRUw2NE1TQiwgICAgICAgICAweEI2KSAgIFwKPiArX0VMRl9ERUZJ
TkVfUkVMT0MoUl9JQV82NF9EVFBSRUw2NExTQiwgICAgICAgICAweEI3KSAgIFwKPiArX0VMRl9E
RUZJTkVfUkVMT0MoUl9JQV82NF9MVE9GRl9EVFBSRUwyMiwgICAgICAweEJBKQo+ICsKPiArI2Rl
ZmluZSAgICAgICAgX0VMRl9ERUZJTkVfTUlQU19SRUxPQ0FUSU9OUygpICAgICAgICAgICAgICAg
ICAgXAo+ICtfRUxGX0RFRklORV9SRUxPQyhSX01JUFNfTk9ORSwgICAgICAgICAgICAgICAgIDAp
ICAgICAgXAo+ICtfRUxGX0RFRklORV9SRUxPQyhSX01JUFNfMTYsICAgICAgICAgICAgICAgICAg
IDEpICAgICAgXAo+ICtfRUxGX0RFRklORV9SRUxPQyhSX01JUFNfMzIsICAgICAgICAgICAgICAg
ICAgIDIpICAgICAgXAo+ICtfRUxGX0RFRklORV9SRUxPQyhSX01JUFNfUkVMMzIsICAgICAgICAg
ICAgICAgICAgICAgICAgMykgICAgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfTUlQU18yNiwg
ICAgICAgICAgICAgICAgICAgNCkgICAgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfTUlQU19I
STE2LCAgICAgICAgICAgICAgICAgNSkgICAgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfTUlQ
U19MTzE2LCAgICAgICAgICAgICAgICAgNikgICAgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJf
TUlQU19HUFJFTDE2LCAgICAgICAgICAgICAgNykgICAgICBcCj4gK19FTEZfREVGSU5FX1JFTE9D
KFJfTUlQU19MSVRFUkFMLCAgICAgICAgICAgICAgOCkgICAgICBcCj4gK19FTEZfREVGSU5FX1JF
TE9DKFJfTUlQU19HT1QxNiwgICAgICAgICAgICAgICAgICAgICAgICA5KSAgICAgIFwKPiArX0VM
Rl9ERUZJTkVfUkVMT0MoUl9NSVBTX1BDMTYsICAgICAgICAgICAgICAgICAxMCkgICAgIFwKPiAr
X0VMRl9ERUZJTkVfUkVMT0MoUl9NSVBTX0NBTEwxNiwgICAgICAgICAgICAgICAxMSkgICAgIFwK
PiArX0VMRl9ERUZJTkVfUkVMT0MoUl9NSVBTX0dQUkVMMzIsICAgICAgICAgICAgICAxMikgICAg
IFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9NSVBTXzY0LCAgICAgICAgICAgICAgICAgICAxOCkg
ICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9NSVBTX0dPVEhJMTYsICAgICAgICAgICAgICAy
MSkgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9NSVBTX0dPVExPMTYsICAgICAgICAgICAg
ICAyMikgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9NSVBTX0NBTExISTE2LCAgICAgICAg
ICAgICAzMCkgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9NSVBTX0NBTExMTzE2LCAgICAg
ICAgICAgICAzMSkgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9NSVBTX1RMU19EVFBNT0Qz
MiwgICAgICAgICAzOCkgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9NSVBTX1RMU19EVFBS
RUwzMiwgICAgICAgICAzOSkgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9NSVBTX1RMU19E
VFBNT0Q2NCwgICAgICAgICA0MCkgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9NSVBTX1RM
U19EVFBSRUw2NCwgICAgICAgICA0MSkgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9NSVBT
X1RMU19HRCwgICAgICAgICAgICAgICA0MikgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9N
SVBTX1RMU19MRE0sICAgICAgICAgICAgICA0MykgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0Mo
Ul9NSVBTX1RMU19EVFBSRUxfSEkxNiwgICAgICA0NCkgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVM
T0MoUl9NSVBTX1RMU19EVFBSRUxfTE8xNiwgICAgICA0NSkgICAgIFwKPiArX0VMRl9ERUZJTkVf
UkVMT0MoUl9NSVBTX1RMU19HT1RUUFJFTCwgICAgICAgICA0NikgICAgIFwKPiArX0VMRl9ERUZJ
TkVfUkVMT0MoUl9NSVBTX1RMU19UUFJFTDMyLCAgICAgICAgICA0NykgICAgIFwKPiArX0VMRl9E
RUZJTkVfUkVMT0MoUl9NSVBTX1RMU19UUFJFTDY0LCAgICAgICAgICA0OCkgICAgIFwKPiArX0VM
Rl9ERUZJTkVfUkVMT0MoUl9NSVBTX1RMU19UUFJFTF9ISTE2LCAgICAgICA0OSkgICAgIFwKPiAr
X0VMRl9ERUZJTkVfUkVMT0MoUl9NSVBTX1RMU19UUFJFTF9MTzE2LCAgICAgICA1MCkKPiArCj4g
KyNkZWZpbmUgICAgICAgIF9FTEZfREVGSU5FX1BQQzMyX1JFTE9DQVRJT05TKCkgICAgICAgICBc
Cj4gK19FTEZfREVGSU5FX1JFTE9DKFJfUFBDX05PTkUsICAgICAgICAgIDApICAgICAgXAo+ICtf
RUxGX0RFRklORV9SRUxPQyhSX1BQQ19BRERSMzIsICAgICAgICAgICAgICAgIDEpICAgICAgXAo+
ICtfRUxGX0RFRklORV9SRUxPQyhSX1BQQ19BRERSMjQsICAgICAgICAgICAgICAgIDIpICAgICAg
XAo+ICtfRUxGX0RFRklORV9SRUxPQyhSX1BQQ19BRERSMTYsICAgICAgICAgICAgICAgIDMpICAg
ICAgXAo+ICtfRUxGX0RFRklORV9SRUxPQyhSX1BQQ19BRERSMTZfTE8sICAgICA0KSAgICAgIFwK
PiArX0VMRl9ERUZJTkVfUkVMT0MoUl9QUENfQUREUjE2X0hJLCAgICAgNSkgICAgICBcCj4gK19F
TEZfREVGSU5FX1JFTE9DKFJfUFBDX0FERFIxNl9IQSwgICAgIDYpICAgICAgXAo+ICtfRUxGX0RF
RklORV9SRUxPQyhSX1BQQ19BRERSMTQsICAgICAgICAgICAgICAgIDcpICAgICAgXAo+ICtfRUxG
X0RFRklORV9SRUxPQyhSX1BQQ19BRERSMTRfQlJUQUtFTiwgICAgICAgIDgpICAgICAgXAo+ICtf
RUxGX0RFRklORV9SRUxPQyhSX1BQQ19BRERSMTRfQlJOVEFLRU4sIDkpICAgIFwKPiArX0VMRl9E
RUZJTkVfUkVMT0MoUl9QUENfUkVMMjQsICAgICAgICAgMTApICAgICBcCj4gK19FTEZfREVGSU5F
X1JFTE9DKFJfUFBDX1JFTDE0LCAgICAgICAgIDExKSAgICAgXAo+ICtfRUxGX0RFRklORV9SRUxP
QyhSX1BQQ19SRUwxNF9CUlRBS0VOLCAxMikgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9Q
UENfUkVMMTRfQlJOVEFLRU4sICAgICAgICAxMykgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0Mo
Ul9QUENfR09UMTYsICAgICAgICAgMTQpICAgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfUFBD
X0dPVDE2X0xPLCAgICAgIDE1KSAgICAgXAo+ICtfRUxGX0RFRklORV9SRUxPQyhSX1BQQ19HT1Qx
Nl9ISSwgICAgICAxNikgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9QUENfR09UMTZfSEEs
ICAgICAgMTcpICAgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfUFBDX1BMVFJFTDI0LCAgICAg
IDE4KSAgICAgXAo+ICtfRUxGX0RFRklORV9SRUxPQyhSX1BQQ19DT1BZLCAgICAgICAgICAxOSkg
ICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9QUENfR0xPQl9EQVQsICAgICAgMjApICAgICBc
Cj4gK19FTEZfREVGSU5FX1JFTE9DKFJfUFBDX0pNUF9TTE9ULCAgICAgIDIxKSAgICAgXAo+ICtf
RUxGX0RFRklORV9SRUxPQyhSX1BQQ19SRUxBVElWRSwgICAgICAyMikgICAgIFwKPiArX0VMRl9E
RUZJTkVfUkVMT0MoUl9QUENfTE9DQUwyNFBDLCAgICAgMjMpICAgICBcCj4gK19FTEZfREVGSU5F
X1JFTE9DKFJfUFBDX1VBRERSMzIsICAgICAgIDI0KSAgICAgXAo+ICtfRUxGX0RFRklORV9SRUxP
QyhSX1BQQ19VQUREUjE2LCAgICAgICAyNSkgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9Q
UENfUkVMMzIsICAgICAgICAgMjYpICAgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfUFBDX1BM
VDMyLCAgICAgICAgIDI3KSAgICAgXAo+ICtfRUxGX0RFRklORV9SRUxPQyhSX1BQQ19QTFRSRUwz
MiwgICAgICAyOCkgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9QUENfUExUMTZfTE8sICAg
ICAgMjkpICAgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfUFBDX1BMVDE2X0hJLCAgICAgIDMw
KSAgICAgXAo+ICtfRUxGX0RFRklORV9SRUxPQyhSX1BQQ19QTFQxNl9IQSwgICAgICAzMSkgICAg
IFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9QUENfU0RBUkVMMTYsICAgICAgMzIpICAgICBcCj4g
K19FTEZfREVGSU5FX1JFTE9DKFJfUFBDX1NFQ1RPRkYsICAgICAgIDMzKSAgICAgXAo+ICtfRUxG
X0RFRklORV9SRUxPQyhSX1BQQ19TRUNUT0ZGX0xPLCAgICAzNCkgICAgIFwKPiArX0VMRl9ERUZJ
TkVfUkVMT0MoUl9QUENfU0VDVE9GRl9ISSwgICAgMzUpICAgICBcCj4gK19FTEZfREVGSU5FX1JF
TE9DKFJfUFBDX1NFQ1RPRkZfSEEsICAgIDM2KSAgICAgXAo+ICtfRUxGX0RFRklORV9SRUxPQyhS
X1BQQ19BRERSMzAsICAgICAgICAgICAgICAgIDM3KSAgICAgXAo+ICtfRUxGX0RFRklORV9SRUxP
QyhSX1BQQ19UTFMsICAgICAgICAgICA2NykgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9Q
UENfRFRQTU9EMzIsICAgICAgNjgpICAgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfUFBDX1RQ
UkVMMTYsICAgICAgIDY5KSAgICAgXAo+ICtfRUxGX0RFRklORV9SRUxPQyhSX1BQQ19UUFJFTDE2
X0xPLCAgICA3MCkgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9QUENfVFBSRUwxNl9ISSwg
ICAgNzEpICAgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfUFBDX1RQUkVMMTZfSEEsICAgIDcy
KSAgICAgXAo+ICtfRUxGX0RFRklORV9SRUxPQyhSX1BQQ19UUFJFTDMyLCAgICAgICA3MykgICAg
IFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9QUENfRFRQUkVMMTYsICAgICAgNzQpICAgICBcCj4g
K19FTEZfREVGSU5FX1JFTE9DKFJfUFBDX0RUUFJFTDE2X0xPLCAgIDc1KSAgICAgXAo+ICtfRUxG
X0RFRklORV9SRUxPQyhSX1BQQ19EVFBSRUwxNl9ISSwgICA3NikgICAgIFwKPiArX0VMRl9ERUZJ
TkVfUkVMT0MoUl9QUENfRFRQUkVMMTZfSEEsICAgNzcpICAgICBcCj4gK19FTEZfREVGSU5FX1JF
TE9DKFJfUFBDX0RUUFJFTDMyLCAgICAgIDc4KSAgICAgXAo+ICtfRUxGX0RFRklORV9SRUxPQyhS
X1BQQ19HT1RfVExTR0QxNiwgICA3OSkgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9QUENf
R09UX1RMU0dEMTZfTE8sICAgICAgICA4MCkgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9Q
UENfR09UX1RMU0dEMTZfSEksICAgICAgICA4MSkgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0Mo
Ul9QUENfR09UX1RMU0dEMTZfSEEsICAgICAgICA4MikgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVM
T0MoUl9QUENfR09UX1RMU0xEMTYsICAgODMpICAgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJf
UFBDX0dPVF9UTFNMRDE2X0xPLCAgICAgICAgODQpICAgICBcCj4gK19FTEZfREVGSU5FX1JFTE9D
KFJfUFBDX0dPVF9UTFNMRDE2X0hJLCAgICAgICAgODUpICAgICBcCj4gK19FTEZfREVGSU5FX1JF
TE9DKFJfUFBDX0dPVF9UTFNMRDE2X0hBLCAgICAgICAgODYpICAgICBcCj4gK19FTEZfREVGSU5F
X1JFTE9DKFJfUFBDX0dPVF9UUFJFTDE2LCAgIDg3KSAgICAgXAo+ICtfRUxGX0RFRklORV9SRUxP
QyhSX1BQQ19HT1RfVFBSRUwxNl9MTywgICAgICAgIDg4KSAgICAgXAo+ICtfRUxGX0RFRklORV9S
RUxPQyhSX1BQQ19HT1RfVFBSRUwxNl9ISSwgICAgICAgIDg5KSAgICAgXAo+ICtfRUxGX0RFRklO
RV9SRUxPQyhSX1BQQ19HT1RfVFBSRUwxNl9IQSwgICAgICAgIDkwKSAgICAgXAo+ICtfRUxGX0RF
RklORV9SRUxPQyhSX1BQQ19HT1RfRFRQUkVMMTYsICA5MSkgICAgIFwKPiArX0VMRl9ERUZJTkVf
UkVMT0MoUl9QUENfR09UX0RUUFJFTDE2X0xPLCA5MikgICBcCj4gK19FTEZfREVGSU5FX1JFTE9D
KFJfUFBDX0dPVF9EVFBSRUwxNl9ISSwgOTMpICAgXAo+ICtfRUxGX0RFRklORV9SRUxPQyhSX1BQ
Q19HT1RfRFRQUkVMMTZfSEEsIDk0KSAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9QUENfVExT
R0QsICAgICAgICAgOTUpICAgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfUFBDX1RMU0xELCAg
ICAgICAgIDk2KSAgICAgXAo+ICtfRUxGX0RFRklORV9SRUxPQyhSX1BQQ19FTUJfTkFERFIzMiwg
ICAxMDEpICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9QUENfRU1CX05BRERSMTYsICAgMTAy
KSAgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfUFBDX0VNQl9OQUREUjE2X0xPLCAgICAgICAg
MTAzKSAgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfUFBDX0VNQl9OQUREUjE2X0hJLCAgICAg
ICAgMTA0KSAgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfUFBDX0VNQl9OQUREUjE2X0hBLCAg
ICAgICAgMTA1KSAgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfUFBDX0VNQl9TREFJMTYsICAg
IDEwNikgICAgXAo+ICtfRUxGX0RFRklORV9SRUxPQyhSX1BQQ19FTUJfU0RBMkkxNiwgICAxMDcp
ICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9QUENfRU1CX1NEQTJSRUwsICAgMTA4KSAgICBc
Cj4gK19FTEZfREVGSU5FX1JFTE9DKFJfUFBDX0VNQl9TREEyMSwgICAgIDEwOSkgICAgXAo+ICtf
RUxGX0RFRklORV9SRUxPQyhSX1BQQ19FTUJfTVJLUkVGLCAgICAxMTApICAgIFwKPiArX0VMRl9E
RUZJTkVfUkVMT0MoUl9QUENfRU1CX1JFTFNFQzE2LCAgMTExKSAgICBcCj4gK19FTEZfREVGSU5F
X1JFTE9DKFJfUFBDX0VNQl9SRUxTVF9MTywgIDExMikgICAgXAo+ICtfRUxGX0RFRklORV9SRUxP
QyhSX1BQQ19FTUJfUkVMU1RfSEksICAxMTMpICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9Q
UENfRU1CX1JFTFNUX0hBLCAgMTE0KSAgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfUFBDX0VN
Ql9CSVRfRkxELCAgIDExNSkgICAgXAo+ICtfRUxGX0RFRklORV9SRUxPQyhSX1BQQ19FTUJfUkVM
U0RBLCAgICAxMTYpICAgIFwKPiArCj4gKyNkZWZpbmUgICAgICAgIF9FTEZfREVGSU5FX1BQQzY0
X1JFTE9DQVRJT05TKCkgICAgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9Q
UEM2NF9OT05FLCAgICAgICAgICAgICAgICAgICAgICAgIDApICAgICAgXAo+ICtfRUxGX0RFRklO
RV9SRUxPQyhSX1BQQzY0X0FERFIzMiwgICAgICAgICAgICAgIDEpICAgICAgXAo+ICtfRUxGX0RF
RklORV9SRUxPQyhSX1BQQzY0X0FERFIyNCwgICAgICAgICAgICAgIDIpICAgICAgXAo+ICtfRUxG
X0RFRklORV9SRUxPQyhSX1BQQzY0X0FERFIxNiwgICAgICAgICAgICAgIDMpICAgICAgXAo+ICtf
RUxGX0RFRklORV9SRUxPQyhSX1BQQzY0X0FERFIxNl9MTywgICAgICAgICAgIDQpICAgICAgXAo+
ICtfRUxGX0RFRklORV9SRUxPQyhSX1BQQzY0X0FERFIxNl9ISSwgICAgICAgICAgIDUpICAgICAg
XAo+ICtfRUxGX0RFRklORV9SRUxPQyhSX1BQQzY0X0FERFIxNl9IQSwgICAgICAgICAgIDYpICAg
ICAgXAo+ICtfRUxGX0RFRklORV9SRUxPQyhSX1BQQzY0X0FERFIxNCwgICAgICAgICAgICAgIDcp
ICAgICAgXAo+ICtfRUxGX0RFRklORV9SRUxPQyhSX1BQQzY0X0FERFIxNF9CUlRBS0VOLCAgICAg
IDgpICAgICAgXAo+ICtfRUxGX0RFRklORV9SRUxPQyhSX1BQQzY0X0FERFIxNF9CUk5UQUtFTiwg
ICAgIDkpICAgICAgXAo+ICtfRUxGX0RFRklORV9SRUxPQyhSX1BQQzY0X1JFTDI0LCAgICAgICAg
ICAgICAgIDEwKSAgICAgXAo+ICtfRUxGX0RFRklORV9SRUxPQyhSX1BQQzY0X1JFTDE0LCAgICAg
ICAgICAgICAgIDExKSAgICAgXAo+ICtfRUxGX0RFRklORV9SRUxPQyhSX1BQQzY0X1JFTDE0X0JS
VEFLRU4sICAgICAgIDEyKSAgICAgXAo+ICtfRUxGX0RFRklORV9SRUxPQyhSX1BQQzY0X1JFTDE0
X0JSTlRBS0VOLCAgICAgIDEzKSAgICAgXAo+ICtfRUxGX0RFRklORV9SRUxPQyhSX1BQQzY0X0dP
VDE2LCAgICAgICAgICAgICAgIDE0KSAgICAgXAo+ICtfRUxGX0RFRklORV9SRUxPQyhSX1BQQzY0
X0dPVDE2X0xPLCAgICAgICAgICAgIDE1KSAgICAgXAo+ICtfRUxGX0RFRklORV9SRUxPQyhSX1BQ
QzY0X0dPVDE2X0hJLCAgICAgICAgICAgIDE2KSAgICAgXAo+ICtfRUxGX0RFRklORV9SRUxPQyhS
X1BQQzY0X0dPVDE2X0hBLCAgICAgICAgICAgIDE3KSAgICAgXAo+ICtfRUxGX0RFRklORV9SRUxP
QyhSX1BQQzY0X0NPUFksICAgICAgICAgICAgICAgICAgICAgICAgMTkpICAgICBcCj4gK19FTEZf
REVGSU5FX1JFTE9DKFJfUFBDNjRfR0xPQl9EQVQsICAgICAgICAgICAgMjApICAgICBcCj4gK19F
TEZfREVGSU5FX1JFTE9DKFJfUFBDNjRfSk1QX1NMT1QsICAgICAgICAgICAgMjEpICAgICBcCj4g
K19FTEZfREVGSU5FX1JFTE9DKFJfUFBDNjRfUkVMQVRJVkUsICAgICAgICAgICAgMjIpICAgICBc
Cj4gK19FTEZfREVGSU5FX1JFTE9DKFJfUFBDNjRfVUFERFIzMiwgICAgICAgICAgICAgMjQpICAg
ICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfUFBDNjRfVUFERFIxNiwgICAgICAgICAgICAgMjUp
ICAgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfUFBDNjRfUkVMMzIsICAgICAgICAgICAgICAg
MjYpICAgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfUFBDNjRfUExUMzIsICAgICAgICAgICAg
ICAgMjcpICAgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfUFBDNjRfUExUUkVMMzIsICAgICAg
ICAgICAgMjgpICAgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfUFBDNjRfUExUMTZfTE8sICAg
ICAgICAgICAgMjkpICAgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfUFBDNjRfUExUMTZfSEks
ICAgICAgICAgICAgMzApICAgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfUFBDNjRfUExUMTZf
SEEsICAgICAgICAgICAgMzEpICAgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfUFBDNjRfU0VD
VE9GRiwgICAgICAgICAgICAgMzMpICAgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfUFBDNjRf
U0VDVE9GRl9MTywgICAgICAgICAgMzQpICAgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfUFBD
NjRfU0VDVE9GRl9ISSwgICAgICAgICAgMzUpICAgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJf
UFBDNjRfU0VDVE9GRl9IQSwgICAgICAgICAgMzYpICAgICBcCj4gK19FTEZfREVGSU5FX1JFTE9D
KFJfUFBDNjRfQUREUjMwLCAgICAgICAgICAgICAgMzcpICAgICBcCj4gK19FTEZfREVGSU5FX1JF
TE9DKFJfUFBDNjRfQUREUjY0LCAgICAgICAgICAgICAgMzgpICAgICBcCj4gK19FTEZfREVGSU5F
X1JFTE9DKFJfUFBDNjRfQUREUjE2X0hJR0hFUiwgICAgICAgMzkpICAgICBcCj4gK19FTEZfREVG
SU5FX1JFTE9DKFJfUFBDNjRfQUREUjE2X0hJR0hFUkEsICAgICAgNDApICAgICBcCj4gK19FTEZf
REVGSU5FX1JFTE9DKFJfUFBDNjRfQUREUjE2X0hJR0hFU1QsICAgICAgNDEpICAgICBcCj4gK19F
TEZfREVGSU5FX1JFTE9DKFJfUFBDNjRfQUREUjE2X0hJR0hFU1RBLCAgICAgNDIpICAgICBcCj4g
K19FTEZfREVGSU5FX1JFTE9DKFJfUFBDNjRfVUFERFI2NCwgICAgICAgICAgICAgNDMpICAgICBc
Cj4gK19FTEZfREVGSU5FX1JFTE9DKFJfUFBDNjRfUkVMNjQsICAgICAgICAgICAgICAgNDQpICAg
ICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfUFBDNjRfUExUNjQsICAgICAgICAgICAgICAgNDUp
ICAgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfUFBDNjRfUExUUkVMNjQsICAgICAgICAgICAg
NDYpICAgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfUFBDNjRfVE9DMTYsICAgICAgICAgICAg
ICAgNDcpICAgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfUFBDNjRfVE9DMTZfTE8sICAgICAg
ICAgICAgNDgpICAgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfUFBDNjRfVE9DMTZfSEksICAg
ICAgICAgICAgNDkpICAgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfUFBDNjRfVE9DMTZfSEEs
ICAgICAgICAgICAgNTApICAgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfUFBDNjRfVE9DLCAg
ICAgICAgICAgICAgICAgNTEpICAgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfUFBDNjRfUExU
R09UMTYsICAgICAgICAgICAgNTIpICAgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfUFBDNjRf
UExUR09UMTZfTE8sICAgICAgICAgNTMpICAgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfUFBD
NjRfUExUR09UMTZfSEksICAgICAgICAgNTQpICAgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJf
UFBDNjRfUExUR09UMTZfSEEsICAgICAgICAgNTUpICAgICBcCj4gK19FTEZfREVGSU5FX1JFTE9D
KFJfUFBDNjRfQUREUjE2X0RTLCAgICAgICAgICAgNTYpICAgICBcCj4gK19FTEZfREVGSU5FX1JF
TE9DKFJfUFBDNjRfQUREUjE2X0xPX0RTLCAgICAgICAgICAgICAgICA1NykgICAgIFwKPiArX0VM
Rl9ERUZJTkVfUkVMT0MoUl9QUEM2NF9HT1QxNl9EUywgICAgICAgICAgICA1OCkgICAgIFwKPiAr
X0VMRl9ERUZJTkVfUkVMT0MoUl9QUEM2NF9HT1QxNl9MT19EUywgICAgICAgICA1OSkgICAgIFwK
PiArX0VMRl9ERUZJTkVfUkVMT0MoUl9QUEM2NF9QTFQxNl9MT19EUywgICAgICAgICA2MCkgICAg
IFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9QUEM2NF9TRUNUT0ZGX0RTLCAgICAgICAgICA2MSkg
ICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9QUEM2NF9TRUNUT0ZGX0xPX0RTLCAgICAgICA2
MikgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9QUEM2NF9UT0MxNl9EUywgICAgICAgICAg
ICA2MykgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9QUEM2NF9UT0MxNl9MT19EUywgICAg
ICAgICA2NCkgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9QUEM2NF9QTFRHT1QxNl9EUywg
ICAgICAgICA2NSkgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9QUEM2NF9QTFRHT1QxNl9M
T19EUywgICAgICA2NikgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9QUEM2NF9UTFMsICAg
ICAgICAgICAgICAgICA2NykgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9QUEM2NF9EVFBN
T0Q2NCwgICAgICAgICAgICA2OCkgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9QUEM2NF9U
UFJFTDE2LCAgICAgICAgICAgICA2OSkgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9QUEM2
NF9UUFJFTDE2X0xPLCAgICAgICAgICA2MCkgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9Q
UEM2NF9UUFJFTDE2X0hJLCAgICAgICAgICA3MSkgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0Mo
Ul9QUEM2NF9UUFJFTDE2X0hBLCAgICAgICAgICA3MikgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVM
T0MoUl9QUEM2NF9UUFJFTDY0LCAgICAgICAgICAgICA3MykgICAgIFwKPiArX0VMRl9ERUZJTkVf
UkVMT0MoUl9QUEM2NF9EVFBSRUwxNiwgICAgICAgICAgICA3NCkgICAgIFwKPiArX0VMRl9ERUZJ
TkVfUkVMT0MoUl9QUEM2NF9EVFBSRUwxNl9MTywgICAgICAgICA3NSkgICAgIFwKPiArX0VMRl9E
RUZJTkVfUkVMT0MoUl9QUEM2NF9EVFBSRUwxNl9ISSwgICAgICAgICA3NikgICAgIFwKPiArX0VM
Rl9ERUZJTkVfUkVMT0MoUl9QUEM2NF9EVFBSRUwxNl9IQSwgICAgICAgICA3NykgICAgIFwKPiAr
X0VMRl9ERUZJTkVfUkVMT0MoUl9QUEM2NF9EVFBSRUw2NCwgICAgICAgICAgICA3OCkgICAgIFwK
PiArX0VMRl9ERUZJTkVfUkVMT0MoUl9QUEM2NF9HT1RfVExTR0QxNiwgICAgICAgICA3OSkgICAg
IFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9QUEM2NF9HT1RfVExTR0QxNl9MTywgICAgICA4MCkg
ICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9QUEM2NF9HT1RfVExTR0QxNl9ISSwgICAgICA4
MSkgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9QUEM2NF9HT1RfVExTR0QxNl9IQSwgICAg
ICA4MikgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9QUEM2NF9HT1RfVExTTEQxNiwgICAg
ICAgICA4MykgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9QUEM2NF9HT1RfVExTTEQxNl9M
TywgICAgICA4NCkgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9QUEM2NF9HT1RfVExTTEQx
Nl9ISSwgICAgICA4NSkgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9QUEM2NF9HT1RfVExT
TEQxNl9IQSwgICAgICA4NikgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9QUEM2NF9HT1Rf
VFBSRUwxNl9EUywgICAgICA4NykgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9QUEM2NF9H
T1RfVFBSRUwxNl9MT19EUywgICA4OCkgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9QUEM2
NF9HT1RfVFBSRUwxNl9ISSwgICAgICA4OSkgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9Q
UEM2NF9HT1RfVFBSRUwxNl9IQSwgICAgICA5MCkgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0Mo
Ul9QUEM2NF9HT1RfRFRQUkVMMTZfRFMsICAgICA5MSkgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVM
T0MoUl9QUEM2NF9HT1RfRFRQUkVMMTZfTE9fRFMsICA5MikgICAgIFwKPiArX0VMRl9ERUZJTkVf
UkVMT0MoUl9QUEM2NF9HT1RfRFRQUkVMMTZfSEksICAgICA5MykgICAgIFwKPiArX0VMRl9ERUZJ
TkVfUkVMT0MoUl9QUEM2NF9HT1RfRFRQUkVMMTZfSEEsICAgICA5NCkgICAgIFwKPiArX0VMRl9E
RUZJTkVfUkVMT0MoUl9QUEM2NF9UUFJFTDE2X0RTLCAgICAgICAgICA5NSkgICAgIFwKPiArX0VM
Rl9ERUZJTkVfUkVMT0MoUl9QUEM2NF9UUFJFTDE2X0xPX0RTLCAgICAgICA5NikgICAgIFwKPiAr
X0VMRl9ERUZJTkVfUkVMT0MoUl9QUEM2NF9UUFJFTDE2X0hJR0hFUiwgICAgICA5NykgICAgIFwK
PiArX0VMRl9ERUZJTkVfUkVMT0MoUl9QUEM2NF9UUFJFTDE2X0hJR0hFUkEsICAgICA5OCkgICAg
IFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9QUEM2NF9UUFJFTDE2X0hJR0hFU1QsICAgICA5OSkg
ICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9QUEM2NF9UUFJFTDE2X0hJR0hFU1RBLCAgICAx
MDApICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9QUEM2NF9EVFBSRUwxNl9EUywgICAgICAg
ICAxMDEpICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9QUEM2NF9EVFBSRUwxNl9MT19EUywg
ICAgICAxMDIpICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9QUEM2NF9EVFBSRUwxNl9ISUdI
RVIsICAgICAxMDMpICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9QUEM2NF9EVFBSRUwxNl9I
SUdIRVJBLCAgICAxMDQpICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9QUEM2NF9EVFBSRUwx
Nl9ISUdIRVNULCAgICAxMDUpICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9QUEM2NF9EVFBS
RUwxNl9ISUdIRVNUQSwgICAxMDYpICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9QUEM2NF9U
TFNHRCwgICAgICAgICAgICAgICAxMDcpICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9QUEM2
NF9UTFNMRCwgICAgICAgICAgICAgICAxMDgpCj4gKwo+ICsjZGVmaW5lICAgICAgICBfRUxGX0RF
RklORV9SSVNDVl9SRUxPQ0FUSU9OUygpICAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5F
X1JFTE9DKFJfUklTQ1ZfTk9ORSwgICAgICAgICAgICAgICAgICAgICAgICAwKSAgICAgIFwKPiAr
X0VMRl9ERUZJTkVfUkVMT0MoUl9SSVNDVl8zMiwgICAgICAgICAgICAgICAgICAxKSAgICAgIFwK
PiArX0VMRl9ERUZJTkVfUkVMT0MoUl9SSVNDVl82NCwgICAgICAgICAgICAgICAgICAyKSAgICAg
IFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9SSVNDVl9SRUxBVElWRSwgICAgICAgICAgICAzKSAg
ICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9SSVNDVl9DT1BZLCAgICAgICAgICAgICAgICAg
ICAgICAgIDQpICAgICAgXAo+ICtfRUxGX0RFRklORV9SRUxPQyhSX1JJU0NWX0pVTVBfU0xPVCwg
ICAgICAgICAgIDUpICAgICAgXAo+ICtfRUxGX0RFRklORV9SRUxPQyhSX1JJU0NWX1RMU19EVFBN
T0QzMiwgICAgICAgICAgICAgICAgNikgICAgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfUklT
Q1ZfVExTX0RUUE1PRDY0LCAgICAgICAgICAgICAgICA3KSAgICAgIFwKPiArX0VMRl9ERUZJTkVf
UkVMT0MoUl9SSVNDVl9UTFNfRFRQUkVMMzIsICAgICAgICAgICAgICAgIDgpICAgICAgXAo+ICtf
RUxGX0RFRklORV9SRUxPQyhSX1JJU0NWX1RMU19EVFBSRUw2NCwgICAgICAgICAgICAgICAgOSkg
ICAgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfUklTQ1ZfVExTX1RQUkVMMzIsICAgICAgICAg
MTApICAgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfUklTQ1ZfVExTX1RQUkVMNjQsICAgICAg
ICAgMTEpICAgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfUklTQ1ZfQlJBTkNILCAgICAgICAg
ICAgICAgMTYpICAgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfUklTQ1ZfSkFMLCAgICAgICAg
ICAgICAgICAgMTcpICAgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfUklTQ1ZfQ0FMTCwgICAg
ICAgICAgICAgICAgICAgICAgICAxOCkgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9SSVND
Vl9DQUxMX1BMVCwgICAgICAgICAgICAxOSkgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9S
SVNDVl9HT1RfSEkyMCwgICAgICAgICAgICAyMCkgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0Mo
Ul9SSVNDVl9UTFNfR09UX0hJMjAsICAgICAgICAgICAgICAgIDIxKSAgICAgXAo+ICtfRUxGX0RF
RklORV9SRUxPQyhSX1JJU0NWX1RMU19HRF9ISTIwLCAgICAgICAgIDIyKSAgICAgXAo+ICtfRUxG
X0RFRklORV9SRUxPQyhSX1JJU0NWX1BDUkVMX0hJMjAsICAgICAgICAgIDIzKSAgICAgXAo+ICtf
RUxGX0RFRklORV9SRUxPQyhSX1JJU0NWX1BDUkVMX0xPMTJfSSwgICAgICAgICAgICAgICAgMjQp
ICAgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfUklTQ1ZfUENSRUxfTE8xMl9TLCAgICAgICAg
ICAgICAgICAyNSkgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9SSVNDVl9ISTIwLCAgICAg
ICAgICAgICAgICAgICAgICAgIDI2KSAgICAgXAo+ICtfRUxGX0RFRklORV9SRUxPQyhSX1JJU0NW
X0xPMTJfSSwgICAgICAgICAgICAgIDI3KSAgICAgXAo+ICtfRUxGX0RFRklORV9SRUxPQyhSX1JJ
U0NWX0xPMTJfUywgICAgICAgICAgICAgIDI4KSAgICAgXAo+ICtfRUxGX0RFRklORV9SRUxPQyhS
X1JJU0NWX1RQUkVMX0hJMjAsICAgICAgICAgIDI5KSAgICAgXAo+ICtfRUxGX0RFRklORV9SRUxP
QyhSX1JJU0NWX1RQUkVMX0xPMTJfSSwgICAgICAgICAgICAgICAgMzApICAgICBcCj4gK19FTEZf
REVGSU5FX1JFTE9DKFJfUklTQ1ZfVFBSRUxfTE8xMl9TLCAgICAgICAgICAgICAgICAzMSkgICAg
IFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9SSVNDVl9UUFJFTF9BREQsICAgICAgICAgICAzMikg
ICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9SSVNDVl9BREQ4LCAgICAgICAgICAgICAgICAg
ICAgICAgIDMzKSAgICAgXAo+ICtfRUxGX0RFRklORV9SRUxPQyhSX1JJU0NWX0FERDE2LCAgICAg
ICAgICAgICAgIDM0KSAgICAgXAo+ICtfRUxGX0RFRklORV9SRUxPQyhSX1JJU0NWX0FERDMyLCAg
ICAgICAgICAgICAgIDM1KSAgICAgXAo+ICtfRUxGX0RFRklORV9SRUxPQyhSX1JJU0NWX0FERDY0
LCAgICAgICAgICAgICAgIDM2KSAgICAgXAo+ICtfRUxGX0RFRklORV9SRUxPQyhSX1JJU0NWX1NV
QjgsICAgICAgICAgICAgICAgICAgICAgICAgMzcpICAgICBcCj4gK19FTEZfREVGSU5FX1JFTE9D
KFJfUklTQ1ZfU1VCMTYsICAgICAgICAgICAgICAgMzgpICAgICBcCj4gK19FTEZfREVGSU5FX1JF
TE9DKFJfUklTQ1ZfU1VCMzIsICAgICAgICAgICAgICAgMzkpICAgICBcCj4gK19FTEZfREVGSU5F
X1JFTE9DKFJfUklTQ1ZfU1VCNjQsICAgICAgICAgICAgICAgNDApICAgICBcCj4gK19FTEZfREVG
SU5FX1JFTE9DKFJfUklTQ1ZfR05VX1ZUSU5IRVJJVCwgICAgICAgNDEpICAgICBcCj4gK19FTEZf
REVGSU5FX1JFTE9DKFJfUklTQ1ZfR05VX1ZURU5UUlksICAgICAgICAgNDIpICAgICBcCj4gK19F
TEZfREVGSU5FX1JFTE9DKFJfUklTQ1ZfQUxJR04sICAgICAgICAgICAgICAgNDMpICAgICBcCj4g
K19FTEZfREVGSU5FX1JFTE9DKFJfUklTQ1ZfUlZDX0JSQU5DSCwgICAgICAgICAgNDQpICAgICBc
Cj4gK19FTEZfREVGSU5FX1JFTE9DKFJfUklTQ1ZfUlZDX0pVTVAsICAgICAgICAgICAgNDUpCj4g
Kwo+ICsjZGVmaW5lICAgICAgICBfRUxGX0RFRklORV9TUEFSQ19SRUxPQ0FUSU9OUygpICAgICAg
ICAgXAo+ICtfRUxGX0RFRklORV9SRUxPQyhSX1NQQVJDX05PTkUsICAgICAgICAgICAgICAgIDAp
ICAgICAgXAo+ICtfRUxGX0RFRklORV9SRUxPQyhSX1NQQVJDXzgsICAgICAgICAgICAxKSAgICAg
IFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9TUEFSQ18xNiwgICAgICAgICAgMikgICAgICBcCj4g
K19FTEZfREVGSU5FX1JFTE9DKFJfU1BBUkNfMzIsICAgICAgICAgIDMpICAgICAgXAo+ICtfRUxG
X0RFRklORV9SRUxPQyhSX1NQQVJDX0RJU1A4LCAgICAgICA0KSAgICAgIFwKPiArX0VMRl9ERUZJ
TkVfUkVMT0MoUl9TUEFSQ19ESVNQMTYsICAgICAgNSkgICAgICBcCj4gK19FTEZfREVGSU5FX1JF
TE9DKFJfU1BBUkNfRElTUDMyLCAgICAgIDYpICAgICAgXAo+ICtfRUxGX0RFRklORV9SRUxPQyhS
X1NQQVJDX1dESVNQMzAsICAgICA3KSAgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9TUEFS
Q19XRElTUDIyLCAgICAgOCkgICAgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfU1BBUkNfSEky
MiwgICAgICAgICAgICAgICAgOSkgICAgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfU1BBUkNf
MjIsICAgICAgICAgIDEwKSAgICAgXAo+ICtfRUxGX0RFRklORV9SRUxPQyhSX1NQQVJDXzEzLCAg
ICAgICAgICAxMSkgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9TUEFSQ19MTzEwLCAgICAg
ICAgICAgICAgICAxMikgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9TUEFSQ19HT1QxMCwg
ICAgICAgMTMpICAgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfU1BBUkNfR09UMTMsICAgICAg
IDE0KSAgICAgXAo+ICtfRUxGX0RFRklORV9SRUxPQyhSX1NQQVJDX0dPVDIyLCAgICAgICAxNSkg
ICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9TUEFSQ19QQzEwLCAgICAgICAgICAgICAgICAx
NikgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9TUEFSQ19QQzIyLCAgICAgICAgICAgICAg
ICAxNykgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9TUEFSQ19XUExUMzAsICAgICAgMTgp
ICAgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfU1BBUkNfQ09QWSwgICAgICAgICAgICAgICAg
MTkpICAgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfU1BBUkNfR0xPQl9EQVQsICAgIDIwKSAg
ICAgXAo+ICtfRUxGX0RFRklORV9SRUxPQyhSX1NQQVJDX0pNUF9TTE9ULCAgICAyMSkgICAgIFwK
PiArX0VMRl9ERUZJTkVfUkVMT0MoUl9TUEFSQ19SRUxBVElWRSwgICAgMjIpICAgICBcCj4gK19F
TEZfREVGSU5FX1JFTE9DKFJfU1BBUkNfVUEzMiwgICAgICAgICAgICAgICAgMjMpICAgICBcCj4g
K19FTEZfREVGSU5FX1JFTE9DKFJfU1BBUkNfUExUMzIsICAgICAgIDI0KSAgICAgXAo+ICtfRUxG
X0RFRklORV9SRUxPQyhSX1NQQVJDX0hJUExUMjIsICAgICAyNSkgICAgIFwKPiArX0VMRl9ERUZJ
TkVfUkVMT0MoUl9TUEFSQ19MT1BMVDEwLCAgICAgMjYpICAgICBcCj4gK19FTEZfREVGSU5FX1JF
TE9DKFJfU1BBUkNfUENQTFQzMiwgICAgIDI3KSAgICAgXAo+ICtfRUxGX0RFRklORV9SRUxPQyhS
X1NQQVJDX1BDUExUMjIsICAgICAyOCkgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9TUEFS
Q19QQ1BMVDEwLCAgICAgMjkpICAgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfU1BBUkNfMTAs
ICAgICAgICAgIDMwKSAgICAgXAo+ICtfRUxGX0RFRklORV9SRUxPQyhSX1NQQVJDXzExLCAgICAg
ICAgICAzMSkgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9TUEFSQ182NCwgICAgICAgICAg
MzIpICAgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfU1BBUkNfT0xPMTAsICAgICAgIDMzKSAg
ICAgXAo+ICtfRUxGX0RFRklORV9SRUxPQyhSX1NQQVJDX0hIMjIsICAgICAgICAgICAgICAgIDM0
KSAgICAgXAo+ICtfRUxGX0RFRklORV9SRUxPQyhSX1NQQVJDX0hNMTAsICAgICAgICAgICAgICAg
IDM1KSAgICAgXAo+ICtfRUxGX0RFRklORV9SRUxPQyhSX1NQQVJDX0xNMjIsICAgICAgICAgICAg
ICAgIDM2KSAgICAgXAo+ICtfRUxGX0RFRklORV9SRUxPQyhSX1NQQVJDX1BDX0hIMjIsICAgICAz
NykgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9TUEFSQ19QQ19ITTEwLCAgICAgMzgpICAg
ICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfU1BBUkNfUENfTE0yMiwgICAgIDM5KSAgICAgXAo+
ICtfRUxGX0RFRklORV9SRUxPQyhSX1NQQVJDX1dESVNQMTYsICAgICA0MCkgICAgIFwKPiArX0VM
Rl9ERUZJTkVfUkVMT0MoUl9TUEFSQ19XRElTUDE5LCAgICAgNDEpICAgICBcCj4gK19FTEZfREVG
SU5FX1JFTE9DKFJfU1BBUkNfNywgICAgICAgICAgIDQzKSAgICAgXAo+ICtfRUxGX0RFRklORV9S
RUxPQyhSX1NQQVJDXzUsICAgICAgICAgICA0NCkgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0Mo
Ul9TUEFSQ182LCAgICAgICAgICAgNDUpICAgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfU1BB
UkNfRElTUDY0LCAgICAgIDQ2KSAgICAgXAo+ICtfRUxGX0RFRklORV9SRUxPQyhSX1NQQVJDX1BM
VDY0LCAgICAgICA0NykgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9TUEFSQ19ISVgyMiwg
ICAgICAgNDgpICAgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfU1BBUkNfTE9YMTAsICAgICAg
IDQ5KSAgICAgXAo+ICtfRUxGX0RFRklORV9SRUxPQyhSX1NQQVJDX0g0NCwgICAgICAgICA1MCkg
ICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9TUEFSQ19NNDQsICAgICAgICAgNTEpICAgICBc
Cj4gK19FTEZfREVGSU5FX1JFTE9DKFJfU1BBUkNfTDQ0LCAgICAgICAgIDUyKSAgICAgXAo+ICtf
RUxGX0RFRklORV9SRUxPQyhSX1NQQVJDX1JFR0lTVEVSLCAgICA1MykgICAgIFwKPiArX0VMRl9E
RUZJTkVfUkVMT0MoUl9TUEFSQ19VQTY0LCAgICAgICAgICAgICAgICA1NCkgICAgIFwKPiArX0VM
Rl9ERUZJTkVfUkVMT0MoUl9TUEFSQ19VQTE2LCAgICAgICAgICAgICAgICA1NSkgICAgIFwKPiAr
X0VMRl9ERUZJTkVfUkVMT0MoUl9TUEFSQ19HT1REQVRBX0hJWDIyLCA4MCkgICBcCj4gK19FTEZf
REVGSU5FX1JFTE9DKFJfU1BBUkNfR09UREFUQV9MT1gxMCwgODEpICAgXAo+ICtfRUxGX0RFRklO
RV9SRUxPQyhSX1NQQVJDX0dPVERBVEFfT1BfSElYMjIsIDgyKSAgICAgICAgXAo+ICtfRUxGX0RF
RklORV9SRUxPQyhSX1NQQVJDX0dPVERBVEFfT1BfTE9YMTAsIDgzKSAgICAgICAgXAo+ICtfRUxG
X0RFRklORV9SRUxPQyhSX1NQQVJDX0dPVERBVEFfT1AsICA4NCkgICAgIFwKPiArX0VMRl9ERUZJ
TkVfUkVMT0MoUl9TUEFSQ19IMzQsICAgICAgICAgODUpCj4gKwo+ICsjZGVmaW5lICAgICAgICBf
RUxGX0RFRklORV9YODZfNjRfUkVMT0NBVElPTlMoKSAgICAgICAgXAo+ICtfRUxGX0RFRklORV9S
RUxPQyhSX1g4Nl82NF9OT05FLCAgICAgICAwKSAgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0Mo
Ul9YODZfNjRfNjQsICAgICAgICAgMSkgICAgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfWDg2
XzY0X1BDMzIsICAgICAgIDIpICAgICAgXAo+ICtfRUxGX0RFRklORV9SRUxPQyhSX1g4Nl82NF9H
T1QzMiwgICAgICAzKSAgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9YODZfNjRfUExUMzIs
ICAgICAgNCkgICAgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfWDg2XzY0X0NPUFksICAgICAg
IDUpICAgICAgXAo+ICtfRUxGX0RFRklORV9SRUxPQyhSX1g4Nl82NF9HTE9CX0RBVCwgICA2KSAg
ICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9YODZfNjRfSlVNUF9TTE9ULCAgNykgICAgICBc
Cj4gK19FTEZfREVGSU5FX1JFTE9DKFJfWDg2XzY0X1JFTEFUSVZFLCAgIDgpICAgICAgXAo+ICtf
RUxGX0RFRklORV9SRUxPQyhSX1g4Nl82NF9HT1RQQ1JFTCwgICA5KSAgICAgIFwKPiArX0VMRl9E
RUZJTkVfUkVMT0MoUl9YODZfNjRfMzIsICAgICAgICAgMTApICAgICBcCj4gK19FTEZfREVGSU5F
X1JFTE9DKFJfWDg2XzY0XzMyUywgICAgICAgICAgICAgICAgMTEpICAgICBcCj4gK19FTEZfREVG
SU5FX1JFTE9DKFJfWDg2XzY0XzE2LCAgICAgICAgIDEyKSAgICAgXAo+ICtfRUxGX0RFRklORV9S
RUxPQyhSX1g4Nl82NF9QQzE2LCAgICAgICAxMykgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0Mo
Ul9YODZfNjRfOCwgICAgICAgICAgMTQpICAgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfWDg2
XzY0X1BDOCwgICAgICAgICAgICAgICAgMTUpICAgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJf
WDg2XzY0X0RUUE1PRDY0LCAgIDE2KSAgICAgXAo+ICtfRUxGX0RFRklORV9SRUxPQyhSX1g4Nl82
NF9EVFBPRkY2NCwgICAxNykgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9YODZfNjRfVFBP
RkY2NCwgICAgMTgpICAgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfWDg2XzY0X1RMU0dELCAg
ICAgIDE5KSAgICAgXAo+ICtfRUxGX0RFRklORV9SRUxPQyhSX1g4Nl82NF9UTFNMRCwgICAgICAy
MCkgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9YODZfNjRfRFRQT0ZGMzIsICAgMjEpICAg
ICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfWDg2XzY0X0dPVFRQT0ZGLCAgIDIyKSAgICAgXAo+
ICtfRUxGX0RFRklORV9SRUxPQyhSX1g4Nl82NF9UUE9GRjMyLCAgICAyMykgICAgIFwKPiArX0VM
Rl9ERUZJTkVfUkVMT0MoUl9YODZfNjRfUEM2NCwgICAgICAgMjQpICAgICBcCj4gK19FTEZfREVG
SU5FX1JFTE9DKFJfWDg2XzY0X0dPVE9GRjY0LCAgIDI1KSAgICAgXAo+ICtfRUxGX0RFRklORV9S
RUxPQyhSX1g4Nl82NF9HT1RQQzMyLCAgICAyNikgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0Mo
Ul9YODZfNjRfR09UNjQsICAgICAgMjcpICAgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfWDg2
XzY0X0dPVFBDUkVMNjQsIDI4KSAgICAgXAo+ICtfRUxGX0RFRklORV9SRUxPQyhSX1g4Nl82NF9H
T1RQQzY0LCAgICAyOSkgICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9YODZfNjRfR09UUExU
NjQsICAgMzApICAgICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfWDg2XzY0X1BMVE9GRjY0LCAg
IDMxKSAgICAgXAo+ICtfRUxGX0RFRklORV9SRUxPQyhSX1g4Nl82NF9TSVpFMzIsICAgICAzMikg
ICAgIFwKPiArX0VMRl9ERUZJTkVfUkVMT0MoUl9YODZfNjRfU0laRTY0LCAgICAgMzMpICAgICBc
Cj4gK19FTEZfREVGSU5FX1JFTE9DKFJfWDg2XzY0X0dPVFBDMzJfVExTREVTQywgMzQpICAgICAg
ICBcCj4gK19FTEZfREVGSU5FX1JFTE9DKFJfWDg2XzY0X1RMU0RFU0NfQ0FMTCwgMzUpICAgXAo+
ICtfRUxGX0RFRklORV9SRUxPQyhSX1g4Nl82NF9UTFNERVNDLCAgICAzNikgICAgIFwKPiArX0VM
Rl9ERUZJTkVfUkVMT0MoUl9YODZfNjRfSVJFTEFUSVZFLCAgMzcpCj4gKwo+ICsjZGVmaW5lICAg
ICAgICBfRUxGX0RFRklORV9SRUxPQ0FUSU9OUygpICAgICAgICAgICAgICAgXAo+ICtfRUxGX0RF
RklORV8zODZfUkVMT0NBVElPTlMoKSAgICAgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVf
QUFSQ0g2NF9SRUxPQ0FUSU9OUygpICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX0FNRDY0
X1JFTE9DQVRJT05TKCkgICAgICAgICAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX0FS
TV9SRUxPQ0FUSU9OUygpICAgICAgICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9JQTY0X1JF
TE9DQVRJT05TKCkgICAgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfTUlQU19SRUxPQ0FU
SU9OUygpICAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX1BQQzMyX1JFTE9DQVRJT05T
KCkgICAgICAgICAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX1BQQzY0X1JFTE9DQVRJ
T05TKCkgICAgICAgICAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX1JJU0NWX1JFTE9D
QVRJT05TKCkgICAgICAgICAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX1NQQVJDX1JF
TE9DQVRJT05TKCkgICAgICAgICAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX1g4Nl82
NF9SRUxPQ0FUSU9OUygpCj4gKwo+ICsjdW5kZWYgX0VMRl9ERUZJTkVfUkVMT0MKPiArI2RlZmlu
ZSAgICAgICAgX0VMRl9ERUZJTkVfUkVMT0MoTiwgVikgICAgICAgICBOID0gViAsCj4gK2VudW0g
ewo+ICsgICAgICAgX0VMRl9ERUZJTkVfUkVMT0NBVElPTlMoKQo+ICsgICAgICAgUl9fTEFTVF9f
Cj4gK307Cj4gKwo+ICsjZGVmaW5lICAgICAgICBQTl9YTlVNICAgICAgICAgICAgICAgICAweEZG
RkZVIC8qIFVzZSBleHRlbmRlZCBzZWN0aW9uIG51bWJlcmluZy4gKi8KPiArCj4gKy8qKgo+ICsg
KiogRUxGIFR5cGVzLgo+ICsgKiovCj4gKwo+ICt0eXBlZGVmIHVpbnQzMl90ICAgICAgIEVsZjMy
X0FkZHI7ICAgICAvKiBQcm9ncmFtIGFkZHJlc3MuICovCj4gK3R5cGVkZWYgdWludDhfdCAgICAg
ICAgICAgICAgICBFbGYzMl9CeXRlOyAgICAgLyogVW5zaWduZWQgdGlueSBpbnRlZ2VyLiAqLwo+
ICt0eXBlZGVmIHVpbnQxNl90ICAgICAgIEVsZjMyX0hhbGY7ICAgICAvKiBVbnNpZ25lZCBtZWRp
dW0gaW50ZWdlci4gKi8KPiArdHlwZWRlZiB1aW50MzJfdCAgICAgICBFbGYzMl9PZmY7ICAgICAg
LyogRmlsZSBvZmZzZXQuICovCj4gK3R5cGVkZWYgdWludDE2X3QgICAgICAgRWxmMzJfU2VjdGlv
bjsgIC8qIFNlY3Rpb24gaW5kZXguICovCj4gK3R5cGVkZWYgaW50MzJfdCAgICAgICAgICAgICAg
ICBFbGYzMl9Td29yZDsgICAgLyogU2lnbmVkIGludGVnZXIuICovCj4gK3R5cGVkZWYgdWludDMy
X3QgICAgICAgRWxmMzJfV29yZDsgICAgIC8qIFVuc2lnbmVkIGludGVnZXIuICovCj4gK3R5cGVk
ZWYgdWludDY0X3QgICAgICAgRWxmMzJfTHdvcmQ7ICAgIC8qIFVuc2lnbmVkIGxvbmcgaW50ZWdl
ci4gKi8KPiArCj4gK3R5cGVkZWYgdWludDY0X3QgICAgICAgRWxmNjRfQWRkcjsgICAgIC8qIFBy
b2dyYW0gYWRkcmVzcy4gKi8KPiArdHlwZWRlZiB1aW50OF90ICAgICAgICAgICAgICAgIEVsZjY0
X0J5dGU7ICAgICAvKiBVbnNpZ25lZCB0aW55IGludGVnZXIuICovCj4gK3R5cGVkZWYgdWludDE2
X3QgICAgICAgRWxmNjRfSGFsZjsgICAgIC8qIFVuc2lnbmVkIG1lZGl1bSBpbnRlZ2VyLiAqLwo+
ICt0eXBlZGVmIHVpbnQ2NF90ICAgICAgIEVsZjY0X09mZjsgICAgICAvKiBGaWxlIG9mZnNldC4g
Ki8KPiArdHlwZWRlZiB1aW50MTZfdCAgICAgICBFbGY2NF9TZWN0aW9uOyAgLyogU2VjdGlvbiBp
bmRleC4gKi8KPiArdHlwZWRlZiBpbnQzMl90ICAgICAgICAgICAgICAgIEVsZjY0X1N3b3JkOyAg
ICAvKiBTaWduZWQgaW50ZWdlci4gKi8KPiArdHlwZWRlZiB1aW50MzJfdCAgICAgICBFbGY2NF9X
b3JkOyAgICAgLyogVW5zaWduZWQgaW50ZWdlci4gKi8KPiArdHlwZWRlZiB1aW50NjRfdCAgICAg
ICBFbGY2NF9Md29yZDsgICAgLyogVW5zaWduZWQgbG9uZyBpbnRlZ2VyLiAqLwo+ICt0eXBlZGVm
IHVpbnQ2NF90ICAgICAgIEVsZjY0X1h3b3JkOyAgICAvKiBVbnNpZ25lZCBsb25nIGludGVnZXIu
ICovCj4gK3R5cGVkZWYgaW50NjRfdCAgICAgICAgICAgICAgICBFbGY2NF9TeHdvcmQ7ICAgLyog
U2lnbmVkIGxvbmcgaW50ZWdlci4gKi8KPiArCj4gKwo+ICsvKgo+ICsgKiBDYXBhYmlsaXR5IGRl
c2NyaXB0b3JzLgo+ICsgKi8KPiArCj4gKy8qIDMyLWJpdCBjYXBhYmlsaXR5IGRlc2NyaXB0b3Iu
ICovCj4gK3R5cGVkZWYgc3RydWN0IHsKPiArICAgICAgIEVsZjMyX1dvcmQgICAgICBjX3RhZzsg
ICAgICAgLyogVHlwZSBvZiBlbnRyeS4gKi8KPiArICAgICAgIHVuaW9uIHsKPiArICAgICAgICAg
ICAgICAgRWxmMzJfV29yZCAgICAgIGNfdmFsOyAvKiBJbnRlZ2VyIHZhbHVlLiAqLwo+ICsgICAg
ICAgICAgICAgICBFbGYzMl9BZGRyICAgICAgY19wdHI7IC8qIFBvaW50ZXIgdmFsdWUuICovCj4g
KyAgICAgICB9IGNfdW47Cj4gK30gRWxmMzJfQ2FwOwo+ICsKPiArLyogNjQtYml0IGNhcGFiaWxp
dHkgZGVzY3JpcHRvci4gKi8KPiArdHlwZWRlZiBzdHJ1Y3Qgewo+ICsgICAgICAgRWxmNjRfWHdv
cmQgICAgIGNfdGFnOyAgICAgICAvKiBUeXBlIG9mIGVudHJ5LiAqLwo+ICsgICAgICAgdW5pb24g
ewo+ICsgICAgICAgICAgICAgICBFbGY2NF9Yd29yZCAgICAgY192YWw7IC8qIEludGVnZXIgdmFs
dWUuICovCj4gKyAgICAgICAgICAgICAgIEVsZjY0X0FkZHIgICAgICBjX3B0cjsgLyogUG9pbnRl
ciB2YWx1ZS4gKi8KPiArICAgICAgIH0gY191bjsKPiArfSBFbGY2NF9DYXA7Cj4gKwo+ICsvKgo+
ICsgKiBNSVBTIC5jb25mbGljdCBzZWN0aW9uIGVudHJpZXMuCj4gKyAqLwo+ICsKPiArLyogMzIt
Yml0IGVudHJ5LiAqLwo+ICt0eXBlZGVmIHN0cnVjdCB7Cj4gKyAgICAgICBFbGYzMl9BZGRyICAg
ICAgY19pbmRleDsKPiArfSBFbGYzMl9Db25mbGljdDsKPiArCj4gKy8qIDY0LWJpdCBlbnRyeS4g
Ki8KPiArdHlwZWRlZiBzdHJ1Y3Qgewo+ICsgICAgICAgRWxmNjRfQWRkciAgICAgIGNfaW5kZXg7
Cj4gK30gRWxmNjRfQ29uZmxpY3Q7Cj4gKwo+ICsvKgo+ICsgKiBEeW5hbWljIHNlY3Rpb24gZW50
cmllcy4KPiArICovCj4gKwo+ICsvKiAzMi1iaXQgZW50cnkuICovCj4gK3R5cGVkZWYgc3RydWN0
IHsKPiArICAgICAgIEVsZjMyX1N3b3JkICAgICBkX3RhZzsgICAgICAgLyogVHlwZSBvZiBlbnRy
eS4gKi8KPiArICAgICAgIHVuaW9uIHsKPiArICAgICAgICAgICAgICAgRWxmMzJfV29yZCAgICAg
IGRfdmFsOyAvKiBJbnRlZ2VyIHZhbHVlLiAqLwo+ICsgICAgICAgICAgICAgICBFbGYzMl9BZGRy
ICAgICAgZF9wdHI7IC8qIFBvaW50ZXIgdmFsdWUuICovCj4gKyAgICAgICB9IGRfdW47Cj4gK30g
RWxmMzJfRHluOwo+ICsKPiArLyogNjQtYml0IGVudHJ5LiAqLwo+ICt0eXBlZGVmIHN0cnVjdCB7
Cj4gKyAgICAgICBFbGY2NF9TeHdvcmQgICAgZF90YWc7ICAgICAgIC8qIFR5cGUgb2YgZW50cnku
ICovCj4gKyAgICAgICB1bmlvbiB7Cj4gKyAgICAgICAgICAgICAgIEVsZjY0X1h3b3JkICAgICBk
X3ZhbDsgLyogSW50ZWdlciB2YWx1ZS4gKi8KPiArICAgICAgICAgICAgICAgRWxmNjRfQWRkciAg
ICAgIGRfcHRyOyAvKiBQb2ludGVyIHZhbHVlOyAqLwo+ICsgICAgICAgfSBkX3VuOwo+ICt9IEVs
ZjY0X0R5bjsKPiArCj4gKwo+ICsvKgo+ICsgKiBUaGUgZXhlY3V0YWJsZSBoZWFkZXIgKEVIRFIp
Lgo+ICsgKi8KPiArCj4gKy8qIDMyIGJpdCBFSERSLiAqLwo+ICt0eXBlZGVmIHN0cnVjdCB7Cj4g
KyAgICAgICB1bnNpZ25lZCBjaGFyICAgZV9pZGVudFtFSV9OSURFTlRdOyAvKiBFTEYgaWRlbnRp
ZmljYXRpb24uICovCj4gKyAgICAgICBFbGYzMl9IYWxmICAgICAgZV90eXBlOyAgICAgIC8qIE9i
amVjdCBmaWxlIHR5cGUgKEVUXyopLiAqLwo+ICsgICAgICAgRWxmMzJfSGFsZiAgICAgIGVfbWFj
aGluZTsgICAvKiBNYWNoaW5lIHR5cGUgKEVNXyopLiAqLwo+ICsgICAgICAgRWxmMzJfV29yZCAg
ICAgIGVfdmVyc2lvbjsgICAvKiBGaWxlIGZvcm1hdCB2ZXJzaW9uIChFVl8qKS4gKi8KPiArICAg
ICAgIEVsZjMyX0FkZHIgICAgICBlX2VudHJ5OyAgICAgLyogU3RhcnQgYWRkcmVzcy4gKi8KPiAr
ICAgICAgIEVsZjMyX09mZiAgICAgICBlX3Bob2ZmOyAgICAgLyogRmlsZSBvZmZzZXQgdG8gdGhl
IFBIRFIgdGFibGUuICovCj4gKyAgICAgICBFbGYzMl9PZmYgICAgICAgZV9zaG9mZjsgICAgIC8q
IEZpbGUgb2Zmc2V0IHRvIHRoZSBTSERSaGVhZGVyLiAqLwo+ICsgICAgICAgRWxmMzJfV29yZCAg
ICAgIGVfZmxhZ3M7ICAgICAvKiBGbGFncyAoRUZfKikuICovCj4gKyAgICAgICBFbGYzMl9IYWxm
ICAgICAgZV9laHNpemU7ICAgIC8qIEVsZiBoZWFkZXIgc2l6ZSBpbiBieXRlcy4gKi8KPiArICAg
ICAgIEVsZjMyX0hhbGYgICAgICBlX3BoZW50c2l6ZTsgLyogUEhEUiB0YWJsZSBlbnRyeSBzaXpl
IGluIGJ5dGVzLiAqLwo+ICsgICAgICAgRWxmMzJfSGFsZiAgICAgIGVfcGhudW07ICAgICAvKiBO
dW1iZXIgb2YgUEhEUiBlbnRyaWVzLiAqLwo+ICsgICAgICAgRWxmMzJfSGFsZiAgICAgIGVfc2hl
bnRzaXplOyAvKiBTSERSIHRhYmxlIGVudHJ5IHNpemUgaW4gYnl0ZXMuICovCj4gKyAgICAgICBF
bGYzMl9IYWxmICAgICAgZV9zaG51bTsgICAgIC8qIE51bWJlciBvZiBTSERSIGVudHJpZXMuICov
Cj4gKyAgICAgICBFbGYzMl9IYWxmICAgICAgZV9zaHN0cm5keDsgIC8qIEluZGV4IG9mIHNlY3Rp
b24gbmFtZSBzdHJpbmcgdGFibGUuICovCj4gK30gRWxmMzJfRWhkcjsKPiArCj4gKwo+ICsvKiA2
NCBiaXQgRUhEUi4gKi8KPiArdHlwZWRlZiBzdHJ1Y3Qgewo+ICsgICAgICAgdW5zaWduZWQgY2hh
ciAgIGVfaWRlbnRbRUlfTklERU5UXTsgLyogRUxGIGlkZW50aWZpY2F0aW9uLiAqLwo+ICsgICAg
ICAgRWxmNjRfSGFsZiAgICAgIGVfdHlwZTsgICAgICAvKiBPYmplY3QgZmlsZSB0eXBlIChFVF8q
KS4gKi8KPiArICAgICAgIEVsZjY0X0hhbGYgICAgICBlX21hY2hpbmU7ICAgLyogTWFjaGluZSB0
eXBlIChFTV8qKS4gKi8KPiArICAgICAgIEVsZjY0X1dvcmQgICAgICBlX3ZlcnNpb247ICAgLyog
RmlsZSBmb3JtYXQgdmVyc2lvbiAoRVZfKikuICovCj4gKyAgICAgICBFbGY2NF9BZGRyICAgICAg
ZV9lbnRyeTsgICAgIC8qIFN0YXJ0IGFkZHJlc3MuICovCj4gKyAgICAgICBFbGY2NF9PZmYgICAg
ICAgZV9waG9mZjsgICAgIC8qIEZpbGUgb2Zmc2V0IHRvIHRoZSBQSERSIHRhYmxlLiAqLwo+ICsg
ICAgICAgRWxmNjRfT2ZmICAgICAgIGVfc2hvZmY7ICAgICAvKiBGaWxlIG9mZnNldCB0byB0aGUg
U0hEUmhlYWRlci4gKi8KPiArICAgICAgIEVsZjY0X1dvcmQgICAgICBlX2ZsYWdzOyAgICAgLyog
RmxhZ3MgKEVGXyopLiAqLwo+ICsgICAgICAgRWxmNjRfSGFsZiAgICAgIGVfZWhzaXplOyAgICAv
KiBFbGYgaGVhZGVyIHNpemUgaW4gYnl0ZXMuICovCj4gKyAgICAgICBFbGY2NF9IYWxmICAgICAg
ZV9waGVudHNpemU7IC8qIFBIRFIgdGFibGUgZW50cnkgc2l6ZSBpbiBieXRlcy4gKi8KPiArICAg
ICAgIEVsZjY0X0hhbGYgICAgICBlX3BobnVtOyAgICAgLyogTnVtYmVyIG9mIFBIRFIgZW50cmll
cy4gKi8KPiArICAgICAgIEVsZjY0X0hhbGYgICAgICBlX3NoZW50c2l6ZTsgLyogU0hEUiB0YWJs
ZSBlbnRyeSBzaXplIGluIGJ5dGVzLiAqLwo+ICsgICAgICAgRWxmNjRfSGFsZiAgICAgIGVfc2hu
dW07ICAgICAvKiBOdW1iZXIgb2YgU0hEUiBlbnRyaWVzLiAqLwo+ICsgICAgICAgRWxmNjRfSGFs
ZiAgICAgIGVfc2hzdHJuZHg7ICAvKiBJbmRleCBvZiBzZWN0aW9uIG5hbWUgc3RyaW5nIHRhYmxl
LiAqLwo+ICt9IEVsZjY0X0VoZHI7Cj4gKwo+ICsKPiArLyoKPiArICogU2hhcmVkIG9iamVjdCBp
bmZvcm1hdGlvbi4KPiArICovCj4gKwo+ICsvKiAzMi1iaXQgZW50cnkuICovCj4gK3R5cGVkZWYg
c3RydWN0IHsKPiArICAgICAgIEVsZjMyX1dvcmQgbF9uYW1lOyAgICAgICAgICAgLyogVGhlIG5h
bWUgb2YgYSBzaGFyZWQgb2JqZWN0LiAqLwo+ICsgICAgICAgRWxmMzJfV29yZCBsX3RpbWVfc3Rh
bXA7ICAgICAvKiAzMi1iaXQgdGltZXN0YW1wLiAqLwo+ICsgICAgICAgRWxmMzJfV29yZCBsX2No
ZWNrc3VtOyAgICAgICAvKiBDaGVja3N1bSBvZiB2aXNpYmxlIHN5bWJvbHMsIHNpemVzLiAqLwo+
ICsgICAgICAgRWxmMzJfV29yZCBsX3ZlcnNpb247ICAgICAgICAvKiBJbnRlcmZhY2UgdmVyc2lv
biBzdHJpbmcgaW5kZXguICovCj4gKyAgICAgICBFbGYzMl9Xb3JkIGxfZmxhZ3M7ICAgICAgICAg
IC8qIEZsYWdzIChMTF8qKS4gKi8KPiArfSBFbGYzMl9MaWI7Cj4gKwo+ICsvKiA2NC1iaXQgZW50
cnkuICovCj4gK3R5cGVkZWYgc3RydWN0IHsKPiArICAgICAgIEVsZjY0X1dvcmQgbF9uYW1lOyAg
ICAgICAgICAgLyogVGhlIG5hbWUgb2YgYSBzaGFyZWQgb2JqZWN0LiAqLwo+ICsgICAgICAgRWxm
NjRfV29yZCBsX3RpbWVfc3RhbXA7ICAgICAvKiAzMi1iaXQgdGltZXN0YW1wLiAqLwo+ICsgICAg
ICAgRWxmNjRfV29yZCBsX2NoZWNrc3VtOyAgICAgICAvKiBDaGVja3N1bSBvZiB2aXNpYmxlIHN5
bWJvbHMsIHNpemVzLiAqLwo+ICsgICAgICAgRWxmNjRfV29yZCBsX3ZlcnNpb247ICAgICAgICAv
KiBJbnRlcmZhY2UgdmVyc2lvbiBzdHJpbmcgaW5kZXguICovCj4gKyAgICAgICBFbGY2NF9Xb3Jk
IGxfZmxhZ3M7ICAgICAgICAgIC8qIEZsYWdzIChMTF8qKS4gKi8KPiArfSBFbGY2NF9MaWI7Cj4g
Kwo+ICsjZGVmaW5lICAgICAgICBfRUxGX0RFRklORV9MTF9GTEFHUygpICAgICAgICAgICAgICAg
ICAgXAo+ICtfRUxGX0RFRklORV9MTChMTF9OT05FLCAgICAgICAgICAgICAgICAgICAgICAgIDAs
ICAgICAgXAo+ICsgICAgICAgIm5vIGZsYWdzIikgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKPiArX0VMRl9ERUZJTkVfTEwoTExfRVhBQ1RfTUFUQ0gsICAgICAgICAgMHgxLCAgICBcCj4g
KyAgICAgICAicmVxdWlyZSBhbiBleGFjdCBtYXRjaCIpICAgICAgICAgICAgICAgXAo+ICtfRUxG
X0RFRklORV9MTChMTF9JR05PUkVfSU5UX1ZFUiwgICAgICAweDIsICAgIFwKPiArICAgICAgICJp
Z25vcmUgdmVyc2lvbiBpbmNvbXBhdGliaWxpdGllcyIpICAgICBcCj4gK19FTEZfREVGSU5FX0xM
KExMX1JFUVVJUkVfTUlOT1IsICAgICAgIDB4NCwgICAgXAo+ICsgICAgICAgIiIpICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfTEwoTExfRVhQT1JU
UywgICAgICAgICAgICAgMHg4LCAgICBcCj4gKyAgICAgICAiIikgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9MTChMTF9ERUxBWV9MT0FELCAgICAg
ICAgICAweDEwLCAgIFwKPiArICAgICAgICIiKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCj4gK19FTEZfREVGSU5FX0xMKExMX0RFTFRBLCAgICAgICAgICAgICAgIDB4MjAs
ICAgXAo+ICsgICAgICAgIiIpCj4gKwo+ICsjdW5kZWYgX0VMRl9ERUZJTkVfTEwKPiArI2RlZmlu
ZSAgICAgICAgX0VMRl9ERUZJTkVfTEwoTiwgViwgREVTQ1IpICAgICBOID0gViAsCj4gK2VudW0g
ewo+ICsgICAgICAgX0VMRl9ERUZJTkVfTExfRkxBR1MoKQo+ICsgICAgICAgTExfX0xBU1RfXwo+
ICt9Owo+ICsKPiArLyoKPiArICogTm90ZSB0YWdzCj4gKyAqLwo+ICsKPiArI2RlZmluZSAgICAg
ICAgX0VMRl9ERUZJTkVfTk9URV9FTlRSWV9UWVBFUygpICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfTlQoTlRfQUJJX1RBRywgICAgIDEsICAgICAgIlRh
ZyBpbmRpY2F0aW5nIHRoZSBBQkkiKSAgICAgICBcCj4gK19FTEZfREVGSU5FX05UKE5UX0dOVV9I
V0NBUCwgICAyLCAgICAgICJIYXJkd2FyZSBjYXBhYmlsaXRpZXMiKSAgICAgICAgXAo+ICtfRUxG
X0RFRklORV9OVChOVF9HTlVfQlVJTERfSUQsICAgICAgICAzLCAgICAgICJCdWlsZCBpZCwgc2V0
IGJ5IGxkKDEpIikgICAgICAgXAo+ICtfRUxGX0RFRklORV9OVChOVF9HTlVfR09MRF9WRVJTSU9O
LCA0LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICJWZXJzaW9u
IG51bWJlciBvZiB0aGUgR05VIGdvbGQgbGlua2VyIikgICAgICAgICAgICAgICAgICAgICAgICBc
Cj4gK19FTEZfREVGSU5FX05UKE5UX1BSU1RBVFVTLCAgICAxLCAgICAgICJQcm9jZXNzIHN0YXR1
cyIpICAgICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9OVChOVF9GUFJFR1NFVCwgICAgMiwg
ICAgICAiRmxvYXRpbmcgcG9pbnQgaW5mb3JtYXRpb24iKSAgIFwKPiArX0VMRl9ERUZJTkVfTlQo
TlRfUFJQU0lORk8sICAgIDMsICAgICAgIlByb2Nlc3MgaW5mb3JtYXRpb24iKSAgICAgICAgICBc
Cj4gK19FTEZfREVGSU5FX05UKE5UX0FVWFYsICAgICAgICAgICAgICAgIDYsICAgICAgIkF1eGls
aWFyeSB2ZWN0b3IiKSAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX05UKE5UX1BSWEZQUkVH
LCAgICAweDQ2RTYyQjdGVUwsICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAg
IkxpbnV4IHVzZXJfeGZwcmVncyBzdHJ1Y3R1cmUiKSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKPiArX0VMRl9ERUZJTkVfTlQoTlRfUFNUQVRVUywgICAgIDEwLCAgICAgIkxpbnV4
IHByb2Nlc3Mgc3RhdHVzIikgICAgICAgICBcCj4gK19FTEZfREVGSU5FX05UKE5UX0ZQUkVHUywg
ICAgICAxMiwgICAgICJMaW51eCBmbG9hdGluZyBwb2ludCByZWdzZXQiKSAgXAo+ICtfRUxGX0RF
RklORV9OVChOVF9QU0lORk8sICAgICAgMTMsICAgICAiTGludXggcHJvY2VzcyBpbmZvcm1hdGlv
biIpICAgIFwKPiArX0VMRl9ERUZJTkVfTlQoTlRfTFdQU1RBVFVTLCAgIDE2LCAgICAgIkxpbnV4
IGx3cHN0YXR1c190IHR5cGUiKSAgICAgICBcCj4gK19FTEZfREVGSU5FX05UKE5UX0xXUFNJTkZP
LCAgICAxNywgICAgICJMaW51eCBsd3BpbmZvX3QgdHlwZSIpCj4gKwo+ICsjdW5kZWYgX0VMRl9E
RUZJTkVfTlQKPiArI2RlZmluZSAgICAgICAgX0VMRl9ERUZJTkVfTlQoTiwgViwgREVTQ1IpICAg
ICBOID0gViAsCj4gK2VudW0gewo+ICsgICAgICAgX0VMRl9ERUZJTkVfTk9URV9FTlRSWV9UWVBF
UygpCj4gKyAgICAgICBOVF9fTEFTVF9fCj4gK307Cj4gKwo+ICsvKiBBbGlhc2VzIGZvciB0aGUg
QUJJIHRhZy4gKi8KPiArI2RlZmluZSAgICAgICAgTlRfRlJFRUJTRF9BQklfVEFHICAgICAgTlRf
QUJJX1RBRwo+ICsjZGVmaW5lICAgICAgICBOVF9HTlVfQUJJX1RBRyAgICAgICAgICBOVF9BQklf
VEFHCj4gKyNkZWZpbmUgICAgICAgIE5UX05FVEJTRF9JREVOVCAgICAgICAgIE5UX0FCSV9UQUcK
PiArI2RlZmluZSAgICAgICAgTlRfT1BFTkJTRF9JREVOVCAgICAgICAgTlRfQUJJX1RBRwo+ICsK
PiArLyoKPiArICogTm90ZSBkZXNjcmlwdG9ycy4KPiArICovCj4gKwo+ICt0eXBlZGVmICAgICAg
ICBzdHJ1Y3Qgewo+ICsgICAgICAgdWludDMyX3QgICAgICAgIG5fbmFtZXN6OyAgICAvKiBMZW5n
dGggb2Ygbm90ZSdzIG5hbWUuICovCj4gKyAgICAgICB1aW50MzJfdCAgICAgICAgbl9kZXNjc3o7
ICAgIC8qIExlbmd0aCBvZiBub3RlJ3MgdmFsdWUuICovCj4gKyAgICAgICB1aW50MzJfdCAgICAg
ICAgbl90eXBlOyAgICAgIC8qIFR5cGUgb2Ygbm90ZS4gKi8KPiArfSBFbGZfTm90ZTsKPiArCj4g
K3R5cGVkZWYgRWxmX05vdGUgRWxmMzJfTmhkcjsgICAgICAgIC8qIDMyLWJpdCBub3RlIGhlYWRl
ci4gKi8KPiArdHlwZWRlZiBFbGZfTm90ZSBFbGY2NF9OaGRyOyAgICAgICAgLyogNjQtYml0IG5v
dGUgaGVhZGVyLiAqLwo+ICsKPiArLyoKPiArICogTUlQUyBFTEYgb3B0aW9ucyBkZXNjcmlwdG9y
IGhlYWRlci4KPiArICovCj4gKwo+ICt0eXBlZGVmIHN0cnVjdCB7Cj4gKyAgICAgICBFbGY2NF9C
eXRlICAgICAga2luZDsgICAgICAgIC8qIFR5cGUgb2Ygb3B0aW9ucy4gKi8KPiArICAgICAgIEVs
ZjY0X0J5dGUgICAgICBzaXplOyAgICAgICAgLyogU2l6ZSBvZiBvcHRpb24gZGVzY3JpcHRvci4g
Ki8KPiArICAgICAgIEVsZjY0X0hhbGYgICAgICBzZWN0aW9uOyAgICAgLyogSW5kZXggb2Ygc2Vj
dGlvbiBhZmZlY3RlZC4gKi8KPiArICAgICAgIEVsZjY0X1dvcmQgICAgICBpbmZvOyAgICAgICAg
LyogS2luZC1zcGVjaWZpYyBpbmZvcm1hdGlvbi4gKi8KPiArfSBFbGZfT3B0aW9uczsKPiArCj4g
Ky8qCj4gKyAqIE9wdGlvbiBraW5kcy4KPiArICovCj4gKwo+ICsjZGVmaW5lICAgICAgICBfRUxG
X0RFRklORV9PUFRJT05fS0lORFMoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAo+ICtfRUxGX0RFRklORV9PREsoT0RLX05VTEwsICAgICAgIDAsICAgICAgInVuZGVmaW5l
ZCIpICAgICAgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfT0RLKE9ES19SRUdJTkZPLCAg
ICAxLCAgICAgICJyZWdpc3RlciB1c2FnZSBpbmZvIikgICAgICAgICBcCj4gK19FTEZfREVGSU5F
X09ESyhPREtfRVhDRVBUSU9OUywgMiwgICAgICAiZXhjZXB0aW9uIHByb2Nlc3NpbmcgaW5mbyIp
ICAgXAo+ICtfRUxGX0RFRklORV9PREsoT0RLX1BBRCwgICAgICAgIDMsICAgICAgInNlY3Rpb24g
cGFkZGluZyIpICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfT0RLKE9ES19IV1BBVENILCAg
ICA0LCAgICAgICJoYXJkd2FyZSBwYXRjaCBhcHBsaWVkIikgICAgICBcCj4gK19FTEZfREVGSU5F
X09ESyhPREtfRklMTCwgICAgICAgNSwgICAgICAiZmlsbCB2YWx1ZSB1c2VkIGJ5IGxpbmtlciIp
ICAgXAo+ICtfRUxGX0RFRklORV9PREsoT0RLX1RBR1MsICAgICAgIDYsICAgICAgInJlc2VydmVk
IHNwYWNlIGZvciB0b29scyIpICAgIFwKPiArX0VMRl9ERUZJTkVfT0RLKE9ES19IV0FORCwgICAg
ICA3LCAgICAgICJoYXJkd2FyZSBBTkQgcGF0Y2ggYXBwbGllZCIpICBcCj4gK19FTEZfREVGSU5F
X09ESyhPREtfSFdPUiwgICAgICAgOCwgICAgICAiaGFyZHdhcmUgT1IgcGF0Y2ggYXBwbGllZCIp
ICAgXAo+ICtfRUxGX0RFRklORV9PREsoT0RLX0dQX0dST1VQLCAgIDksICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICJHUCBncm91cCB0byB1c2UgZm9yIHRl
eHQvZGF0YSBzZWN0aW9ucyIpICAgICAgICAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5F
X09ESyhPREtfSURFTlQsICAgICAgMTAsICAgICAiSUQgaW5mb3JtYXRpb24iKSAgICAgICAgICAg
ICAgXAo+ICtfRUxGX0RFRklORV9PREsoT0RLX1BBR0VTSVpFLCAgIDExLCAgICAgInBhZ2Ugc2l6
ZSBpbmZvbWF0aW9uIikKPiArCj4gKyN1bmRlZiBfRUxGX0RFRklORV9PREsKPiArI2RlZmluZSAg
ICAgICAgX0VMRl9ERUZJTkVfT0RLKE4sIFYsIERFU0NSKSAgICBOID0gViAsCj4gK2VudW0gewo+
ICsgICAgICAgX0VMRl9ERUZJTkVfT1BUSU9OX0tJTkRTKCkKPiArICAgICAgIE9ES19fTEFTVF9f
Cj4gK307Cj4gKwo+ICsvKgo+ICsgKiBPREtfRVhDRVBUSU9OUyBpbmZvIGZpZWxkIG1hc2tzLgo+
ICsgKi8KPiArCj4gKyNkZWZpbmUgICAgICAgIF9FTEZfREVGSU5FX09ES19FWENFUFRJT05TX01B
U0soKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX09FWChP
RVhfRlBVX01JTiwgICAgMHgwMDAwMDAxRlVMLCAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+
ICsgICAgICAgIm1pbmltdW0gRlBVIGV4Y2VwdGlvbiB3aGljaCBtdXN0IGJlIGVuYWJsZWQiKSAg
ICAgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfT0VYKE9FWF9GUFVfTUFYLCAgICAweDAw
MDAxRjAwVUwsICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAibWF4aW11bSBG
UFUgZXhjZXB0aW9uIHdoaWNoIGNhbiBiZSBlbmFibGVkIikgICAgICAgICAgICAgICAgICAgXAo+
ICtfRUxGX0RFRklORV9PRVgoT0VYX1BBR0UwLCAgICAgIDB4MDAwMTAwMDBVTCwgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKPiArICAgICAgICJwYWdlIHplcm8gbXVzdCBiZSBtYXBwZWQiKSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX09FWChP
RVhfU01NLCAgICAgICAgMHgwMDAyMDAwMFVMLCAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+
ICsgICAgICAgInJ1biBpbiBzZXF1ZW50aWFsIG1lbW9yeSBtb2RlIikgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfT0VYKE9FWF9QUkVDSVNFRlAsICAweDAw
MDQwMDAwVUwsICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAicnVuIGluIHBy
ZWNpc2UgRlAgZXhjZXB0aW9uIG1vZGUiKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+
ICtfRUxGX0RFRklORV9PRVgoT0VYX0RJU01JU1MsICAgIDB4MDAwODAwMDBVTCwgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKPiArICAgICAgICJkaXNtaXNzIGludmFsaWQgYWRkcmVzcyB0cmFw
cyIpCj4gKwo+ICsjdW5kZWYgX0VMRl9ERUZJTkVfT0VYCj4gKyNkZWZpbmUgICAgICAgIF9FTEZf
REVGSU5FX09FWChOLCBWLCBERVNDUikgICAgTiA9IFYgLAo+ICtlbnVtIHsKPiArICAgICAgIF9F
TEZfREVGSU5FX09ES19FWENFUFRJT05TX01BU0soKQo+ICsgICAgICAgT0VYX19MQVNUX18KPiAr
fTsKPiArCj4gKy8qCj4gKyAqIE9ES19QQUQgaW5mbyBmaWVsZCBtYXNrcy4KPiArICovCj4gKwo+
ICsjZGVmaW5lICAgICAgICBfRUxGX0RFRklORV9PREtfUEFEX01BU0soKSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9PUEFEKE9QQURfUFJFRklY
LCAgIDB4MDAwMSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICtf
RUxGX0RFRklORV9PUEFEKE9QQURfUE9TVEZJWCwgIDB4MDAwMikgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9PUEFEKE9QQURfU1lNQk9MLCAg
IDB4MDAwNCkKPiArCj4gKyN1bmRlZiBfRUxGX0RFRklORV9PUEFECj4gKyNkZWZpbmUgICAgICAg
IF9FTEZfREVGSU5FX09QQUQoTiwgVikgICAgICAgICAgTiA9IFYgLAo+ICtlbnVtIHsKPiArICAg
ICAgIF9FTEZfREVGSU5FX09ES19QQURfTUFTSygpCj4gKyAgICAgICBPUEFEX19MQVNUX18KPiAr
fTsKPiArCj4gKy8qCj4gKyAqIE9ES19IV1BBVENIIGluZm8gZmllbGQgbWFza3MuCj4gKyAqLwo+
ICsKPiArI2RlZmluZSAgICAgICAgX0VMRl9ERUZJTkVfT0RLX0hXUEFUQ0hfTUFTSygpICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfT0hXKE9IV19SNEtF
T1AsICAgICAweDAwMDAwMDAxVUwsICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAg
ICAicGF0Y2ggZm9yIFI0MDAwIGJyYW5jaCBhdCBlbmQtb2YtcGFnZSBidWciKSAgICAgICAgICAg
ICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9PSFcoT0hXX1I4S1BGRVRDSCwgIDB4MDAwMDAwMDJV
TCwgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICJSODAwMCBwcmVmZXRjaCBi
dWcgbWF5IG9jY3VyIikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gK19FTEZf
REVGSU5FX09IVyhPSFdfUjVLRU9QLCAgICAgMHgwMDAwMDAwNFVMLCAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAo+ICsgICAgICAgInBhdGNoIGZvciBSNTAwMCBicmFuY2ggYXQgZW5kLW9mLXBh
Z2UgYnVnIikgICAgICAgICAgICAgICAgICAgIFwKPiArX0VMRl9ERUZJTkVfT0hXKE9IV19SNUtD
VlRMLCAgICAweDAwMDAwMDA4VUwsICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAg
ICAiUjUwMDAgY3Z0Lltkc10ubCBidWc6IGNsZWFuID09IDEiKSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9PSFcoT0hXX1IxMEtMREwsICAgIDB4MDAwMDAwMTBV
TCwgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICJuZWVkZCBwYXRjaCBmb3Ig
UjEwMDAwIG1pc2FsaWduZWQgbG9hZCIpCj4gKwo+ICsjdW5kZWYgX0VMRl9ERUZJTkVfT0hXCj4g
KyNkZWZpbmUgICAgICAgIF9FTEZfREVGSU5FX09IVyhOLCBWLCBERVNDUikgICAgTiA9IFYgLAo+
ICtlbnVtIHsKPiArICAgICAgIF9FTEZfREVGSU5FX09ES19IV1BBVENIX01BU0soKQo+ICsgICAg
ICAgT0hXX19MQVNUX18KPiArfTsKPiArCj4gKy8qCj4gKyAqIE9ES19IV0FORC9PREtfSFdPUiBp
bmZvIGZpZWxkIGFuZCBod3BfZmxhZ3NbMTJdIG1hc2tzLgo+ICsgKi8KPiArCj4gKyNkZWZpbmUg
ICAgICAgIF9FTEZfREVGSU5FX09ES19IV1BfTUFTSygpICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX0hXUChPSFdBMF9SNEtFT1BfQ0hFQ0tFRCwg
MHgwMDAwMDAwMVVMLCAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgIm9iamVjdCBjaGVj
a2VkIGZvciBSNDAwMCBlbmQtb2YtcGFnZSBidWciKSAgICAgICAgICAgICAgICAgICAgIFwKPiAr
X0VMRl9ERUZJTkVfSFdQKE9IV0EwX1I0S0VPUF9DTEVBTiwgMHgwMDAwMDAwMlVMLCAgICAgICAg
ICAgICAgICAgICAgICBcCj4gKyAgICAgICAib2JqZWN0IHZlcmlmaWVkIGNsZWFuIGZvciBSNDAw
MCBlbmQtb2YtcGFnZSBidWciKSAgICAgICAgICAgICAgXAo+ICtfRUxGX0RFRklORV9IV1AoT0hX
TzBfRklYQURFLCAgIDB4MDAwMDAwMDFVTCwgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiAr
ICAgICAgICJvYmplY3QgcmVxdWlyZXMgY2FsbCB0byBmaXhhZGUiKQo+ICsKPiArI3VuZGVmIF9F
TEZfREVGSU5FX0hXUAo+ICsjZGVmaW5lICAgICAgICBfRUxGX0RFRklORV9IV1AoTiwgViwgREVT
Q1IpICAgIE4gPSBWICwKPiArZW51bSB7Cj4gKyAgICAgICBfRUxGX0RFRklORV9PREtfSFdQX01B
U0soKQo+ICsgICAgICAgT0hXWDBfX0xBU1RfXwo+ICt9Owo+ICsKPiArLyoKPiArICogT0RLX0lE
RU5UL09ES19HUF9HUk9VUCBpbmZvIGZpZWxkIG1hc2tzLgo+ICsgKi8KPiArCj4gKyNkZWZpbmUg
ICAgICAgIF9FTEZfREVGSU5FX09ES19HUF9NQVNLKCkgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCj4gK19FTEZfREVGSU5FX09HUChPR1BfR1JPVVAsICAgICAgMHgwMDAw
RkZGRlVMLCAiR1AgZ3JvdXAgbnVtYmVyIikgICAgICAgXAo+ICtfRUxGX0RFRklORV9PR1AoT0dQ
X1NFTEYsICAgICAgIDB4MDAwMTAwMDBVTCwgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiAr
ICAgICAgICJHUCBncm91cCBpcyBzZWxmLWNvbnRhaW5lZCIpCj4gKwo+ICsjdW5kZWYgX0VMRl9E
RUZJTkVfT0dQCj4gKyNkZWZpbmUgICAgICAgIF9FTEZfREVGSU5FX09HUChOLCBWLCBERVNDUikg
ICAgTiA9IFYgLAo+ICtlbnVtIHsKPiArICAgICAgIF9FTEZfREVGSU5FX09ES19HUF9NQVNLKCkK
PiArICAgICAgIE9HUF9fTEFTVF9fCj4gK307Cj4gKwo+ICsvKgo+ICsgKiBNSVBTIEVMRiByZWdp
c3RlciBpbmZvIGRlc2NyaXB0b3IuCj4gKyAqLwo+ICsKPiArLyogMzIgYml0IFJlZ0luZm8gZW50
cnkuICovCj4gK3R5cGVkZWYgc3RydWN0IHsKPiArICAgICAgIEVsZjMyX1dvcmQgICAgICByaV9n
cHJtYXNrOyAgLyogTWFzayBvZiBnZW5lcmFsIHJlZ2lzdGVyIHVzZWQuICovCj4gKyAgICAgICBF
bGYzMl9Xb3JkICAgICAgcmlfY3BybWFza1s0XTsgLyogTWFzayBvZiBjb3Byb2Nlc3NvciByZWdp
c3RlciB1c2VkLiAqLwo+ICsgICAgICAgRWxmMzJfQWRkciAgICAgIHJpX2dwX3ZhbHVlOyAvKiBH
UCByZWdpc3RlciB2YWx1ZS4gKi8KPiArfSBFbGYzMl9SZWdJbmZvOwo+ICsKPiArLyogNjQgYml0
IFJlZ0luZm8gZW50cnkuICovCj4gK3R5cGVkZWYgc3RydWN0IHsKPiArICAgICAgIEVsZjY0X1dv
cmQgICAgICByaV9ncHJtYXNrOyAgLyogTWFzayBvZiBnZW5lcmFsIHJlZ2lzdGVyIHVzZWQuICov
Cj4gKyAgICAgICBFbGY2NF9Xb3JkICAgICAgcmlfcGFkOyAgICAgIC8qIFBhZGRpbmcuICovCj4g
KyAgICAgICBFbGY2NF9Xb3JkICAgICAgcmlfY3BybWFza1s0XTsgLyogTWFzayBvZiBjb3Byb2Nl
c3NvciByZWdpc3RlciB1c2VkLiAqLwo+ICsgICAgICAgRWxmNjRfQWRkciAgICAgIHJpX2dwX3Zh
bHVlOyAvKiBHUCByZWdpc3RlciB2YWx1ZS4gKi8KPiArfSBFbGY2NF9SZWdJbmZvOwo+ICsKPiAr
LyoKPiArICogUHJvZ3JhbSBIZWFkZXIgVGFibGUgKFBIRFIpIGVudHJpZXMuCj4gKyAqLwo+ICsK
PiArLyogMzIgYml0IFBIRFIgZW50cnkuICovCj4gK3R5cGVkZWYgc3RydWN0IHsKPiArICAgICAg
IEVsZjMyX1dvcmQgICAgICBwX3R5cGU7ICAgICAgLyogVHlwZSBvZiBzZWdtZW50LiAqLwo+ICsg
ICAgICAgRWxmMzJfT2ZmICAgICAgIHBfb2Zmc2V0OyAgICAvKiBGaWxlIG9mZnNldCB0byBzZWdt
ZW50LiAqLwo+ICsgICAgICAgRWxmMzJfQWRkciAgICAgIHBfdmFkZHI7ICAgICAvKiBWaXJ0dWFs
IGFkZHJlc3MgaW4gbWVtb3J5LiAqLwo+ICsgICAgICAgRWxmMzJfQWRkciAgICAgIHBfcGFkZHI7
ICAgICAvKiBQaHlzaWNhbCBhZGRyZXNzIChpZiByZWxldmFudCkuICovCj4gKyAgICAgICBFbGYz
Ml9Xb3JkICAgICAgcF9maWxlc3o7ICAgIC8qIFNpemUgb2Ygc2VnbWVudCBpbiBmaWxlLiAqLwo+
ICsgICAgICAgRWxmMzJfV29yZCAgICAgIHBfbWVtc3o7ICAgICAvKiBTaXplIG9mIHNlZ21lbnQg
aW4gbWVtb3J5LiAqLwo+ICsgICAgICAgRWxmMzJfV29yZCAgICAgIHBfZmxhZ3M7ICAgICAvKiBT
ZWdtZW50IGZsYWdzLiAqLwo+ICsgICAgICAgRWxmMzJfV29yZCAgICAgIHBfYWxpZ247ICAgICAv
KiBBbGlnbm1lbnQgY29uc3RyYWludHMuICovCj4gK30gRWxmMzJfUGhkcjsKPiArCj4gKy8qIDY0
IGJpdCBQSERSIGVudHJ5LiAqLwo+ICt0eXBlZGVmIHN0cnVjdCB7Cj4gKyAgICAgICBFbGY2NF9X
b3JkICAgICAgcF90eXBlOyAgICAgIC8qIFR5cGUgb2Ygc2VnbWVudC4gKi8KPiArICAgICAgIEVs
ZjY0X1dvcmQgICAgICBwX2ZsYWdzOyAgICAgLyogU2VnbWVudCBmbGFncy4gKi8KPiArICAgICAg
IEVsZjY0X09mZiAgICAgICBwX29mZnNldDsgICAgLyogRmlsZSBvZmZzZXQgdG8gc2VnbWVudC4g
Ki8KPiArICAgICAgIEVsZjY0X0FkZHIgICAgICBwX3ZhZGRyOyAgICAgLyogVmlydHVhbCBhZGRy
ZXNzIGluIG1lbW9yeS4gKi8KPiArICAgICAgIEVsZjY0X0FkZHIgICAgICBwX3BhZGRyOyAgICAg
LyogUGh5c2ljYWwgYWRkcmVzcyAoaWYgcmVsZXZhbnQpLiAqLwo+ICsgICAgICAgRWxmNjRfWHdv
cmQgICAgIHBfZmlsZXN6OyAgICAvKiBTaXplIG9mIHNlZ21lbnQgaW4gZmlsZS4gKi8KPiArICAg
ICAgIEVsZjY0X1h3b3JkICAgICBwX21lbXN6OyAgICAgLyogU2l6ZSBvZiBzZWdtZW50IGluIG1l
bW9yeS4gKi8KPiArICAgICAgIEVsZjY0X1h3b3JkICAgICBwX2FsaWduOyAgICAgLyogQWxpZ25t
ZW50IGNvbnN0cmFpbnRzLiAqLwo+ICt9IEVsZjY0X1BoZHI7Cj4gKwo+ICsKPiArLyoKPiArICog
TW92ZSBlbnRyaWVzLCBmb3IgZGVzY3JpYmluZyBkYXRhIGluIENPTU1PTiBibG9ja3MgaW4gYSBj
b21wYWN0Cj4gKyAqIG1hbm5lci4KPiArICovCj4gKwo+ICsvKiAzMi1iaXQgbW92ZSBlbnRyeS4g
Ki8KPiArdHlwZWRlZiBzdHJ1Y3Qgewo+ICsgICAgICAgRWxmMzJfTHdvcmQgICAgIG1fdmFsdWU7
ICAgICAvKiBJbml0aWFsaXphdGlvbiB2YWx1ZS4gKi8KPiArICAgICAgIEVsZjMyX1dvcmQgICAg
ICBtX2luZm87ICAgICAgLyogRW5jb2RlZCBzaXplIGFuZCBpbmRleC4gKi8KPiArICAgICAgIEVs
ZjMyX1dvcmQgICAgICBtX3BvZmZzZXQ7ICAgLyogT2Zmc2V0IHJlbGF0aXZlIHRvIHN5bWJvbC4g
Ki8KPiArICAgICAgIEVsZjMyX0hhbGYgICAgICBtX3JlcGVhdDsgICAgLyogUmVwZWF0IGNvdW50
LiAqLwo+ICsgICAgICAgRWxmMzJfSGFsZiAgICAgIG1fc3RyaWRlOyAgICAvKiBOdW1iZXIgb2Yg
dW5pdHMgdG8gc2tpcC4gKi8KPiArfSBFbGYzMl9Nb3ZlOwo+ICsKPiArLyogNjQtYml0IG1vdmUg
ZW50cnkuICovCj4gK3R5cGVkZWYgc3RydWN0IHsKPiArICAgICAgIEVsZjY0X0x3b3JkICAgICBt
X3ZhbHVlOyAgICAgLyogSW5pdGlhbGl6YXRpb24gdmFsdWUuICovCj4gKyAgICAgICBFbGY2NF9Y
d29yZCAgICAgbV9pbmZvOyAgICAgIC8qIEVuY29kZWQgc2l6ZSBhbmQgaW5kZXguICovCj4gKyAg
ICAgICBFbGY2NF9Yd29yZCAgICAgbV9wb2Zmc2V0OyAgIC8qIE9mZnNldCByZWxhdGl2ZSB0byBz
eW1ib2wuICovCj4gKyAgICAgICBFbGY2NF9IYWxmICAgICAgbV9yZXBlYXQ7ICAgIC8qIFJlcGVh
dCBjb3VudC4gKi8KPiArICAgICAgIEVsZjY0X0hhbGYgICAgICBtX3N0cmlkZTsgICAgLyogTnVt
YmVyIG9mIHVuaXRzIHRvIHNraXAuICovCj4gK30gRWxmNjRfTW92ZTsKPiArCj4gKyNkZWZpbmUg
RUxGMzJfTV9TWU0oSSkgICAgICAgICAoKEkpID4+IDgpCj4gKyNkZWZpbmUgRUxGMzJfTV9TSVpF
KEkpICAgICAgICAgICAgICAgICgodW5zaWduZWQgY2hhcikgKEkpKQo+ICsjZGVmaW5lIEVMRjMy
X01fSU5GTyhNLCBTKSAgICAgKCgoTSkgPDwgOCkgKyAodW5zaWduZWQgY2hhcikgKFMpKQo+ICsK
PiArI2RlZmluZSBFTEY2NF9NX1NZTShJKSAgICAgICAgICgoSSkgPj4gOCkKPiArI2RlZmluZSBF
TEY2NF9NX1NJWkUoSSkgICAgICAgICAgICAgICAgKCh1bnNpZ25lZCBjaGFyKSAoSSkpCj4gKyNk
ZWZpbmUgRUxGNjRfTV9JTkZPKE0sIFMpICAgICAoKChNKSA8PCA4KSArICh1bnNpZ25lZCBjaGFy
KSAoUykpCj4gKwo+ICsvKgo+ICsgKiBTZWN0aW9uIEhlYWRlciBUYWJsZSAoU0hEUikgZW50cmll
cy4KPiArICovCj4gKwo+ICsvKiAzMiBiaXQgU0hEUiAqLwo+ICt0eXBlZGVmIHN0cnVjdCB7Cj4g
KyAgICAgICBFbGYzMl9Xb3JkICAgICAgc2hfbmFtZTsgICAgIC8qIGluZGV4IG9mIHNlY3Rpb24g
bmFtZSAqLwo+ICsgICAgICAgRWxmMzJfV29yZCAgICAgIHNoX3R5cGU7ICAgICAvKiBzZWN0aW9u
IHR5cGUgKi8KPiArICAgICAgIEVsZjMyX1dvcmQgICAgICBzaF9mbGFnczsgICAgLyogc2VjdGlv
biBmbGFncyAqLwo+ICsgICAgICAgRWxmMzJfQWRkciAgICAgIHNoX2FkZHI7ICAgICAvKiBpbi1t
ZW1vcnkgYWRkcmVzcyBvZiBzZWN0aW9uICovCj4gKyAgICAgICBFbGYzMl9PZmYgICAgICAgc2hf
b2Zmc2V0OyAgIC8qIGZpbGUgb2Zmc2V0IG9mIHNlY3Rpb24gKi8KPiArICAgICAgIEVsZjMyX1dv
cmQgICAgICBzaF9zaXplOyAgICAgLyogc2VjdGlvbiBzaXplIGluIGJ5dGVzICovCj4gKyAgICAg
ICBFbGYzMl9Xb3JkICAgICAgc2hfbGluazsgICAgIC8qIHNlY3Rpb24gaGVhZGVyIHRhYmxlIGxp
bmsgKi8KPiArICAgICAgIEVsZjMyX1dvcmQgICAgICBzaF9pbmZvOyAgICAgLyogZXh0cmEgaW5m
b3JtYXRpb24gKi8KPiArICAgICAgIEVsZjMyX1dvcmQgICAgICBzaF9hZGRyYWxpZ247IC8qIGFs
aWdubWVudCBjb25zdHJhaW50ICovCj4gKyAgICAgICBFbGYzMl9Xb3JkICAgICAgc2hfZW50c2l6
ZTsgICAvKiBzaXplIGZvciBmaXhlZC1zaXplIGVudHJpZXMgKi8KPiArfSBFbGYzMl9TaGRyOwo+
ICsKPiArLyogNjQgYml0IFNIRFIgKi8KPiArdHlwZWRlZiBzdHJ1Y3Qgewo+ICsgICAgICAgRWxm
NjRfV29yZCAgICAgIHNoX25hbWU7ICAgICAvKiBpbmRleCBvZiBzZWN0aW9uIG5hbWUgKi8KPiAr
ICAgICAgIEVsZjY0X1dvcmQgICAgICBzaF90eXBlOyAgICAgLyogc2VjdGlvbiB0eXBlICovCj4g
KyAgICAgICBFbGY2NF9Yd29yZCAgICAgc2hfZmxhZ3M7ICAgIC8qIHNlY3Rpb24gZmxhZ3MgKi8K
PiArICAgICAgIEVsZjY0X0FkZHIgICAgICBzaF9hZGRyOyAgICAgLyogaW4tbWVtb3J5IGFkZHJl
c3Mgb2Ygc2VjdGlvbiAqLwo+ICsgICAgICAgRWxmNjRfT2ZmICAgICAgIHNoX29mZnNldDsgICAv
KiBmaWxlIG9mZnNldCBvZiBzZWN0aW9uICovCj4gKyAgICAgICBFbGY2NF9Yd29yZCAgICAgc2hf
c2l6ZTsgICAgIC8qIHNlY3Rpb24gc2l6ZSBpbiBieXRlcyAqLwo+ICsgICAgICAgRWxmNjRfV29y
ZCAgICAgIHNoX2xpbms7ICAgICAvKiBzZWN0aW9uIGhlYWRlciB0YWJsZSBsaW5rICovCj4gKyAg
ICAgICBFbGY2NF9Xb3JkICAgICAgc2hfaW5mbzsgICAgIC8qIGV4dHJhIGluZm9ybWF0aW9uICov
Cj4gKyAgICAgICBFbGY2NF9Yd29yZCAgICAgc2hfYWRkcmFsaWduOyAvKiBhbGlnbm1lbnQgY29u
c3RyYWludCAqLwo+ICsgICAgICAgRWxmNjRfWHdvcmQgICAgIHNoX2VudHNpemU7ICAvKiBzaXpl
IGZvciBmaXhlZC1zaXplIGVudHJpZXMgKi8KPiArfSBFbGY2NF9TaGRyOwo+ICsKPiArCj4gKy8q
Cj4gKyAqIFN5bWJvbCB0YWJsZSBlbnRyaWVzLgo+ICsgKi8KPiArCj4gK3R5cGVkZWYgc3RydWN0
IHsKPiArICAgICAgIEVsZjMyX1dvcmQgICAgICBzdF9uYW1lOyAgICAgLyogaW5kZXggb2Ygc3lt
Ym9sJ3MgbmFtZSAqLwo+ICsgICAgICAgRWxmMzJfQWRkciAgICAgIHN0X3ZhbHVlOyAgICAvKiB2
YWx1ZSBmb3IgdGhlIHN5bWJvbCAqLwo+ICsgICAgICAgRWxmMzJfV29yZCAgICAgIHN0X3NpemU7
ICAgICAvKiBzaXplIG9mIGFzc29jaWF0ZWQgZGF0YSAqLwo+ICsgICAgICAgdW5zaWduZWQgY2hh
ciAgIHN0X2luZm87ICAgICAvKiB0eXBlIGFuZCBiaW5kaW5nIGF0dHJpYnV0ZXMgKi8KPiArICAg
ICAgIHVuc2lnbmVkIGNoYXIgICBzdF9vdGhlcjsgICAgLyogdmlzaWJpbGl0eSAqLwo+ICsgICAg
ICAgRWxmMzJfSGFsZiAgICAgIHN0X3NobmR4OyAgICAvKiBpbmRleCBvZiByZWxhdGVkIHNlY3Rp
b24gKi8KPiArfSBFbGYzMl9TeW07Cj4gKwo+ICt0eXBlZGVmIHN0cnVjdCB7Cj4gKyAgICAgICBF
bGY2NF9Xb3JkICAgICAgc3RfbmFtZTsgICAgIC8qIGluZGV4IG9mIHN5bWJvbCdzIG5hbWUgKi8K
PiArICAgICAgIHVuc2lnbmVkIGNoYXIgICBzdF9pbmZvOyAgICAgLyogdHlwZSBhbmQgYmluZGlu
ZyBhdHRyaWJ1dGVzICovCj4gKyAgICAgICB1bnNpZ25lZCBjaGFyICAgc3Rfb3RoZXI7ICAgIC8q
IHZpc2liaWxpdHkgKi8KPiArICAgICAgIEVsZjY0X0hhbGYgICAgICBzdF9zaG5keDsgICAgLyog
aW5kZXggb2YgcmVsYXRlZCBzZWN0aW9uICovCj4gKyAgICAgICBFbGY2NF9BZGRyICAgICAgc3Rf
dmFsdWU7ICAgIC8qIHZhbHVlIGZvciB0aGUgc3ltYm9sICovCj4gKyAgICAgICBFbGY2NF9Yd29y
ZCAgICAgc3Rfc2l6ZTsgICAgIC8qIHNpemUgb2YgYXNzb2NpYXRlZCBkYXRhICovCj4gK30gRWxm
NjRfU3ltOwo+ICsKPiArI2RlZmluZSBFTEYzMl9TVF9CSU5EKEkpICAgICAgICgoSSkgPj4gNCkK
PiArI2RlZmluZSBFTEYzMl9TVF9UWVBFKEkpICAgICAgICgoSSkgJiAweEZVKQo+ICsjZGVmaW5l
IEVMRjMyX1NUX0lORk8oQixUKSAgICAgKCgoQikgPDwgNCkgKyAoKFQpICYgMHhGKSkKPiArCj4g
KyNkZWZpbmUgRUxGNjRfU1RfQklORChJKSAgICAgICAoKEkpID4+IDQpCj4gKyNkZWZpbmUgRUxG
NjRfU1RfVFlQRShJKSAgICAgICAoKEkpICYgMHhGVSkKPiArI2RlZmluZSBFTEY2NF9TVF9JTkZP
KEIsVCkgICAgICgoKEIpIDw8IDQpICsgKChUKSAmIDB4RikpCj4gKwo+ICsjZGVmaW5lIEVMRjMy
X1NUX1ZJU0lCSUxJVFkoTykgKChPKSAmIDB4MykKPiArI2RlZmluZSBFTEY2NF9TVF9WSVNJQklM
SVRZKE8pICgoTykgJiAweDMpCj4gKwo+ICsvKgo+ICsgKiBTeW1pbmZvIGRlc2NyaXB0b3JzLCBj
b250YWluaW5nIGFkZGl0aW9uYWwgc3ltYm9sIGluZm9ybWF0aW9uLgo+ICsgKi8KPiArCj4gKy8q
IDMyLWJpdCBlbnRyeS4gKi8KPiArdHlwZWRlZiBzdHJ1Y3Qgewo+ICsgICAgICAgRWxmMzJfSGFs
ZiAgICAgIHNpX2JvdW5kdG87ICAvKiBFbnRyeSBpbmRleCB3aXRoIGFkZGl0aW9uYWwgZmxhZ3Mu
ICovCj4gKyAgICAgICBFbGYzMl9IYWxmICAgICAgc2lfZmxhZ3M7ICAgIC8qIEZsYWdzLiAqLwo+
ICt9IEVsZjMyX1N5bWluZm87Cj4gKwo+ICsvKiA2NC1iaXQgZW50cnkuICovCj4gK3R5cGVkZWYg
c3RydWN0IHsKPiArICAgICAgIEVsZjY0X0hhbGYgICAgICBzaV9ib3VuZHRvOyAgLyogRW50cnkg
aW5kZXggd2l0aCBhZGRpdGlvbmFsIGZsYWdzLiAqLwo+ICsgICAgICAgRWxmNjRfSGFsZiAgICAg
IHNpX2ZsYWdzOyAgICAvKiBGbGFncy4gKi8KPiArfSBFbGY2NF9TeW1pbmZvOwo+ICsKPiArLyoK
PiArICogUmVsb2NhdGlvbiBkZXNjcmlwdG9ycy4KPiArICovCj4gKwo+ICt0eXBlZGVmIHN0cnVj
dCB7Cj4gKyAgICAgICBFbGYzMl9BZGRyICAgICAgcl9vZmZzZXQ7ICAgIC8qIGxvY2F0aW9uIHRv
IGFwcGx5IHJlbG9jYXRpb24gdG8gKi8KPiArICAgICAgIEVsZjMyX1dvcmQgICAgICByX2luZm87
ICAgICAgLyogdHlwZStzZWN0aW9uIGZvciByZWxvY2F0aW9uICovCj4gK30gRWxmMzJfUmVsOwo+
ICsKPiArdHlwZWRlZiBzdHJ1Y3Qgewo+ICsgICAgICAgRWxmMzJfQWRkciAgICAgIHJfb2Zmc2V0
OyAgICAvKiBsb2NhdGlvbiB0byBhcHBseSByZWxvY2F0aW9uIHRvICovCj4gKyAgICAgICBFbGYz
Ml9Xb3JkICAgICAgcl9pbmZvOyAgICAgIC8qIHR5cGUrc2VjdGlvbiBmb3IgcmVsb2NhdGlvbiAq
Lwo+ICsgICAgICAgRWxmMzJfU3dvcmQgICAgIHJfYWRkZW5kOyAgICAvKiBjb25zdGFudCBhZGRl
bmQgKi8KPiArfSBFbGYzMl9SZWxhOwo+ICsKPiArdHlwZWRlZiBzdHJ1Y3Qgewo+ICsgICAgICAg
RWxmNjRfQWRkciAgICAgIHJfb2Zmc2V0OyAgICAvKiBsb2NhdGlvbiB0byBhcHBseSByZWxvY2F0
aW9uIHRvICovCj4gKyAgICAgICBFbGY2NF9Yd29yZCAgICAgcl9pbmZvOyAgICAgIC8qIHR5cGUr
c2VjdGlvbiBmb3IgcmVsb2NhdGlvbiAqLwo+ICt9IEVsZjY0X1JlbDsKPiArCj4gK3R5cGVkZWYg
c3RydWN0IHsKPiArICAgICAgIEVsZjY0X0FkZHIgICAgICByX29mZnNldDsgICAgLyogbG9jYXRp
b24gdG8gYXBwbHkgcmVsb2NhdGlvbiB0byAqLwo+ICsgICAgICAgRWxmNjRfWHdvcmQgICAgIHJf
aW5mbzsgICAgICAvKiB0eXBlK3NlY3Rpb24gZm9yIHJlbG9jYXRpb24gKi8KPiArICAgICAgIEVs
ZjY0X1N4d29yZCAgICByX2FkZGVuZDsgICAgLyogY29uc3RhbnQgYWRkZW5kICovCj4gK30gRWxm
NjRfUmVsYTsKPiArCj4gKwo+ICsjZGVmaW5lIEVMRjMyX1JfU1lNKEkpICAgICAgICAgKChJKSA+
PiA4KQo+ICsjZGVmaW5lIEVMRjMyX1JfVFlQRShJKSAgICAgICAgICAgICAgICAoKHVuc2lnbmVk
IGNoYXIpIChJKSkKPiArI2RlZmluZSBFTEYzMl9SX0lORk8oUyxUKSAgICAgICgoKFMpIDw8IDgp
ICsgKHVuc2lnbmVkIGNoYXIpIChUKSkKPiArCj4gKyNkZWZpbmUgRUxGNjRfUl9TWU0oSSkgICAg
ICAgICAoKEkpID4+IDMyKQo+ICsjZGVmaW5lIEVMRjY0X1JfVFlQRShJKSAgICAgICAgICAgICAg
ICAoKEkpICYgMHhGRkZGRkZGRlVMKQo+ICsjZGVmaW5lIEVMRjY0X1JfSU5GTyhTLFQpICAgICAg
KCgoUykgPDwgMzIpICsgKChUKSAmIDB4RkZGRkZGRkZVTCkpCj4gKwo+ICsvKgo+ICsgKiBTeW1i
b2wgdmVyc2lvbmluZyBzdHJ1Y3R1cmVzLgo+ICsgKi8KPiArCj4gKy8qIDMyLWJpdCBzdHJ1Y3R1
cmVzLiAqLwo+ICt0eXBlZGVmIHN0cnVjdAo+ICt7Cj4gKyAgICAgICBFbGYzMl9Xb3JkICAgICAg
dmRhX25hbWU7ICAgIC8qIEluZGV4IHRvIG5hbWUuICovCj4gKyAgICAgICBFbGYzMl9Xb3JkICAg
ICAgdmRhX25leHQ7ICAgIC8qIE9mZnNldCB0byBuZXh0IGVudHJ5LiAqLwo+ICt9IEVsZjMyX1Zl
cmRhdXg7Cj4gKwo+ICt0eXBlZGVmIHN0cnVjdAo+ICt7Cj4gKyAgICAgICBFbGYzMl9Xb3JkICAg
ICAgdm5hX2hhc2g7ICAgIC8qIEhhc2ggdmFsdWUgb2YgZGVwZW5kZW5jeSBuYW1lLiAqLwo+ICsg
ICAgICAgRWxmMzJfSGFsZiAgICAgIHZuYV9mbGFnczsgICAvKiBGbGFncy4gKi8KPiArICAgICAg
IEVsZjMyX0hhbGYgICAgICB2bmFfb3RoZXI7ICAgLyogVW51c2VkLiAqLwo+ICsgICAgICAgRWxm
MzJfV29yZCAgICAgIHZuYV9uYW1lOyAgICAvKiBPZmZzZXQgdG8gZGVwZW5kZW5jeSBuYW1lLiAq
Lwo+ICsgICAgICAgRWxmMzJfV29yZCAgICAgIHZuYV9uZXh0OyAgICAvKiBPZmZzZXQgdG8gbmV4
dCB2ZXJuYXV4IGVudHJ5LiAqLwo+ICt9IEVsZjMyX1Zlcm5hdXg7Cj4gKwo+ICt0eXBlZGVmIHN0
cnVjdAo+ICt7Cj4gKyAgICAgICBFbGYzMl9IYWxmICAgICAgdmRfdmVyc2lvbjsgIC8qIFZlcnNp
b24gaW5mb3JtYXRpb24uICovCj4gKyAgICAgICBFbGYzMl9IYWxmICAgICAgdmRfZmxhZ3M7ICAg
IC8qIEZsYWdzLiAqLwo+ICsgICAgICAgRWxmMzJfSGFsZiAgICAgIHZkX25keDsgICAgICAvKiBJ
bmRleCBpbnRvIHRoZSB2ZXJzeW0gc2VjdGlvbi4gKi8KPiArICAgICAgIEVsZjMyX0hhbGYgICAg
ICB2ZF9jbnQ7ICAgICAgLyogTnVtYmVyIG9mIGF1eCBlbnRyaWVzLiAqLwo+ICsgICAgICAgRWxm
MzJfV29yZCAgICAgIHZkX2hhc2g7ICAgICAvKiBIYXNoIHZhbHVlIG9mIG5hbWUuICovCj4gKyAg
ICAgICBFbGYzMl9Xb3JkICAgICAgdmRfYXV4OyAgICAgIC8qIE9mZnNldCB0byBhdXggZW50cmll
cy4gKi8KPiArICAgICAgIEVsZjMyX1dvcmQgICAgICB2ZF9uZXh0OyAgICAgLyogT2Zmc2V0IHRv
IG5leHQgdmVyc2lvbiBkZWZpbml0aW9uLiAqLwo+ICt9IEVsZjMyX1ZlcmRlZjsKPiArCj4gK3R5
cGVkZWYgc3RydWN0Cj4gK3sKPiArICAgICAgIEVsZjMyX0hhbGYgICAgICB2bl92ZXJzaW9uOyAg
LyogVmVyc2lvbiBudW1iZXIuICovCj4gKyAgICAgICBFbGYzMl9IYWxmICAgICAgdm5fY250OyAg
ICAgIC8qIE51bWJlciBvZiBhdXggZW50cmllcy4gKi8KPiArICAgICAgIEVsZjMyX1dvcmQgICAg
ICB2bl9maWxlOyAgICAgLyogT2Zmc2V0IG9mIGFzc29jaWF0ZWQgZmlsZSBuYW1lLiAqLwo+ICsg
ICAgICAgRWxmMzJfV29yZCAgICAgIHZuX2F1eDsgICAgICAvKiBPZmZzZXQgb2YgdmVybmF1eCBh
cnJheS4gKi8KPiArICAgICAgIEVsZjMyX1dvcmQgICAgICB2bl9uZXh0OyAgICAgLyogT2Zmc2V0
IG9mIG5leHQgdmVybmVlZCBlbnRyeS4gKi8KPiArfSBFbGYzMl9WZXJuZWVkOwo+ICsKPiArdHlw
ZWRlZiBFbGYzMl9IYWxmICAgICBFbGYzMl9WZXJzeW07Cj4gKwo+ICsvKiA2NC1iaXQgc3RydWN0
dXJlcy4gKi8KPiArCj4gK3R5cGVkZWYgc3RydWN0IHsKPiArICAgICAgIEVsZjY0X1dvcmQgICAg
ICB2ZGFfbmFtZTsgICAgLyogSW5kZXggdG8gbmFtZS4gKi8KPiArICAgICAgIEVsZjY0X1dvcmQg
ICAgICB2ZGFfbmV4dDsgICAgLyogT2Zmc2V0IHRvIG5leHQgZW50cnkuICovCj4gK30gRWxmNjRf
VmVyZGF1eDsKPiArCj4gK3R5cGVkZWYgc3RydWN0IHsKPiArICAgICAgIEVsZjY0X1dvcmQgICAg
ICB2bmFfaGFzaDsgICAgLyogSGFzaCB2YWx1ZSBvZiBkZXBlbmRlbmN5IG5hbWUuICovCj4gKyAg
ICAgICBFbGY2NF9IYWxmICAgICAgdm5hX2ZsYWdzOyAgIC8qIEZsYWdzLiAqLwo+ICsgICAgICAg
RWxmNjRfSGFsZiAgICAgIHZuYV9vdGhlcjsgICAvKiBVbnVzZWQuICovCj4gKyAgICAgICBFbGY2
NF9Xb3JkICAgICAgdm5hX25hbWU7ICAgIC8qIE9mZnNldCB0byBkZXBlbmRlbmN5IG5hbWUuICov
Cj4gKyAgICAgICBFbGY2NF9Xb3JkICAgICAgdm5hX25leHQ7ICAgIC8qIE9mZnNldCB0byBuZXh0
IHZlcm5hdXggZW50cnkuICovCj4gK30gRWxmNjRfVmVybmF1eDsKPiArCj4gK3R5cGVkZWYgc3Ry
dWN0IHsKPiArICAgICAgIEVsZjY0X0hhbGYgICAgICB2ZF92ZXJzaW9uOyAgLyogVmVyc2lvbiBp
bmZvcm1hdGlvbi4gKi8KPiArICAgICAgIEVsZjY0X0hhbGYgICAgICB2ZF9mbGFnczsgICAgLyog
RmxhZ3MuICovCj4gKyAgICAgICBFbGY2NF9IYWxmICAgICAgdmRfbmR4OyAgICAgIC8qIEluZGV4
IGludG8gdGhlIHZlcnN5bSBzZWN0aW9uLiAqLwo+ICsgICAgICAgRWxmNjRfSGFsZiAgICAgIHZk
X2NudDsgICAgICAvKiBOdW1iZXIgb2YgYXV4IGVudHJpZXMuICovCj4gKyAgICAgICBFbGY2NF9X
b3JkICAgICAgdmRfaGFzaDsgICAgIC8qIEhhc2ggdmFsdWUgb2YgbmFtZS4gKi8KPiArICAgICAg
IEVsZjY0X1dvcmQgICAgICB2ZF9hdXg7ICAgICAgLyogT2Zmc2V0IHRvIGF1eCBlbnRyaWVzLiAq
Lwo+ICsgICAgICAgRWxmNjRfV29yZCAgICAgIHZkX25leHQ7ICAgICAvKiBPZmZzZXQgdG8gbmV4
dCB2ZXJzaW9uIGRlZmluaXRpb24uICovCj4gK30gRWxmNjRfVmVyZGVmOwo+ICsKPiArdHlwZWRl
ZiBzdHJ1Y3Qgewo+ICsgICAgICAgRWxmNjRfSGFsZiAgICAgIHZuX3ZlcnNpb247ICAvKiBWZXJz
aW9uIG51bWJlci4gKi8KPiArICAgICAgIEVsZjY0X0hhbGYgICAgICB2bl9jbnQ7ICAgICAgLyog
TnVtYmVyIG9mIGF1eCBlbnRyaWVzLiAqLwo+ICsgICAgICAgRWxmNjRfV29yZCAgICAgIHZuX2Zp
bGU7ICAgICAvKiBPZmZzZXQgb2YgYXNzb2NpYXRlZCBmaWxlIG5hbWUuICovCj4gKyAgICAgICBF
bGY2NF9Xb3JkICAgICAgdm5fYXV4OyAgICAgIC8qIE9mZnNldCBvZiB2ZXJuYXV4IGFycmF5LiAq
Lwo+ICsgICAgICAgRWxmNjRfV29yZCAgICAgIHZuX25leHQ7ICAgICAvKiBPZmZzZXQgb2YgbmV4
dCB2ZXJuZWVkIGVudHJ5LiAqLwo+ICt9IEVsZjY0X1Zlcm5lZWQ7Cj4gKwo+ICt0eXBlZGVmIEVs
ZjY0X0hhbGYgICAgIEVsZjY0X1ZlcnN5bTsKPiArCj4gKwo+ICsvKgo+ICsgKiBUaGUgaGVhZGVy
IGZvciBHTlUtc3R5bGUgaGFzaCBzZWN0aW9ucy4KPiArICovCj4gKwo+ICt0eXBlZGVmIHN0cnVj
dCB7Cj4gKyAgICAgICB1aW50MzJfdCAgICAgICAgZ2hfbmJ1Y2tldHM7ICAgIC8qIE51bWJlciBv
ZiBoYXNoIGJ1Y2tldHMuICovCj4gKyAgICAgICB1aW50MzJfdCAgICAgICAgZ2hfc3ltbmR4OyAg
ICAgIC8qIEZpcnN0IHZpc2libGUgc3ltYm9sIGluIC5keW5zeW0uICovCj4gKyAgICAgICB1aW50
MzJfdCAgICAgICAgZ2hfbWFza3dvcmRzOyAgIC8qICNtYXNrd29yZHMgdXNlZCBpbiBibG9vbSBm
aWx0ZXIuICovCj4gKyAgICAgICB1aW50MzJfdCAgICAgICAgZ2hfc2hpZnQyOyAgICAgIC8qIEJs
b29tIGZpbHRlciBzaGlmdCBjb3VudC4gKi8KPiArfSBFbGZfR05VX0hhc2hfSGVhZGVyOwo+ICsK
PiArI2VuZGlmIC8qIF9FTEZERUZJTklUSU9OU19IXyAqLwo+IGRpZmYgLS1naXQgYS9pbmNsdWRl
L2dlbGYuaCBiL2luY2x1ZGUvZ2VsZi5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAw
MDAwMDAwLi42ZWFlMGE1Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2luY2x1ZGUvZ2VsZi5oCj4g
QEAgLTAsMCArMSwxMTAgQEAKPiArLyotCj4gKyAqIENvcHlyaWdodCAoYykgMjAwNiwyMDA4IEpv
c2VwaCBLb3NoeQo+ICsgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgo+ICsgKgo+ICsgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKPiArICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCj4gKyAqIGFyZSBtZXQ6Cj4gKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cj4gKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KPiArICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKPiArICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQo+ICsgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgo+ICsgKgo+ICsgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRI
T1IgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECj4gKyAqIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQo+ICsg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRQo+ICsgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQo+ICsgKiBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTAo+ICsgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUwo+ICsgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKPiArICogSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QKPiArICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQo+ICsgKiBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
Cj4gKyAqIFNVQ0ggREFNQUdFLgo+ICsgKgo+ICsgKiAkSWQ6IGdlbGYuaCAzMTc0IDIwMTUtMDMt
MjcgMTc6MTM6NDFaIGVtYXN0ZSAkCj4gKyAqLwo+ICsKPiArI2lmbmRlZiAgICAgICAgX0dFTEZf
SF8KPiArI2RlZmluZSAgICAgICAgX0dFTEZfSF8KPiArCj4gKyNpbmNsdWRlIDxsaWJlbGYuaD4K
PiArCj4gK3R5cGVkZWYgRWxmNjRfQWRkciAgICAgR0VsZl9BZGRyOyAgICAgIC8qIEFkZHJlc3Nl
cyAqLwo+ICt0eXBlZGVmIEVsZjY0X0hhbGYgICAgIEdFbGZfSGFsZjsgICAgICAvKiBIYWxmIHdv
cmRzICgxNiBiaXQpICovCj4gK3R5cGVkZWYgRWxmNjRfT2ZmICAgICAgR0VsZl9PZmY7ICAgICAg
IC8qIE9mZnNldHMgKi8KPiArdHlwZWRlZiBFbGY2NF9Td29yZCAgICBHRWxmX1N3b3JkOyAgICAg
LyogU2lnbmVkIHdvcmRzICgzMiBiaXQpICovCj4gK3R5cGVkZWYgRWxmNjRfU3h3b3JkICAgR0Vs
Zl9TeHdvcmQ7ICAgIC8qIFNpZ25lZCBsb25nIHdvcmRzICg2NCBiaXQpICovCj4gK3R5cGVkZWYg
RWxmNjRfV29yZCAgICAgR0VsZl9Xb3JkOyAgICAgIC8qIFVuc2lnbmVkIHdvcmRzICgzMiBiaXQp
ICovCj4gK3R5cGVkZWYgRWxmNjRfWHdvcmQgICAgR0VsZl9Yd29yZDsgICAgIC8qIFVuc2lnbmVk
IGxvbmcgd29yZHMgKDY0IGJpdCkgKi8KPiArCj4gK3R5cGVkZWYgRWxmNjRfRHluICAgICAgR0Vs
Zl9EeW47ICAgICAgIC8qICIuZHluYW1pYyIgc2VjdGlvbiBlbnRyaWVzICovCj4gK3R5cGVkZWYg
RWxmNjRfRWhkciAgICAgR0VsZl9FaGRyOyAgICAgIC8qIEVMRiBoZWFkZXIgKi8KPiArdHlwZWRl
ZiBFbGY2NF9QaGRyICAgICBHRWxmX1BoZHI7ICAgICAgLyogUHJvZ3JhbSBoZWFkZXIgKi8KPiAr
dHlwZWRlZiBFbGY2NF9TaGRyICAgICBHRWxmX1NoZHI7ICAgICAgLyogU2VjdGlvbiBoZWFkZXIg
Ki8KPiArdHlwZWRlZiBFbGY2NF9TeW0gICAgICBHRWxmX1N5bTsgICAgICAgLyogU3ltYm9sIHRh
YmxlIGVudHJpZXMgKi8KPiArdHlwZWRlZiBFbGY2NF9SZWwgICAgICBHRWxmX1JlbDsgICAgICAg
LyogUmVsb2NhdGlvbiBlbnRyaWVzICovCj4gK3R5cGVkZWYgRWxmNjRfUmVsYSAgICAgR0VsZl9S
ZWxhOyAgICAgIC8qIFJlbG9jYXRpb24gZW50cmllcyB3aXRoIGFkZGVuZCAqLwo+ICsKPiArdHlw
ZWRlZiAgICAgICAgRWxmNjRfQ2FwICAgICAgIEdFbGZfQ2FwOyAgICAgICAvKiBTVy9IVyBjYXBh
YmlsaXRpZXMgKi8KPiArdHlwZWRlZiBFbGY2NF9Nb3ZlICAgICBHRWxmX01vdmU7ICAgICAgLyog
TW92ZSBlbnRyaWVzICovCj4gK3R5cGVkZWYgRWxmNjRfU3ltaW5mbyAgR0VsZl9TeW1pbmZvOyAg
IC8qIFN5bWJvbCBpbmZvcm1hdGlvbiAqLwo+ICsKPiArI2RlZmluZSAgICAgICAgR0VMRl9NX0lO
Rk8gICAgICAgICAgICAgICAgICAgICBFTEY2NF9NX0lORk8KPiArI2RlZmluZSAgICAgICAgR0VM
Rl9NX1NJWkUgICAgICAgICAgICAgICAgICAgICBFTEY2NF9NX1NJWkUKPiArI2RlZmluZSAgICAg
ICAgR0VMRl9NX1NZTSAgICAgICAgICAgICAgICAgICAgICBFTEY2NF9NX1NZTQo+ICsKPiArI2Rl
ZmluZSAgICAgICAgR0VMRl9SX0lORk8gICAgICAgICAgICAgICAgICAgICBFTEY2NF9SX0lORk8K
PiArI2RlZmluZSAgICAgICAgR0VMRl9SX1NZTSAgICAgICAgICAgICAgICAgICAgICBFTEY2NF9S
X1NZTQo+ICsjZGVmaW5lICAgICAgICBHRUxGX1JfVFlQRSAgICAgICAgICAgICAgICAgICAgIEVM
RjY0X1JfVFlQRQo+ICsjZGVmaW5lICAgICAgICBHRUxGX1JfVFlQRV9EQVRBICAgICAgICAgICAg
ICAgIEVMRjY0X1JfVFlQRV9EQVRBCj4gKyNkZWZpbmUgICAgICAgIEdFTEZfUl9UWVBFX0lEICAg
ICAgICAgICAgICAgICAgRUxGNjRfUl9UWVBFX0lECj4gKyNkZWZpbmUgICAgICAgIEdFTEZfUl9U
WVBFX0lORk8gICAgICAgICAgICAgICAgRUxGNjRfUl9UWVBFX0lORk8KPiArCj4gKyNkZWZpbmUg
ICAgICAgIEdFTEZfU1RfQklORCAgICAgICAgICAgICAgICAgICAgRUxGNjRfU1RfQklORAo+ICsj
ZGVmaW5lICAgICAgICBHRUxGX1NUX0lORk8gICAgICAgICAgICAgICAgICAgIEVMRjY0X1NUX0lO
Rk8KPiArI2RlZmluZSAgICAgICAgR0VMRl9TVF9UWVBFICAgICAgICAgICAgICAgICAgICBFTEY2
NF9TVF9UWVBFCj4gKyNkZWZpbmUgICAgICAgIEdFTEZfU1RfVklTSUJJTElUWSAgICAgICAgICAg
ICAgRUxGNjRfU1RfVklTSUJJTElUWQo+ICsKPiArI2lmZGVmIF9fY3BsdXNwbHVzCj4gK2V4dGVy
biAiQyIgewo+ICsjZW5kaWYKPiArbG9uZyAgICAgICAgICAgZ2VsZl9jaGVja3N1bShFbGYgKl9l
bGYpOwo+ICtzaXplX3QgICAgICAgICBnZWxmX2ZzaXplKEVsZiAqX2VsZiwgRWxmX1R5cGUgX3R5
cGUsIHNpemVfdCBfY291bnQsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50
IF92ZXJzaW9uKTsKPiAraW50ICAgICAgICAgICAgZ2VsZl9nZXRjbGFzcyhFbGYgKl9lbGYpOwo+
ICtHRWxmX0R5biAgICAgICAqZ2VsZl9nZXRkeW4oRWxmX0RhdGEgKl9kYXRhLCBpbnQgX2luZGV4
LCBHRWxmX0R5biAqX2RzdCk7Cj4gK0dFbGZfRWhkciAgICAgICpnZWxmX2dldGVoZHIoRWxmICpf
ZWxmLCBHRWxmX0VoZHIgKl9kc3QpOwo+ICtHRWxmX1BoZHIgICAgICAqZ2VsZl9nZXRwaGRyKEVs
ZiAqX2VsZiwgaW50IF9pbmRleCwgR0VsZl9QaGRyICpfZHN0KTsKPiArR0VsZl9SZWwgICAgICAg
KmdlbGZfZ2V0cmVsKEVsZl9EYXRhICpfc3JjLCBpbnQgX2luZGV4LCBHRWxmX1JlbCAqX2RzdCk7
Cj4gK0dFbGZfUmVsYSAgICAgICpnZWxmX2dldHJlbGEoRWxmX0RhdGEgKl9zcmMsIGludCBfaW5k
ZXgsIEdFbGZfUmVsYSAqX2RzdCk7Cj4gK0dFbGZfU2hkciAgICAgICpnZWxmX2dldHNoZHIoRWxm
X1NjbiAqX3NjbiwgR0VsZl9TaGRyICpfZHN0KTsKPiArR0VsZl9TeW0gICAgICAgKmdlbGZfZ2V0
c3ltKEVsZl9EYXRhICpfc3JjLCBpbnQgX2luZGV4LCBHRWxmX1N5bSAqX2RzdCk7Cj4gK0dFbGZf
U3ltICAgICAgICpnZWxmX2dldHN5bXNobmR4KEVsZl9EYXRhICpfc3JjLCBFbGZfRGF0YSAqX3No
aW5kZXhzcmMsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgaW50IF9pbmRleCwgR0VsZl9TeW0g
Kl9kc3QsIEVsZjMyX1dvcmQgKl9zaGluZGV4ZHN0KTsKPiArdm9pZCAqICAgICAgICAgZ2VsZl9u
ZXdlaGRyKEVsZiAqX2VsZiwgaW50IF9jbGFzcyk7Cj4gK3ZvaWQgKiAgICAgICAgIGdlbGZfbmV3
cGhkcihFbGYgKl9lbGYsIHNpemVfdCBfcGhudW0pOwo+ICtpbnQgICAgICAgICAgICBnZWxmX3Vw
ZGF0ZV9keW4oRWxmX0RhdGEgKl9kc3QsIGludCBfaW5kZXgsIEdFbGZfRHluICpfc3JjKTsKPiAr
aW50ICAgICAgICAgICAgZ2VsZl91cGRhdGVfZWhkcihFbGYgKl9lbGYsIEdFbGZfRWhkciAqX3Ny
Yyk7Cj4gK2ludCAgICAgICAgICAgIGdlbGZfdXBkYXRlX3BoZHIoRWxmICpfZWxmLCBpbnQgX2lu
ZGV4LCBHRWxmX1BoZHIgKl9zcmMpOwo+ICtpbnQgICAgICAgICAgICBnZWxmX3VwZGF0ZV9yZWwo
RWxmX0RhdGEgKl9kc3QsIGludCBfaW5kZXgsIEdFbGZfUmVsICpfc3JjKTsKPiAraW50ICAgICAg
ICAgICAgZ2VsZl91cGRhdGVfcmVsYShFbGZfRGF0YSAqX2RzdCwgaW50IF9pbmRleCwgR0VsZl9S
ZWxhICpfc3JjKTsKPiAraW50ICAgICAgICAgICAgZ2VsZl91cGRhdGVfc2hkcihFbGZfU2NuICpf
ZHN0LCBHRWxmX1NoZHIgKl9zcmMpOwo+ICtpbnQgICAgICAgICAgICBnZWxmX3VwZGF0ZV9zeW0o
RWxmX0RhdGEgKl9kc3QsIGludCBfaW5kZXgsIEdFbGZfU3ltICpfc3JjKTsKPiAraW50ICAgICAg
ICAgICAgZ2VsZl91cGRhdGVfc3ltc2huZHgoRWxmX0RhdGEgKl9zeW1kc3QsIEVsZl9EYXRhICpf
c2hpbmRleGRzdCwKPiArICAgICAgICAgICAgICAgICAgICAgICBpbnQgX2luZGV4LCBHRWxmX1N5
bSAqX3N5bXNyYywgRWxmMzJfV29yZCBfc2hpbmRleHNyYyk7Cj4gK0VsZl9EYXRhICAgICAgICpn
ZWxmX3hsYXRldG9mKEVsZiAqX2VsZiwgRWxmX0RhdGEgKl9kc3QsIGNvbnN0IEVsZl9EYXRhICpf
c3JjLCB1bnNpZ25lZCBpbnQgX2VuY29kZSk7Cj4gK0VsZl9EYXRhICAgICAgICpnZWxmX3hsYXRl
dG9tKEVsZiAqX2VsZiwgRWxmX0RhdGEgKl9kc3QsIGNvbnN0IEVsZl9EYXRhICpfc3JjLCB1bnNp
Z25lZCBpbnQgX2VuY29kZSk7Cj4gKwo+ICtHRWxmX0NhcCAgICAgICAqZ2VsZl9nZXRjYXAoRWxm
X0RhdGEgKl9kYXRhLCBpbnQgX2luZGV4LCBHRWxmX0NhcCAqX2NhcCk7Cj4gK0dFbGZfTW92ZSAg
ICAgICpnZWxmX2dldG1vdmUoRWxmX0RhdGEgKl9zcmMsIGludCBfaW5kZXgsIEdFbGZfTW92ZSAq
X2RzdCk7Cj4gK0dFbGZfU3ltaW5mbyAgICpnZWxmX2dldHN5bWluZm8oRWxmX0RhdGEgKl9zcmMs
IGludCBfaW5kZXgsIEdFbGZfU3ltaW5mbyAqX2RzdCk7Cj4gK2ludCAgICAgICAgICAgIGdlbGZf
dXBkYXRlX2NhcChFbGZfRGF0YSAqX2RzdCwgaW50IF9pbmRleCwgR0VsZl9DYXAgKl9zcmMpOwo+
ICtpbnQgICAgICAgICAgICBnZWxmX3VwZGF0ZV9tb3ZlKEVsZl9EYXRhICpfZHN0LCBpbnQgX2lu
ZGV4LCBHRWxmX01vdmUgKl9zcmMpOwo+ICtpbnQgICAgICAgICAgICBnZWxmX3VwZGF0ZV9zeW1p
bmZvKEVsZl9EYXRhICpfZHN0LCBpbnQgX2luZGV4LCBHRWxmX1N5bWluZm8gKl9zcmMpOwo+ICsj
aWZkZWYgX19jcGx1c3BsdXMKPiArfQo+ICsjZW5kaWYKPiArCj4gKyNlbmRpZiAvKiBfR0VMRl9I
XyAqLwo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2xpYmVsZi5oIGIvaW5jbHVkZS9saWJlbGYuaAo+
IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uNDdjMTFiOQo+IC0tLSAvZGV2
L251bGwKPiArKysgYi9pbmNsdWRlL2xpYmVsZi5oCj4gQEAgLTAsMCArMSwyNTYgQEAKPiArLyot
Cj4gKyAqIENvcHlyaWdodCAoYykgMjAwNiwyMDA4LTIwMTAgSm9zZXBoIEtvc2h5Cj4gKyAqIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCj4gKyAqCj4gKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAo+ICsgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
PiArICogYXJlIG1ldDoKPiArICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKPiArICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgo+ICsgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAo+ICsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCj4gKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCj4gKyAqCj4gKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJyBBTkQKPiArICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCj4gKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
Cj4gKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFCj4gKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCj4gKyAqIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTCj4gKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQo+ICsgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAo+ICsg
KiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZCj4gKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKPiArICogU1VDSCBEQU1BR0Uu
Cj4gKyAqCj4gKyAqICRJZDogbGliZWxmLmggMzE3NCAyMDE1LTAzLTI3IDE3OjEzOjQxWiBlbWFz
dGUgJAo+ICsgKi8KPiArCj4gKyNpZm5kZWYgICAgICAgIF9MSUJFTEZfSF8KPiArI2RlZmluZSAg
ICAgICAgX0xJQkVMRl9IXwo+ICsKPiArI2luY2x1ZGUgPHN5cy90eXBlcy5oPgo+ICsKPiArI2lu
Y2x1ZGUgPGVsZmRlZmluaXRpb25zLmg+Cj4gKwo+ICsvKiBMaWJyYXJ5IHByaXZhdGUgZGF0YSBz
dHJ1Y3R1cmVzICovCj4gK3R5cGVkZWYgc3RydWN0IF9FbGYgRWxmOwo+ICt0eXBlZGVmIHN0cnVj
dCBfRWxmX1NjbiBFbGZfU2NuOwo+ICsKPiArLyogRmlsZSB0eXBlcyAqLwo+ICt0eXBlZGVmIGVu
dW0gewo+ICsgICAgICAgRUxGX0tfTk9ORSA9IDAsCj4gKyAgICAgICBFTEZfS19BUiwgICAgICAg
LyogYGFyJyBhcmNoaXZlcyAqLwo+ICsgICAgICAgRUxGX0tfQ09GRiwgICAgIC8qIENPRkYgZmls
ZXMgKHVuc3VwcG9ydGVkKSAqLwo+ICsgICAgICAgRUxGX0tfRUxGLCAgICAgIC8qIEVMRiBmaWxl
cyAqLwo+ICsgICAgICAgRUxGX0tfTlVNCj4gK30gRWxmX0tpbmQ7Cj4gKwo+ICsjZGVmaW5lICAg
ICAgICBFTEZfS19GSVJTVCAgICAgRUxGX0tfTk9ORQo+ICsjZGVmaW5lICAgICAgICBFTEZfS19M
QVNUICAgICAgRUxGX0tfTlVNCj4gKwo+ICsvKiBEYXRhIHR5cGVzICovCj4gK3R5cGVkZWYgZW51
bSB7Cj4gKyAgICAgICBFTEZfVF9BRERSLAo+ICsgICAgICAgRUxGX1RfQllURSwKPiArICAgICAg
IEVMRl9UX0NBUCwKPiArICAgICAgIEVMRl9UX0RZTiwKPiArICAgICAgIEVMRl9UX0VIRFIsCj4g
KyAgICAgICBFTEZfVF9IQUxGLAo+ICsgICAgICAgRUxGX1RfTFdPUkQsCj4gKyAgICAgICBFTEZf
VF9NT1ZFLAo+ICsgICAgICAgRUxGX1RfTU9WRVAsCj4gKyAgICAgICBFTEZfVF9OT1RFLAo+ICsg
ICAgICAgRUxGX1RfT0ZGLAo+ICsgICAgICAgRUxGX1RfUEhEUiwKPiArICAgICAgIEVMRl9UX1JF
TCwKPiArICAgICAgIEVMRl9UX1JFTEEsCj4gKyAgICAgICBFTEZfVF9TSERSLAo+ICsgICAgICAg
RUxGX1RfU1dPUkQsCj4gKyAgICAgICBFTEZfVF9TWFdPUkQsCj4gKyAgICAgICBFTEZfVF9TWU1J
TkZPLAo+ICsgICAgICAgRUxGX1RfU1lNLAo+ICsgICAgICAgRUxGX1RfVkRFRiwKPiArICAgICAg
IEVMRl9UX1ZORUVELAo+ICsgICAgICAgRUxGX1RfV09SRCwKPiArICAgICAgIEVMRl9UX1hXT1JE
LAo+ICsgICAgICAgRUxGX1RfR05VSEFTSCwgIC8qIEdOVSBzdHlsZSBoYXNoIHRhYmxlcy4gKi8K
PiArICAgICAgIEVMRl9UX05VTQo+ICt9IEVsZl9UeXBlOwo+ICsKPiArI2RlZmluZSAgICAgICAg
RUxGX1RfRklSU1QgICAgIEVMRl9UX0FERFIKPiArI2RlZmluZSAgICAgICAgRUxGX1RfTEFTVCAg
ICAgIEVMRl9UX0dOVUhBU0gKPiArCj4gKy8qIENvbW1hbmRzICovCj4gK3R5cGVkZWYgZW51bSB7
Cj4gKyAgICAgICBFTEZfQ19OVUxMID0gMCwKPiArICAgICAgIEVMRl9DX0NMUiwKPiArICAgICAg
IEVMRl9DX0ZERE9ORSwKPiArICAgICAgIEVMRl9DX0ZEUkVBRCwKPiArICAgICAgIEVMRl9DX1JE
V1IsCj4gKyAgICAgICBFTEZfQ19SRUFELAo+ICsgICAgICAgRUxGX0NfU0VULAo+ICsgICAgICAg
RUxGX0NfV1JJVEUsCj4gKyAgICAgICBFTEZfQ19OVU0KPiArfSBFbGZfQ21kOwo+ICsKPiArI2Rl
ZmluZSAgICAgICAgRUxGX0NfRklSU1QgICAgIEVMRl9DX05VTEwKPiArI2RlZmluZSAgICAgICAg
RUxGX0NfTEFTVCAgICAgIEVMRl9DX05VTQo+ICsKPiArLyoKPiArICogQW4gYEVsZl9EYXRhJyBz
dHJ1Y3R1cmUgZGVzY3JpYmVzIGRhdGEgaW4gYW4KPiArICogRUxGIHNlY3Rpb24uCj4gKyAqLwo+
ICt0eXBlZGVmIHN0cnVjdCBfRWxmX0RhdGEgewo+ICsgICAgICAgLyoKPiArICAgICAgICAqIGBQ
dWJsaWMnIG1lbWJlcnMgdGhhdCBhcmUgcGFydCBvZiB0aGUgRUxGKDMpIEFQSS4KPiArICAgICAg
ICAqLwo+ICsgICAgICAgdWludDY0X3QgICAgICAgIGRfYWxpZ247Cj4gKyAgICAgICB2b2lkICAg
ICAgICAgICAgKmRfYnVmOwo+ICsgICAgICAgdWludDY0X3QgICAgICAgIGRfb2ZmOwo+ICsgICAg
ICAgdWludDY0X3QgICAgICAgIGRfc2l6ZTsKPiArICAgICAgIEVsZl9UeXBlICAgICAgICBkX3R5
cGU7Cj4gKyAgICAgICB1bnNpZ25lZCBpbnQgICAgZF92ZXJzaW9uOwo+ICt9IEVsZl9EYXRhOwo+
ICsKPiArLyoKPiArICogQW4gYEVsZl9Bcmhkcicgc3RydWN0dXJlIGRlc2NyaWJlcyBhbiBhcmNo
aXZlCj4gKyAqIGhlYWRlci4KPiArICovCj4gK3R5cGVkZWYgc3RydWN0IHsKPiArICAgICAgIHRp
bWVfdCAgICAgICAgICBhcl9kYXRlOwo+ICsgICAgICAgY2hhciAgICAgICAgICAgICphcl9uYW1l
OyAgICAgICAvKiBhcmNoaXZlIG1lbWJlciBuYW1lICovCj4gKyAgICAgICBnaWRfdCAgICAgICAg
ICAgYXJfZ2lkOwo+ICsgICAgICAgbW9kZV90ICAgICAgICAgIGFyX21vZGU7Cj4gKyAgICAgICBj
aGFyICAgICAgICAgICAgKmFyX3Jhd25hbWU7ICAgIC8qICdyYXcnIG1lbWJlciBuYW1lICovCj4g
KyAgICAgICBzaXplX3QgICAgICAgICAgYXJfc2l6ZTsKPiArICAgICAgIHVpZF90ICAgICAgICAg
ICBhcl91aWQ7Cj4gKwo+ICsgICAgICAgLyoKPiArICAgICAgICAqIE1lbWJlcnMgdGhhdCBhcmUg
bm90IHBhcnQgb2YgdGhlIHB1YmxpYyBBUEkuCj4gKyAgICAgICAgKi8KPiArICAgICAgIHVuc2ln
bmVkIGludCAgICBhcl9mbGFnczsKPiArfSBFbGZfQXJoZHI7Cj4gKwo+ICsvKgo+ICsgKiBBbiBg
RWxmX0Fyc3ltJyBkZXNjcmliZXMgYW4gZW50cnkgaW4gdGhlIGFyY2hpdmUKPiArICogc3ltYm9s
IHRhYmxlLgo+ICsgKi8KPiArdHlwZWRlZiBzdHJ1Y3Qgewo+ICsgICAgICAgb2ZmX3QgICAgICAg
ICAgIGFzX29mZjsgICAgICAgICAvKiBieXRlIG9mZnNldCB0byBtZW1iZXIncyBoZWFkZXIgKi8K
PiArICAgICAgIHVuc2lnbmVkIGxvbmcgICBhc19oYXNoOyAgICAgICAgLyogZWxmX2hhc2goKSB2
YWx1ZSBmb3IgbmFtZSAqLwo+ICsgICAgICAgY2hhciAgICAgICAgICAgICphc19uYW1lOyAgICAg
ICAvKiBudWxsIHRlcm1pbmF0ZWQgc3ltYm9sIG5hbWUgKi8KPiArfSBFbGZfQXJzeW07Cj4gKwo+
ICsvKgo+ICsgKiBFcnJvciBudW1iZXJzLgo+ICsgKi8KPiArCj4gK2VudW0gRWxmX0Vycm9yIHsK
PiArICAgICAgIEVMRl9FX05PTkUsICAgICAvKiBObyBlcnJvciAqLwo+ICsgICAgICAgRUxGX0Vf
QVJDSElWRSwgIC8qIE1hbGZvcm1lZCBhcigxKSBhcmNoaXZlICovCj4gKyAgICAgICBFTEZfRV9B
UkdVTUVOVCwgLyogSW52YWxpZCBhcmd1bWVudCAqLwo+ICsgICAgICAgRUxGX0VfQ0xBU1MsICAg
IC8qIE1pc21hdGNoZWQgRUxGIGNsYXNzICovCj4gKyAgICAgICBFTEZfRV9EQVRBLCAgICAgLyog
SW52YWxpZCBkYXRhIGRlc2NyaXB0b3IgKi8KPiArICAgICAgIEVMRl9FX0hFQURFUiwgICAvKiBN
aXNzaW5nIG9yIG1hbGZvcm1lZCBFTEYgaGVhZGVyICovCj4gKyAgICAgICBFTEZfRV9JTywgICAg
ICAgLyogSS9PIGVycm9yICovCj4gKyAgICAgICBFTEZfRV9MQVlPVVQsICAgLyogTGF5b3V0IGNv
bnN0cmFpbnQgdmlvbGF0aW9uICovCj4gKyAgICAgICBFTEZfRV9NT0RFLCAgICAgLyogV3Jvbmcg
bW9kZSBmb3IgRUxGIGRlc2NyaXB0b3IgKi8KPiArICAgICAgIEVMRl9FX1JBTkdFLCAgICAvKiBW
YWx1ZSBvdXQgb2YgcmFuZ2UgKi8KPiArICAgICAgIEVMRl9FX1JFU09VUkNFLCAvKiBSZXNvdXJj
ZSBleGhhdXN0aW9uICovCj4gKyAgICAgICBFTEZfRV9TRUNUSU9OLCAgLyogSW52YWxpZCBzZWN0
aW9uIGRlc2NyaXB0b3IgKi8KPiArICAgICAgIEVMRl9FX1NFUVVFTkNFLCAvKiBBUEkgY2FsbHMg
b3V0IG9mIHNlcXVlbmNlICovCj4gKyAgICAgICBFTEZfRV9VTklNUEwsICAgLyogRmVhdHVyZSBp
cyB1bmltcGxlbWVudGVkICovCj4gKyAgICAgICBFTEZfRV9WRVJTSU9OLCAgLyogVW5rbm93biBB
UEkgdmVyc2lvbiAqLwo+ICsgICAgICAgRUxGX0VfTlVNICAgICAgIC8qIE1heCBlcnJvciBudW1i
ZXIgKi8KPiArfTsKPiArCj4gKy8qCj4gKyAqIEZsYWdzIGRlZmluZWQgYnkgdGhlIEFQSS4KPiAr
ICovCj4gKwo+ICsjZGVmaW5lICAgICAgICBFTEZfRl9MQVlPVVQgICAgMHgwMDFVICAvKiBhcHBs
aWNhdGlvbiB3aWxsIGxheW91dCB0aGUgZmlsZSAqLwo+ICsjZGVmaW5lICAgICAgICBFTEZfRl9E
SVJUWSAgICAgMHgwMDJVICAvKiBhIHNlY3Rpb24gb3IgRUxGIGZpbGUgaXMgZGlydHkgKi8KPiAr
Cj4gKy8qIEVMRigzKSBBUEkgZXh0ZW5zaW9ucy4gKi8KPiArI2RlZmluZSAgICAgICAgRUxGX0Zf
QVJDSElWRSAgICAgIDB4MTAwVSAvKiBhcmNoaXZlIGNyZWF0aW9uICovCj4gKyNkZWZpbmUgICAg
ICAgIEVMRl9GX0FSQ0hJVkVfU1lTViAweDIwMFUgLyogU1lTViBzdHlsZSBhcmNoaXZlICovCj4g
Kwo+ICsjaWZkZWYgX19jcGx1c3BsdXMKPiArZXh0ZXJuICJDIiB7Cj4gKyNlbmRpZgo+ICtFbGYg
ICAgICAgICAgICAqZWxmX2JlZ2luKGludCBfZmQsIEVsZl9DbWQgX2NtZCwgRWxmICpfZWxmKTsK
PiAraW50ICAgICAgICAgICAgZWxmX2NudGwoRWxmICpfZWxmLCBFbGZfQ21kIF9jbWQpOwo+ICtp
bnQgICAgICAgICAgICBlbGZfZW5kKEVsZiAqX2VsZik7Cj4gK2NvbnN0IGNoYXIgICAgICplbGZf
ZXJybXNnKGludCBfZXJyb3IpOwo+ICtpbnQgICAgICAgICAgICBlbGZfZXJybm8odm9pZCk7Cj4g
K3ZvaWQgICAgICAgICAgIGVsZl9maWxsKGludCBfZmlsbCk7Cj4gK3Vuc2lnbmVkIGludCAgIGVs
Zl9mbGFnYXJoZHIoRWxmX0FyaGRyICpfYXJoLCBFbGZfQ21kIF9jbWQsCj4gKyAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgaW50IF9mbGFncyk7Cj4gK3Vuc2lnbmVkIGludCAgIGVsZl9m
bGFnZGF0YShFbGZfRGF0YSAqX2RhdGEsIEVsZl9DbWQgX2NtZCwKPiArICAgICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBpbnQgX2ZsYWdzKTsKPiArdW5zaWduZWQgaW50ICAgZWxmX2ZsYWdl
aGRyKEVsZiAqX2VsZiwgRWxmX0NtZCBfY21kLCB1bnNpZ25lZCBpbnQgX2ZsYWdzKTsKPiArdW5z
aWduZWQgaW50ICAgZWxmX2ZsYWdlbGYoRWxmICpfZWxmLCBFbGZfQ21kIF9jbWQsIHVuc2lnbmVk
IGludCBfZmxhZ3MpOwo+ICt1bnNpZ25lZCBpbnQgICBlbGZfZmxhZ3BoZHIoRWxmICpfZWxmLCBF
bGZfQ21kIF9jbWQsIHVuc2lnbmVkIGludCBfZmxhZ3MpOwo+ICt1bnNpZ25lZCBpbnQgICBlbGZf
ZmxhZ3NjbihFbGZfU2NuICpfc2NuLCBFbGZfQ21kIF9jbWQsIHVuc2lnbmVkIGludCBfZmxhZ3Mp
Owo+ICt1bnNpZ25lZCBpbnQgICBlbGZfZmxhZ3NoZHIoRWxmX1NjbiAqX3NjbiwgRWxmX0NtZCBf
Y21kLCB1bnNpZ25lZCBpbnQgX2ZsYWdzKTsKPiArRWxmX0FyaGRyICAgICAgKmVsZl9nZXRhcmhk
cihFbGYgKl9lbGYpOwo+ICtFbGZfQXJzeW0gICAgICAqZWxmX2dldGFyc3ltKEVsZiAqX2VsZiwg
c2l6ZV90ICpfcHRyKTsKPiArb2ZmX3QgICAgICAgICAgZWxmX2dldGJhc2UoRWxmICpfZWxmKTsK
PiArRWxmX0RhdGEgICAgICAgKmVsZl9nZXRkYXRhKEVsZl9TY24gKiwgRWxmX0RhdGEgKik7Cj4g
K2NoYXIgICAgICAgICAgICplbGZfZ2V0aWRlbnQoRWxmICpfZWxmLCBzaXplX3QgKl9wdHIpOwo+
ICtpbnQgICAgICAgICAgICBlbGZfZ2V0cGhkcm51bShFbGYgKl9lbGYsIHNpemVfdCAqX2RzdCk7
Cj4gK2ludCAgICAgICAgICAgIGVsZl9nZXRwaG51bShFbGYgKl9lbGYsIHNpemVfdCAqX2RzdCk7
ICAvKiBEZXByZWNhdGVkICovCj4gK0VsZl9TY24gICAgICAgICAgICAgICAgKmVsZl9nZXRzY24o
RWxmICpfZWxmLCBzaXplX3QgX2luZGV4KTsKPiAraW50ICAgICAgICAgICAgZWxmX2dldHNoZHJu
dW0oRWxmICpfZWxmLCBzaXplX3QgKl9kc3QpOwo+ICtpbnQgICAgICAgICAgICBlbGZfZ2V0c2hu
dW0oRWxmICpfZWxmLCBzaXplX3QgKl9kc3QpOyAgLyogRGVwcmVjYXRlZCAqLwo+ICtpbnQgICAg
ICAgICAgICBlbGZfZ2V0c2hkcnN0cm5keChFbGYgKl9lbGYsIHNpemVfdCAqX2RzdCk7Cj4gK2lu
dCAgICAgICAgICAgIGVsZl9nZXRzaHN0cm5keChFbGYgKl9lbGYsIHNpemVfdCAqX2RzdCk7IC8q
IERlcHJlY2F0ZWQgKi8KPiArdW5zaWduZWQgbG9uZyAgZWxmX2hhc2goY29uc3QgY2hhciAqX25h
bWUpOwo+ICtFbGZfS2luZCAgICAgICBlbGZfa2luZChFbGYgKl9lbGYpOwo+ICtFbGYgICAgICAg
ICAgICAqZWxmX21lbW9yeShjaGFyICpfaW1hZ2UsIHNpemVfdCBfc2l6ZSk7Cj4gK3NpemVfdCAg
ICAgICAgIGVsZl9uZHhzY24oRWxmX1NjbiAqX3Njbik7Cj4gK0VsZl9EYXRhICAgICAgICplbGZf
bmV3ZGF0YShFbGZfU2NuICpfc2NuKTsKPiArRWxmX1NjbiAgICAgICAgICAgICAgICAqZWxmX25l
d3NjbihFbGYgKl9lbGYpOwo+ICtFbGZfU2NuICAgICAgICAgICAgICAgICplbGZfbmV4dHNjbihF
bGYgKl9lbGYsIEVsZl9TY24gKl9zY24pOwo+ICtFbGZfQ21kICAgICAgICAgICAgICAgIGVsZl9u
ZXh0KEVsZiAqX2VsZik7Cj4gK0VsZiAgICAgICAgICAgICplbGZfb3BlbihpbnQgX2ZkKTsKPiAr
RWxmICAgICAgICAgICAgKmVsZl9vcGVubWVtb3J5KGNoYXIgKl9pbWFnZSwgc2l6ZV90IF9zaXpl
KTsKPiArb2ZmX3QgICAgICAgICAgZWxmX3JhbmQoRWxmICpfZWxmLCBvZmZfdCBfb2ZmKTsKPiAr
RWxmX0RhdGEgICAgICAgKmVsZl9yYXdkYXRhKEVsZl9TY24gKl9zY24sIEVsZl9EYXRhICpfZGF0
YSk7Cj4gK2NoYXIgICAgICAgICAgICplbGZfcmF3ZmlsZShFbGYgKl9lbGYsIHNpemVfdCAqX3Np
emUpOwo+ICtpbnQgICAgICAgICAgICBlbGZfc2V0c2hzdHJuZHgoRWxmICpfZWxmLCBzaXplX3Qg
X3NobnVtKTsKPiArY2hhciAgICAgICAgICAgKmVsZl9zdHJwdHIoRWxmICpfZWxmLCBzaXplX3Qg
X3NlY3Rpb24sIHNpemVfdCBfb2Zmc2V0KTsKPiArb2ZmX3QgICAgICAgICAgZWxmX3VwZGF0ZShF
bGYgKl9lbGYsIEVsZl9DbWQgX2NtZCk7Cj4gK3Vuc2lnbmVkIGludCAgIGVsZl92ZXJzaW9uKHVu
c2lnbmVkIGludCBfdmVyc2lvbik7Cj4gKwo+ICtsb25nICAgICAgICAgICBlbGYzMl9jaGVja3N1
bShFbGYgKl9lbGYpOwo+ICtzaXplX3QgICAgICAgICBlbGYzMl9mc2l6ZShFbGZfVHlwZSBfdHlw
ZSwgc2l6ZV90IF9jb3VudCwKPiArICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQg
X3ZlcnNpb24pOwo+ICtFbGYzMl9FaGRyICAgICAqZWxmMzJfZ2V0ZWhkcihFbGYgKl9lbGYpOwo+
ICtFbGYzMl9QaGRyICAgICAqZWxmMzJfZ2V0cGhkcihFbGYgKl9lbGYpOwo+ICtFbGYzMl9TaGRy
ICAgICAqZWxmMzJfZ2V0c2hkcihFbGZfU2NuICpfc2NuKTsKPiArRWxmMzJfRWhkciAgICAgKmVs
ZjMyX25ld2VoZHIoRWxmICpfZWxmKTsKPiArRWxmMzJfUGhkciAgICAgKmVsZjMyX25ld3BoZHIo
RWxmICpfZWxmLCBzaXplX3QgX2NvdW50KTsKPiArRWxmX0RhdGEgICAgICAgKmVsZjMyX3hsYXRl
dG9mKEVsZl9EYXRhICpfZHN0LCBjb25zdCBFbGZfRGF0YSAqX3NyYywKPiArICAgICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBpbnQgX2VuYyk7Cj4gK0VsZl9EYXRhICAgICAgICplbGYzMl94
bGF0ZXRvbShFbGZfRGF0YSAqX2RzdCwgY29uc3QgRWxmX0RhdGEgKl9zcmMsCj4gKyAgICAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9lbmMpOwo+ICsKPiArbG9uZyAgICAgICAgICAg
ZWxmNjRfY2hlY2tzdW0oRWxmICpfZWxmKTsKPiArc2l6ZV90ICAgICAgICAgZWxmNjRfZnNpemUo
RWxmX1R5cGUgX3R5cGUsIHNpemVfdCBfY291bnQsCj4gKyAgICAgICAgICAgICAgICAgICAgICAg
dW5zaWduZWQgaW50IF92ZXJzaW9uKTsKPiArRWxmNjRfRWhkciAgICAgKmVsZjY0X2dldGVoZHIo
RWxmICpfZWxmKTsKPiArRWxmNjRfUGhkciAgICAgKmVsZjY0X2dldHBoZHIoRWxmICpfZWxmKTsK
PiArRWxmNjRfU2hkciAgICAgKmVsZjY0X2dldHNoZHIoRWxmX1NjbiAqX3Njbik7Cj4gK0VsZjY0
X0VoZHIgICAgICplbGY2NF9uZXdlaGRyKEVsZiAqX2VsZik7Cj4gK0VsZjY0X1BoZHIgICAgICpl
bGY2NF9uZXdwaGRyKEVsZiAqX2VsZiwgc2l6ZV90IF9jb3VudCk7Cj4gK0VsZl9EYXRhICAgICAg
ICplbGY2NF94bGF0ZXRvZihFbGZfRGF0YSAqX2RzdCwgY29uc3QgRWxmX0RhdGEgKl9zcmMsCj4g
KyAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9lbmMpOwo+ICtFbGZfRGF0YSAg
ICAgICAqZWxmNjRfeGxhdGV0b20oRWxmX0RhdGEgKl9kc3QsIGNvbnN0IEVsZl9EYXRhICpfc3Jj
LAo+ICsgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfZW5jKTsKPiArI2lmZGVm
IF9fY3BsdXNwbHVzCj4gK30KPiArI2VuZGlmCj4gKwo+ICsjZW5kaWYgLyogX0xJQkVMRl9IXyAq
Lwo+IGRpZmYgLS1naXQgYS9saWJlbGZfYWxpZ24uYyBiL2xpYmVsZl9hbGlnbi5jCj4gbmV3IGZp
bGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi41YWZiOThiCj4gLS0tIC9kZXYvbnVsbAo+
ICsrKyBiL2xpYmVsZl9hbGlnbi5jCj4gQEAgLTAsMCArMSwxMzUgQEAKPiArLyotCj4gKyAqIENv
cHlyaWdodCAoYykgMjAwNiwyMDA4IEpvc2VwaCBLb3NoeQo+ICsgKiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgo+ICsgKgo+ICsgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKPiArICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCj4gKyAqIGFyZSBtZXQ6
Cj4gKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Cj4gKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KPiArICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKPiArICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQo+ICsgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgo+ICsgKgo+ICsgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5E
Cj4gKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQo+ICsgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQo+ICsgKiBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRQo+ICsgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAo+ICsgKiBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUwo+ICsg
KiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikKPiArICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKPiArICogTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWQo+ICsgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCj4gKyAqIFNVQ0ggREFNQUdFLgo+ICsgKi8KPiArCj4g
KyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KPiArCj4gKyNpbmNsdWRlIDxsaWJlbGYuaD4KPiArCj4g
KyNpbmNsdWRlICJfbGliZWxmLmgiCj4gKwo+ICtFTEZUQ19WQ1NJRCgiJElkOiBsaWJlbGZfYWxp
Z24uYyAzMTc0IDIwMTUtMDMtMjcgMTc6MTM6NDFaIGVtYXN0ZSAkIik7Cj4gKwo+ICtzdHJ1Y3Qg
YWxpZ24gewo+ICsgICAgICAgdW5zaWduZWQgaW50IGEzMjsKPiArICAgICAgIHVuc2lnbmVkIGlu
dCBhNjQ7Cj4gK307Cj4gKwo+ICsjaWZkZWYgX19HTlVDX18KPiArI2RlZmluZSAgICAgICAgTUFM
SUdOKE4pICAgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4g
KyAgICAgICAgICAgICAgIC5hMzIgPSBfX2FsaWdub2ZfXyhFbGYzMl8jI04pLCAgICAgICAgICAg
ICAgICAgIFwKPiArICAgICAgICAgICAgICAgLmE2NCA9IF9fYWxpZ25vZl9fKEVsZjY0XyMjTikg
ICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgfQo+ICsjZGVmaW5lICAgICAgICBNQUxJR042
NChWKSAgICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAg
ICAgICAgICAgICAgLmEzMiA9IDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAo+ICsgICAgICAgICAgICAgICAuYTY0ID0gX19hbGlnbm9mX18oRWxmNjRfIyNWKSAgICAg
ICAgICAgICAgICAgICBcCj4gKyAgICAgICB9Cj4gKyNkZWZpbmUgICAgICAgIE1BTElHTl9XT1JE
KCkgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAg
ICAgICAgICAuYTMyID0gX19hbGlnbm9mX18oaW50MzJfdCksICAgICAgICAgICAgICAgICAgICBc
Cj4gKyAgICAgICAgICAgICAgIC5hNjQgPSBfX2FsaWdub2ZfXyhpbnQ2NF90KSAgICAgICAgICAg
ICAgICAgICAgIFwKPiArICAgICAgICAgICB9Cj4gKyNlbHNlCj4gKyNlcnJvciBOZWVkIHRoZSBf
X2FsaWdub2ZfXyBidWlsdGluLgo+ICsjZW5kaWYKPiArI2RlZmluZSAgICAgICAgVU5TVVBQT1JU
RUQoKSAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAg
ICAgICAgICAgIC5hMzIgPSAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKPiArICAgICAgICAgICAgICAgLmE2NCA9IDAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAo+ICsgICAgICAgfQo+ICsKPiArc3RhdGljIHN0cnVjdCBhbGlnbiBtYWxp
Z25bRUxGX1RfTlVNXSA9IHsKPiArICAgICAgIFtFTEZfVF9BRERSXSAgICA9IE1BTElHTihBZGRy
KSwKPiArICAgICAgIFtFTEZfVF9CWVRFXSAgICA9IHsgLmEzMiA9IDEsIC5hNjQgPSAxIH0sCj4g
KyAgICAgICBbRUxGX1RfQ0FQXSAgICAgPSBNQUxJR04oQ2FwKSwKPiArICAgICAgIFtFTEZfVF9E
WU5dICAgICA9IE1BTElHTihEeW4pLAo+ICsgICAgICAgW0VMRl9UX0VIRFJdICAgID0gTUFMSUdO
KEVoZHIpLAo+ICsgICAgICAgW0VMRl9UX0hBTEZdICAgID0gTUFMSUdOKEhhbGYpLAo+ICsgICAg
ICAgW0VMRl9UX0xXT1JEXSAgID0gTUFMSUdOKEx3b3JkKSwKPiArICAgICAgIFtFTEZfVF9NT1ZF
XSAgICA9IE1BTElHTihNb3ZlKSwKPiArICAgICAgIFtFTEZfVF9NT1ZFUF0gICA9IFVOU1VQUE9S
VEVEKCksCj4gKyAgICAgICBbRUxGX1RfTk9URV0gICAgPSBNQUxJR04oTmhkciksCj4gKyAgICAg
ICBbRUxGX1RfT0ZGXSAgICAgPSBNQUxJR04oT2ZmKSwKPiArICAgICAgIFtFTEZfVF9QSERSXSAg
ICA9IE1BTElHTihQaGRyKSwKPiArICAgICAgIFtFTEZfVF9SRUxdICAgICA9IE1BTElHTihSZWwp
LAo+ICsgICAgICAgW0VMRl9UX1JFTEFdICAgID0gTUFMSUdOKFJlbGEpLAo+ICsgICAgICAgW0VM
Rl9UX1NIRFJdICAgID0gTUFMSUdOKFNoZHIpLAo+ICsgICAgICAgW0VMRl9UX1NXT1JEXSAgID0g
TUFMSUdOKFN3b3JkKSwKPiArICAgICAgIFtFTEZfVF9TWFdPUkRdICA9IE1BTElHTjY0KFN4d29y
ZCksCj4gKyAgICAgICBbRUxGX1RfU1lNXSAgICAgPSBNQUxJR04oU3ltKSwKPiArICAgICAgIFtF
TEZfVF9TWU1JTkZPXSA9IE1BTElHTihTeW1pbmZvKSwKPiArICAgICAgIFtFTEZfVF9WREVGXSAg
ICA9IE1BTElHTihWZXJkZWYpLAo+ICsgICAgICAgW0VMRl9UX1ZORUVEXSAgID0gTUFMSUdOKFZl
cm5lZWQpLAo+ICsgICAgICAgW0VMRl9UX1dPUkRdICAgID0gTUFMSUdOKFdvcmQpLAo+ICsgICAg
ICAgW0VMRl9UX1hXT1JEXSAgID0gTUFMSUdONjQoWHdvcmQpLAo+ICsgICAgICAgW0VMRl9UX0dO
VUhBU0hdID0gTUFMSUdOX1dPUkQoKQo+ICt9Owo+ICsKPiArdW5zaWduZWQgaW50Cj4gK19saWJl
bGZfbWFsaWduKEVsZl9UeXBlIHQsIGludCBlbGZjbGFzcykKPiArewo+ICsgICAgICAgaWYgKHQg
Pj0gRUxGX1RfTlVNIHx8IChpbnQpIHQgPCAwKQo+ICsgICAgICAgICAgICAgICByZXR1cm4gKDAp
Owo+ICsKPiArICAgICAgIHJldHVybiAoZWxmY2xhc3MgPT0gRUxGQ0xBU1MzMiA/IG1hbGlnblt0
XS5hMzIgOgo+ICsgICAgICAgICAgIG1hbGlnblt0XS5hNjQpOwo+ICt9Cj4gKwo+ICsjZGVmaW5l
ICAgICAgICBGQUxJR04oQTMyLEE2NCkgeyAuYTMyID0gKEEzMiksIC5hNjQgPSAoQTY0KSB9Cj4g
Kwo+ICtzdGF0aWMgc3RydWN0IGFsaWduIGZhbGlnbltFTEZfVF9OVU1dID0gewo+ICsgICAgICAg
W0VMRl9UX0FERFJdICAgID0gRkFMSUdOKDQsOCksCj4gKyAgICAgICBbRUxGX1RfQllURV0gICAg
PSBGQUxJR04oMSwxKSwKPiArICAgICAgIFtFTEZfVF9DQVBdICAgICA9IEZBTElHTig0LDgpLAo+
ICsgICAgICAgW0VMRl9UX0RZTl0gICAgID0gRkFMSUdOKDQsOCksCj4gKyAgICAgICBbRUxGX1Rf
RUhEUl0gICAgPSBGQUxJR04oNCw4KSwKPiArICAgICAgIFtFTEZfVF9IQUxGXSAgICA9IEZBTElH
TigyLDIpLAo+ICsgICAgICAgW0VMRl9UX0xXT1JEXSAgID0gRkFMSUdOKDgsOCksCj4gKyAgICAg
ICBbRUxGX1RfTU9WRV0gICAgPSBGQUxJR04oOCw4KSwKPiArICAgICAgIFtFTEZfVF9NT1ZFUF0g
ICA9IFVOU1VQUE9SVEVEKCksCj4gKyAgICAgICBbRUxGX1RfTk9URV0gICAgPSBGQUxJR04oNCw0
KSwKPiArICAgICAgIFtFTEZfVF9PRkZdICAgICA9IEZBTElHTig0LDgpLAo+ICsgICAgICAgW0VM
Rl9UX1BIRFJdICAgID0gRkFMSUdOKDQsOCksCj4gKyAgICAgICBbRUxGX1RfUkVMXSAgICAgPSBG
QUxJR04oNCw4KSwKPiArICAgICAgIFtFTEZfVF9SRUxBXSAgICA9IEZBTElHTig0LDgpLAo+ICsg
ICAgICAgW0VMRl9UX1NIRFJdICAgID0gRkFMSUdOKDQsOCksCj4gKyAgICAgICBbRUxGX1RfU1dP
UkRdICAgPSBGQUxJR04oNCw0KSwKPiArICAgICAgIFtFTEZfVF9TWFdPUkRdICA9IEZBTElHTigw
LDgpLAo+ICsgICAgICAgW0VMRl9UX1NZTV0gICAgID0gRkFMSUdOKDQsOCksCj4gKyAgICAgICBb
RUxGX1RfU1lNSU5GT10gPSBGQUxJR04oMiwyKSwKPiArICAgICAgIFtFTEZfVF9WREVGXSAgICA9
IEZBTElHTig0LDQpLAo+ICsgICAgICAgW0VMRl9UX1ZORUVEXSAgID0gRkFMSUdOKDQsNCksCj4g
KyAgICAgICBbRUxGX1RfV09SRF0gICAgPSBGQUxJR04oNCw0KSwKPiArICAgICAgIFtFTEZfVF9Y
V09SRF0gICA9IEZBTElHTigwLDgpLAo+ICsgICAgICAgW0VMRl9UX0dOVUhBU0hdID0gRkFMSUdO
KDQsOCkKPiArfTsKPiArCj4gK3Vuc2lnbmVkIGludAo+ICtfbGliZWxmX2ZhbGlnbihFbGZfVHlw
ZSB0LCBpbnQgZWxmY2xhc3MpCj4gK3sKPiArICAgICAgIGlmICh0ID49IEVMRl9UX05VTSB8fCAo
aW50KSB0IDwgMCkKPiArICAgICAgICAgICAgICAgcmV0dXJuICgwKTsKPiArCj4gKyAgICAgICBy
ZXR1cm4gKGVsZmNsYXNzID09IEVMRkNMQVNTMzIgPyBmYWxpZ25bdF0uYTMyIDoKPiArICAgICAg
ICAgICBmYWxpZ25bdF0uYTY0KTsKPiArfQo+IGRpZmYgLS1naXQgYS9saWJlbGZfYWxsb2NhdGUu
YyBiL2xpYmVsZl9hbGxvY2F0ZS5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAw
MDAwLi4wYTc0ZmFjCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2xpYmVsZl9hbGxvY2F0ZS5jCj4g
QEAgLTAsMCArMSwyMTAgQEAKPiArLyotCj4gKyAqIENvcHlyaWdodCAoYykgMjAwNiwyMDA4LDIw
MTAgSm9zZXBoIEtvc2h5Cj4gKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCj4gKyAqCj4gKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAo+ICsgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKPiArICogYXJlIG1ldDoKPiArICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKPiAr
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgo+ICsgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAo+ICsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCj4gKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCj4gKyAqCj4gKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKPiArICogQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Cj4gKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCj4gKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCj4gKyAqIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMCj4gKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCj4gKyAqIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQo+ICsg
KiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVAo+ICsgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCj4gKyAqIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YKPiArICogU1VDSCBEQU1BR0UuCj4gKyAqLwo+ICsKPiArLyoKPiArICogSW50ZXJuYWwg
QVBJcwo+ICsgKi8KPiArCj4gKyNpbmNsdWRlIDxhc3NlcnQuaD4KPiArI2luY2x1ZGUgPGVycm5v
Lmg+Cj4gKyNpbmNsdWRlIDxsaWJlbGYuaD4KPiArI2luY2x1ZGUgPHN0ZGxpYi5oPgo+ICsjaW5j
bHVkZSA8c3RyaW5nLmg+Cj4gKwo+ICsjaW5jbHVkZSAiX2xpYmVsZi5oIgo+ICsKPiArRUxGVENf
VkNTSUQoIiRJZDogbGliZWxmX2FsbG9jYXRlLmMgMzE3NCAyMDE1LTAzLTI3IDE3OjEzOjQxWiBl
bWFzdGUgJCIpOwo+ICsKPiArRWxmICoKPiArX2xpYmVsZl9hbGxvY2F0ZV9lbGYodm9pZCkKPiAr
ewo+ICsgICAgICAgRWxmICplOwo+ICsKPiArICAgICAgIGlmICgoZSA9IG1hbGxvYyhzaXplb2Yo
KmUpKSkgPT0gTlVMTCkgewo+ICsgICAgICAgICAgICAgICBMSUJFTEZfU0VUX0VSUk9SKFJFU09V
UkNFLCBlcnJubyk7Cj4gKyAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwo+ICsgICAgICAgfQo+
ICsKPiArICAgICAgIGUtPmVfYWN0aXZhdGlvbnMgPSAxOwo+ICsgICAgICAgZS0+ZV9oZHIuZV9y
YXdoZHIgPSBOVUxMOwo+ICsgICAgICAgZS0+ZV9ieXRlb3JkZXIgICA9IEVMRkRBVEFOT05FOwo+
ICsgICAgICAgZS0+ZV9jbGFzcyAgICAgICA9IEVMRkNMQVNTTk9ORTsKPiArICAgICAgIGUtPmVf
Y21kICAgICAgICAgPSBFTEZfQ19OVUxMOwo+ICsgICAgICAgZS0+ZV9mZCAgICAgICAgICA9IC0x
Owo+ICsgICAgICAgZS0+ZV9mbGFncyAgICAgICA9IDA7Cj4gKyAgICAgICBlLT5lX2tpbmQgICAg
ICAgID0gRUxGX0tfTk9ORTsKPiArICAgICAgIGUtPmVfcGFyZW50ICAgICAgPSBOVUxMOwo+ICsg
ICAgICAgZS0+ZV9yYXdmaWxlICAgICA9IE5VTEw7Cj4gKyAgICAgICBlLT5lX3Jhd3NpemUgICAg
ID0gMDsKPiArICAgICAgIGUtPmVfdmVyc2lvbiAgICAgPSBMSUJFTEZfUFJJVkFURSh2ZXJzaW9u
KTsKPiArCj4gKyAgICAgICAodm9pZCkgbWVtc2V0KCZlLT5lX3UsIDAsIHNpemVvZihlLT5lX3Up
KTsKPiArCj4gKyAgICAgICByZXR1cm4gKGUpOwo+ICt9Cj4gKwo+ICt2b2lkCj4gK19saWJlbGZf
aW5pdF9lbGYoRWxmICplLCBFbGZfS2luZCBraW5kKQo+ICt7Cj4gKyAgICAgICBhc3NlcnQoZSAh
PSBOVUxMKTsKPiArICAgICAgIGFzc2VydChlLT5lX2tpbmQgPT0gRUxGX0tfTk9ORSk7Cj4gKwo+
ICsgICAgICAgZS0+ZV9raW5kID0ga2luZDsKPiArCj4gKyAgICAgICBzd2l0Y2ggKGtpbmQpIHsK
PiArICAgICAgIGNhc2UgRUxGX0tfRUxGOgo+ICsgICAgICAgICAgICAgICBTVEFJTFFfSU5JVCgm
ZS0+ZV91LmVfZWxmLmVfc2NuKTsKPiArICAgICAgICAgICAgICAgYnJlYWs7Cj4gKyAgICAgICBk
ZWZhdWx0Ogo+ICsgICAgICAgICAgICAgICBicmVhazsKPiArICAgICAgIH0KPiArfQo+ICsKPiAr
I2RlZmluZSAgICAgICAgRlJFRShQKSAgICAgICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAo+ICsgICAgICAgICAgICAgICBpZiAoUCkgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAo+ICsgICAgICAgICAgICAgICAgICAgICAgIGZyZWUoUCk7ICAgICAgICAgICAg
ICAgICAgICAgICAgXAo+ICsgICAgICAgfSB3aGlsZSAoMCkKPiArCj4gKwo+ICtFbGYgKgo+ICtf
bGliZWxmX3JlbGVhc2VfZWxmKEVsZiAqZSkKPiArewo+ICsgICAgICAgRWxmX0FyaGRyICphcmg7
Cj4gKwo+ICsgICAgICAgc3dpdGNoIChlLT5lX2tpbmQpIHsKPiArICAgICAgIGNhc2UgRUxGX0tf
QVI6Cj4gKyAgICAgICAgICAgICAgIEZSRUUoZS0+ZV91LmVfYXIuZV9zeW10YWIpOwo+ICsgICAg
ICAgICAgICAgICBicmVhazsKPiArCj4gKyAgICAgICBjYXNlIEVMRl9LX0VMRjoKPiArICAgICAg
ICAgICAgICAgc3dpdGNoIChlLT5lX2NsYXNzKSB7Cj4gKyAgICAgICAgICAgICAgIGNhc2UgRUxG
Q0xBU1MzMjoKPiArICAgICAgICAgICAgICAgICAgICAgICBGUkVFKGUtPmVfdS5lX2VsZi5lX2Vo
ZHIuZV9laGRyMzIpOwo+ICsgICAgICAgICAgICAgICAgICAgICAgIEZSRUUoZS0+ZV91LmVfZWxm
LmVfcGhkci5lX3BoZHIzMik7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gKyAg
ICAgICAgICAgICAgIGNhc2UgRUxGQ0xBU1M2NDoKPiArICAgICAgICAgICAgICAgICAgICAgICBG
UkVFKGUtPmVfdS5lX2VsZi5lX2VoZHIuZV9laGRyNjQpOwo+ICsgICAgICAgICAgICAgICAgICAg
ICAgIEZSRUUoZS0+ZV91LmVfZWxmLmVfcGhkci5lX3BoZHI2NCk7Cj4gKyAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Cj4gKyAgICAgICAgICAgICAgIH0KPiArCj4gKyAgICAgICAgICAgICAg
IGFzc2VydChTVEFJTFFfRU1QVFkoJmUtPmVfdS5lX2VsZi5lX3NjbikpOwo+ICsKPiArICAgICAg
ICAgICAgICAgaWYgKGUtPmVfZmxhZ3MgJiBMSUJFTEZfRl9BUl9IRUFERVIpIHsKPiArICAgICAg
ICAgICAgICAgICAgICAgICBhcmggPSBlLT5lX2hkci5lX2FyaGRyOwo+ICsgICAgICAgICAgICAg
ICAgICAgICAgIEZSRUUoYXJoLT5hcl9uYW1lKTsKPiArICAgICAgICAgICAgICAgICAgICAgICBG
UkVFKGFyaC0+YXJfcmF3bmFtZSk7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgZnJlZShhcmgp
Owo+ICsgICAgICAgICAgICAgICB9Cj4gKwo+ICsgICAgICAgICAgICAgICBicmVhazsKPiArCj4g
KyAgICAgICBkZWZhdWx0Ogo+ICsgICAgICAgICAgICAgICBicmVhazsKPiArICAgICAgIH0KPiAr
Cj4gKyAgICAgICBmcmVlKGUpOwo+ICsKPiArICAgICAgIHJldHVybiAoTlVMTCk7Cj4gK30KPiAr
Cj4gK3N0cnVjdCBfTGliZWxmX0RhdGEgKgo+ICtfbGliZWxmX2FsbG9jYXRlX2RhdGEoRWxmX1Nj
biAqcykKPiArewo+ICsgICAgICAgc3RydWN0IF9MaWJlbGZfRGF0YSAqZDsKPiArCj4gKyAgICAg
ICBpZiAoKGQgPSBjYWxsb2MoKHNpemVfdCkgMSwgc2l6ZW9mKCpkKSkpID09IE5VTEwpIHsKPiAr
ICAgICAgICAgICAgICAgTElCRUxGX1NFVF9FUlJPUihSRVNPVVJDRSwgMCk7Cj4gKyAgICAgICAg
ICAgICAgIHJldHVybiAoTlVMTCk7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgZC0+ZF9zY24g
PSBzOwo+ICsKPiArICAgICAgIHJldHVybiAoZCk7Cj4gK30KPiArCj4gK3N0cnVjdCBfTGliZWxm
X0RhdGEgKgo+ICtfbGliZWxmX3JlbGVhc2VfZGF0YShzdHJ1Y3QgX0xpYmVsZl9EYXRhICpkKQo+
ICt7Cj4gKwo+ICsgICAgICAgaWYgKGQtPmRfZmxhZ3MgJiBMSUJFTEZfRl9EQVRBX01BTExPQ0VE
KQo+ICsgICAgICAgICAgICAgICBmcmVlKGQtPmRfZGF0YS5kX2J1Zik7Cj4gKwo+ICsgICAgICAg
ZnJlZShkKTsKPiArCj4gKyAgICAgICByZXR1cm4gKE5VTEwpOwo+ICt9Cj4gKwo+ICtFbGZfU2Nu
ICoKPiArX2xpYmVsZl9hbGxvY2F0ZV9zY24oRWxmICplLCBzaXplX3QgbmR4KQo+ICt7Cj4gKyAg
ICAgICBFbGZfU2NuICpzOwo+ICsKPiArICAgICAgIGlmICgocyA9IGNhbGxvYygoc2l6ZV90KSAx
LCBzaXplb2YoRWxmX1NjbikpKSA9PSBOVUxMKSB7Cj4gKyAgICAgICAgICAgICAgIExJQkVMRl9T
RVRfRVJST1IoUkVTT1VSQ0UsIGVycm5vKTsKPiArICAgICAgICAgICAgICAgcmV0dXJuIChOVUxM
KTsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICBzLT5zX2VsZiA9IGU7Cj4gKyAgICAgICBzLT5z
X25keCA9IG5keDsKPiArCj4gKyAgICAgICBTVEFJTFFfSU5JVCgmcy0+c19kYXRhKTsKPiArICAg
ICAgIFNUQUlMUV9JTklUKCZzLT5zX3Jhd2RhdGEpOwo+ICsKPiArICAgICAgIFNUQUlMUV9JTlNF
UlRfVEFJTCgmZS0+ZV91LmVfZWxmLmVfc2NuLCBzLCBzX25leHQpOwo+ICsKPiArICAgICAgIHJl
dHVybiAocyk7Cj4gK30KPiArCj4gK0VsZl9TY24gKgo+ICtfbGliZWxmX3JlbGVhc2Vfc2NuKEVs
Zl9TY24gKnMpCj4gK3sKPiArICAgICAgIEVsZiAqZTsKPiArICAgICAgIHN0cnVjdCBfTGliZWxm
X0RhdGEgKmQsICp0ZDsKPiArCj4gKyAgICAgICBhc3NlcnQocyAhPSBOVUxMKTsKPiArCj4gKyAg
ICAgICBTVEFJTFFfRk9SRUFDSF9TQUZFKGQsICZzLT5zX2RhdGEsIGRfbmV4dCwgdGQpIHsKPiAr
ICAgICAgICAgICAgICAgU1RBSUxRX1JFTU9WRSgmcy0+c19kYXRhLCBkLCBfTGliZWxmX0RhdGEs
IGRfbmV4dCk7Cj4gKyAgICAgICAgICAgICAgIGQgPSBfbGliZWxmX3JlbGVhc2VfZGF0YShkKTsK
PiArICAgICAgIH0KPiArCj4gKyAgICAgICBTVEFJTFFfRk9SRUFDSF9TQUZFKGQsICZzLT5zX3Jh
d2RhdGEsIGRfbmV4dCwgdGQpIHsKPiArICAgICAgICAgICAgICAgYXNzZXJ0KChkLT5kX2ZsYWdz
ICYgTElCRUxGX0ZfREFUQV9NQUxMT0NFRCkgPT0gMCk7Cj4gKyAgICAgICAgICAgICAgIFNUQUlM
UV9SRU1PVkUoJnMtPnNfcmF3ZGF0YSwgZCwgX0xpYmVsZl9EYXRhLCBkX25leHQpOwo+ICsgICAg
ICAgICAgICAgICBkID0gX2xpYmVsZl9yZWxlYXNlX2RhdGEoZCk7Cj4gKyAgICAgICB9Cj4gKwo+
ICsgICAgICAgZSA9IHMtPnNfZWxmOwo+ICsKPiArICAgICAgIGFzc2VydChlICE9IE5VTEwpOwo+
ICsKPiArICAgICAgIFNUQUlMUV9SRU1PVkUoJmUtPmVfdS5lX2VsZi5lX3NjbiwgcywgX0VsZl9T
Y24sIHNfbmV4dCk7Cj4gKwo+ICsgICAgICAgZnJlZShzKTsKPiArCj4gKyAgICAgICByZXR1cm4g
KE5VTEwpOwo+ICt9Cj4gZGlmZiAtLWdpdCBhL2xpYmVsZl9hci5jIGIvbGliZWxmX2FyLmMKPiBu
ZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLmZhZWVjMmMKPiAtLS0gL2Rldi9u
dWxsCj4gKysrIGIvbGliZWxmX2FyLmMKPiBAQCAtMCwwICsxLDQ2NiBAQAo+ICsvKi0KPiArICog
Q29weXJpZ2h0IChjKSAyMDA2LDIwMDgsMjAxMCBKb3NlcGggS29zaHkKPiArICogQWxsIHJpZ2h0
cyByZXNlcnZlZC4KPiArICoKPiArICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cj4gKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwo+ICsgKiBh
cmUgbWV0Ogo+ICsgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAo+ICsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCj4gKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cj4g
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKPiArICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KPiArICoKPiArICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgYEFTIElT
JyBBTkQKPiArICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCj4gKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCj4gKyAqIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFCj4gKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCj4gKyAqIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
Cj4gKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKQo+ICsgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAo+ICsgKiBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZCj4gKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKPiArICogU1VDSCBEQU1BR0UuCj4gKyAqLwo+
ICsKPiArI2luY2x1ZGUgPGFzc2VydC5oPgo+ICsjaW5jbHVkZSA8Y3R5cGUuaD4KPiArI2luY2x1
ZGUgPGxpYmVsZi5oPgo+ICsjaW5jbHVkZSA8c3RkbGliLmg+Cj4gKyNpbmNsdWRlIDxzdHJpbmcu
aD4KPiArCj4gKyNpbmNsdWRlICJfbGliZWxmLmgiCj4gKyNpbmNsdWRlICJfbGliZWxmX2FyLmgi
Cj4gKwo+ICtFTEZUQ19WQ1NJRCgiJElkOiBsaWJlbGZfYXIuYyAzMTc0IDIwMTUtMDMtMjcgMTc6
MTM6NDFaIGVtYXN0ZSAkIik7Cj4gKwo+ICsjZGVmaW5lICAgICAgICBMSUJFTEZfTkFMTE9DX1NJ
WkUgICAgICAxNgo+ICsKPiArLyoKPiArICogYGFyJyBhcmNoaXZlIGhhbmRsaW5nLgo+ICsgKgo+
ICsgKiBgYXInIGFyY2hpdmVzIHN0YXJ0IHdpdGggc2lnbmF0dXJlIGBBUk1BRycuICBFYWNoIGFy
Y2hpdmUgbWVtYmVyIGlzCj4gKyAqIHByZWNlZGVkIGJ5IGEgaGVhZGVyIGNvbnRhaW5pbmcgbWV0
YS1kYXRhIGZvciB0aGUgbWVtYmVyLiAgVGhpcwo+ICsgKiBoZWFkZXIgaXMgZGVzY3JpYmVkIGlu
IDxhci5oPiAoc3RydWN0IGFyX2hkcikuICBUaGUgaGVhZGVyIGFsd2F5cwo+ICsgKiBzdGFydHMg
b24gYW4gZXZlbiBhZGRyZXNzLiAgRmlsZSBkYXRhIGlzIHBhZGRlZCB3aXRoICJcbiIKPiArICog
Y2hhcmFjdGVycyB0byBrZWVwIHRoaXMgaW52YXJpYW50Lgo+ICsgKgo+ICsgKiBTcGVjaWFsIGNv
bnNpZGVyYXRpb25zIGZvciBgYXInIGFyY2hpdmVzOgo+ICsgKgo+ICsgKiBUaGVyZSBhcmUgdHdv
IHZhcmlhbnRzIG9mIHRoZSBgYXInIGFyY2hpdmUgZm9ybWF0OiB0cmFkaXRpb25hbCBCU0QKPiAr
ICogYW5kIFNWUjQuICBUaGVzZSBkaWZmZXIgaW4gdGhlIHdheSBsb25nIGZpbGUgbmFtZXMgYXJl
IHRyZWF0ZWQsIGFuZAo+ICsgKiBpbiB0aGUgbGF5b3V0IG9mIHRoZSBhcmNoaXZlIHN5bWJvbCB0
YWJsZS4KPiArICoKPiArICogVGhlIGBhcicgaGVhZGVyIG9ubHkgaGFzIHNwYWNlIGZvciBhIDE2
IGNoYXJhY3RlciBmaWxlIG5hbWUuCj4gKyAqCj4gKyAqIEluIHRoZSBTVlI0IGZvcm1hdCwgZmls
ZSBuYW1lcyBhcmUgdGVybWluYXRlZCB3aXRoIGEgJy8nLCBzbyB0aGlzCj4gKyAqIGVmZmVjdGl2
ZWx5IGxlYXZlcyAxNSBjaGFyYWN0ZXJzIGZvciB0aGUgYWN0dWFsIGZpbGUgbmFtZS4gIExvbmdl
cgo+ICsgKiBmaWxlIG5hbWVzIHN0b3JlZCBpbiBhIHNlcGFyYXRlICdzdHJpbmcgdGFibGUnIGFu
ZCByZWZlcmVuY2VkCj4gKyAqIGluZGlyZWN0bHkgZnJvbSB0aGUgbmFtZSBmaWVsZC4gIFRoZSBz
dHJpbmcgdGFibGUgaXRzZWxmIGFwcGVhcnMgYXMKPiArICogYW4gYXJjaGl2ZSBtZW1iZXIgd2l0
aCBuYW1lICIvLyAiLiAgQW4gYGluZGlyZWN0JyBmaWxlIG5hbWUgaW4gYW4KPiArICogYGFyJyBo
ZWFkZXIgbWF0Y2hlcyB0aGUgcGF0dGVybiAiL1swLTldKiIuIFRoZSBkaWdpdHMgZm9ybSBhCj4g
KyAqIGRlY2ltYWwgbnVtYmVyIHRoYXQgY29ycmVzcG9uZHMgdG8gYSBieXRlIG9mZnNldCBpbnRv
IHRoZSBzdHJpbmcKPiArICogdGFibGUgd2hlcmUgdGhlIGFjdHVhbCBmaWxlIG5hbWUgb2YgdGhl
IG9iamVjdCBzdGFydHMuICBTdHJpbmdzIGluCj4gKyAqIHRoZSBzdHJpbmcgdGFibGUgYXJlIHBh
ZGRlZCB0byBzdGFydCBvbiBldmVuIGFkZHJlc3Nlcy4KPiArICoKPiArICogSW4gdGhlIEJTRCBm
b3JtYXQsIGZpbGUgbmFtZXMgY2FuIGJlIHVwdG8gMTYgY2hhcmFjdGVycy4gIEZpbGUKPiArICog
bmFtZXMgc2hvcnRlciB0aGFuIDE2IGNoYXJhY3RlcnMgYXJlIHBhZGRlZCB0byAxNiBjaGFyYWN0
ZXJzIHVzaW5nCj4gKyAqIChBU0NJSSkgc3BhY2UgY2hhcmFjdGVycy4gIEZpbGUgbmFtZXMgd2l0
aCBlbWJlZGRlZCBzcGFjZXMgYW5kIGZpbGUKPiArICogbmFtZXMgbG9uZ2VyIHRoYW4gMTYgY2hh
cmFjdGVycyBhcmUgc3RvcmVkIGltbWVkaWF0ZWx5IGFmdGVyIHRoZQo+ICsgKiBhcmNoaXZlIGhl
YWRlciBhbmQgdGhlIG5hbWUgZmllbGQgc2V0IHRvIGEgc3BlY2lhbCBpbmRpcmVjdCBuYW1lCj4g
KyAqIG1hdGNoaW5nIHRoZSBwYXR0ZXJuICIjMS9bMC05XSsiLiAgVGhlIGRpZ2l0cyBmb3JtIGEg
ZGVjaW1hbCBudW1iZXIKPiArICogdGhhdCBjb3JyZXNwb25kcyB0byB0aGUgYWN0dWFsIGxlbmd0
aCBvZiB0aGUgZmlsZSBuYW1lIGZvbGxvd2luZwo+ICsgKiB0aGUgYXJjaGl2ZSBoZWFkZXIuICBU
aGUgY29udGVudCBvZiB0aGUgYXJjaGl2ZSBtZW1iZXIgaW1tZWRpYXRlbHkKPiArICogZm9sbG93
cyB0aGUgZmlsZSBuYW1lLCBhbmQgdGhlIHNpemUgZmllbGQgb2YgdGhlIGFyY2hpdmUgbWVtYmVy
Cj4gKyAqIGhvbGRzIHRoZSBzdW0gb2YgdGhlIHNpemVzIG9mIHRoZSBtZW1iZXIgYW5kIG9mIHRo
ZSBhcHBlbmRlZCBmaWxlCj4gKyAqIG5hbWUuCj4gKyAqCj4gKyAqIEFyY2hpdmVzIG1heSBhbHNv
IGhhdmUgYSBzeW1ib2wgdGFibGUgKHNlZSByYW5saWIoMSkpLCBtYXBwaW5nCj4gKyAqIHByb2dy
YW0gc3ltYm9scyB0byBvYmplY3QgZmlsZXMgaW5zaWRlIHRoZSBhcmNoaXZlLgo+ICsgKgo+ICsg
KiBJbiB0aGUgU1ZSNCBmb3JtYXQsIGEgc3ltYm9sIHRhYmxlIHVzZXMgYSBmaWxlIG5hbWUgb2Yg
Ii8gIiBpbiBpdHMKPiArICogYXJjaGl2ZSBoZWFkZXIuICBUaGUgc3ltYm9sIHRhYmxlIGlzIHN0
cnVjdHVyZWQgYXM6Cj4gKyAqICAtIGEgNC1ieXRlIGNvdW50IG9mIGVudHJpZXMgc3RvcmVkIGFz
IGEgYmluYXJ5IHZhbHVlLCBNU0IgZmlyc3QKPiArICogIC0gJ24nIDQtYnl0ZSBvZmZzZXRzLCBz
dG9yZWQgYXMgYmluYXJ5IHZhbHVlcywgTVNCIGZpcnN0Cj4gKyAqICAtICduJyBOVUwtdGVybWlu
YXRlZCBzdHJpbmdzLCBmb3IgRUxGIHN5bWJvbCBuYW1lcywgc3RvcmVkIHVucGFkZGVkLgo+ICsg
Kgo+ICsgKiBJbiB0aGUgQlNEIGZvcm1hdCwgdGhlIHN5bWJvbCB0YWJsZSB1c2VzIGEgZmlsZSBu
YW1lIG9mICJfXy5TWU1ERUYiLgo+ICsgKiBJdCBpcyBzdHJ1Y3R1cmVkIGFzIHR3byBwYXJ0czoK
PiArICogIC0gVGhlIGZpcnN0IHBhcnQgaXMgYW4gYXJyYXkgb2YgInJhbmxpYiIgc3RydWN0dXJl
cyBwcmVjZWRlZCBieQo+ICsgKiAgICB0aGUgc2l6ZSBvZiB0aGUgYXJyYXkgaW4gYnl0ZXMuICBF
YWNoICJyYW5saWIiIHN0cnVjdHVyZQo+ICsgKiAgICBkZXNjcmliZXMgb25lIHN5bWJvbC4gIEVh
Y2ggc3RydWN0dXJlIGNvbnRhaW5zIGFuIG9mZnNldCBpbnRvCj4gKyAqICAgIHRoZSBzdHJpbmcg
dGFibGUgZm9yIHRoZSBzeW1ib2wgbmFtZSwgYW5kIGEgZmlsZSBvZmZzZXQgaW50byB0aGUKPiAr
ICogICAgYXJjaGl2ZSBmb3IgdGhlIG1lbWJlciBkZWZpbmluZyB0aGUgc3ltYm9sLgo+ICsgKiAg
LSBUaGUgc2Vjb25kIHBhcnQgaXMgYSBzdHJpbmcgdGFibGUgY29udGFpbmluZyBOVUwtdGVybWlu
YXRlZAo+ICsgKiAgICBzdHJpbmdzLCBwcmVjZWRlZCBieSB0aGUgc2l6ZSBvZiB0aGUgc3RyaW5n
IHRhYmxlIGluIGJ5dGVzLgo+ICsgKgo+ICsgKiBJZiB0aGUgc3ltYm9sIHRhYmxlIGFuZCBzdHJp
bmcgdGFibGUgYXJlIGlzIHByZXNlbnQgaW4gYW4gYXJjaGl2ZQo+ICsgKiB0aGV5IG11c3QgYmUg
dGhlIHZlcnkgZmlyc3Qgb2JqZWN0cyBhbmQgaW4gdGhhdCBvcmRlci4KPiArICovCj4gKwo+ICsK
PiArLyoKPiArICogUmV0cmlldmUgYW4gYXJjaGl2ZSBoZWFkZXIgZGVzY3JpcHRvci4KPiArICov
Cj4gKwo+ICtFbGZfQXJoZHIgKgo+ICtfbGliZWxmX2FyX2dldGhkcihFbGYgKmUpCj4gK3sKPiAr
ICAgICAgIEVsZiAqcGFyZW50Owo+ICsgICAgICAgRWxmX0FyaGRyICplaDsKPiArICAgICAgIGNo
YXIgKm5hbWVsZW47Cj4gKyAgICAgICBzaXplX3QgbiwgbmxlbjsKPiArICAgICAgIHN0cnVjdCBh
cl9oZHIgKmFyaDsKPiArCj4gKyAgICAgICBpZiAoKHBhcmVudCA9IGUtPmVfcGFyZW50KSA9PSBO
VUxMKSB7Cj4gKyAgICAgICAgICAgICAgIExJQkVMRl9TRVRfRVJST1IoQVJHVU1FTlQsIDApOwo+
ICsgICAgICAgICAgICAgICByZXR1cm4gKE5VTEwpOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAg
IGFzc2VydCgoZS0+ZV9mbGFncyAmIExJQkVMRl9GX0FSX0hFQURFUikgPT0gMCk7Cj4gKwo+ICsg
ICAgICAgYXJoID0gKHN0cnVjdCBhcl9oZHIgKikgKHVpbnRwdHJfdCkgZS0+ZV9oZHIuZV9yYXdo
ZHI7Cj4gKwo+ICsgICAgICAgYXNzZXJ0KCh1aW50cHRyX3QpIGFyaCA+PSAodWludHB0cl90KSBw
YXJlbnQtPmVfcmF3ZmlsZSArIFNBUk1BRyk7Cj4gKyAgICAgICBhc3NlcnQoKHVpbnRwdHJfdCkg
YXJoIDw9ICh1aW50cHRyX3QpIHBhcmVudC0+ZV9yYXdmaWxlICsKPiArICAgICAgICAgICBwYXJl
bnQtPmVfcmF3c2l6ZSAtIHNpemVvZihzdHJ1Y3QgYXJfaGRyKSk7Cj4gKwo+ICsgICAgICAgaWYg
KChlaCA9IG1hbGxvYyhzaXplb2YoRWxmX0FyaGRyKSkpID09IE5VTEwpIHsKPiArICAgICAgICAg
ICAgICAgTElCRUxGX1NFVF9FUlJPUihSRVNPVVJDRSwgMCk7Cj4gKyAgICAgICAgICAgICAgIHJl
dHVybiAoTlVMTCk7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgZS0+ZV9oZHIuZV9hcmhkciA9
IGVoOwo+ICsgICAgICAgZS0+ZV9mbGFncyB8PSBMSUJFTEZfRl9BUl9IRUFERVI7Cj4gKwo+ICsg
ICAgICAgZWgtPmFyX25hbWUgPSBlaC0+YXJfcmF3bmFtZSA9IE5VTEw7Cj4gKwo+ICsgICAgICAg
aWYgKChlaC0+YXJfbmFtZSA9IF9saWJlbGZfYXJfZ2V0X3RyYW5zbGF0ZWRfbmFtZShhcmgsIHBh
cmVudCkpID09Cj4gKyAgICAgICAgICAgTlVMTCkKPiArICAgICAgICAgICAgICAgZ290byBlcnJv
cjsKPiArCj4gKyAgICAgICBpZiAoX2xpYmVsZl9hcl9nZXRfbnVtYmVyKGFyaC0+YXJfdWlkLCBz
aXplb2YoYXJoLT5hcl91aWQpLCAxMCwKPiArICAgICAgICAgICAmbikgPT0gMCkKPiArICAgICAg
ICAgICAgICAgZ290byBlcnJvcjsKPiArICAgICAgIGVoLT5hcl91aWQgPSAodWlkX3QpIG47Cj4g
Kwo+ICsgICAgICAgaWYgKF9saWJlbGZfYXJfZ2V0X251bWJlcihhcmgtPmFyX2dpZCwgc2l6ZW9m
KGFyaC0+YXJfZ2lkKSwgMTAsCj4gKyAgICAgICAgICAgJm4pID09IDApCj4gKyAgICAgICAgICAg
ICAgIGdvdG8gZXJyb3I7Cj4gKyAgICAgICBlaC0+YXJfZ2lkID0gKGdpZF90KSBuOwo+ICsKPiAr
ICAgICAgIGlmIChfbGliZWxmX2FyX2dldF9udW1iZXIoYXJoLT5hcl9tb2RlLCBzaXplb2YoYXJo
LT5hcl9tb2RlKSwgOCwKPiArICAgICAgICAgICAmbikgPT0gMCkKPiArICAgICAgICAgICAgICAg
Z290byBlcnJvcjsKPiArICAgICAgIGVoLT5hcl9tb2RlID0gKG1vZGVfdCkgbjsKPiArCj4gKyAg
ICAgICBpZiAoX2xpYmVsZl9hcl9nZXRfbnVtYmVyKGFyaC0+YXJfc2l6ZSwgc2l6ZW9mKGFyaC0+
YXJfc2l6ZSksIDEwLAo+ICsgICAgICAgICAgICZuKSA9PSAwKQo+ICsgICAgICAgICAgICAgICBn
b3RvIGVycm9yOwo+ICsKPiArICAgICAgIC8qCj4gKyAgICAgICAgKiBHZXQgdGhlIHRydWUgc2l6
ZSBvZiB0aGUgbWVtYmVyIGlmIGV4dGVuZGVkIG5hbWluZyBpcyBiZWluZyB1c2VkLgo+ICsgICAg
ICAgICovCj4gKyAgICAgICBpZiAoSVNfRVhURU5ERURfQlNEX05BTUUoYXJoLT5hcl9uYW1lKSkg
ewo+ICsgICAgICAgICAgICAgICBuYW1lbGVuID0gYXJoLT5hcl9uYW1lICsKPiArICAgICAgICAg
ICAgICAgICAgIExJQkVMRl9BUl9CU0RfRVhURU5ERURfTkFNRV9QUkVGSVhfU0laRTsKPiArICAg
ICAgICAgICAgICAgaWYgKF9saWJlbGZfYXJfZ2V0X251bWJlcihuYW1lbGVuLCBzaXplb2YoYXJo
LT5hcl9uYW1lKSAtCj4gKyAgICAgICAgICAgICAgICAgICBMSUJFTEZfQVJfQlNEX0VYVEVOREVE
X05BTUVfUFJFRklYX1NJWkUsIDEwLCAmbmxlbikgPT0gMCkKPiArICAgICAgICAgICAgICAgICAg
ICAgICBnb3RvIGVycm9yOwo+ICsgICAgICAgICAgICAgICBuIC09IG5sZW47Cj4gKyAgICAgICB9
Cj4gKwo+ICsgICAgICAgZWgtPmFyX3NpemUgPSBuOwo+ICsKPiArICAgICAgIGlmICgoZWgtPmFy
X3Jhd25hbWUgPSBfbGliZWxmX2FyX2dldF9yYXdfbmFtZShhcmgpKSA9PSBOVUxMKQo+ICsgICAg
ICAgICAgICAgICBnb3RvIGVycm9yOwo+ICsKPiArICAgICAgIGVoLT5hcl9mbGFncyA9IDA7Cj4g
Kwo+ICsgICAgICAgcmV0dXJuIChlaCk7Cj4gKwo+ICsgZXJyb3I6Cj4gKyAgICAgICBpZiAoZWgp
IHsKPiArICAgICAgICAgICAgICAgaWYgKGVoLT5hcl9uYW1lKQo+ICsgICAgICAgICAgICAgICAg
ICAgICAgIGZyZWUoZWgtPmFyX25hbWUpOwo+ICsgICAgICAgICAgICAgICBpZiAoZWgtPmFyX3Jh
d25hbWUpCj4gKyAgICAgICAgICAgICAgICAgICAgICAgZnJlZShlaC0+YXJfcmF3bmFtZSk7Cj4g
KyAgICAgICAgICAgICAgIGZyZWUoZWgpOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIGUtPmVf
ZmxhZ3MgJj0gfkxJQkVMRl9GX0FSX0hFQURFUjsKPiArICAgICAgIGUtPmVfaGRyLmVfcmF3aGRy
ID0gKHVuc2lnbmVkIGNoYXIgKikgYXJoOwo+ICsKPiArICAgICAgIHJldHVybiAoTlVMTCk7Cj4g
K30KPiArCj4gK0VsZiAqCj4gK19saWJlbGZfYXJfb3Blbl9tZW1iZXIoaW50IGZkLCBFbGZfQ21k
IGMsIEVsZiAqZWxmKQo+ICt7Cj4gKyAgICAgICBFbGYgKmU7Cj4gKyAgICAgICBvZmZfdCBuZXh0
Owo+ICsgICAgICAgc2l6ZV90IG5zeiwgc3o7Cj4gKyAgICAgICBzdHJ1Y3QgYXJfaGRyICphcmg7
Cj4gKyAgICAgICBjaGFyICptZW1iZXIsICpuYW1lbGVuOwo+ICsKPiArICAgICAgIGFzc2VydChl
bGYtPmVfa2luZCA9PSBFTEZfS19BUik7Cj4gKwo+ICsgICAgICAgbmV4dCA9IGVsZi0+ZV91LmVf
YXIuZV9uZXh0Owo+ICsKPiArICAgICAgIC8qCj4gKyAgICAgICAgKiBgbmV4dCcgaXMgb25seSBz
ZXQgdG8gemVybyBieSBlbGZfbmV4dCgpIHdoZW4gdGhlIGxhc3QKPiArICAgICAgICAqIG1lbWJl
ciBvZiBhbiBhcmNoaXZlIGlzIHByb2Nlc3NlZC4KPiArICAgICAgICAqLwo+ICsgICAgICAgaWYg
KG5leHQgPT0gKG9mZl90KSAwKQo+ICsgICAgICAgICAgICAgICByZXR1cm4gKE5VTEwpOwo+ICsK
PiArICAgICAgIGFzc2VydCgobmV4dCAmIDEpID09IDApOwo+ICsKPiArICAgICAgIGFyaCA9IChz
dHJ1Y3QgYXJfaGRyICopIChlbGYtPmVfcmF3ZmlsZSArIG5leHQpOwo+ICsKPiArICAgICAgIC8q
Cj4gKyAgICAgICAgKiBSZXRyaWV2ZSB0aGUgc2l6ZSBvZiB0aGUgbWVtYmVyLgo+ICsgICAgICAg
ICovCj4gKyAgICAgICBpZiAoX2xpYmVsZl9hcl9nZXRfbnVtYmVyKGFyaC0+YXJfc2l6ZSwgc2l6
ZW9mKGFyaC0+YXJfc2l6ZSksIDEwLAo+ICsgICAgICAgICAgICZzeikgPT0gMCkgewo+ICsgICAg
ICAgICAgICAgICBMSUJFTEZfU0VUX0VSUk9SKEFSQ0hJVkUsIDApOwo+ICsgICAgICAgICAgICAg
ICByZXR1cm4gKE5VTEwpOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIC8qCj4gKyAgICAgICAg
KiBBZGp1c3QgdGhlIHNpemUgZmllbGQgZm9yIG1lbWJlcnMgaW4gQlNEIGFyY2hpdmVzIHVzaW5n
Cj4gKyAgICAgICAgKiBleHRlbmRlZCBuYW1pbmcuCj4gKyAgICAgICAgKi8KPiArICAgICAgIGlm
IChJU19FWFRFTkRFRF9CU0RfTkFNRShhcmgtPmFyX25hbWUpKSB7Cj4gKyAgICAgICAgICAgICAg
IG5hbWVsZW4gPSBhcmgtPmFyX25hbWUgKwo+ICsgICAgICAgICAgICAgICAgICAgTElCRUxGX0FS
X0JTRF9FWFRFTkRFRF9OQU1FX1BSRUZJWF9TSVpFOwo+ICsgICAgICAgICAgICAgICBpZiAoX2xp
YmVsZl9hcl9nZXRfbnVtYmVyKG5hbWVsZW4sIHNpemVvZihhcmgtPmFyX25hbWUpIC0KPiArICAg
ICAgICAgICAgICAgICAgIExJQkVMRl9BUl9CU0RfRVhURU5ERURfTkFNRV9QUkVGSVhfU0laRSwg
MTAsICZuc3opID09IDApIHsKPiArICAgICAgICAgICAgICAgICAgICAgICBMSUJFTEZfU0VUX0VS
Uk9SKEFSQ0hJVkUsIDApOwo+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoTlVMTCk7
Cj4gKyAgICAgICAgICAgICAgIH0KPiArCj4gKyAgICAgICAgICAgICAgIG1lbWJlciA9IChjaGFy
ICopIChhcmggKyAxKSArIG5zejsKPiArICAgICAgICAgICAgICAgc3ogLT0gbnN6Owo+ICsgICAg
ICAgfSBlbHNlCj4gKyAgICAgICAgICAgICAgIG1lbWJlciA9IChjaGFyICopIChhcmggKyAxKTsK
PiArCj4gKwo+ICsgICAgICAgaWYgKChlID0gZWxmX21lbW9yeShtZW1iZXIsIHN6KSkgPT0gTlVM
TCkKPiArICAgICAgICAgICAgICAgcmV0dXJuIChOVUxMKTsKPiArCj4gKyAgICAgICBlLT5lX2Zk
ID0gZmQ7Cj4gKyAgICAgICBlLT5lX2NtZCA9IGM7Cj4gKyAgICAgICBlLT5lX2hkci5lX3Jhd2hk
ciA9ICh1bnNpZ25lZCBjaGFyICopIGFyaDsKPiArCj4gKyAgICAgICBlbGYtPmVfdS5lX2FyLmVf
bmNoaWxkcmVuKys7Cj4gKyAgICAgICBlLT5lX3BhcmVudCA9IGVsZjsKPiArCj4gKyAgICAgICBy
ZXR1cm4gKGUpOwo+ICt9Cj4gKwo+ICsvKgo+ICsgKiBBIEJTRC1zdHlsZSBhcigxKSBzeW1ib2wg
dGFibGUgaGFzIHRoZSBmb2xsb3dpbmcgbGF5b3V0Ogo+ICsgKgo+ICsgKiAtIEEgY291bnQgb2Yg
Ynl0ZXMgdXNlZCBieSB0aGUgZm9sbG93aW5nIGFycmF5IG9mICdyYW5saWInCj4gKyAqICAgc3Ry
dWN0dXJlcywgc3RvcmVkIGFzIGEgJ2xvbmcnLgo+ICsgKiAtIEFuIGFycmF5IG9mICdyYW5saWIn
IHN0cnVjdHVyZXMuICBFYWNoIGFycmF5IGVsZW1lbnQgaXMKPiArICogICB0d28gJ2xvbmcncyBp
biBzaXplLgo+ICsgKiAtIEEgY291bnQgb2YgYnl0ZXMgdXNlZCBmb3IgdGhlIGZvbGxvd2luZyBz
eW1ib2wgdGFibGUuCj4gKyAqIC0gVGhlIHN5bWJvbCB0YWJsZSBpdHNlbGYuCj4gKyAqLwo+ICsK
PiArLyoKPiArICogQSBoZWxwZXIgbWFjcm8gdG8gcmVhZCBpbiBhICdsb25nJyB2YWx1ZSBmcm9t
IHRoZSBhcmNoaXZlLgo+ICsgKgo+ICsgKiBXZSB1c2UgbWVtY3B5KCkgc2luY2UgdGhlIHNvdXJj
ZSBwb2ludGVyIG1heSBiZSBtaXNhbGlnbmVkIHdpdGgKPiArICogcmVzcGVjdCB0byB0aGUgbmF0
dXJhbCBhbGlnbm1lbnQgZm9yIGEgQyAnbG9uZycuCj4gKyAqLwo+ICsjZGVmaW5lICAgICAgICBH
RVRfTE9ORyhQLCBWKWRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAg
ICAgICAgICAgIG1lbWNweSgmKFYpLCAoUCksIHNpemVvZihsb25nKSk7ICAgICAgICBcCj4gKyAg
ICAgICAgICAgICAgIChQKSArPSBzaXplb2YobG9uZyk7ICAgICAgICAgICAgICAgICAgICBcCj4g
KyAgICAgICB9IHdoaWxlICgwKQo+ICsKPiArRWxmX0Fyc3ltICoKPiArX2xpYmVsZl9hcl9wcm9j
ZXNzX2JzZF9zeW10YWIoRWxmICplLCBzaXplX3QgKmNvdW50KQo+ICt7Cj4gKyAgICAgICBFbGZf
QXJzeW0gKnN5bXRhYiwgKnN5bTsKPiArICAgICAgIHVuc2lnbmVkIGludCBuLCBuZW50cmllczsK
PiArICAgICAgIHVuc2lnbmVkIGNoYXIgKmVuZCwgKnAsICpwMCwgKnMsICpzMDsKPiArICAgICAg
IGNvbnN0IHNpemVfdCBlbnRyeXNpemUgPSAyICogc2l6ZW9mKGxvbmcpOwo+ICsgICAgICAgbG9u
ZyBhcnJheXNpemUsIGZpbGVvZmZzZXQsIHN0cm9mZnNldCwgc3RydGFic2l6ZTsKPiArCj4gKyAg
ICAgICBhc3NlcnQoZSAhPSBOVUxMKTsKPiArICAgICAgIGFzc2VydChjb3VudCAhPSBOVUxMKTsK
PiArICAgICAgIGFzc2VydChlLT5lX3UuZV9hci5lX3N5bXRhYiA9PSBOVUxMKTsKPiArCj4gKyAg
ICAgICBzeW10YWIgPSBOVUxMOwo+ICsKPiArICAgICAgIC8qCj4gKyAgICAgICAgKiBUaGUgQlNE
IHN5bWJvbCB0YWJsZSBhbHdheXMgY29udGFpbnMgdGhlIGNvdW50IGZpZWxkcyBldmVuCj4gKyAg
ICAgICAgKiBpZiB0aGVyZSBhcmUgbm8gZW50cmllcyBpbiBpdC4KPiArICAgICAgICAqLwo+ICsg
ICAgICAgaWYgKGUtPmVfdS5lX2FyLmVfcmF3c3ltdGFic3ogPCAyICogc2l6ZW9mKGxvbmcpKQo+
ICsgICAgICAgICAgICAgICBnb3RvIHN5bXRhYmVycm9yOwo+ICsKPiArICAgICAgIHAgPSBwMCA9
ICh1bnNpZ25lZCBjaGFyICopIGUtPmVfdS5lX2FyLmVfcmF3c3ltdGFiOwo+ICsgICAgICAgZW5k
ID0gcDAgKyBlLT5lX3UuZV9hci5lX3Jhd3N5bXRhYnN6Owo+ICsKPiArICAgICAgIC8qCj4gKyAg
ICAgICAgKiBSZXRyaWV2ZSB0aGUgc2l6ZSBvZiB0aGUgYXJyYXkgb2YgcmFubGliIGRlc2NyaXB0
b3JzIGFuZAo+ICsgICAgICAgICogY2hlY2sgaXQgZm9yIHZhbGlkaXR5Lgo+ICsgICAgICAgICov
Cj4gKyAgICAgICBHRVRfTE9ORyhwLCBhcnJheXNpemUpOwo+ICsKPiArICAgICAgIGlmIChhcnJh
eXNpemUgPCAwIHx8IHAwICsgYXJyYXlzaXplID49IGVuZCB8fAo+ICsgICAgICAgICAgICgoc2l6
ZV90KSBhcnJheXNpemUgJSBlbnRyeXNpemUgIT0gMCkpCj4gKyAgICAgICAgICAgICAgIGdvdG8g
c3ltdGFiZXJyb3I7Cj4gKwo+ICsgICAgICAgLyoKPiArICAgICAgICAqIENoZWNrIHRoZSB2YWx1
ZSBvZiB0aGUgc3RyaW5nIHRhYmxlIHNpemUuCj4gKyAgICAgICAgKi8KPiArICAgICAgIHMgPSBw
ICsgYXJyYXlzaXplOwo+ICsgICAgICAgR0VUX0xPTkcocywgc3RydGFic2l6ZSk7Cj4gKwo+ICsg
ICAgICAgczAgPSBzOyAgICAgICAgICAgICAgICAgLyogU3RhcnQgb2Ygc3RyaW5nIHRhYmxlLiAq
Lwo+ICsgICAgICAgaWYgKHN0cnRhYnNpemUgPCAwIHx8IHMwICsgc3RydGFic2l6ZSA+IGVuZCkK
PiArICAgICAgICAgICAgICAgZ290byBzeW10YWJlcnJvcjsKPiArCj4gKyAgICAgICBuZW50cmll
cyA9IChzaXplX3QpIGFycmF5c2l6ZSAvIGVudHJ5c2l6ZTsKPiArCj4gKyAgICAgICAvKgo+ICsg
ICAgICAgICogQWxsb2NhdGUgc3BhY2UgZm9yIHRoZSByZXR1cm5lZCBFbGZfQXJzeW0gYXJyYXku
Cj4gKyAgICAgICAgKi8KPiArICAgICAgIGlmICgoc3ltdGFiID0gbWFsbG9jKHNpemVvZihFbGZf
QXJzeW0pICogKG5lbnRyaWVzICsgMSkpKSA9PSBOVUxMKSB7Cj4gKyAgICAgICAgICAgICAgIExJ
QkVMRl9TRVRfRVJST1IoUkVTT1VSQ0UsIDApOwo+ICsgICAgICAgICAgICAgICByZXR1cm4gKE5V
TEwpOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIC8qIFJlYWQgaW4gc3ltYm9sIHRhYmxlIGVu
dHJpZXMuICovCj4gKyAgICAgICBmb3IgKG4gPSAwLCBzeW0gPSBzeW10YWI7IG4gPCBuZW50cmll
czsgbisrLCBzeW0rKykgewo+ICsgICAgICAgICAgICAgICBHRVRfTE9ORyhwLCBzdHJvZmZzZXQp
Owo+ICsgICAgICAgICAgICAgICBHRVRfTE9ORyhwLCBmaWxlb2Zmc2V0KTsKPiArCj4gKyAgICAg
ICAgICAgICAgIGlmIChzdHJvZmZzZXQgPCAwIHx8IGZpbGVvZmZzZXQgPCAgMCB8fAo+ICsgICAg
ICAgICAgICAgICAgICAgKHNpemVfdCkgZmlsZW9mZnNldCA+PSBlLT5lX3Jhd3NpemUpCj4gKyAg
ICAgICAgICAgICAgICAgICAgICAgZ290byBzeW10YWJlcnJvcjsKPiArCj4gKyAgICAgICAgICAg
ICAgIHMgPSBzMCArIHN0cm9mZnNldDsKPiArCj4gKyAgICAgICAgICAgICAgIGlmIChzID49IGVu
ZCkKPiArICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHN5bXRhYmVycm9yOwo+ICsKPiArICAg
ICAgICAgICAgICAgc3ltLT5hc19vZmYgPSAob2ZmX3QpIGZpbGVvZmZzZXQ7Cj4gKyAgICAgICAg
ICAgICAgIHN5bS0+YXNfaGFzaCA9IGVsZl9oYXNoKChjaGFyICopIHMpOwo+ICsgICAgICAgICAg
ICAgICBzeW0tPmFzX25hbWUgPSAoY2hhciAqKSBzOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAg
IC8qIEZpbGwgdXAgdGhlIHNlbnRpbmVsIGVudHJ5LiAqLwo+ICsgICAgICAgc3ltLT5hc19uYW1l
ID0gTlVMTDsKPiArICAgICAgIHN5bS0+YXNfaGFzaCA9IH4wVUw7Cj4gKyAgICAgICBzeW0tPmFz
X29mZiA9IChvZmZfdCkgMDsKPiArCj4gKyAgICAgICAvKiBSZW1lbWJlciB0aGUgcHJvY2Vzc2Vk
IHN5bWJvbCB0YWJsZS4gKi8KPiArICAgICAgIGUtPmVfdS5lX2FyLmVfc3ltdGFiID0gc3ltdGFi
Owo+ICsKPiArICAgICAgICpjb3VudCA9IGUtPmVfdS5lX2FyLmVfc3ltdGFic3ogPSBuZW50cmll
cyArIDE7Cj4gKwo+ICsgICAgICAgcmV0dXJuIChzeW10YWIpOwo+ICsKPiArc3ltdGFiZXJyb3I6
Cj4gKyAgICAgICBpZiAoc3ltdGFiKQo+ICsgICAgICAgICAgICAgICBmcmVlKHN5bXRhYik7Cj4g
KyAgICAgICBMSUJFTEZfU0VUX0VSUk9SKEFSQ0hJVkUsIDApOwo+ICsgICAgICAgcmV0dXJuIChO
VUxMKTsKPiArfQo+ICsKPiArLyoKPiArICogQW4gU1ZSNC1zdHlsZSBhcigxKSBzeW1ib2wgdGFi
bGUgaGFzIHRoZSBmb2xsb3dpbmcgbGF5b3V0Ogo+ICsgKgo+ICsgKiAtIFRoZSBmaXJzdCA0IGJ5
dGVzIGFyZSBhIGJpbmFyeSBjb3VudCBvZiB0aGUgbnVtYmVyIG9mIGVudHJpZXMgaW4gdGhlCj4g
KyAqICAgc3ltYm9sIHRhYmxlLCBzdG9yZWQgTVNCLWZpcnN0Lgo+ICsgKiAtIFRoZW4gdGhlcmUg
YXJlICduJyA0LWJ5dGUgYmluYXJ5IG9mZnNldHMsIGFsc28gc3RvcmVkIE1TQiBmaXJzdC4KPiAr
ICogLSBGb2xsb3dpbmcgdGhpcywgdGhlcmUgYXJlICduJyBudWxsLXRlcm1pbmF0ZWQgc3RyaW5n
cy4KPiArICovCj4gKwo+ICsjZGVmaW5lICAgICAgICBHRVRfV09SRChQLCBWKSBkbyB7ICAgICAg
ICAgICAgICAgICAgICAgXAo+ICsgICAgICAgICAgICAgICAoVikgPSAwOyAgICAgICAgICAgICAg
ICAgICAgICAgIFwKPiArICAgICAgICAgICAgICAgKFYpID0gKFApWzBdOyAoVikgPDw9IDg7ICAg
ICAgICBcCj4gKyAgICAgICAgICAgICAgIChWKSArPSAoUClbMV07IChWKSA8PD0gODsgICAgICAg
XAo+ICsgICAgICAgICAgICAgICAoVikgKz0gKFApWzJdOyAoVikgPDw9IDg7ICAgICAgIFwKPiAr
ICAgICAgICAgICAgICAgKFYpICs9IChQKVszXTsgICAgICAgICAgICAgICAgICBcCj4gKyAgICAg
ICB9IHdoaWxlICgwKQo+ICsKPiArI2RlZmluZSAgICAgICAgSU5UU1ogICA0Cj4gKwo+ICsKPiAr
RWxmX0Fyc3ltICoKPiArX2xpYmVsZl9hcl9wcm9jZXNzX3N2cjRfc3ltdGFiKEVsZiAqZSwgc2l6
ZV90ICpjb3VudCkKPiArewo+ICsgICAgICAgdWludDMyX3Qgb2ZmOwo+ICsgICAgICAgc2l6ZV90
IG4sIG5lbnRyaWVzOwo+ICsgICAgICAgRWxmX0Fyc3ltICpzeW10YWIsICpzeW07Cj4gKyAgICAg
ICB1bnNpZ25lZCBjaGFyICpwLCAqcywgKmVuZDsKPiArCj4gKyAgICAgICBhc3NlcnQoZSAhPSBO
VUxMKTsKPiArICAgICAgIGFzc2VydChjb3VudCAhPSBOVUxMKTsKPiArICAgICAgIGFzc2VydChl
LT5lX3UuZV9hci5lX3N5bXRhYiA9PSBOVUxMKTsKPiArCj4gKyAgICAgICBzeW10YWIgPSBOVUxM
Owo+ICsKPiArICAgICAgIGlmIChlLT5lX3UuZV9hci5lX3Jhd3N5bXRhYnN6IDwgSU5UU1opCj4g
KyAgICAgICAgICAgICAgIGdvdG8gc3ltdGFiZXJyb3I7Cj4gKwo+ICsgICAgICAgcCA9ICh1bnNp
Z25lZCBjaGFyICopIGUtPmVfdS5lX2FyLmVfcmF3c3ltdGFiOwo+ICsgICAgICAgZW5kID0gcCAr
IGUtPmVfdS5lX2FyLmVfcmF3c3ltdGFic3o7Cj4gKwo+ICsgICAgICAgR0VUX1dPUkQocCwgbmVu
dHJpZXMpOwo+ICsgICAgICAgcCArPSBJTlRTWjsKPiArCj4gKyAgICAgICBpZiAobmVudHJpZXMg
PT0gMCB8fCBwICsgbmVudHJpZXMgKiBJTlRTWiA+PSBlbmQpCj4gKyAgICAgICAgICAgICAgIGdv
dG8gc3ltdGFiZXJyb3I7Cj4gKwo+ICsgICAgICAgLyogQWxsb2NhdGUgc3BhY2UgZm9yIGEgbmVu
dHJpZXMgKyBhIHNlbnRpbmVsLiAqLwo+ICsgICAgICAgaWYgKChzeW10YWIgPSBtYWxsb2Moc2l6
ZW9mKEVsZl9BcnN5bSkgKiAobmVudHJpZXMrMSkpKSA9PSBOVUxMKSB7Cj4gKyAgICAgICAgICAg
ICAgIExJQkVMRl9TRVRfRVJST1IoUkVTT1VSQ0UsIDApOwo+ICsgICAgICAgICAgICAgICByZXR1
cm4gKE5VTEwpOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIHMgPSBwICsgKG5lbnRyaWVzICog
SU5UU1opOyAvKiBzdGFydCBvZiB0aGUgc3RyaW5nIHRhYmxlLiAqLwo+ICsKPiArICAgICAgIGZv
ciAobiA9IG5lbnRyaWVzLCBzeW0gPSBzeW10YWI7IG4gPiAwOyBuLS0pIHsKPiArICAgICAgICAg
ICAgICAgaWYgKHMgPj0gZW5kKQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gc3ltdGFi
ZXJyb3I7Cj4gKwo+ICsgICAgICAgICAgICAgICBHRVRfV09SRChwLCBvZmYpOwo+ICsgICAgICAg
ICAgICAgICBpZiAob2ZmID49IGUtPmVfcmF3c2l6ZSkKPiArICAgICAgICAgICAgICAgICAgICAg
ICBnb3RvIHN5bXRhYmVycm9yOwo+ICsKPiArICAgICAgICAgICAgICAgc3ltLT5hc19vZmYgPSAo
b2ZmX3QpIG9mZjsKPiArICAgICAgICAgICAgICAgc3ltLT5hc19oYXNoID0gZWxmX2hhc2goKGNo
YXIgKikgcyk7Cj4gKyAgICAgICAgICAgICAgIHN5bS0+YXNfbmFtZSA9IChjaGFyICopIHM7Cj4g
Kwo+ICsgICAgICAgICAgICAgICBwICs9IElOVFNaOwo+ICsgICAgICAgICAgICAgICBzeW0rKzsK
PiArCj4gKyAgICAgICAgICAgICAgIGZvciAoOyBzIDwgZW5kICYmICpzKysgIT0gJ1wwJzspIC8q
IHNraXAgdG8gbmV4dCBzdHJpbmcgKi8KPiArICAgICAgICAgICAgICAgICAgICAgICA7Cj4gKyAg
ICAgICB9Cj4gKwo+ICsgICAgICAgLyogRmlsbCB1cCB0aGUgc2VudGluZWwgZW50cnkuICovCj4g
KyAgICAgICBzeW0tPmFzX25hbWUgPSBOVUxMOwo+ICsgICAgICAgc3ltLT5hc19oYXNoID0gfjBV
TDsKPiArICAgICAgIHN5bS0+YXNfb2ZmID0gKG9mZl90KSAwOwo+ICsKPiArICAgICAgICpjb3Vu
dCA9IGUtPmVfdS5lX2FyLmVfc3ltdGFic3ogPSBuZW50cmllcyArIDE7Cj4gKyAgICAgICBlLT5l
X3UuZV9hci5lX3N5bXRhYiA9IHN5bXRhYjsKPiArCj4gKyAgICAgICByZXR1cm4gKHN5bXRhYik7
Cj4gKwo+ICtzeW10YWJlcnJvcjoKPiArICAgICAgIGlmIChzeW10YWIpCj4gKyAgICAgICAgICAg
ICAgIGZyZWUoc3ltdGFiKTsKPiArICAgICAgIExJQkVMRl9TRVRfRVJST1IoQVJDSElWRSwgMCk7
Cj4gKyAgICAgICByZXR1cm4gKE5VTEwpOwo+ICt9Cj4gZGlmZiAtLWdpdCBhL2xpYmVsZl9hcl91
dGlsLmMgYi9saWJlbGZfYXJfdXRpbC5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAw
MDAwMDAwLi4yMzk2MTJlCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2xpYmVsZl9hcl91dGlsLmMK
PiBAQCAtMCwwICsxLDM2MCBAQAo+ICsvKi0KPiArICogQ29weXJpZ2h0IChjKSAyMDA2LDIwMDks
MjAxMCBKb3NlcGggS29zaHkKPiArICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KPiArICoKPiArICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Cj4gKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwo+ICsgKiBhcmUgbWV0Ogo+ICsgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAo+
ICsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCj4gKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cj4gKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKPiArICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KPiArICoKPiArICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgYEFTIElTJyBBTkQKPiArICogQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Cj4gKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCj4gKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCj4gKyAqIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMCj4gKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCj4gKyAqIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQo+ICsg
KiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVAo+ICsgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCj4gKyAqIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YKPiArICogU1VDSCBEQU1BR0UuCj4gKyAqLwo+ICsKPiArI2luY2x1ZGUgPGFzc2VydC5o
Pgo+ICsjaW5jbHVkZSA8bGliZWxmLmg+Cj4gKyNpbmNsdWRlIDxzdGRsaWIuaD4KPiArI2luY2x1
ZGUgPHN0cmluZy5oPgo+ICsKPiArI2luY2x1ZGUgIl9saWJlbGYuaCIKPiArI2luY2x1ZGUgIl9s
aWJlbGZfYXIuaCIKPiArCj4gK0VMRlRDX1ZDU0lEKCIkSWQ6IGxpYmVsZl9hcl91dGlsLmMgMzE3
NCAyMDE1LTAzLTI3IDE3OjEzOjQxWiBlbWFzdGUgJCIpOwo+ICsKPiArLyoKPiArICogQ29udmVy
dCBhIHN0cmluZyBib3VuZGVkIGJ5IGBzdGFydCcgYW5kIGBzdGFydCtzeicgKGV4Y2x1c2l2ZSkg
dG8gYQo+ICsgKiBudW1iZXIgaW4gdGhlIHNwZWNpZmllZCBiYXNlLgo+ICsgKi8KPiAraW50Cj4g
K19saWJlbGZfYXJfZ2V0X251bWJlcihjb25zdCBjaGFyICpzcmMsIHNpemVfdCBzeiwgdW5zaWdu
ZWQgaW50IGJhc2UsCj4gKyAgICBzaXplX3QgKnJldCkKPiArewo+ICsgICAgICAgc2l6ZV90IHI7
Cj4gKyAgICAgICB1bnNpZ25lZCBpbnQgYywgdjsKPiArICAgICAgIGNvbnN0IHVuc2lnbmVkIGNo
YXIgKmUsICpzOwo+ICsKPiArICAgICAgIGFzc2VydChiYXNlIDw9IDEwKTsKPiArCj4gKyAgICAg
ICBzID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgc3JjOwo+ICsgICAgICAgZSA9IHMgKyBzejsK
PiArCj4gKyAgICAgICAvKiBza2lwIGxlYWRpbmcgYmxhbmtzICovCj4gKyAgICAgICBmb3IgKDtz
IDwgZSAmJiAoYyA9ICpzKSA9PSAnICc7IHMrKykKPiArICAgICAgICAgICAgICAgOwo+ICsKPiAr
ICAgICAgIHIgPSAwTDsKPiArICAgICAgIGZvciAoO3MgPCBlOyBzKyspIHsKPiArICAgICAgICAg
ICAgICAgaWYgKChjID0gKnMpID09ICcgJykKPiArICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKPiArICAgICAgICAgICAgICAgaWYgKGMgPCAnMCcgfHwgYyA+ICc5JykKPiArICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gKDApOwo+ICsgICAgICAgICAgICAgICB2ID0gYyAtICcwJzsK
PiArICAgICAgICAgICAgICAgaWYgKHYgPj0gYmFzZSkgICAgICAgICAgLyogSWxsZWdhbCBkaWdp
dC4gKi8KPiArICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKPiArICAgICAgICAgICAgICAg
ciAqPSBiYXNlOwo+ICsgICAgICAgICAgICAgICByICs9IHY7Cj4gKyAgICAgICB9Cj4gKwo+ICsg
ICAgICAgKnJldCA9IHI7Cj4gKwo+ICsgICAgICAgcmV0dXJuICgxKTsKPiArfQo+ICsKPiArLyoK
PiArICogUmV0dXJuIHRoZSB0cmFuc2xhdGVkIG5hbWUgZm9yIGFuIGFyY2hpdmUgbWVtYmVyLgo+
ICsgKi8KPiArY2hhciAqCj4gK19saWJlbGZfYXJfZ2V0X3RyYW5zbGF0ZWRfbmFtZShjb25zdCBz
dHJ1Y3QgYXJfaGRyICphcmgsIEVsZiAqYXIpCj4gK3sKPiArICAgICAgIGNoYXIgKnM7Cj4gKyAg
ICAgICB1bnNpZ25lZCBjaGFyIGM7Cj4gKyAgICAgICBzaXplX3QgbGVuLCBvZmZzZXQ7Cj4gKyAg
ICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpidWYsICpwLCAqcSwgKnI7Cj4gKyAgICAgICBjb25z
dCBzaXplX3QgYnVmc2l6ZSA9IHNpemVvZihhcmgtPmFyX25hbWUpOwo+ICsKPiArICAgICAgIGFz
c2VydChhcmggIT0gTlVMTCk7Cj4gKyAgICAgICBhc3NlcnQoYXItPmVfa2luZCA9PSBFTEZfS19B
Uik7Cj4gKyAgICAgICBhc3NlcnQoKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgYXJoID49IGFyLT5l
X3Jhd2ZpbGUgJiYKPiArICAgICAgICAgICAoY29uc3QgdW5zaWduZWQgY2hhciAqKSBhcmggPCBh
ci0+ZV9yYXdmaWxlICsgYXItPmVfcmF3c2l6ZSk7Cj4gKwo+ICsgICAgICAgYnVmID0gKGNvbnN0
IHVuc2lnbmVkIGNoYXIgKikgYXJoLT5hcl9uYW1lOwo+ICsKPiArICAgICAgIC8qCj4gKyAgICAg
ICAgKiBDaGVjayBmb3IgZXh0ZW5kZWQgbmFtaW5nLgo+ICsgICAgICAgICoKPiArICAgICAgICAq
IElmIHRoZSBuYW1lIG1hdGNoZXMgdGhlIHBhdHRlcm4gIl4vWzAtOV0rIiwgaXQgaXMgYW4KPiAr
ICAgICAgICAqIFNWUjQtc3R5bGUgZXh0ZW5kZWQgbmFtZS4gIElmIHRoZSBuYW1lIG1hdGNoZXMg
dGhlIHBhdHRlcm4KPiArICAgICAgICAqICIjMS9bMC05XSsiLCB0aGUgZW50cnkgdXNlcyBCU0Qg
c3R5bGUgZXh0ZW5kZWQgbmFtaW5nLgo+ICsgICAgICAgICovCj4gKyAgICAgICBpZiAoYnVmWzBd
ID09ICcvJyAmJiAoYyA9IGJ1ZlsxXSkgPj0gJzAnICYmIGMgPD0gJzknKSB7Cj4gKyAgICAgICAg
ICAgICAgIC8qCj4gKyAgICAgICAgICAgICAgICAqIFRoZSB2YWx1ZSBpbiBmaWVsZCBhcl9uYW1l
IGlzIGEgZGVjaW1hbCBvZmZzZXQgaW50bwo+ICsgICAgICAgICAgICAgICAgKiB0aGUgYXJjaGl2
ZSBzdHJpbmcgdGFibGUgd2hlcmUgdGhlIGFjdHVhbCBuYW1lCj4gKyAgICAgICAgICAgICAgICAq
IHJlc2lkZXMuCj4gKyAgICAgICAgICAgICAgICAqLwo+ICsgICAgICAgICAgICAgICBpZiAoX2xp
YmVsZl9hcl9nZXRfbnVtYmVyKChjb25zdCBjaGFyICopIChidWYgKyAxKSwKPiArICAgICAgICAg
ICAgICAgICAgICAgICBidWZzaXplIC0gMSwgMTAsICZvZmZzZXQpID09IDApIHsKPiArICAgICAg
ICAgICAgICAgICAgICAgICBMSUJFTEZfU0VUX0VSUk9SKEFSQ0hJVkUsIDApOwo+ICsgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiAoTlVMTCk7Cj4gKyAgICAgICAgICAgICAgIH0KPiArCj4g
KyAgICAgICAgICAgICAgIGlmIChvZmZzZXQgPiBhci0+ZV91LmVfYXIuZV9yYXdzdHJ0YWJzeikg
ewo+ICsgICAgICAgICAgICAgICAgICAgICAgIExJQkVMRl9TRVRfRVJST1IoQVJDSElWRSwgMCk7
Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChOVUxMKTsKPiArICAgICAgICAgICAg
ICAgfQo+ICsKPiArICAgICAgICAgICAgICAgcCA9IHEgPSBhci0+ZV91LmVfYXIuZV9yYXdzdHJ0
YWIgKyBvZmZzZXQ7Cj4gKyAgICAgICAgICAgICAgIHIgPSBhci0+ZV91LmVfYXIuZV9yYXdzdHJ0
YWIgKyBhci0+ZV91LmVfYXIuZV9yYXdzdHJ0YWJzejsKPiArCj4gKyAgICAgICAgICAgICAgIGZv
ciAoOyBwIDwgciAmJiAqcCAhPSAnLyc7IHArKykKPiArICAgICAgICAgICAgICAgICAgICAgICA7
Cj4gKyAgICAgICAgICAgICAgIGxlbiA9IChzaXplX3QpIChwIC0gcSArIDEpOyAvKiBzcGFjZSBm
b3IgdGhlIHRyYWlsaW5nIE5VTCAqLwo+ICsKPiArICAgICAgICAgICAgICAgaWYgKChzID0gbWFs
bG9jKGxlbikpID09IE5VTEwpIHsKPiArICAgICAgICAgICAgICAgICAgICAgICBMSUJFTEZfU0VU
X0VSUk9SKFJFU09VUkNFLCAwKTsKPiArICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKE5V
TEwpOwo+ICsgICAgICAgICAgICAgICB9Cj4gKwo+ICsgICAgICAgICAgICAgICAodm9pZCkgc3Ry
bmNweShzLCAoY29uc3QgY2hhciAqKSBxLCBsZW4gLSAxKTsKPiArICAgICAgICAgICAgICAgc1ts
ZW4gLSAxXSA9ICdcMCc7Cj4gKwo+ICsgICAgICAgICAgICAgICByZXR1cm4gKHMpOwo+ICsgICAg
ICAgfSBlbHNlIGlmIChJU19FWFRFTkRFRF9CU0RfTkFNRShidWYpKSB7Cj4gKyAgICAgICAgICAg
ICAgIHIgPSBidWYgKyBMSUJFTEZfQVJfQlNEX0VYVEVOREVEX05BTUVfUFJFRklYX1NJWkU7Cj4g
Kwo+ICsgICAgICAgICAgICAgICBpZiAoX2xpYmVsZl9hcl9nZXRfbnVtYmVyKChjb25zdCBjaGFy
ICopIHIsIGJ1ZnNpemUgLQo+ICsgICAgICAgICAgICAgICAgICAgICAgIExJQkVMRl9BUl9CU0Rf
RVhURU5ERURfTkFNRV9QUkVGSVhfU0laRSwgMTAsCj4gKyAgICAgICAgICAgICAgICAgICAgICAg
JmxlbikgPT0gMCkgewo+ICsgICAgICAgICAgICAgICAgICAgICAgIExJQkVMRl9TRVRfRVJST1Io
QVJDSElWRSwgMCk7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChOVUxMKTsKPiAr
ICAgICAgICAgICAgICAgfQo+ICsKPiArICAgICAgICAgICAgICAgLyoKPiArICAgICAgICAgICAg
ICAgICogQWxsb2NhdGUgc3BhY2UgZm9yIHRoZSBmaWxlIG5hbWUgcGx1cyBhCj4gKyAgICAgICAg
ICAgICAgICAqIHRyYWlsaW5nIE5VTC4KPiArICAgICAgICAgICAgICAgICovCj4gKyAgICAgICAg
ICAgICAgIGlmICgocyA9IG1hbGxvYyhsZW4gKyAxKSkgPT0gTlVMTCkgewo+ICsgICAgICAgICAg
ICAgICAgICAgICAgIExJQkVMRl9TRVRfRVJST1IoUkVTT1VSQ0UsIDApOwo+ICsgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiAoTlVMTCk7Cj4gKyAgICAgICAgICAgICAgIH0KPiArCj4gKyAg
ICAgICAgICAgICAgIC8qCj4gKyAgICAgICAgICAgICAgICAqIFRoZSBmaWxlIG5hbWUgZm9sbG93
cyB0aGUgYXJjaGl2ZSBoZWFkZXIuCj4gKyAgICAgICAgICAgICAgICAqLwo+ICsgICAgICAgICAg
ICAgICBxID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgKGFyaCArIDEpOwo+ICsKPiArICAgICAg
ICAgICAgICAgKHZvaWQpIHN0cm5jcHkocywgKGNvbnN0IGNoYXIgKikgcSwgbGVuKTsKPiArICAg
ICAgICAgICAgICAgc1tsZW5dID0gJ1wwJzsKPiArCj4gKyAgICAgICAgICAgICAgIHJldHVybiAo
cyk7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgLyoKPiArICAgICAgICAqIEEgJ25vcm1hbCcg
bmFtZS4KPiArICAgICAgICAqCj4gKyAgICAgICAgKiBTa2lwIGJhY2sgb3ZlciB0cmFpbGluZyBi
bGFua3MgZnJvbSB0aGUgZW5kIG9mIHRoZSBmaWVsZC4KPiArICAgICAgICAqIEluIHRoZSBTVlI0
IGZvcm1hdCwgYSAnLycgaXMgdXNlZCBhcyBhIHRlcm1pbmF0b3IgZm9yCj4gKyAgICAgICAgKiBu
b24tc3BlY2lhbCBuYW1lcy4KPiArICAgICAgICAqLwo+ICsgICAgICAgZm9yIChxID0gYnVmICsg
YnVmc2l6ZSAtIDE7IHEgPj0gYnVmICYmICpxID09ICcgJzsgLS1xKQo+ICsgICAgICAgICAgICAg
ICA7Cj4gKwo+ICsgICAgICAgaWYgKHEgPj0gYnVmKSB7Cj4gKyAgICAgICAgICAgICAgIGlmICgq
cSA9PSAnLycpIHsKPiArICAgICAgICAgICAgICAgICAgICAgICAvKgo+ICsgICAgICAgICAgICAg
ICAgICAgICAgICAqIFNWUjQgc3R5bGUgbmFtZXM6IGlnbm9yZSB0aGUgdHJhaWxpbmcKPiArICAg
ICAgICAgICAgICAgICAgICAgICAgKiBjaGFyYWN0ZXIgJy8nLCBidXQgb25seSBpZiB0aGUgbmFt
ZSBpcyBub3QKPiArICAgICAgICAgICAgICAgICAgICAgICAgKiBvbmUgb2YgdGhlIHNwZWNpYWwg
bmFtZXMgIi8iIGFuZCAiLy8iLgo+ICsgICAgICAgICAgICAgICAgICAgICAgICAqLwo+ICsgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChxID4gYnVmICsgMSB8fAo+ICsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAocSA9PSAoYnVmICsgMSkgJiYgKmJ1ZiAhPSAnLycpKQo+ICsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcS0tOwo+ICsgICAgICAgICAgICAgICB9Cj4gKwo+ICsgICAg
ICAgICAgICAgICBsZW4gPSAoc2l6ZV90KSAocSAtIGJ1ZiArIDIpOyAvKiBTcGFjZSBmb3IgYSB0
cmFpbGluZyBOVUwuICovCj4gKyAgICAgICB9IGVsc2Ugewo+ICsgICAgICAgICAgICAgICAvKiBU
aGUgYnVmZmVyIG9ubHkgaGFkIGJsYW5rcy4gKi8KPiArICAgICAgICAgICAgICAgYnVmID0gKGNv
bnN0IHVuc2lnbmVkIGNoYXIgKikgIiI7Cj4gKyAgICAgICAgICAgICAgIGxlbiA9IDE7Cj4gKyAg
ICAgICB9Cj4gKwo+ICsgICAgICAgaWYgKChzID0gbWFsbG9jKGxlbikpID09IE5VTEwpIHsKPiAr
ICAgICAgICAgICAgICAgTElCRUxGX1NFVF9FUlJPUihSRVNPVVJDRSwgMCk7Cj4gKyAgICAgICAg
ICAgICAgIHJldHVybiAoTlVMTCk7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgKHZvaWQpIHN0
cm5jcHkocywgKGNvbnN0IGNoYXIgKikgYnVmLCBsZW4gLSAxKTsKPiArICAgICAgIHNbbGVuIC0g
MV0gPSAnXDAnOwo+ICsKPiArICAgICAgIHJldHVybiAocyk7Cj4gK30KPiArCj4gKy8qCj4gKyAq
IFJldHVybiB0aGUgcmF3IG5hbWUgZm9yIGFuIGFyY2hpdmUgbWVtYmVyLCBpbmNsdXNpdmUgb2Yg
YW55Cj4gKyAqIGZvcm1hdHRpbmcgY2hhcmFjdGVycy4KPiArICovCj4gK2NoYXIgKgo+ICtfbGli
ZWxmX2FyX2dldF9yYXdfbmFtZShjb25zdCBzdHJ1Y3QgYXJfaGRyICphcmgpCj4gK3sKPiArICAg
ICAgIGNoYXIgKnJhd25hbWU7Cj4gKyAgICAgICBjb25zdCBzaXplX3QgbmFtZXN6ID0gc2l6ZW9m
KGFyaC0+YXJfbmFtZSk7Cj4gKwo+ICsgICAgICAgaWYgKChyYXduYW1lID0gbWFsbG9jKG5hbWVz
eiArIDEpKSA9PSBOVUxMKSB7Cj4gKyAgICAgICAgICAgICAgIExJQkVMRl9TRVRfRVJST1IoUkVT
T1VSQ0UsIDApOwo+ICsgICAgICAgICAgICAgICByZXR1cm4gKE5VTEwpOwo+ICsgICAgICAgfQo+
ICsKPiArICAgICAgICh2b2lkKSBzdHJuY3B5KHJhd25hbWUsIGFyaC0+YXJfbmFtZSwgbmFtZXN6
KTsKPiArICAgICAgIHJhd25hbWVbbmFtZXN6XSA9ICdcMCc7Cj4gKyAgICAgICByZXR1cm4gKHJh
d25hbWUpOwo+ICt9Cj4gKwo+ICsvKgo+ICsgKiBPcGVuIGFuICdhcicgYXJjaGl2ZS4KPiArICov
Cj4gK0VsZiAqCj4gK19saWJlbGZfYXJfb3BlbihFbGYgKmUsIGludCByZXBvcnRlcnJvcikKPiAr
ewo+ICsgICAgICAgc2l6ZV90IHN6Owo+ICsgICAgICAgaW50IHNjYW5haGVhZDsKPiArICAgICAg
IHN0cnVjdCBhcl9oZHIgYXJoOwo+ICsgICAgICAgdW5zaWduZWQgY2hhciAqcywgKmVuZDsKPiAr
Cj4gKyAgICAgICBfbGliZWxmX2luaXRfZWxmKGUsIEVMRl9LX0FSKTsKPiArCj4gKyAgICAgICBl
LT5lX3UuZV9hci5lX25jaGlsZHJlbiA9IDA7Cj4gKyAgICAgICBlLT5lX3UuZV9hci5lX25leHQg
PSAob2ZmX3QpIC0xOwo+ICsKPiArICAgICAgIC8qCj4gKyAgICAgICAgKiBMb29rIGZvciBzcGVj
aWFsIG1lbWJlcnMuCj4gKyAgICAgICAgKi8KPiArCj4gKyAgICAgICBzID0gZS0+ZV9yYXdmaWxl
ICsgU0FSTUFHOwo+ICsgICAgICAgZW5kID0gZS0+ZV9yYXdmaWxlICsgZS0+ZV9yYXdzaXplOwo+
ICsKPiArICAgICAgIGFzc2VydChlLT5lX3Jhd3NpemUgPiAwKTsKPiArCj4gKyAgICAgICAvKgo+
ICsgICAgICAgICogV2UgdXNlIGhldXJpc3RpY3MgdG8gZGV0ZXJtaW5lIHRoZSBmbGF2b3Igb2Yg
dGhlIGFyY2hpdmUgd2UKPiArICAgICAgICAqIGFyZSBleGFtaW5pbmcuCj4gKyAgICAgICAgKgo+
ICsgICAgICAgICogU1ZSNCBmbGF2b3IgYXJjaGl2ZXMgdXNlIHRoZSBuYW1lICIvICIgYW5kICIv
LyAiIGZvcgo+ICsgICAgICAgICogc3BlY2lhbCBtZW1iZXJzLgo+ICsgICAgICAgICoKPiArICAg
ICAgICAqIEluIEJTRCBmbGF2b3IgYXJjaGl2ZXMgdGhlIHN5bWJvbCB0YWJsZSwgaWYgcHJlc2Vu
dCwgaXMgdGhlCj4gKyAgICAgICAgKiBmaXJzdCBhcmNoaXZlIHdpdGggbmFtZSAiX18uU1lNREVG
Ii4KPiArICAgICAgICAqLwo+ICsKPiArI2RlZmluZSAgICAgICAgUkVBRF9BUl9IRUFERVIoUywg
QVJILCBTWiwgRU5EKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAg
IGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCj4gKyAgICAgICAgICAgICAgIGlmICgoUykgKyBzaXplb2YoKEFSSCkpID4gKEVO
RCkpICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgICAgICAgICAgICAgICAgIGdv
dG8gZXJyb3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAg
ICAgICAgICAgKHZvaWQpIG1lbWNweSgmKEFSSCksIChTKSwgc2l6ZW9mKChBUkgpKSk7ICAgICAg
ICAgICAgICBcCj4gKyAgICAgICAgICAgICAgIGlmICgoQVJIKS5hcl9mbWFnWzBdICE9ICdgJyB8
fCAoQVJIKS5hcl9mbWFnWzFdICE9ICdcbicpIFwKPiArICAgICAgICAgICAgICAgICAgICAgICBn
b3RvIGVycm9yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAg
ICAgICAgICAgIGlmIChfbGliZWxmX2FyX2dldF9udW1iZXIoKGNoYXIgKikgKEFSSCkuYXJfc2l6
ZSwgICAgICAgXAo+ICsgICAgICAgICAgICAgICAgICAgc2l6ZW9mKChBUkgpLmFyX3NpemUpLCAx
MCwgJihTWikpID09IDApICAgICAgICAgICAgIFwKPiArICAgICAgICAgICAgICAgICAgICAgICBn
b3RvIGVycm9yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAg
ICB9IHdoaWxlICgwKQo+ICsKPiArICAgICAgIFJFQURfQVJfSEVBREVSKHMsIGFyaCwgc3osIGVu
ZCk7Cj4gKwo+ICsgICAgICAgLyoKPiArICAgICAgICAqIEhhbmRsZSBzcGVjaWFsIGFyY2hpdmUg
bWVtYmVycyBmb3IgdGhlIFNWUjQgZm9ybWF0Lgo+ICsgICAgICAgICovCj4gKyAgICAgICBpZiAo
YXJoLmFyX25hbWVbMF0gPT0gJy8nKSB7Cj4gKyAgICAgICAgICAgICAgIGlmIChzeiA9PSAwKQo+
ICsgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Cj4gKwo+ICsgICAgICAgICAgICAg
ICBlLT5lX2ZsYWdzIHw9IExJQkVMRl9GX0FSX1ZBUklBTlRfU1ZSNDsKPiArCj4gKyAgICAgICAg
ICAgICAgIHNjYW5haGVhZCA9IDA7Cj4gKwo+ICsgICAgICAgICAgICAgICAvKgo+ICsgICAgICAg
ICAgICAgICAgKiBUaGUgc3ltYm9sIHRhYmxlIChmaWxlIG5hbWUgIi8gIikgYWx3YXlzIGNvbWVz
IGJlZm9yZSB0aGUKPiArICAgICAgICAgICAgICAgICogc3RyaW5nIHRhYmxlIChmaWxlIG5hbWUg
Ii8vICIpLgo+ICsgICAgICAgICAgICAgICAgKi8KPiArICAgICAgICAgICAgICAgaWYgKGFyaC5h
cl9uYW1lWzFdID09ICcgJykgewo+ICsgICAgICAgICAgICAgICAgICAgICAgIC8qICIvICIgPT4g
c3ltYm9sIHRhYmxlLiAqLwo+ICsgICAgICAgICAgICAgICAgICAgICAgIHNjYW5haGVhZCA9IDE7
ICAvKiBUaGUgc3RyaW5nIHRhYmxlIHRvIGZvbGxvdy4gKi8KPiArCj4gKyAgICAgICAgICAgICAg
ICAgICAgICAgcyArPSBzaXplb2YoYXJoKTsKPiArICAgICAgICAgICAgICAgICAgICAgICBlLT5l
X3UuZV9hci5lX3Jhd3N5bXRhYiA9IHM7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgZS0+ZV91
LmVfYXIuZV9yYXdzeW10YWJzeiA9IHN6Owo+ICsKPiArICAgICAgICAgICAgICAgICAgICAgICBz
eiA9IExJQkVMRl9BREpVU1RfQVJfU0laRShzeik7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAg
cyArPSBzejsKPiArCj4gKyAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYXJoLmFyX25hbWVbMV0g
PT0gJy8nICYmIGFyaC5hcl9uYW1lWzJdID09ICcgJykgewo+ICsgICAgICAgICAgICAgICAgICAg
ICAgIC8qICIvLyAiID0+IHN0cmluZyB0YWJsZSBmb3IgbG9uZyBmaWxlIG5hbWVzLiAqLwo+ICsg
ICAgICAgICAgICAgICAgICAgICAgIHMgKz0gc2l6ZW9mKGFyaCk7Cj4gKyAgICAgICAgICAgICAg
ICAgICAgICAgZS0+ZV91LmVfYXIuZV9yYXdzdHJ0YWIgPSBzOwo+ICsgICAgICAgICAgICAgICAg
ICAgICAgIGUtPmVfdS5lX2FyLmVfcmF3c3RydGFic3ogPSBzejsKPiArCj4gKyAgICAgICAgICAg
ICAgICAgICAgICAgc3ogPSBMSUJFTEZfQURKVVNUX0FSX1NJWkUoc3opOwo+ICsgICAgICAgICAg
ICAgICAgICAgICAgIHMgKz0gc3o7Cj4gKyAgICAgICAgICAgICAgIH0KPiArCj4gKyAgICAgICAg
ICAgICAgIC8qCj4gKyAgICAgICAgICAgICAgICAqIElmIHRoZSBzdHJpbmcgdGFibGUgaGFzbid0
IGJlZW4gc2VlbiB5ZXQsIGxvb2sgZm9yCj4gKyAgICAgICAgICAgICAgICAqIGl0IGluIHRoZSBu
ZXh0IG1lbWJlci4KPiArICAgICAgICAgICAgICAgICovCj4gKyAgICAgICAgICAgICAgIGlmIChz
Y2FuYWhlYWQpIHsKPiArICAgICAgICAgICAgICAgICAgICAgICBSRUFEX0FSX0hFQURFUihzLCBh
cmgsIHN6LCBlbmQpOwo+ICsKPiArICAgICAgICAgICAgICAgICAgICAgICAvKiAiLy8gIiA9PiBz
dHJpbmcgdGFibGUgZm9yIGxvbmcgZmlsZSBuYW1lcy4gKi8KPiArICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoYXJoLmFyX25hbWVbMF0gPT0gJy8nICYmIGFyaC5hcl9uYW1lWzFdID09ICcvJyAm
Jgo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmguYXJfbmFtZVsyXSA9PSAnICcpIHsK
PiArCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzICs9IHNpemVvZihhcmgpOwo+
ICsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUtPmVfdS5lX2FyLmVfcmF3c3Ry
dGFiID0gczsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUtPmVfdS5lX2FyLmVf
cmF3c3RydGFic3ogPSBzejsKPiArCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
eiA9IExJQkVMRl9BREpVU1RfQVJfU0laRShzeik7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzICs9IHN6Owo+ICsgICAgICAgICAgICAgICAgICAgICAgIH0KPiArICAgICAgICAg
ICAgICAgfQo+ICsgICAgICAgfSBlbHNlIGlmIChzdHJuY21wKGFyaC5hcl9uYW1lLCBMSUJFTEZf
QVJfQlNEX1NZTVRBQl9OQU1FLAo+ICsgICAgICAgICAgICAgICBzaXplb2YoTElCRUxGX0FSX0JT
RF9TWU1UQUJfTkFNRSkgLSAxKSA9PSAwKSB7Cj4gKyAgICAgICAgICAgICAgIC8qCj4gKyAgICAg
ICAgICAgICAgICAqIEJTRCBzdHlsZSBhcmNoaXZlIHN5bWJvbCB0YWJsZS4KPiArICAgICAgICAg
ICAgICAgICovCj4gKyAgICAgICAgICAgICAgIHMgKz0gc2l6ZW9mKGFyaCk7Cj4gKyAgICAgICAg
ICAgICAgIGUtPmVfdS5lX2FyLmVfcmF3c3ltdGFiID0gczsKPiArICAgICAgICAgICAgICAgZS0+
ZV91LmVfYXIuZV9yYXdzeW10YWJzeiA9IHN6Owo+ICsKPiArICAgICAgICAgICAgICAgc3ogPSBM
SUJFTEZfQURKVVNUX0FSX1NJWkUoc3opOwo+ICsgICAgICAgICAgICAgICBzICs9IHN6Owo+ICsg
ICAgICAgfQo+ICsKPiArICAgICAgIC8qCj4gKyAgICAgICAgKiBVcGRhdGUgdGhlICduZXh0JyBv
ZmZzZXQsIHNvIHRoYXQgYSBzdWJzZXF1ZW50IGVsZl9iZWdpbigpCj4gKyAgICAgICAgKiB3b3Jr
cyBhcyBleHBlY3RlZC4KPiArICAgICAgICAqLwo+ICsgICAgICAgZS0+ZV91LmVfYXIuZV9uZXh0
ID0gKG9mZl90KSAocyAtIGUtPmVfcmF3ZmlsZSk7Cj4gKwo+ICsgICAgICAgcmV0dXJuIChlKTsK
PiArCj4gK2Vycm9yOgo+ICsgICAgICAgaWYgKCFyZXBvcnRlcnJvcikgewo+ICsgICAgICAgICAg
ICAgICBlLT5lX2tpbmQgPSBFTEZfS19OT05FOwo+ICsgICAgICAgICAgICAgICByZXR1cm4gKGUp
Owo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIExJQkVMRl9TRVRfRVJST1IoQVJDSElWRSwgMCk7
Cj4gKyAgICAgICByZXR1cm4gKE5VTEwpOwo+ICt9Cj4gZGlmZiAtLWdpdCBhL2xpYmVsZl9jaGVj
a3N1bS5jIGIvbGliZWxmX2NoZWNrc3VtLmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4
IDAwMDAwMDAuLmVmODY4NzcKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvbGliZWxmX2NoZWNrc3Vt
LmMKPiBAQCAtMCwwICsxLDk4IEBACj4gKy8qLQo+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMDYsMjAw
OCBKb3NlcGggS29zaHkKPiArICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KPiArICoKPiArICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Cj4gKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwo+ICsgKiBhcmUgbWV0Ogo+ICsgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAo+ICsg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCj4gKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cj4gKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKPiArICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KPiArICoKPiArICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
QVVUSE9SIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAo+ICsgKiBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
PiArICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKPiArICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKPiArICogRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwKPiArICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKPiArICogT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCj4gKyAq
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUCj4gKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKPiArICogT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRgo+ICsgKiBTVUNIIERBTUFHRS4KPiArICovCj4gKwo+ICsjaW5jbHVkZSA8Z2VsZi5oPgo+
ICsKPiArI2luY2x1ZGUgIl9saWJlbGYuaCIKPiArCj4gK0VMRlRDX1ZDU0lEKCIkSWQ6IGxpYmVs
Zl9jaGVja3N1bS5jIDMxNzQgMjAxNS0wMy0yNyAxNzoxMzo0MVogZW1hc3RlICQiKTsKPiArCj4g
K3N0YXRpYyB1bnNpZ25lZCBsb25nCj4gK19saWJlbGZfc3VtKHVuc2lnbmVkIGxvbmcgYywgY29u
c3QgdW5zaWduZWQgY2hhciAqcywgc2l6ZV90IHNpemUpCj4gK3sKPiArICAgICAgIGlmIChzID09
IE5VTEwgfHwgc2l6ZSA9PSAwKQo+ICsgICAgICAgICAgICAgICByZXR1cm4gKGMpOwo+ICsKPiAr
ICAgICAgIHdoaWxlIChzaXplLS0pCj4gKyAgICAgICAgICAgICAgIGMgKz0gKnMrKzsKPiArCj4g
KyAgICAgICByZXR1cm4gKGMpOwo+ICt9Cj4gKwo+ICtsb25nCj4gK19saWJlbGZfY2hlY2tzdW0o
RWxmICplLCBpbnQgZWxmY2xhc3MpCj4gK3sKPiArICAgICAgIHNpemVfdCBzaG47Cj4gKyAgICAg
ICBFbGZfU2NuICpzY247Cj4gKyAgICAgICBFbGZfRGF0YSAqZDsKPiArICAgICAgIHVuc2lnbmVk
IGxvbmcgY2hlY2tzdW07Cj4gKyAgICAgICBHRWxmX0VoZHIgZWg7Cj4gKyAgICAgICBHRWxmX1No
ZHIgc2hkcjsKPiArCj4gKyAgICAgICBpZiAoZSA9PSBOVUxMKSB7Cj4gKyAgICAgICAgICAgICAg
IExJQkVMRl9TRVRfRVJST1IoQVJHVU1FTlQsIDApOwo+ICsgICAgICAgICAgICAgICByZXR1cm4g
KDBMKTsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICBpZiAoZS0+ZV9jbGFzcyAhPSBlbGZjbGFz
cykgewo+ICsgICAgICAgICAgICAgICBMSUJFTEZfU0VUX0VSUk9SKENMQVNTLCAwKTsKPiArICAg
ICAgICAgICAgICAgcmV0dXJuICgwTCk7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgaWYgKGdl
bGZfZ2V0ZWhkcihlLCAmZWgpID09IE5VTEwpCj4gKyAgICAgICAgICAgICAgIHJldHVybiAoMCk7
Cj4gKwo+ICsgICAgICAgLyoKPiArICAgICAgICAqIEl0ZXJhdGUgb3ZlciBhbGwgc2VjdGlvbnMg
aW4gdGhlIEVMRiBmaWxlLCBjb21wdXRpbmcgdGhlCj4gKyAgICAgICAgKiBjaGVja3N1bSBhbG9u
ZyB0aGUgd2F5Lgo+ICsgICAgICAgICoKPiArICAgICAgICAqIFRoZSBmaXJzdCBzZWN0aW9uIGlz
IGFsd2F5cyBTSE5fVU5ERUYgYW5kIGNhbiBiZSBza2lwcGVkLgo+ICsgICAgICAgICogTm9uLWFs
bG9jYXRhYmxlIHNlY3Rpb25zIGFyZSBza2lwcGVkLCBhcyBhcmUgc2VjdGlvbnMgdGhhdAo+ICsg
ICAgICAgICogY291bGQgYmUgYWZmZWN0ZWQgYnkgdXRpbGl0aWVzIHN1Y2ggYXMgc3RyaXAoMSku
Cj4gKyAgICAgICAgKi8KPiArCj4gKyAgICAgICBjaGVja3N1bSA9IDA7Cj4gKyAgICAgICBmb3Ig
KHNobiA9IDE7IHNobiA8IGUtPmVfdS5lX2VsZi5lX25zY247IHNobisrKSB7Cj4gKyAgICAgICAg
ICAgICAgIGlmICgoc2NuID0gZWxmX2dldHNjbihlLCBzaG4pKSA9PSBOVUxMKQo+ICsgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiAoMCk7Cj4gKyAgICAgICAgICAgICAgIGlmIChnZWxmX2dl
dHNoZHIoc2NuLCAmc2hkcikgPT0gTlVMTCkKPiArICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gKDApOwo+ICsgICAgICAgICAgICAgICBpZiAoKHNoZHIuc2hfZmxhZ3MgJiBTSEZfQUxMT0Mp
ID09IDAgfHwKPiArICAgICAgICAgICAgICAgICAgIHNoZHIuc2hfdHlwZSA9PSBTSFRfRFlOQU1J
QyB8fAo+ICsgICAgICAgICAgICAgICAgICAgc2hkci5zaF90eXBlID09IFNIVF9EWU5TWU0pCj4g
KyAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Cj4gKwo+ICsgICAgICAgICAgICAgICBk
ID0gTlVMTDsKPiArICAgICAgICAgICAgICAgd2hpbGUgKChkID0gZWxmX3Jhd2RhdGEoc2NuLCBk
KSkgIT0gTlVMTCkKPiArICAgICAgICAgICAgICAgICAgICAgICBjaGVja3N1bSA9IF9saWJlbGZf
c3VtKGNoZWNrc3VtLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgY2hh
ciAqKSBkLT5kX2J1ZiwgKHNpemVfdCkgZC0+ZF9zaXplKTsKPiArICAgICAgIH0KPiArCj4gKyAg
ICAgICAvKgo+ICsgICAgICAgICogUmV0dXJuIGEgMTYtYml0IGNoZWNrc3VtIGNvbXBhdGlibGUg
d2l0aCBTb2xhcmlzLgo+ICsgICAgICAgICovCj4gKyAgICAgICByZXR1cm4gKGxvbmcpICgoKGNo
ZWNrc3VtID4+IDE2KSAmIDB4RkZGRlVMKSArIChjaGVja3N1bSAmIDB4RkZGRlVMKSk7Cj4gK30K
PiBkaWZmIC0tZ2l0IGEvbGliZWxmX2NvbnZlcnQubTQgYi9saWJlbGZfY29udmVydC5tNAo+IG5l
dyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uOWY5OWYxZQo+IC0tLSAvZGV2L251
bGwKPiArKysgYi9saWJlbGZfY29udmVydC5tNAo+IEBAIC0wLDAgKzEsMTA4NyBAQAo+ICsvKi0K
PiArICogQ29weXJpZ2h0IChjKSAyMDA2LTIwMTEgSm9zZXBoIEtvc2h5Cj4gKyAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCj4gKyAqCj4gKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAo+ICsgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKPiArICog
YXJlIG1ldDoKPiArICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKPiArICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgo+ICsgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAo+
ICsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCj4gKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCj4gKyAqCj4gKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJyBBTkQKPiArICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCj4gKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCj4gKyAq
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFCj4gKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCj4gKyAqIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTCj4gKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKQo+ICsgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAo+ICsgKiBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZCj4gKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKPiArICogU1VDSCBEQU1BR0UuCj4gKyAq
Lwo+ICsKPiArI2luY2x1ZGUgPGFzc2VydC5oPgo+ICsjaW5jbHVkZSA8bGliZWxmLmg+Cj4gKyNp
bmNsdWRlIDxzdHJpbmcuaD4KPiArCj4gKyNpbmNsdWRlICJfbGliZWxmLmgiCj4gKwo+ICtFTEZU
Q19WQ1NJRCgiJElkOiBsaWJlbGZfY29udmVydC5tNCAzMTc0IDIwMTUtMDMtMjcgMTc6MTM6NDFa
IGVtYXN0ZSAkIik7Cj4gKwo+ICsvKiBXQVJOSU5HOiBHRU5FUkFURUQgRlJPTSBfX2ZpbGVfXy4g
Ki8KPiArCj4gK2RpdmVydCgtMSkKPiArCj4gKyMgR2VuZXJhdGUgY29udmVyc2lvbiByb3V0aW5l
cyBmb3IgY29udmVydGluZyBiZXR3ZWVuIGluLW1lbW9yeSBhbmQKPiArIyBmaWxlIHJlcHJlc2Vu
dGF0aW9ucyBvZiBFbGYgZGF0YSBzdHJ1Y3R1cmVzLgo+ICsjCj4gKyMgVGhlc2UgY29udmVyc2lv
bnMgdXNlIHRoZSB0eXBlIGluZm9ybWF0aW9uIGRlZmluZWQgaW4gYGVsZl90eXBlcy5tNCcuCj4g
Kwo+ICtpbmNsdWRlKFNSQ0RJUmAvZWxmX3R5cGVzLm00JykKPiArCj4gKyMgRm9yIHRoZSBwdXJw
b3NlcyBvZiBnZW5lcmF0aW5nIGNvbnZlcnNpb24gY29kZSwgRUxGIHR5cGVzIG1heSBiZQo+ICsj
IGNsYXNzaWZpZWQgYWNjb3JkaW5nIHRvIHRoZSBmb2xsb3dpbmcgY2hhcmFjdGVyaXN0aWNzOgo+
ICsjCj4gKyMgMS4gV2hldGhlciB0aGUgRUxGIHR5cGUgY2FuIGJlIGRpcmVjdGx5IG1hcHBlZCB0
byBhbiBpbnRlZ3JhbCBDCj4gKyMgICAgbGFuZ3VhZ2UgdHlwZS4gIEZvciBleGFtcGxlLCB0aGUg
RUxGX1RfV09SRCB0eXBlIG1hcHMgZGlyZWN0bHkgdG8KPiArIyAgICBhICd1aW50MzJfdCcsIGJ1
dCBFTEZfVF9HTlVIQVNIIGxhY2tzIGEgbWF0Y2hpbmcgQyB0eXBlLgo+ICsjCj4gKyMgMi4gV2hl
dGhlciB0aGUgdHlwZSBoYXMgd29yZCBzaXplIGRlcGVuZGVudCB2YXJpYW50cy4gIEZvciBleGFt
cGxlLAo+ICsjICAgIEVMVF9UX0VIRFIgaXMgcmVwcmVzZW50ZWQgdXNpbmcgQyB0eXBlcyBFbGYz
Ml9FaGRyIGFuZCBFbDY0X0VoZHIsCj4gKyMgICAgYW5kIHRoZSBFTEZfVF9BRERSIGFuZCBFTEZf
VF9PRkYgdHlwZXMgaGF2ZSBpbnRlZ3JhbCBDIHR5cGVzIHRoYXQKPiArIyAgICBjYW4gYmUgMzIt
IG9yIDY0LSBiaXQgd2lkZS4KPiArIwo+ICsjIDMuIFdoZXRoZXIgdGhlIEVMRiB0eXBlcyBoYXMg
YSBmaXhlZCByZXByZXNlbnRhdGlvbiBvciBub3QuICBGb3IKPiArIyAgICBleGFtcGxlLCB0aGUg
RUxGX1RfU1lNIHR5cGUgaGFzIGEgZml4ZWQgc2l6ZSBmaWxlIHJlcHJlc2VudGF0aW9uLAo+ICsj
ICAgIHNvbWUgdHlwZXMgbGlrZSBFTEZfVF9OT1RFIGFuZCBFTEZfVF9HTlVIQVNIIHVzZSBhIHZh
cmlhYmxlIHNpemUKPiArIyAgICByZXByZXNlbnRhdGlvbi4KPiArIwo+ICsjIFdlIHVzZSBtNCBt
YWNyb3MgdG8gZ2VuZXJhdGUgY29udmVyc2lvbiBjb2RlIGZvciBFTEYgdHlwZXMgdGhhdCBoYXZl
Cj4gKyMgYSBmaXhlZCBzaXplIHJlcHJlc2VudGF0aW9uLiAgQ29udmVyc2lvbiBmdW5jdGlvbnMg
Zm9yIHRoZSByZW1haW5pbmcKPiArIyB0eXBlcyBhcmUgY29kZWQgYnkgaGFuZC4KPiArIwo+ICsj
KiBIYW5kbGluZyBGaWxlIGFuZCBNZW1vcnkgUmVwcmVzZW50YXRpb25zCj4gKyMKPiArIyBgSW4t
bWVtb3J5JyByZXByZXNlbnRhdGlvbnMgb2YgYW4gRWxmIGRhdGEgc3RydWN0dXJlIHVzZSBuYXR1
cmFsCj4gKyMgYWxpZ25tZW50cyBhbmQgbmF0aXZlIGJ5dGUgb3JkZXJpbmcuICBUaGlzIGFsbG93
cyBwb2ludGVyIGFyaXRobWV0aWMKPiArIyBhbmQgY2FzdGluZyB0byB3b3JrIGFzIGV4cGVjdGVk
LiAgT24gdGhlIG90aGVyIGhhbmQsIHRoZSBgZmlsZScKPiArIyByZXByZXNlbnRhdGlvbiBvZiBh
biBFTEYgZGF0YSBzdHJ1Y3R1cmUgY291bGQgcG9zc2libHkgYmUgcGFja2VkCj4gKyMgdGlnaHRl
ciB0aGFuIGl0cyBgaW4tbWVtb3J5JyByZXByZXNlbnRhdGlvbiwgYW5kIGNvdWxkIGJlIG9mIGEK
PiArIyBkaWZmZXJpbmcgYnl0ZSBvcmRlci4gIFJlYWRpbmcgRUxGIG9iamVjdHMgdGhhdCBhcmUg
bWVtYmVycyBvZiBgYXInCj4gKyMgYXJjaGl2ZXMgcHJlc2VudCBhbiBhZGRpdGlvbmFsIGNvbXBs
aWNhdGlvbjogYGFyJyBwYWRzIGZpbGUgZGF0YSB0bwo+ICsjIGV2ZW4gYWRkcmVzc2VzLCBzbyBm
aWxlIGRhdGEgc3RydWN0dXJlcyBpbiBhbiBhcmNoaXZlIG1lbWJlcgo+ICsjIHJlc2lkaW5nIGlu
c2lkZSBhbiBgYXInIGFyY2hpdmUgY291bGQgYmUgYXQgbWlzYWxpZ25lZCBtZW1vcnkKPiArIyBh
ZGRyZXNzZXMgd2hlbiBicm91Z2h0IGludG8gbWVtb3J5Lgo+ICsjCj4gKyMgSW4gc3VtbWFyeSwg
Y2FzdGluZyB0aGUgYGNoYXIgKicgcG9pbnRlcnMgdGhhdCBwb2ludCB0byBtZW1vcnkKPiArIyBy
ZXByZXNlbnRhdGlvbnMgKGkuZS4sIHNvdXJjZSBwb2ludGVycyBmb3IgdGhlICpfdG9mKCkgZnVu
Y3Rpb25zIGFuZAo+ICsjIHRoZSBkZXN0aW5hdGlvbiBwb2ludGVycyBmb3IgdGhlICpfdG9tKCkg
ZnVuY3Rpb25zKSwgaXMgc2FmZSwgYXMKPiArIyB0aGVzZSBwb2ludGVycyBzaG91bGQgYmUgY29y
cmVjdGx5IGFsaWduZWQgZm9yIHRoZSBtZW1vcnkgdHlwZQo+ICsjIGFscmVhZHkuICBIb3dldmVy
LCBwb2ludGVycyB0byBmaWxlIHJlcHJlc2VudGF0aW9ucyBoYXZlIHRvIGJlCj4gKyMgdHJlYXRl
ZCBhcyBiZWluZyBwb3RlbnRpYWxseSB1bmFsaWduZWQgYW5kIG5vIGNhc3RpbmcgY2FuIGJlIGRv
bmUuCj4gKwo+ICsjIE5PQ1ZUKFRZUEUpIC0tIERvIG5vdCBnZW5lcmF0ZSB0aGUgY3Z0W10gc3Ry
dWN0dXJlIGVudHJ5IGZvciBUWVBFCj4gK2RlZmluZShgTk9DVlQnLGBkZWZpbmUoYE5PQ1ZUXyck
MSwxKScpCj4gKwo+ICsjIE5PRlVOQyhUWVBFKSAtLSBEbyBub3QgZ2VuZXJhdGUgYSBjb252ZXJz
aW9uIGZ1bmN0aW9uIGZvciBUWVBFCj4gK2RlZmluZShgTk9GVU5DJyxgZGVmaW5lKGBOT0ZVTkNf
JyQxLDEpJykKPiArCj4gKyMgSUdOT1JFKFRZUEUpIC0tIENvbXBsZXRlbHkgaWdub3JlIHRoZSB0
eXBlLgo+ICtkZWZpbmUoYElHTk9SRScsYE5PQ1ZUKCQxKU5PRlVOQygkMSknKQo+ICsKPiArIyBN
YXJrIEVMRiB0eXBlcyB0aGF0IHNob3VsZCBub3QgYmUgcHJvY2Vzc2VkIGJ5IHRoZSBNNCBtYWNy
b3MgYmVsb3cuCj4gKwo+ICsjIFR5cGVzIGZvciB3aGljaCB3ZSB1c2UgZnVuY3Rpb25zIHdpdGgg
bm9uLXN0YW5kYXJkIG5hbWVzLgo+ICtJR05PUkUoYEJZVEUnKSAgICAgICAgICAgICAgICAgIyBV
c2VzIGEgd3JhcHBlciBhcm91bmQgbWVtY3B5KCkuCj4gK0lHTk9SRShgTk9URScpICAgICAgICAg
ICAgICAgICAjIE5vdCBhIGZpeGVkIHNpemUgdHlwZS4KPiArCj4gKyMgVHlwZXMgZm9yIHdoaWNo
IHdlIHN1cHBseSBoYW5kLWNvZGVkIGZ1bmN0aW9ucy4KPiArTk9GVU5DKGBHTlVIQVNIJykgICAg
ICAgICAgICAgICMgQSB0eXBlIHdpdGggY29tcGxleCBpbnRlcm5hbCBzdHJ1Y3R1cmUuCj4gK05P
RlVOQyhgVkRFRicpICAgICAgICAgICAgICAgICAjIFNlZSBNQUtFX1ZFUlNJT05fQ09OVkVSVEVS
UyBiZWxvdy4KPiArTk9GVU5DKGBWTkVFRCcpICAgICAgICAgICAgICAgICAgICAgICAgIyAuLgo+
ICsKPiArIyBVbmltcGxlbWVudGVkIHR5cGVzLgo+ICtJR05PUkUoYE1PVkVQJykKPiArCj4gKyMg
RUxGIHR5cGVzIHRoYXQgZG9uJ3QgZXhpc3QgaW4gYSAzMi1iaXQgd29ybGQuCj4gK05PRlVOQyhg
WFdPUkQzMicpCj4gK05PRlVOQyhgU1hXT1JEMzInKQo+ICsKPiArIyBgUHJpbWl0aXZlJyBFTEYg
dHlwZXMgYXJlIHRob3NlIHRoYXQgYXJlIGFuIGFsaWFzIGZvciBhbiBpbnRlZ3JhbAo+ICsjIHR5
cGUuICBBcyB0aGV5IGhhdmUgbm8gaW50ZXJuYWwgc3RydWN0dXJlLCB0aGV5IGNhbiBiZSBjb3Bp
ZWQgdXNpbmcKPiArIyBhIGBtZW1jcHkoKScsIGFuZCBieXRlc3dhcHBlZCBpbiBzdHJhaWdodGZv
cndhcmQgd2F5Lgo+ICsjCj4gKyMgTWFyayBhbGwgRUxGIHR5cGVzIHRoYXQgZGlyZWN0bHkgbWFw
IHRvIGludGVncmFsIEMgdHlwZXMuCj4gK2RlZmluZShgUFJJTV9BRERSJywgICAgMSkKPiArZGVm
aW5lKGBQUklNX0JZVEUnLCAgICAxKQo+ICtkZWZpbmUoYFBSSU1fSEFMRicsICAgIDEpCj4gK2Rl
ZmluZShgUFJJTV9MV09SRCcsICAgMSkKPiArZGVmaW5lKGBQUklNX09GRicsICAgICAxKQo+ICtk
ZWZpbmUoYFBSSU1fU1dPUkQnLCAgIDEpCj4gK2RlZmluZShgUFJJTV9TWFdPUkQnLCAgMSkKPiAr
ZGVmaW5lKGBQUklNX1dPUkQnLCAgICAxKQo+ICtkZWZpbmUoYFBSSU1fWFdPUkQnLCAgIDEpCj4g
Kwo+ICsjIE5vdGUgdGhlIHByaW1pdGl2ZSB0eXBlcyB0aGF0IGFyZSBzaXplLWRlcGVuZGVudC4K
PiArZGVmaW5lKGBTSVpFREVQX0FERFInLCAxKQo+ICtkZWZpbmUoYFNJWkVERVBfT0ZGJywgIDEp
Cj4gKwo+ICsjIEdlbmVyYXRlIGNvbnZlcnNpb24gZnVuY3Rpb25zIGZvciBwcmltaXRpdmUgdHlw
ZXMuCj4gKyMKPiArIyBNYWNybyB1c2U6IE1BS0VQUklNRlVOQ1MoRUxGVFlQRSxDVFlQRSxUWVBF
U0laRSxTWU1TSVpFKQo+ICsjIGAkMSc6IE5hbWUgb2YgdGhlIEVMRiB0eXBlLgo+ICsjIGAkMic6
IEMgc3RydWN0dXJlIG5hbWUgc3VmZml4Lgo+ICsjIGAkMyc6IEVMRiBjbGFzcyBzcGVjaWZpZXIg
Zm9yIHR5cGVzLCBvbmUgb2YgW2AzMicsIGA2NCddLgo+ICsjIGAkNCc6IEFkZGl0aW9uYWwgRUxG
IGNsYXNzIHNwZWNpZmllciwgb25lIG9mIFtgJywgYDMyJywgYDY0J10uCj4gKyMKPiArIyBHZW5l
cmF0ZXMgYSBwYWlyIG9mIGNvbnZlcnNpb24gZnVuY3Rpb25zLgo+ICtkZWZpbmUoYE1BS0VQUklN
RlVOQ1MnLGAKPiArc3RhdGljIGludAo+ICtfbGliZWxmX2N2dF8kMSQ0X3RvZih1bnNpZ25lZCBj
aGFyICpkc3QsIHNpemVfdCBkc3osIHVuc2lnbmVkIGNoYXIgKnNyYywKPiArICAgIHNpemVfdCBj
b3VudCwgaW50IGJ5dGVzd2FwKQo+ICt7Cj4gKyAgICAgICBFbGYkM18kMiB0LCAqcyA9IChFbGYk
M18kMiAqKSAodWludHB0cl90KSBzcmM7Cj4gKyAgICAgICBzaXplX3QgYzsKPiArCj4gKyAgICAg
ICAodm9pZCkgZHN6Owo+ICsKPiArICAgICAgIGlmICghYnl0ZXN3YXApIHsKPiArICAgICAgICAg
ICAgICAgKHZvaWQpIG1lbWNweShkc3QsIHNyYywgY291bnQgKiBzaXplb2YoKnMpKTsKPiArICAg
ICAgICAgICAgICAgcmV0dXJuICgxKTsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICBmb3IgKGMg
PSAwOyBjIDwgY291bnQ7IGMrKykgewo+ICsgICAgICAgICAgICAgICB0ID0gKnMrKzsKPiArICAg
ICAgICAgICAgICAgU1dBUF8kMSQ0KHQpOwo+ICsgICAgICAgICAgICAgICBXUklURV8kMSQ0KGRz
dCx0KTsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICByZXR1cm4gKDEpOwo+ICt9Cj4gKwo+ICtz
dGF0aWMgaW50Cj4gK19saWJlbGZfY3Z0XyQxJDRfdG9tKHVuc2lnbmVkIGNoYXIgKmRzdCwgc2l6
ZV90IGRzeiwgdW5zaWduZWQgY2hhciAqc3JjLAo+ICsgICAgc2l6ZV90IGNvdW50LCBpbnQgYnl0
ZXN3YXApCj4gK3sKPiArICAgICAgIEVsZiQzXyQyIHQsICpkID0gKEVsZiQzXyQyICopICh1aW50
cHRyX3QpIGRzdDsKPiArICAgICAgIHNpemVfdCBjOwo+ICsKPiArICAgICAgIGlmIChkc3ogPCBj
b3VudCAqIHNpemVvZihFbGYkM18kMikpCj4gKyAgICAgICAgICAgICAgIHJldHVybiAoMCk7Cj4g
Kwo+ICsgICAgICAgaWYgKCFieXRlc3dhcCkgewo+ICsgICAgICAgICAgICAgICAodm9pZCkgbWVt
Y3B5KGRzdCwgc3JjLCBjb3VudCAqIHNpemVvZigqZCkpOwo+ICsgICAgICAgICAgICAgICByZXR1
cm4gKDEpOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIGZvciAoYyA9IDA7IGMgPCBjb3VudDsg
YysrKSB7Cj4gKyAgICAgICAgICAgICAgIFJFQURfJDEkNChzcmMsdCk7Cj4gKyAgICAgICAgICAg
ICAgIFNXQVBfJDEkNCh0KTsKPiArICAgICAgICAgICAgICAgKmQrKyA9IHQ7Cj4gKyAgICAgICB9
Cj4gKwo+ICsgICAgICAgcmV0dXJuICgxKTsKPiArfQo+ICsnKQo+ICsKPiArIwo+ICsjIEhhbmRs
aW5nIGNvbXBvc2l0ZSBFTEYgdHlwZXMKPiArIwo+ICsKPiArIyBTV0FQX0ZJRUxEKEZJRUxETkFN
RSxFTEZUWVBFKSAtLSBHZW5lcmF0ZSBjb2RlIHRvIHN3YXAgb25lIGZpZWxkLgo+ICtkZWZpbmUo
YFNXQVBfRklFTEQnLAo+ICsgIGBpZmRlZihgU0laRURFUF8nJDIsCj4gKyAgICBgU1dBUF8kMidT
WigpYCh0LiQxKTsKPiArICAgICAgICAgICAgICAgICAgICAgICAnLAo+ICsgICAgYFNXQVBfJDIo
dC4kMSk7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgJyknKQo+ICsKPiArIyBTV0FQX01FTUJF
UlMoU1RSVUNUKSAtLSBJdGVyYXRlIG92ZXIgYSBzdHJ1Y3R1cmUgZGVmaW5pdGlvbi4KPiArZGVm
aW5lKGBTV0FQX01FTUJFUlMnLAo+ICsgIGBpZmVsc2UoJCMsMSxgLyoqLycsCj4gKyAgICAgYFNX
QVBfRklFTEQoJDEpU1dBUF9NRU1CRVJTKHNoaWZ0KCRAKSknKScpCj4gKwo+ICsjIFNXQVBfU1RS
VUNUKENUWVBFLFNJWkUpIC0tIEdlbmVyYXRlIGNvZGUgdG8gc3dhcCBhbiBFTEYgc3RydWN0dXJl
Lgo+ICtkZWZpbmUoYFNXQVBfU1RSVUNUJywKPiArICBgcHVzaGRlZihgU1onLCQyKS8qIFN3YXAg
YW4gRWxmJDJfJDEgKi8KPiArICAgICAgICAgICAgICAgICAgICAgICBTV0FQX01FTUJFUlMoRWxm
JDJfJDFfREVGKXBvcGRlZihgU1onKScpCj4gKwo+ICsjIFdSSVRFX0ZJRUxEKEVMRlRZUEUsRklF
TEROQU1FKSAtLSBHZW5lcmF0ZSBjb2RlIHRvIHdyaXRlIG9uZSBmaWVsZC4KPiArZGVmaW5lKGBX
UklURV9GSUVMRCcsCj4gKyAgYGlmZGVmKGBTSVpFREVQXyckMiwKPiArICAgIGBXUklURV8kMidT
WigpYChkc3QsdC4kMSk7Cj4gKyAgICAgICAgICAgICAgICcsCj4gKyAgICBgV1JJVEVfJDIoZHN0
LHQuJDEpOwo+ICsgICAgICAgICAgICAgICAnKScpCj4gKwo+ICsjIFdSSVRFX01FTUJFUlMoRUxG
VFlQRUxJU1QpIC0tIEl0ZXJhdGUgb3ZlciBhIHN0cnVjdHVyZSBkZWZpbml0aW9uLgo+ICtkZWZp
bmUoYFdSSVRFX01FTUJFUlMnLAo+ICsgIGBpZmVsc2UoJCMsMSxgLyoqLycsCj4gKyAgICBgV1JJ
VEVfRklFTEQoJDEpV1JJVEVfTUVNQkVSUyhzaGlmdCgkQCkpJyknKQo+ICsKPiArIyBXUklURV9T
VFJVQ1QoQ1RZUEUsU0laRSkgLS0gR2VuZXJhdGUgY29kZSB0byB3cml0ZSBvdXQgYW4gRUxGIHN0
cnVjdHVyZS4KPiArZGVmaW5lKGBXUklURV9TVFJVQ1QnLAo+ICsgIGBwdXNoZGVmKGBTWicsJDIp
LyogV3JpdGUgYW4gRWxmJDJfJDEgKi8KPiArICAgICAgICAgICAgICAgV1JJVEVfTUVNQkVSUyhF
bGYkMl8kMV9ERUYpcG9wZGVmKGBTWicpJykKPiArCj4gKyMgUkVBRF9GSUVMRChFTEZUWVBFLENU
WVBFKSAtLSBHZW5lcmF0ZSBjb2RlIHRvIHJlYWQgb25lIGZpZWxkLgo+ICtkZWZpbmUoYFJFQURf
RklFTEQnLAo+ICsgIGBpZmRlZihgU0laRURFUF8nJDIsCj4gKyAgICBgUkVBRF8kMidTWigpYChz
LHQuJDEpOwo+ICsgICAgICAgICAgICAgICAnLAo+ICsgICAgYFJFQURfJDIocyx0LiQxKTsKPiAr
ICAgICAgICAgICAgICAgJyknKQo+ICsKPiArIyBSRUFEX01FTUJFUlMoRUxGVFlQRUxJU1QpIC0t
IEl0ZXJhdGUgb3ZlciBhIHN0cnVjdHVyZSBkZWZpbml0aW9uLgo+ICtkZWZpbmUoYFJFQURfTUVN
QkVSUycsCj4gKyAgYGlmZWxzZSgkIywxLGAvKiovJywKPiArICAgIGBSRUFEX0ZJRUxEKCQxKVJF
QURfTUVNQkVSUyhzaGlmdCgkQCkpJyknKQo+ICsKPiArIyBSRUFEX1NUUlVDVChDVFlQRSxTSVpF
KSAtLSBHZW5lcmF0ZSBjb2RlIHRvIHJlYWQgYW4gRUxGIHN0cnVjdHVyZS4KPiArZGVmaW5lKGBS
RUFEX1NUUlVDVCcsCj4gKyAgYHB1c2hkZWYoYFNaJywkMikvKiBSZWFkIGFuIEVsZiQyXyQxICov
Cj4gKyAgICAgICAgICAgICAgIFJFQURfTUVNQkVSUyhFbGYkMl8kMV9ERUYpcG9wZGVmKGBTWicp
JykKPiArCj4gKwo+ICsjIE1BS0VDT01QRlVOQ1MgLS0gR2VuZXJhdGUgY29udmVydGVycyBmb3Ig
Y29tcG9zaXRlIEVMRiBzdHJ1Y3R1cmVzLgo+ICsjCj4gKyMgV2hlbiBjb252ZXJ0aW5nIGRhdGEg
dG8gZmlsZSByZXByZXNlbnRhdGlvbiwgdGhlIHNvdXJjZSBwb2ludGVyIHdpbGwKPiArIyBiZSBu
YXR1cmFsbHkgYWxpZ25lZCBmb3IgYSBkYXRhIHN0cnVjdHVyZSdzIGluLW1lbW9yeQo+ICsjIHJl
cHJlc2VudGF0aW9uLiAgV2hlbiBjb252ZXJ0aW5nIGRhdGEgdG8gbWVtb3J5LCB0aGUgZGVzdGlu
YXRpb24KPiArIyBwb2ludGVyIHdpbGwgYmUgc2ltaWxhcmx5IGFsaWduZWQuCj4gKyMKPiArIyBG
b3IgaW4tcGxhY2UgY29udmVyc2lvbnMsIHdoZW4gY29udmVydGluZyB0byBmaWxlIHJlcHJlc2Vu
dGF0aW9ucywKPiArIyB0aGUgc291cmNlIGJ1ZmZlciBpcyBsYXJnZSBlbm91Z2ggdG8gaG9sZCBg
ZmlsZScgZGF0YS4gIFdoZW4KPiArIyBjb252ZXJ0aW5nIGZyb20gZmlsZSB0byBtZW1vcnksIHdl
IG5lZWQgdG8gYmUgY2FyZWZ1bCB0byB3b3JrCj4gKyMgYGJhY2t3YXJkcycsIHRvIGF2b2lkIG92
ZXJ3cml0aW5nIHVuY29udmVydGVkIGRhdGEuCj4gKyMKPiArIyBNYWNybyB1c2U6Cj4gKyMgYCQx
JzogTmFtZSBvZiB0aGUgRUxGIHR5cGUuCj4gKyMgYCQyJzogQyBzdHJ1Y3R1cmUgbmFtZSBzdWZm
aXguCj4gKyMgYCQzJzogRUxGIGNsYXNzIHNwZWNpZmllciwgb25lIG9mIFtgJywgYDMyJywgYDY0
J10KPiArZGVmaW5lKGBNQUtFQ09NUEZVTkNTJywgYGlmZGVmKGBOT0ZVTkNfJyQxJDMsYCcsYAo+
ICtzdGF0aWMgaW50Cj4gK19saWJlbGZfY3Z0XyQxJDNfdG9mKHVuc2lnbmVkIGNoYXIgKmRzdCwg
c2l6ZV90IGRzeiwgdW5zaWduZWQgY2hhciAqc3JjLAo+ICsgICAgc2l6ZV90IGNvdW50LCBpbnQg
Ynl0ZXN3YXApCj4gK3sKPiArICAgICAgIEVsZiQzXyQyICAgICAgICB0LCAqczsKPiArICAgICAg
IHNpemVfdCBjOwo+ICsKPiArICAgICAgICh2b2lkKSBkc3o7Cj4gKwo+ICsgICAgICAgcyA9IChF
bGYkM18kMiAqKSAodWludHB0cl90KSBzcmM7Cj4gKyAgICAgICBmb3IgKGMgPSAwOyBjIDwgY291
bnQ7IGMrKykgewo+ICsgICAgICAgICAgICAgICB0ID0gKnMrKzsKPiArICAgICAgICAgICAgICAg
aWYgKGJ5dGVzd2FwKSB7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgU1dBUF9TVFJVQ1QoJDIs
JDMpCj4gKyAgICAgICAgICAgICAgIH0KPiArICAgICAgICAgICAgICAgV1JJVEVfU1RSVUNUKCQy
LCQzKQo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIHJldHVybiAoMSk7Cj4gK30KPiArCj4gK3N0
YXRpYyBpbnQKPiArX2xpYmVsZl9jdnRfJDEkM190b20odW5zaWduZWQgY2hhciAqZHN0LCBzaXpl
X3QgZHN6LCB1bnNpZ25lZCBjaGFyICpzcmMsCj4gKyAgICBzaXplX3QgY291bnQsIGludCBieXRl
c3dhcCkKPiArewo+ICsgICAgICAgRWxmJDNfJDIgICAgICAgIHQsICpkOwo+ICsgICAgICAgdW5z
aWduZWQgY2hhciAgICpzLCpzMDsKPiArICAgICAgIHNpemVfdCAgICAgICAgICBmc3o7Cj4gKwo+
ICsgICAgICAgZnN6ID0gZWxmJDNfZnNpemUoRUxGX1RfJDEsIChzaXplX3QpIDEsIEVWX0NVUlJF
TlQpOwo+ICsgICAgICAgZCAgID0gKChFbGYkM18kMiAqKSAodWludHB0cl90KSBkc3QpICsgKGNv
dW50IC0gMSk7Cj4gKyAgICAgICBzMCAgPSBzcmMgKyAoY291bnQgLSAxKSAqIGZzejsKPiArCj4g
KyAgICAgICBpZiAoZHN6IDwgY291bnQgKiBzaXplb2YoRWxmJDNfJDIpKQo+ICsgICAgICAgICAg
ICAgICByZXR1cm4gKDApOwo+ICsKPiArICAgICAgIHdoaWxlIChjb3VudC0tKSB7Cj4gKyAgICAg
ICAgICAgICAgIHMgPSBzMDsKPiArICAgICAgICAgICAgICAgUkVBRF9TVFJVQ1QoJDIsJDMpCj4g
KyAgICAgICAgICAgICAgIGlmIChieXRlc3dhcCkgewo+ICsgICAgICAgICAgICAgICAgICAgICAg
IFNXQVBfU1RSVUNUKCQyLCQzKQo+ICsgICAgICAgICAgICAgICB9Cj4gKyAgICAgICAgICAgICAg
ICpkLS0gPSB0OyBzMCAtPSBmc3o7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgcmV0dXJuICgx
KTsKPiArfQo+ICsnKScpCj4gKwo+ICsjIE1BS0VfVFlQRV9DT05WRVJURVIoRUxGVFlQRSxDVFlQ
RSkKPiArIwo+ICsjIE1ha2UgdHlwZSBjb252ZXJ0b3IgZnVuY3Rpb25zIGZyb20gdGhlIHR5cGUg
ZGVmaW5pdGlvbgo+ICsjIG9mIHRoZSBFTEYgdHlwZToKPiArIyAtIFNraXAgY29udmVydG9ycyBt
YXJrZWQgYXMgYE5PRlVOQycuCj4gKyMgLSBJbnZva2UgYE1BS0VQUklNRlVOQ1MnIG9yIGBNQUtF
Q09NUEZVTkNTJyBhcyBhcHByb3ByaWF0ZS4KPiArZGVmaW5lKGBNQUtFX1RZUEVfQ09OVkVSVEVS
JywKPiArICBgaWZkZWYoYE5PRlVOQ18nJDEsYCcsCj4gKyAgICBgaWZkZWYoYFBSSU1fJyQxLAo+
ICsgICAgICBgaWZkZWYoYFNJWkVERVBfJyQxLAo+ICsgICAgICAgYE1BS0VQUklNRlVOQ1MoJDEs
JDIsMzIsMzIpZG5sCj4gKyAgICAgICAgTUFLRVBSSU1GVU5DUygkMSwkMiw2NCw2NCknLAo+ICsg
ICAgICAgYE1BS0VQUklNRlVOQ1MoJDEsJDIsNjQpJyknLAo+ICsgICAgICBgTUFLRUNPTVBGVU5D
UygkMSwkMiwzMilkbmwKPiArICAgICAgIE1BS0VDT01QRlVOQ1MoJDEsJDIsNjQpJyknKScpCj4g
Kwo+ICsjIE1BS0VfVFlQRV9DT05WRVJURVJTKEVMRlRZUEVMSVNUKSAtLSBHZW5lcmF0ZSBjb252
ZXJzaW9uIGZ1bmN0aW9ucy4KPiArZGVmaW5lKGBNQUtFX1RZUEVfQ09OVkVSVEVSUycsCj4gKyAg
YGlmZWxzZSgkIywxLGAnLAo+ICsgICAgYE1BS0VfVFlQRV9DT05WRVJURVIoJDEpTUFLRV9UWVBF
X0NPTlZFUlRFUlMoc2hpZnQoJEApKScpJykKPiArCj4gKwo+ICsjCj4gKyMgTWFjcm9zIHRvIGdl
bmVyYXRlIGVudHJpZXMgZm9yIHRoZSB0YWJsZSBvZiBjb252ZXJ0b3JzLgo+ICsjCj4gKwo+ICsj
IENPTlYoRUxGVFlQRSxTSVpFLERJUkVDVElPTikKPiArIwo+ICsjIEdlbmVyYXRlIHRoZSBuYW1l
IG9mIGEgY29udmVydG9yIGZ1bmN0aW9uLgo+ICtkZWZpbmUoYENPTlYnLAo+ICsgIGBpZmRlZihg
Tk9GVU5DXyckMSQyLAo+ICsgICAgYC4kMyQyID0gTlVMTCcsCj4gKyAgICBgaWZkZWYoYFBSSU1f
JyQxLAo+ICsgICAgICBgaWZkZWYoYFNJWkVERVBfJyQxLAo+ICsgICAgICAgYC4kMyQyID0gX2xp
YmVsZl9jdnRfJDEkMl8kMycsCj4gKyAgICAgICBgLiQzJDIgPSBfbGliZWxmX2N2dF8kMV8kMycp
JywKPiArICAgICAgYC4kMyQyID0gX2xpYmVsZl9jdnRfJDEkMl8kMycpJyknKQo+ICsKPiArIyBD
T05WRVJURVJfTkFNRShFTEZUWVBFKQo+ICsjCj4gKyMgR2VuZXJhdGUgdGhlIGNvbnRlbnRzIG9m
IG9uZSBgc3RydWN0IGN2dCcgaW5zdGFuY2UuCj4gK2RlZmluZShgQ09OVkVSVEVSX05BTUUnLAo+
ICsgIGBpZmRlZihgTk9DVlRfJyQxLGAnLAo+ICsgICAgYCAgW0VMRl9UXyQxXSA9IHsKPiArICAg
ICAgICAgICAgICAgQ09OVigkMSwzMix0b2YpLAo+ICsgICAgICAgICAgICAgICBDT05WKCQxLDMy
LHRvbSksCj4gKyAgICAgICAgICAgICAgIENPTlYoJDEsNjQsdG9mKSwKPiArICAgICAgICAgICAg
ICAgQ09OVigkMSw2NCx0b20pCj4gKyAgICAgICB9LAo+ICsKPiArJyknKQo+ICsKPiArIyBDT05W
RVJURVJfTkFNRVMoRUxGVFlQRUxJU1QpCj4gKyMKPiArIyBHZW5lcmF0ZSB0aGUgYHN0cnVjdCBj
dnRbXScgYXJyYXkuCj4gK2RlZmluZShgQ09OVkVSVEVSX05BTUVTJywKPiArICBgaWZlbHNlKCQj
LDEsYCcsCj4gKyAgICBgQ09OVkVSVEVSX05BTUUoJDEpQ09OVkVSVEVSX05BTUVTKHNoaWZ0KCRA
KSknKScpCj4gKwo+ICsjCj4gKyMgSGFuZGxpbmcgRUxGIHZlcnNpb24gc2VjdGlvbnMuCj4gKyMK
PiArCj4gKyMgX0ZTWihGSUVMRCxCQVNFVFlQRSkgLSByZXR1cm4gdGhlIGZpbGUgc2l6ZSBmb3Ig
YSBmaWVsZC4KPiArZGVmaW5lKGBfRlNaJywKPiArICBgaWZlbHNlKCQyLGBIQUxGJywyLAo+ICsg
ICAgICQyLGBXT1JEJyw0KScpCj4gKwo+ICsjIEZTWihTVFJVQ1QpIC0gZGV0ZXJtaW5lIHRoZSBm
aWxlIHNpemUgb2YgYSBzdHJ1Y3R1cmUuCj4gK2RlZmluZShgRlNaJywKPiArICBgaWZlbHNlKCQj
LDEsMCwKPiArICAgIGBldmFsKF9GU1ooJDEpICsgRlNaKHNoaWZ0KCRAKSkpJyknKQo+ICsKPiAr
IyBNQUtFX1ZFUlNJT05fQ09OVkVSVEVSUyhUWVBFLEJBU0UsQVVYLFBGWCkgLS0gR2VuZXJhdGUg
Y29udmVyc2lvbgo+ICsjIGZ1bmN0aW9ucyBmb3IgdmVyc2lvbmluZyBzdHJ1Y3R1cmVzLgo+ICtk
ZWZpbmUoYE1BS0VfVkVSU0lPTl9DT05WRVJURVJTJywKPiArICBgTUFLRV9WRVJTSU9OX0NPTlZF
UlRFUigkMSwkMiwkMywkNCwzMikKPiArICAgTUFLRV9WRVJTSU9OX0NPTlZFUlRFUigkMSwkMiwk
MywkNCw2NCknKQo+ICsKPiArIyBNQUtFX1ZFUlNJT05fQ09OVkVSVE9SKFRZUEUsQ0JBU0UsQ0FV
WCxQRlgsU0laRSkgLS0gR2VuZXJhdGUgYQo+ICsjIGNvbnZlcnNpb24gZnVuY3Rpb24uCj4gK2Rl
ZmluZShgTUFLRV9WRVJTSU9OX0NPTlZFUlRFUicsYAo+ICtzdGF0aWMgaW50Cj4gK19saWJlbGZf
Y3Z0XyQxJDVfdG9mKHVuc2lnbmVkIGNoYXIgKmRzdCwgc2l6ZV90IGRzeiwgdW5zaWduZWQgY2hh
ciAqc3JjLAo+ICsgICAgc2l6ZV90IGNvdW50LCBpbnQgYnl0ZXN3YXApCj4gK3sKPiArICAgICAg
IEVsZiQ1XyQyICAgICAgICB0Owo+ICsgICAgICAgRWxmJDVfJDMgICAgICAgIGE7Cj4gKyAgICAg
ICBjb25zdCBzaXplX3QgICAgdmVyZnN6ID0gRlNaKEVsZiQ1XyQyX0RFRik7Cj4gKyAgICAgICBj
b25zdCBzaXplX3QgICAgYXV4ZnN6ID0gRlNaKEVsZiQ1XyQzX0RFRik7Cj4gKyAgICAgICBjb25z
dCBzaXplX3QgICAgdmVybXN6ID0gc2l6ZW9mKEVsZiQ1XyQyKTsKPiArICAgICAgIGNvbnN0IHNp
emVfdCAgICBhdXhtc3ogPSBzaXplb2YoRWxmJDVfJDMpOwo+ICsgICAgICAgdW5zaWduZWQgY2hh
ciAqIGNvbnN0IGRzdGVuZCA9IGRzdCArIGRzejsKPiArICAgICAgIHVuc2lnbmVkIGNoYXIgKiBj
b25zdCBzcmNlbmQgPSBzcmMgKyBjb3VudDsKPiArICAgICAgIHVuc2lnbmVkIGNoYXIgICAqZHRt
cCwgKmRzdGF1eCwgKnNyY2F1eDsKPiArICAgICAgIEVsZiQ1X1dvcmQgICAgICBhdXgsIGFuZXh0
LCBjbnQsIHZuZXh0Owo+ICsKPiArICAgICAgIGZvciAoZHRtcCA9IGRzdCwgdm5leHQgPSB+MFU7
Cj4gKyAgICAgICAgICAgIHZuZXh0ICE9IDAgJiYgZHRtcCArIHZlcmZzeiA8PSBkc3RlbmQgJiYg
c3JjICsgdmVybXN6IDw9IHNyY2VuZDsKPiArICAgICAgICAgICAgZHRtcCArPSB2bmV4dCwgc3Jj
ICs9IHZuZXh0KSB7Cj4gKwo+ICsgICAgICAgICAgICAgICAvKiBSZWFkIGluIGFuIEVsZiQ1XyQy
IHN0cnVjdHVyZS4gKi8KPiArICAgICAgICAgICAgICAgdCA9ICooKEVsZiQ1XyQyICopICh1aW50
cHRyX3QpIHNyYyk7Cj4gKwo+ICsgICAgICAgICAgICAgICBhdXggPSB0LiQ0X2F1eDsKPiArICAg
ICAgICAgICAgICAgY250ID0gdC4kNF9jbnQ7Cj4gKyAgICAgICAgICAgICAgIHZuZXh0ID0gdC4k
NF9uZXh0Owo+ICsKPiArICAgICAgICAgICAgICAgaWYgKGJ5dGVzd2FwKSB7Cj4gKyAgICAgICAg
ICAgICAgICAgICAgICAgU1dBUF9TVFJVQ1QoJDIsICQ1KQo+ICsgICAgICAgICAgICAgICB9Cj4g
Kwo+ICsgICAgICAgICAgICAgICBkc3QgPSBkdG1wOwo+ICsgICAgICAgICAgICAgICBXUklURV9T
VFJVQ1QoJDIsICQ1KQo+ICsKPiArICAgICAgICAgICAgICAgaWYgKGF1eCA8IHZlcmZzeikKPiAr
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKDApOwo+ICsKPiArICAgICAgICAgICAgICAg
LyogUHJvY2VzcyBBVVggZW50cmllcy4gKi8KPiArICAgICAgICAgICAgICAgZm9yIChhbmV4dCA9
IH4wVSwgZHN0YXV4ID0gZHRtcCArIGF1eCwgc3JjYXV4ID0gc3JjICsgYXV4Owo+ICsgICAgICAg
ICAgICAgICAgICAgIGNudCAhPSAwICYmIGFuZXh0ICE9IDAgJiYgZHN0YXV4ICsgYXV4ZnN6IDw9
IGRzdGVuZCAmJgo+ICsgICAgICAgICAgICAgICAgICAgICAgIHNyY2F1eCArIGF1eG1zeiA8PSBz
cmNlbmQ7Cj4gKyAgICAgICAgICAgICAgICAgICAgZHN0YXV4ICs9IGFuZXh0LCBzcmNhdXggKz0g
YW5leHQsIGNudC0tKSB7Cj4gKwo+ICsgICAgICAgICAgICAgICAgICAgICAgIC8qIFJlYWQgaW4g
YW4gRWxmJDVfJDMgc3RydWN0dXJlLiAqLwo+ICsgICAgICAgICAgICAgICAgICAgICAgIGEgPSAq
KChFbGYkNV8kMyAqKSAodWludHB0cl90KSBzcmNhdXgpOwo+ICsgICAgICAgICAgICAgICAgICAg
ICAgIGFuZXh0ID0gYS4kNGFfbmV4dDsKPiArCj4gKyAgICAgICAgICAgICAgICAgICAgICAgaWYg
KGJ5dGVzd2FwKSB7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoZGVmKGB0
JyxgYScpU1dBUF9TVFJVQ1QoJDMsICQ1KXBvcGRlZihgdCcpCj4gKyAgICAgICAgICAgICAgICAg
ICAgICAgfQo+ICsKPiArICAgICAgICAgICAgICAgICAgICAgICBkc3QgPSBkc3RhdXg7Cj4gKyAg
ICAgICAgICAgICAgICAgICAgICAgcHVzaGRlZihgdCcsYGEnKVdSSVRFX1NUUlVDVCgkMywgJDUp
cG9wZGVmKGB0JykKPiArICAgICAgICAgICAgICAgfQo+ICsKPiArICAgICAgICAgICAgICAgaWYg
KGFuZXh0IHx8IGNudCkKPiArICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKDApOwo+ICsg
ICAgICAgfQo+ICsKPiArICAgICAgIGlmICh2bmV4dCkKPiArICAgICAgICAgICAgICAgcmV0dXJu
ICgwKTsKPiArCj4gKyAgICAgICByZXR1cm4gKDEpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50Cj4g
K19saWJlbGZfY3Z0XyQxJDVfdG9tKHVuc2lnbmVkIGNoYXIgKmRzdCwgc2l6ZV90IGRzeiwgdW5z
aWduZWQgY2hhciAqc3JjLAo+ICsgICAgc2l6ZV90IGNvdW50LCBpbnQgYnl0ZXN3YXApCj4gK3sK
PiArICAgICAgIEVsZiQ1XyQyICAgICAgICB0LCAqZHA7Cj4gKyAgICAgICBFbGYkNV8kMyAgICAg
ICAgYSwgKmFwOwo+ICsgICAgICAgY29uc3Qgc2l6ZV90ICAgIHZlcmZzeiA9IEZTWihFbGYkNV8k
Ml9ERUYpOwo+ICsgICAgICAgY29uc3Qgc2l6ZV90ICAgIGF1eGZzeiA9IEZTWihFbGYkNV8kM19E
RUYpOwo+ICsgICAgICAgY29uc3Qgc2l6ZV90ICAgIHZlcm1zeiA9IHNpemVvZihFbGYkNV8kMik7
Cj4gKyAgICAgICBjb25zdCBzaXplX3QgICAgYXV4bXN6ID0gc2l6ZW9mKEVsZiQ1XyQzKTsKPiAr
ICAgICAgIHVuc2lnbmVkIGNoYXIgKiBjb25zdCBkc3RlbmQgPSBkc3QgKyBkc3o7Cj4gKyAgICAg
ICB1bnNpZ25lZCBjaGFyICogY29uc3Qgc3JjZW5kID0gc3JjICsgY291bnQ7Cj4gKyAgICAgICB1
bnNpZ25lZCBjaGFyICAgKmRzdGF1eCwgKnMsICpzcmNhdXgsICpzdG1wOwo+ICsgICAgICAgRWxm
JDVfV29yZCAgICAgIGF1eCwgYW5leHQsIGNudCwgdm5leHQ7Cj4gKwo+ICsgICAgICAgZm9yIChz
dG1wID0gc3JjLCB2bmV4dCA9IH4wVTsKPiArICAgICAgICAgICAgdm5leHQgIT0gMCAmJiBzdG1w
ICsgdmVyZnN6IDw9IHNyY2VuZCAmJiBkc3QgKyB2ZXJtc3ogPD0gZHN0ZW5kOwo+ICsgICAgICAg
ICAgICBzdG1wICs9IHZuZXh0LCBkc3QgKz0gdm5leHQpIHsKPiArCj4gKyAgICAgICAgICAgICAg
IC8qIFJlYWQgaW4gYSAkMSBzdHJ1Y3R1cmUuICovCj4gKyAgICAgICAgICAgICAgIHMgPSBzdG1w
Owo+ICsgICAgICAgICAgICAgICBSRUFEX1NUUlVDVCgkMiwgJDUpCj4gKyAgICAgICAgICAgICAg
IGlmIChieXRlc3dhcCkgewo+ICsgICAgICAgICAgICAgICAgICAgICAgIFNXQVBfU1RSVUNUKCQy
LCAkNSkKPiArICAgICAgICAgICAgICAgfQo+ICsKPiArICAgICAgICAgICAgICAgZHAgPSAoRWxm
JDVfJDIgKikgKHVpbnRwdHJfdCkgZHN0Owo+ICsgICAgICAgICAgICAgICAqZHAgPSB0Owo+ICsK
PiArICAgICAgICAgICAgICAgYXV4ID0gdC4kNF9hdXg7Cj4gKyAgICAgICAgICAgICAgIGNudCA9
IHQuJDRfY250Owo+ICsgICAgICAgICAgICAgICB2bmV4dCA9IHQuJDRfbmV4dDsKPiArCj4gKyAg
ICAgICAgICAgICAgIGlmIChhdXggPCB2ZXJtc3opCj4gKyAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuICgwKTsKPiArCj4gKyAgICAgICAgICAgICAgIC8qIFByb2Nlc3MgQVVYIGVudHJpZXMu
ICovCj4gKyAgICAgICAgICAgICAgIGZvciAoYW5leHQgPSB+MFUsIGRzdGF1eCA9IGRzdCArIGF1
eCwgc3JjYXV4ID0gc3RtcCArIGF1eDsKPiArICAgICAgICAgICAgICAgICAgICBjbnQgIT0gMCAm
JiBhbmV4dCAhPSAwICYmIGRzdGF1eCArIGF1eG1zeiA8PSBkc3RlbmQgJiYKPiArICAgICAgICAg
ICAgICAgICAgICAgICBzcmNhdXggKyBhdXhmc3ogPD0gc3JjZW5kOwo+ICsgICAgICAgICAgICAg
ICAgICAgIGRzdGF1eCArPSBhbmV4dCwgc3JjYXV4ICs9IGFuZXh0LCBjbnQtLSkgewo+ICsKPiAr
ICAgICAgICAgICAgICAgICAgICAgICBzID0gc3JjYXV4Owo+ICsgICAgICAgICAgICAgICAgICAg
ICAgIHB1c2hkZWYoYHQnLGBhJylSRUFEX1NUUlVDVCgkMywgJDUpcG9wZGVmKGB0JykKPiArCj4g
KyAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJ5dGVzd2FwKSB7Cj4gKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwdXNoZGVmKGB0JyxgYScpU1dBUF9TVFJVQ1QoJDMsICQ1KXBvcGRl
ZihgdCcpCj4gKyAgICAgICAgICAgICAgICAgICAgICAgfQo+ICsKPiArICAgICAgICAgICAgICAg
ICAgICAgICBhbmV4dCA9IGEuJDRhX25leHQ7Cj4gKwo+ICsgICAgICAgICAgICAgICAgICAgICAg
IGFwID0gKChFbGYkNV8kMyAqKSAodWludHB0cl90KSBkc3RhdXgpOwo+ICsgICAgICAgICAgICAg
ICAgICAgICAgICphcCA9IGE7Cj4gKyAgICAgICAgICAgICAgIH0KPiArCj4gKyAgICAgICAgICAg
ICAgIGlmIChhbmV4dCB8fCBjbnQpCj4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgw
KTsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICBpZiAodm5leHQpCj4gKyAgICAgICAgICAgICAg
IHJldHVybiAoMCk7Cj4gKwo+ICsgICAgICAgcmV0dXJuICgxKTsKPiArfScpCj4gKwo+ICtkaXZl
cnQoMCkKPiArCj4gKy8qCj4gKyAqIEMgbWFjcm9zIHRvIGJ5dGUgc3dhcCBpbnRlZ3JhbCBxdWFu
dGl0aWVzLgo+ICsgKi8KPiArCj4gKyNkZWZpbmUgICAgICAgIFNXQVBfQllURShYKSAgICBkbyB7
ICh2b2lkKSAoWCk7IH0gd2hpbGUgKDApCj4gKyNkZWZpbmUgICAgICAgIFNXQVBfSURFTlQoWCkg
ICBkbyB7ICh2b2lkKSAoWCk7IH0gd2hpbGUgKDApCj4gKyNkZWZpbmUgICAgICAgIFNXQVBfSEFM
RihYKSAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
Cj4gKyAgICAgICAgICAgICAgIHVpbnQxNl90IF94ID0gKHVpbnQxNl90KSAoWCk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgICAgICAgICB1aW50MzJfdCBfdCA9IF94ICYg
MHhGRlU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICAgICAgICAg
X3QgPDw9IDhVOyBfeCA+Pj0gOFU7IF90IHw9IF94ICYgMHhGRlU7ICAgICAgICAgICAgICAgICBc
Cj4gKyAgICAgICAgICAgICAgIChYKSA9ICh1aW50MTZfdCkgX3Q7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgfSB3aGlsZSAoMCkKPiArI2RlZmluZSAgICAg
ICAgX1NXQVBfV09SRChYLCBUKSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKPiArICAgICAgICAgICAgICAgdWludDMyX3QgX3ggPSAodWludDMyX3QpIChY
KTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAgICAgICAgIHVpbnQzMl90
IF90ID0gX3ggJiAweEZGOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAg
ICAgICAgICAgICBfdCA8PD0gODsgX3ggPj49IDg7IF90IHw9IF94ICYgMHhGRjsgICAgICAgICAg
ICAgICAgICAgIFwKPiArICAgICAgICAgICAgICAgX3QgPDw9IDg7IF94ID4+PSA4OyBfdCB8PSBf
eCAmIDB4RkY7ICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAgICAgICAgIF90IDw8PSA4
OyBfeCA+Pj0gODsgX3QgfD0gX3ggJiAweEZGOyAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAg
ICAgICAgICAgICAoWCkgPSAoVCkgX3Q7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKPiArICAgICAgIH0gd2hpbGUgKDApCj4gKyNkZWZpbmUgICAgICAgIFNXQVBf
QUREUjMyKFgpICBfU1dBUF9XT1JEKFgsIEVsZjMyX0FkZHIpCj4gKyNkZWZpbmUgICAgICAgIFNX
QVBfT0ZGMzIoWCkgICBfU1dBUF9XT1JEKFgsIEVsZjMyX09mZikKPiArI2RlZmluZSAgICAgICAg
U1dBUF9TV09SRChYKSAgIF9TV0FQX1dPUkQoWCwgRWxmMzJfU3dvcmQpCj4gKyNkZWZpbmUgICAg
ICAgIFNXQVBfV09SRChYKSAgICBfU1dBUF9XT1JEKFgsIEVsZjMyX1dvcmQpCj4gKyNkZWZpbmUg
ICAgICAgIF9TV0FQX1dPUkQ2NChYLCBUKSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCj4gKyAgICAgICAgICAgICAgIHVpbnQ2NF90IF94ID0gKHVpbnQ2NF90
KSAoWCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgICAgICAgICB1aW50
NjRfdCBfdCA9IF94ICYgMHhGRjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiAr
ICAgICAgICAgICAgICAgX3QgPDw9IDg7IF94ID4+PSA4OyBfdCB8PSBfeCAmIDB4RkY7ICAgICAg
ICAgICAgICAgICAgICBcCj4gKyAgICAgICAgICAgICAgIF90IDw8PSA4OyBfeCA+Pj0gODsgX3Qg
fD0gX3ggJiAweEZGOyAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgICAgICAgICBfdCA8
PD0gODsgX3ggPj49IDg7IF90IHw9IF94ICYgMHhGRjsgICAgICAgICAgICAgICAgICAgIFwKPiAr
ICAgICAgICAgICAgICAgX3QgPDw9IDg7IF94ID4+PSA4OyBfdCB8PSBfeCAmIDB4RkY7ICAgICAg
ICAgICAgICAgICAgICBcCj4gKyAgICAgICAgICAgICAgIF90IDw8PSA4OyBfeCA+Pj0gODsgX3Qg
fD0gX3ggJiAweEZGOyAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgICAgICAgICBfdCA8
PD0gODsgX3ggPj49IDg7IF90IHw9IF94ICYgMHhGRjsgICAgICAgICAgICAgICAgICAgIFwKPiAr
ICAgICAgICAgICAgICAgX3QgPDw9IDg7IF94ID4+PSA4OyBfdCB8PSBfeCAmIDB4RkY7ICAgICAg
ICAgICAgICAgICAgICBcCj4gKyAgICAgICAgICAgICAgIChYKSA9IChUKSBfdDsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgfSB3aGlsZSAoMCkK
PiArI2RlZmluZSAgICAgICAgU1dBUF9BRERSNjQoWCkgIF9TV0FQX1dPUkQ2NChYLCBFbGY2NF9B
ZGRyKQo+ICsjZGVmaW5lICAgICAgICBTV0FQX0xXT1JEKFgpICAgX1NXQVBfV09SRDY0KFgsIEVs
ZjY0X0x3b3JkKQo+ICsjZGVmaW5lICAgICAgICBTV0FQX09GRjY0KFgpICAgX1NXQVBfV09SRDY0
KFgsIEVsZjY0X09mZikKPiArI2RlZmluZSAgICAgICAgU1dBUF9TWFdPUkQoWCkgIF9TV0FQX1dP
UkQ2NChYLCBFbGY2NF9TeHdvcmQpCj4gKyNkZWZpbmUgICAgICAgIFNXQVBfWFdPUkQoWCkgICBf
U1dBUF9XT1JENjQoWCwgRWxmNjRfWHdvcmQpCj4gKwo+ICsvKgo+ICsgKiBDIG1hY3JvcyB0byB3
cml0ZSBvdXQgdmFyaW91cyBpbnRlZ3JhbCB2YWx1ZXMuCj4gKyAqCj4gKyAqIE5vdGU6Cj4gKyAq
IC0gVGhlIGRlc3RpbmF0aW9uIHBvaW50ZXIgY291bGQgYmUgdW5hbGlnbmVkLgo+ICsgKiAtIFZh
bHVlcyBhcmUgd3JpdHRlbiBvdXQgaW4gbmF0aXZlIGJ5dGUgb3JkZXIuCj4gKyAqIC0gVGhlIGRl
c3RpbmF0aW9uIHBvaW50ZXIgaXMgaW5jcmVtZW50ZWQgYWZ0ZXIgdGhlIHdyaXRlLgo+ICsgKi8K
PiArI2RlZmluZSAgICAgICAgV1JJVEVfQllURShQLFgpIGRvIHsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICAgICAgICAgdW5zaWduZWQgY2hh
ciAqY29uc3QgX3AgPSAodW5zaWduZWQgY2hhciAqKSAoUCk7ICAgICAgICBcCj4gKyAgICAgICAg
ICAgICAgIF9wWzBdICAgICAgICAgICA9ICh1bnNpZ25lZCBjaGFyKSAoWCk7ICAgICAgICAgICAg
ICAgICAgXAo+ICsgICAgICAgICAgICAgICAoUCkgICAgICAgICAgICAgPSBfcCArIDE7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgIH0gd2hpbGUgKDApCj4gKyNkZWZp
bmUgICAgICAgIFdSSVRFX0hBTEYoUCxYKSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAgICAgICAgIHVpbnQxNl90IF90ICAgICA9IChY
KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgICAgICAgICB1
bnNpZ25lZCBjaGFyICpjb25zdCBfcCA9ICh1bnNpZ25lZCBjaGFyICopIChQKTsgICAgICAgIFwK
PiArICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqY29uc3QgX3EgPSAodW5zaWdu
ZWQgY2hhciAqKSAmX3Q7ICBcCj4gKyAgICAgICAgICAgICAgIF9wWzBdICAgICAgICAgICA9IF9x
WzBdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgICAgICAgICBf
cFsxXSAgICAgICAgICAgPSBfcVsxXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
PiArICAgICAgICAgICAgICAgKFApICAgICAgICAgICAgID0gX3AgKyAyOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICB9IHdoaWxlICgwKQo+ICsjZGVmaW5lICAgICAg
ICBXUklURV9XT1JEKFAsWCkgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAo+ICsgICAgICAgICAgICAgICB1aW50MzJfdCBfdCAgICAgPSAodWludDMyX3Qp
IChYKTsgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICAgICAgICAgdW5zaWduZWQg
Y2hhciAqY29uc3QgX3AgPSAodW5zaWduZWQgY2hhciAqKSAoUCk7ICAgICAgICBcCj4gKyAgICAg
ICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmNvbnN0IF9xID0gKHVuc2lnbmVkIGNoYXIg
KikgJl90OyAgXAo+ICsgICAgICAgICAgICAgICBfcFswXSAgICAgICAgICAgPSBfcVswXTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICAgICAgICAgX3BbMV0gICAg
ICAgICAgID0gX3FbMV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAg
ICAgICAgICAgIF9wWzJdICAgICAgICAgICA9IF9xWzJdOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAo+ICsgICAgICAgICAgICAgICBfcFszXSAgICAgICAgICAgPSBfcVszXTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICAgICAgICAgKFApICAgICAg
ICAgICAgID0gX3AgKyA0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAg
ICB9IHdoaWxlICgwKQo+ICsjZGVmaW5lICAgICAgICBXUklURV9BRERSMzIoUCxYKSAgICAgICBX
UklURV9XT1JEKFAsWCkKPiArI2RlZmluZSAgICAgICAgV1JJVEVfT0ZGMzIoUCxYKSAgICAgICAg
V1JJVEVfV09SRChQLFgpCj4gKyNkZWZpbmUgICAgICAgIFdSSVRFX1NXT1JEKFAsWCkgICAgICAg
IFdSSVRFX1dPUkQoUCxYKQo+ICsjZGVmaW5lICAgICAgICBXUklURV9XT1JENjQoUCxYKSAgICAg
ICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgICAg
ICAgICB1aW50NjRfdCBfdCAgICAgPSAodWludDY0X3QpIChYKTsgICAgICAgICAgICAgICAgICAg
ICAgIFwKPiArICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqY29uc3QgX3AgPSAodW5zaWdu
ZWQgY2hhciAqKSAoUCk7ICAgICAgICBcCj4gKyAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVk
IGNoYXIgKmNvbnN0IF9xID0gKHVuc2lnbmVkIGNoYXIgKikgJl90OyAgXAo+ICsgICAgICAgICAg
ICAgICBfcFswXSAgICAgICAgICAgPSBfcVswXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKPiArICAgICAgICAgICAgICAgX3BbMV0gICAgICAgICAgID0gX3FbMV07ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAgICAgICAgIF9wWzJdICAgICAgICAg
ICA9IF9xWzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgICAg
ICAgICBfcFszXSAgICAgICAgICAgPSBfcVszXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKPiArICAgICAgICAgICAgICAgX3BbNF0gICAgICAgICAgID0gX3FbNF07ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAgICAgICAgIF9wWzVdICAgICAgICAg
ICA9IF9xWzVdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgICAg
ICAgICBfcFs2XSAgICAgICAgICAgPSBfcVs2XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKPiArICAgICAgICAgICAgICAgX3BbN10gICAgICAgICAgID0gX3FbN107ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAgICAgICAgIChQKSAgICAgICAgICAg
ICA9IF9wICsgODsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgfSB3
aGlsZSAoMCkKPiArI2RlZmluZSAgICAgICAgV1JJVEVfQUREUjY0KFAsWCkgICAgICAgV1JJVEVf
V09SRDY0KFAsWCkKPiArI2RlZmluZSAgICAgICAgV1JJVEVfTFdPUkQoUCxYKSAgICAgICAgV1JJ
VEVfV09SRDY0KFAsWCkKPiArI2RlZmluZSAgICAgICAgV1JJVEVfT0ZGNjQoUCxYKSAgICAgICAg
V1JJVEVfV09SRDY0KFAsWCkKPiArI2RlZmluZSAgICAgICAgV1JJVEVfU1hXT1JEKFAsWCkgICAg
ICAgV1JJVEVfV09SRDY0KFAsWCkKPiArI2RlZmluZSAgICAgICAgV1JJVEVfWFdPUkQoUCxYKSAg
ICAgICAgV1JJVEVfV09SRDY0KFAsWCkKPiArI2RlZmluZSAgICAgICAgV1JJVEVfSURFTlQoUCxY
KSAgICAgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAg
ICAgICAgICAgICAgKHZvaWQpIG1lbWNweSgoUCksIChYKSwgc2l6ZW9mKChYKSkpOyAgICAgICAg
ICAgICAgICAgICBcCj4gKyAgICAgICAgICAgICAgIChQKSAgICAgICAgICAgICA9IChQKSArIEVJ
X05JREVOVDsgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgfSB3aGlsZSAoMCkKPiAr
Cj4gKy8qCj4gKyAqIEMgbWFjcm9zIHRvIHJlYWQgaW4gdmFyaW91cyBpbnRlZ3JhbCB2YWx1ZXMu
Cj4gKyAqCj4gKyAqIE5vdGU6Cj4gKyAqIC0gVGhlIHNvdXJjZSBwb2ludGVyIGNvdWxkIGJlIHVu
YWxpZ25lZC4KPiArICogLSBWYWx1ZXMgYXJlIHJlYWQgaW4gbmF0aXZlIGJ5dGUgb3JkZXIuCj4g
KyAqIC0gVGhlIHNvdXJjZSBwb2ludGVyIGlzIGluY3JlbWVudGVkIGFwcHJvcHJpYXRlbHkuCj4g
KyAqLwo+ICsKPiArI2RlZmluZSAgICAgICAgUkVBRF9CWVRFKFAsWCkgIGRvIHsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICAgICAgICAgY29u
c3QgdW5zaWduZWQgY2hhciAqY29uc3QgX3AgPSAgICAgICAgICAgICAgICAgICAgICAgICBcCj4g
KyAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgKFApOyAgICAg
ICAgICAgICAgICAgICAgXAo+ICsgICAgICAgICAgICAgICAoWCkgICAgICAgICAgICAgPSBfcFsw
XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICAgICAgICAgKFAp
ICAgICAgICAgICAgID0gKFApICsgMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4g
KyAgICAgICB9IHdoaWxlICgwKQo+ICsjZGVmaW5lICAgICAgICBSRUFEX0hBTEYoUCxYKSAgZG8g
eyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAg
ICAgICAgICB1aW50MTZfdCBfdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKPiArICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqY29uc3QgX3EgPSAodW5z
aWduZWQgY2hhciAqKSAmX3Q7ICAgICAgICBcCj4gKyAgICAgICAgICAgICAgIGNvbnN0IHVuc2ln
bmVkIGNoYXIgKmNvbnN0IF9wID0gICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAg
ICAgICAgICAgICAgICAgIChjb25zdCB1bnNpZ25lZCBjaGFyICopIChQKTsgICAgICAgICAgICAg
ICAgICAgIFwKPiArICAgICAgICAgICAgICAgX3FbMF0gICAgICAgICAgID0gX3BbMF07ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAgICAgICAgIF9xWzFdICAgICAg
ICAgICA9IF9wWzFdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAg
ICAgICAgICAoUCkgICAgICAgICAgICAgPSAoUCkgKyAyOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKPiArICAgICAgICAgICAgICAgKFgpICAgICAgICAgICAgID0gX3Q7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICB9IHdoaWxlICgwKQo+ICsjZGVm
aW5lICAgICAgICBfUkVBRF9XT1JEKFAsWCxUKSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgICAgICAgICB1aW50MzJfdCBfdDsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICAgICAgICAg
dW5zaWduZWQgY2hhciAqY29uc3QgX3EgPSAodW5zaWduZWQgY2hhciAqKSAmX3Q7ICAgICAgICBc
Cj4gKyAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmNvbnN0IF9wID0gICAgICAg
ICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgICAgICAgICAgICAgICAgIChjb25zdCB1bnNp
Z25lZCBjaGFyICopIChQKTsgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICAgICAgICAg
X3FbMF0gICAgICAgICAgID0gX3BbMF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
Cj4gKyAgICAgICAgICAgICAgIF9xWzFdICAgICAgICAgICA9IF9wWzFdOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgICAgICAgICBfcVsyXSAgICAgICAgICAgPSBf
cFsyXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICAgICAgICAg
X3FbM10gICAgICAgICAgID0gX3BbM107ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
Cj4gKyAgICAgICAgICAgICAgIChQKSAgICAgICAgICAgICA9IChQKSArIDQ7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgICAgICAgICAoWCkgICAgICAgICAgICAgPSAo
VCkgX3Q7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgIH0gd2hpbGUg
KDApCj4gKyNkZWZpbmUgICAgICAgIFJFQURfQUREUjMyKFAsWCkgICAgICAgIF9SRUFEX1dPUkQo
UCwgWCwgRWxmMzJfQWRkcikKPiArI2RlZmluZSAgICAgICAgUkVBRF9PRkYzMihQLFgpICAgICAg
ICAgX1JFQURfV09SRChQLCBYLCBFbGYzMl9PZmYpCj4gKyNkZWZpbmUgICAgICAgIFJFQURfU1dP
UkQoUCxYKSAgICAgICAgIF9SRUFEX1dPUkQoUCwgWCwgRWxmMzJfU3dvcmQpCj4gKyNkZWZpbmUg
ICAgICAgIFJFQURfV09SRChQLFgpICAgICAgICAgIF9SRUFEX1dPUkQoUCwgWCwgRWxmMzJfV29y
ZCkKPiArI2RlZmluZSAgICAgICAgX1JFQURfV09SRDY0KFAsWCxUKSAgICAgZG8geyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICAgICAgICAgdWludDY0X3Qg
X3Q7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKmNvbnN0IF9xID0gKHVuc2lnbmVkIGNoYXIgKikgJl90
OyAgICAgICAgXAo+ICsgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpjb25zdCBf
cCA9ICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICAgICAgICAgICAgICAgICAo
Y29uc3QgdW5zaWduZWQgY2hhciAqKSAoUCk7ICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAg
ICAgICAgICAgIF9xWzBdICAgICAgICAgICA9IF9wWzBdOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAo+ICsgICAgICAgICAgICAgICBfcVsxXSAgICAgICAgICAgPSBfcFsxXTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICAgICAgICAgX3FbMl0gICAg
ICAgICAgID0gX3BbMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAg
ICAgICAgICAgIF9xWzNdICAgICAgICAgICA9IF9wWzNdOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAo+ICsgICAgICAgICAgICAgICBfcVs0XSAgICAgICAgICAgPSBfcFs0XTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICAgICAgICAgX3FbNV0gICAg
ICAgICAgID0gX3BbNV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAg
ICAgICAgICAgIF9xWzZdICAgICAgICAgICA9IF9wWzZdOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAo+ICsgICAgICAgICAgICAgICBfcVs3XSAgICAgICAgICAgPSBfcFs3XTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICAgICAgICAgKFApICAgICAg
ICAgICAgID0gKFApICsgODsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAg
ICAgICAgICAgIChYKSAgICAgICAgICAgICA9IChUKSBfdDsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAo+ICsgICAgICAgfSB3aGlsZSAoMCkKPiArI2RlZmluZSAgICAgICAgUkVBRF9B
RERSNjQoUCxYKSAgICAgICAgX1JFQURfV09SRDY0KFAsIFgsIEVsZjY0X0FkZHIpCj4gKyNkZWZp
bmUgICAgICAgIFJFQURfTFdPUkQoUCxYKSAgICAgICAgIF9SRUFEX1dPUkQ2NChQLCBYLCBFbGY2
NF9Md29yZCkKPiArI2RlZmluZSAgICAgICAgUkVBRF9PRkY2NChQLFgpICAgICAgICAgX1JFQURf
V09SRDY0KFAsIFgsIEVsZjY0X09mZikKPiArI2RlZmluZSAgICAgICAgUkVBRF9TWFdPUkQoUCxY
KSAgICAgICAgX1JFQURfV09SRDY0KFAsIFgsIEVsZjY0X1N4d29yZCkKPiArI2RlZmluZSAgICAg
ICAgUkVBRF9YV09SRChQLFgpICAgICAgICAgX1JFQURfV09SRDY0KFAsIFgsIEVsZjY0X1h3b3Jk
KQo+ICsjZGVmaW5lICAgICAgICBSRUFEX0lERU5UKFAsWCkgICAgICAgICBkbyB7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgICAgICAgICAodm9pZCkgbWVt
Y3B5KChYKSwgKFApLCBzaXplb2YoKFgpKSk7ICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAg
ICAgICAgICAgKFApICAgICAgICAgICAgID0gKFApICsgRUlfTklERU5UOyAgICAgICAgICAgICAg
ICAgICAgICBcCj4gKyAgICAgICB9IHdoaWxlICgwKQo+ICsKPiArI2RlZmluZSAgICAgICAgUk9V
TkRVUDIoVixOKSAgIChWKSA9ICgoKChWKSArIChOKSAtIDEpKSAmIH4oKE4pIC0gMSkpCj4gKwo+
ICsvKlsqLwo+ICtNQUtFX1RZUEVfQ09OVkVSVEVSUyhFTEZfVFlQRV9MSVNUKQo+ICtNQUtFX1ZF
UlNJT05fQ09OVkVSVEVSUyhWREVGLFZlcmRlZixWZXJkYXV4LHZkKQo+ICtNQUtFX1ZFUlNJT05f
Q09OVkVSVEVSUyhWTkVFRCxWZXJuZWVkLFZlcm5hdXgsdm4pCj4gKy8qXSovCj4gKwo+ICsvKgo+
ICsgKiBTZWN0aW9ucyBvZiB0eXBlIEVMRl9UX0JZVEUgYXJlIG5ldmVyIGJ5dGVzd2FwcGVkLCBj
b25zZXF1ZW50bHkgYQo+ICsgKiBzaW1wbGUgbWVtY3B5IHN1ZmZpY2VzIGZvciBib3RoIGRpcmVj
dGlvbnMgb2YgY29udmVyc2lvbi4KPiArICovCj4gKwo+ICtzdGF0aWMgaW50Cj4gK19saWJlbGZf
Y3Z0X0JZVEVfdG94KHVuc2lnbmVkIGNoYXIgKmRzdCwgc2l6ZV90IGRzeiwgdW5zaWduZWQgY2hh
ciAqc3JjLAo+ICsgICAgc2l6ZV90IGNvdW50LCBpbnQgYnl0ZXN3YXApCj4gK3sKPiArICAgICAg
ICh2b2lkKSBieXRlc3dhcDsKPiArICAgICAgIGlmIChkc3ogPCBjb3VudCkKPiArICAgICAgICAg
ICAgICAgcmV0dXJuICgwKTsKPiArICAgICAgIGlmIChkc3QgIT0gc3JjKQo+ICsgICAgICAgICAg
ICAgICAodm9pZCkgbWVtY3B5KGRzdCwgc3JjLCBjb3VudCk7Cj4gKyAgICAgICByZXR1cm4gKDEp
Owo+ICt9Cj4gKwo+ICsvKgo+ICsgKiBTZWN0aW9ucyBvZiB0eXBlIEVMRl9UX0dOVUhBU0ggc3Rh
cnQgd2l0aCBhIGhlYWRlciBjb250YWluaW5nIDQgMzItYml0Cj4gKyAqIHdvcmRzLiAgQmxvb20g
ZmlsdGVyIGRhdGEgY29tZXMgbmV4dCwgZm9sbG93ZWQgYnkgaGFzaCBidWNrZXRzIGFuZCB0aGUK
PiArICogaGFzaCBjaGFpbi4KPiArICoKPiArICogQmxvb20gZmlsdGVyIHdvcmRzIGFyZSA2NCBi
aXQgd2lkZSBvbiBFTEZDTEFTUzY0IG9iamVjdHMgYW5kIGFyZSAzMiBiaXQKPiArICogd2lkZSBv
biBFTEZDTEFTUzMyIG9iamVjdHMuICBUaGUgb3RoZXIgb2JqZWN0cyBpbiB0aGlzIHNlY3Rpb24g
YXJlIDMyCj4gKyAqIGJpdHMgd2lkZS4KPiArICoKPiArICogQXJndW1lbnQgYHNyY3N6JyBkZW5v
dGVzIHRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gYmUgY29udmVydGVkLiAgSW4gdGhlCj4gKyAqIDMy
LWJpdCBjYXNlIHdlIG5lZWQgdG8gdHJhbnNsYXRlIGBzcmNzeicgdG8gYSBjb3VudCBvZiAzMi1i
aXQgd29yZHMuCj4gKyAqLwo+ICsKPiArc3RhdGljIGludAo+ICtfbGliZWxmX2N2dF9HTlVIQVNI
MzJfdG9tKHVuc2lnbmVkIGNoYXIgKmRzdCwgc2l6ZV90IGRzeiwgdW5zaWduZWQgY2hhciAqc3Jj
LAo+ICsgICAgc2l6ZV90IHNyY3N6LCBpbnQgYnl0ZXN3YXApCj4gK3sKPiArICAgICAgIHJldHVy
biAoX2xpYmVsZl9jdnRfV09SRF90b20oZHN0LCBkc3osIHNyYywgc3Jjc3ogLyBzaXplb2YodWlu
dDMyX3QpLAo+ICsgICAgICAgICAgICAgICBieXRlc3dhcCkpOwo+ICt9Cj4gKwo+ICtzdGF0aWMg
aW50Cj4gK19saWJlbGZfY3Z0X0dOVUhBU0gzMl90b2YodW5zaWduZWQgY2hhciAqZHN0LCBzaXpl
X3QgZHN6LCB1bnNpZ25lZCBjaGFyICpzcmMsCj4gKyAgICBzaXplX3Qgc3Jjc3osIGludCBieXRl
c3dhcCkKPiArewo+ICsgICAgICAgcmV0dXJuIChfbGliZWxmX2N2dF9XT1JEX3RvZihkc3QsIGRz
eiwgc3JjLCBzcmNzeiAvIHNpemVvZih1aW50MzJfdCksCj4gKyAgICAgICAgICAgICAgIGJ5dGVz
d2FwKSk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQKPiArX2xpYmVsZl9jdnRfR05VSEFTSDY0X3Rv
bSh1bnNpZ25lZCBjaGFyICpkc3QsIHNpemVfdCBkc3osIHVuc2lnbmVkIGNoYXIgKnNyYywKPiAr
ICAgIHNpemVfdCBzcmNzeiwgaW50IGJ5dGVzd2FwKQo+ICt7Cj4gKyAgICAgICBzaXplX3Qgc3o7
Cj4gKyAgICAgICB1aW50NjRfdCB0NjQsICpibG9vbTY0Owo+ICsgICAgICAgRWxmX0dOVV9IYXNo
X0hlYWRlciAqZ2g7Cj4gKyAgICAgICB1aW50MzJfdCBuLCBuYnVja2V0cywgbmNoYWlucywgbWFz
a3dvcmRzLCBzaGlmdDIsIHN5bW5keCwgdDMyOwo+ICsgICAgICAgdWludDMyX3QgKmJ1Y2tldHMs
ICpjaGFpbnM7Cj4gKwo+ICsgICAgICAgc3ogPSA0ICogc2l6ZW9mKHVpbnQzMl90KTsgICAgICAv
KiBGaWxlIGhlYWRlciBpcyA0IHdvcmRzIGxvbmcuICovCj4gKyAgICAgICBpZiAoZHN6IDwgc2l6
ZW9mKEVsZl9HTlVfSGFzaF9IZWFkZXIpIHx8IHNyY3N6IDwgc3opCj4gKyAgICAgICAgICAgICAg
IHJldHVybiAoMCk7Cj4gKwo+ICsgICAgICAgLyogUmVhZCBpbiB0aGUgc2VjdGlvbiBoZWFkZXIg
YW5kIGJ5dGVzd2FwIGlmIG5lZWRlZC4gKi8KPiArICAgICAgIFJFQURfV09SRChzcmMsIG5idWNr
ZXRzKTsKPiArICAgICAgIFJFQURfV09SRChzcmMsIHN5bW5keCk7Cj4gKyAgICAgICBSRUFEX1dP
UkQoc3JjLCBtYXNrd29yZHMpOwo+ICsgICAgICAgUkVBRF9XT1JEKHNyYywgc2hpZnQyKTsKPiAr
Cj4gKyAgICAgICBzcmNzeiAtPSBzejsKPiArCj4gKyAgICAgICBpZiAoYnl0ZXN3YXApIHsKPiAr
ICAgICAgICAgICAgICAgU1dBUF9XT1JEKG5idWNrZXRzKTsKPiArICAgICAgICAgICAgICAgU1dB
UF9XT1JEKHN5bW5keCk7Cj4gKyAgICAgICAgICAgICAgIFNXQVBfV09SRChtYXNrd29yZHMpOwo+
ICsgICAgICAgICAgICAgICBTV0FQX1dPUkQoc2hpZnQyKTsKPiArICAgICAgIH0KPiArCj4gKyAg
ICAgICAvKiBDaGVjayBzb3VyY2UgYnVmZmVyIGFuZCBkZXN0aW5hdGlvbiBidWZmZXIgc2l6ZXMu
ICovCj4gKyAgICAgICBzeiA9IG5idWNrZXRzICogc2l6ZW9mKHVpbnQzMl90KSArIG1hc2t3b3Jk
cyAqIHNpemVvZih1aW50NjRfdCk7Cj4gKyAgICAgICBpZiAoc3Jjc3ogPCBzeiB8fCBkc3ogPCBz
eiArIHNpemVvZihFbGZfR05VX0hhc2hfSGVhZGVyKSkKPiArICAgICAgICAgICAgICAgcmV0dXJu
ICgwKTsKPiArCj4gKyAgICAgICBnaCA9IChFbGZfR05VX0hhc2hfSGVhZGVyICopICh1aW50cHRy
X3QpIGRzdDsKPiArICAgICAgIGdoLT5naF9uYnVja2V0cyAgPSBuYnVja2V0czsKPiArICAgICAg
IGdoLT5naF9zeW1uZHggICAgPSBzeW1uZHg7Cj4gKyAgICAgICBnaC0+Z2hfbWFza3dvcmRzID0g
bWFza3dvcmRzOwo+ICsgICAgICAgZ2gtPmdoX3NoaWZ0MiAgICA9IHNoaWZ0MjsKPiArCj4gKyAg
ICAgICBkc3ogLT0gc2l6ZW9mKEVsZl9HTlVfSGFzaF9IZWFkZXIpOwo+ICsgICAgICAgZHN0ICs9
IHNpemVvZihFbGZfR05VX0hhc2hfSGVhZGVyKTsKPiArCj4gKyAgICAgICBibG9vbTY0ID0gKHVp
bnQ2NF90ICopICh1aW50cHRyX3QpIGRzdDsKPiArCj4gKyAgICAgICAvKiBDb3B5IGJsb29tIGZp
bHRlciBkYXRhLiAqLwo+ICsgICAgICAgZm9yIChuID0gMDsgbiA8IG1hc2t3b3JkczsgbisrKSB7
Cj4gKyAgICAgICAgICAgICAgIFJFQURfWFdPUkQoc3JjLCB0NjQpOwo+ICsgICAgICAgICAgICAg
ICBpZiAoYnl0ZXN3YXApCj4gKyAgICAgICAgICAgICAgICAgICAgICAgU1dBUF9YV09SRCh0NjQp
Owo+ICsgICAgICAgICAgICAgICBibG9vbTY0W25dID0gdDY0Owo+ICsgICAgICAgfQo+ICsKPiAr
ICAgICAgIC8qIFRoZSBoYXNoIGJ1Y2tldHMgZm9sbG93cyB0aGUgYmxvb20gZmlsdGVyLiAqLwo+
ICsgICAgICAgZHN0ICs9IG1hc2t3b3JkcyAqIHNpemVvZih1aW50NjRfdCk7Cj4gKyAgICAgICBi
dWNrZXRzID0gKHVpbnQzMl90ICopICh1aW50cHRyX3QpIGRzdDsKPiArCj4gKyAgICAgICBmb3Ig
KG4gPSAwOyBuIDwgbmJ1Y2tldHM7IG4rKykgewo+ICsgICAgICAgICAgICAgICBSRUFEX1dPUkQo
c3JjLCB0MzIpOwo+ICsgICAgICAgICAgICAgICBpZiAoYnl0ZXN3YXApCj4gKyAgICAgICAgICAg
ICAgICAgICAgICAgU1dBUF9XT1JEKHQzMik7Cj4gKyAgICAgICAgICAgICAgIGJ1Y2tldHNbbl0g
PSB0MzI7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgZHN0ICs9IG5idWNrZXRzICogc2l6ZW9m
KHVpbnQzMl90KTsKPiArCj4gKyAgICAgICAvKiBUaGUgaGFzaCBjaGFpbiBmb2xsb3dzIHRoZSBo
YXNoIGJ1Y2tldHMuICovCj4gKyAgICAgICBkc3ogLT0gc3o7Cj4gKyAgICAgICBzcmNzeiAtPSBz
ejsKPiArCj4gKyAgICAgICBpZiAoZHN6IDwgc3Jjc3opICAgICAgICAvKiBEZXN0aW5hdGlvbiBs
YWNrcyBzcGFjZS4gKi8KPiArICAgICAgICAgICAgICAgcmV0dXJuICgwKTsKPiArCj4gKyAgICAg
ICBuY2hhaW5zID0gc3Jjc3ogLyBzaXplb2YodWludDMyX3QpOwo+ICsgICAgICAgY2hhaW5zID0g
KHVpbnQzMl90ICopICh1aW50cHRyX3QpIGRzdDsKPiArCj4gKyAgICAgICBmb3IgKG4gPSAwOyBu
IDwgbmNoYWluczsgbisrKSB7Cj4gKyAgICAgICAgICAgICAgIFJFQURfV09SRChzcmMsIHQzMik7
Cj4gKyAgICAgICAgICAgICAgIGlmIChieXRlc3dhcCkKPiArICAgICAgICAgICAgICAgICAgICAg
ICBTV0FQX1dPUkQodDMyKTsKPiArICAgICAgICAgICAgICAgKmNoYWlucysrID0gdDMyOwo+ICsg
ICAgICAgfQo+ICsKPiArICAgICAgIHJldHVybiAoMSk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQK
PiArX2xpYmVsZl9jdnRfR05VSEFTSDY0X3RvZih1bnNpZ25lZCBjaGFyICpkc3QsIHNpemVfdCBk
c3osIHVuc2lnbmVkIGNoYXIgKnNyYywKPiArICAgIHNpemVfdCBzcmNzeiwgaW50IGJ5dGVzd2Fw
KQo+ICt7Cj4gKyAgICAgICB1aW50MzJfdCAqczMyOwo+ICsgICAgICAgc2l6ZV90IHN6LCBoZHJz
ejsKPiArICAgICAgIHVpbnQ2NF90ICpzNjQsIHQ2NDsKPiArICAgICAgIEVsZl9HTlVfSGFzaF9I
ZWFkZXIgKmdoOwo+ICsgICAgICAgdWludDMyX3QgbWFza3dvcmRzLCBuLCBuYnVja2V0cywgbmNo
YWlucywgdDAsIHQxLCB0MiwgdDMsIHQzMjsKPiArCj4gKyAgICAgICBoZHJzeiA9IDQgKiBzaXpl
b2YodWludDMyX3QpOyAgIC8qIEhlYWRlciBpcyA0eDMyIGJpdHMuICovCj4gKyAgICAgICBpZiAo
ZHN6IDwgaGRyc3ogfHwgc3Jjc3ogPCBzaXplb2YoRWxmX0dOVV9IYXNoX0hlYWRlcikpCj4gKyAg
ICAgICAgICAgICAgIHJldHVybiAoMCk7Cj4gKwo+ICsgICAgICAgZ2ggPSAoRWxmX0dOVV9IYXNo
X0hlYWRlciAqKSAodWludHB0cl90KSBzcmM7Cj4gKwo+ICsgICAgICAgdDAgPSBuYnVja2V0cyA9
IGdoLT5naF9uYnVja2V0czsKPiArICAgICAgIHQxID0gZ2gtPmdoX3N5bW5keDsKPiArICAgICAg
IHQyID0gbWFza3dvcmRzID0gZ2gtPmdoX21hc2t3b3JkczsKPiArICAgICAgIHQzID0gZ2gtPmdo
X3NoaWZ0MjsKPiArCj4gKyAgICAgICBzcmMgICArPSBzaXplb2YoRWxmX0dOVV9IYXNoX0hlYWRl
cik7Cj4gKyAgICAgICBzcmNzeiAtPSBzaXplb2YoRWxmX0dOVV9IYXNoX0hlYWRlcik7Cj4gKyAg
ICAgICBkc3ogICAtPSBoZHJzejsKPiArCj4gKyAgICAgICBzeiA9IGdoLT5naF9uYnVja2V0cyAq
IHNpemVvZih1aW50MzJfdCkgKyBnaC0+Z2hfbWFza3dvcmRzICoKPiArICAgICAgICAgICBzaXpl
b2YodWludDY0X3QpOwo+ICsKPiArICAgICAgIGlmIChzcmNzeiA8IHN6IHx8IGRzeiA8IHN6KQo+
ICsgICAgICAgICAgICAgICByZXR1cm4gKDApOwo+ICsKPiArICAgICAgIC8qIFdyaXRlIG91dCB0
aGUgaGVhZGVyLiAqLwo+ICsgICAgICAgaWYgKGJ5dGVzd2FwKSB7Cj4gKyAgICAgICAgICAgICAg
IFNXQVBfV09SRCh0MCk7Cj4gKyAgICAgICAgICAgICAgIFNXQVBfV09SRCh0MSk7Cj4gKyAgICAg
ICAgICAgICAgIFNXQVBfV09SRCh0Mik7Cj4gKyAgICAgICAgICAgICAgIFNXQVBfV09SRCh0Myk7
Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgV1JJVEVfV09SRChkc3QsIHQwKTsKPiArICAgICAg
IFdSSVRFX1dPUkQoZHN0LCB0MSk7Cj4gKyAgICAgICBXUklURV9XT1JEKGRzdCwgdDIpOwo+ICsg
ICAgICAgV1JJVEVfV09SRChkc3QsIHQzKTsKPiArCj4gKyAgICAgICAvKiBDb3B5IHRoZSBibG9v
bSBmaWx0ZXIgYW5kIHRoZSBoYXNoIHRhYmxlLiAqLwo+ICsgICAgICAgczY0ID0gKHVpbnQ2NF90
ICopICh1aW50cHRyX3QpIHNyYzsKPiArICAgICAgIGZvciAobiA9IDA7IG4gPCBtYXNrd29yZHM7
IG4rKykgewo+ICsgICAgICAgICAgICAgICB0NjQgPSAqczY0Kys7Cj4gKyAgICAgICAgICAgICAg
IGlmIChieXRlc3dhcCkKPiArICAgICAgICAgICAgICAgICAgICAgICBTV0FQX1hXT1JEKHQ2NCk7
Cj4gKyAgICAgICAgICAgICAgIFdSSVRFX1dPUkQ2NChkc3QsIHQ2NCk7Cj4gKyAgICAgICB9Cj4g
Kwo+ICsgICAgICAgczMyID0gKHVpbnQzMl90ICopIHM2NDsKPiArICAgICAgIGZvciAobiA9IDA7
IG4gPCBuYnVja2V0czsgbisrKSB7Cj4gKyAgICAgICAgICAgICAgIHQzMiA9ICpzMzIrKzsKPiAr
ICAgICAgICAgICAgICAgaWYgKGJ5dGVzd2FwKQo+ICsgICAgICAgICAgICAgICAgICAgICAgIFNX
QVBfV09SRCh0MzIpOwo+ICsgICAgICAgICAgICAgICBXUklURV9XT1JEKGRzdCwgdDMyKTsKPiAr
ICAgICAgIH0KPiArCj4gKyAgICAgICBzcmNzeiAtPSBzejsKPiArICAgICAgIGRzeiAgIC09IHN6
Owo+ICsKPiArICAgICAgIC8qIENvcHkgb3V0IHRoZSBoYXNoIGNoYWlucy4gKi8KPiArICAgICAg
IGlmIChkc3ogPCBzcmNzeikKPiArICAgICAgICAgICAgICAgcmV0dXJuICgwKTsKPiArCj4gKyAg
ICAgICBuY2hhaW5zID0gc3Jjc3ogLyBzaXplb2YodWludDMyX3QpOwo+ICsgICAgICAgZm9yIChu
ID0gMDsgbiA8IG5jaGFpbnM7IG4rKykgewo+ICsgICAgICAgICAgICAgICB0MzIgPSAqczMyKys7
Cj4gKyAgICAgICAgICAgICAgIGlmIChieXRlc3dhcCkKPiArICAgICAgICAgICAgICAgICAgICAg
ICBTV0FQX1dPUkQodDMyKTsKPiArICAgICAgICAgICAgICAgV1JJVEVfV09SRChkc3QsIHQzMik7
Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgcmV0dXJuICgxKTsKPiArfQo+ICsKPiArLyoKPiAr
ICogRWxmX05vdGUgc3RydWN0dXJlcyBjb21wcmlzZSBhIGZpeGVkIHNpemUgaGVhZGVyIGZvbGxv
d2VkIGJ5IHZhcmlhYmxlCj4gKyAqIGxlbmd0aCBzdHJpbmdzLiAgVGhlIGZpeGVkIHNpemUgaGVh
ZGVyIG5lZWRzIHRvIGJlIGJ5dGUgc3dhcHBlZCwgYnV0Cj4gKyAqIG5vdCB0aGUgc3RyaW5ncy4K
PiArICoKPiArICogQXJndW1lbnQgYGNvdW50JyBkZW5vdGVzIHRoZSB0b3RhbCBudW1iZXIgb2Yg
Ynl0ZXMgdG8gYmUgY29udmVydGVkLgo+ICsgKiBUaGUgZGVzdGluYXRpb24gYnVmZmVyIG5lZWRz
IHRvIGJlIGF0IGxlYXN0IGBjb3VudCcgYnl0ZXMgaW4gc2l6ZS4KPiArICovCj4gK3N0YXRpYyBp
bnQKPiArX2xpYmVsZl9jdnRfTk9URV90b20odW5zaWduZWQgY2hhciAqZHN0LCBzaXplX3QgZHN6
LCB1bnNpZ25lZCBjaGFyICpzcmMsCj4gKyAgICBzaXplX3QgY291bnQsIGludCBieXRlc3dhcCkK
PiArewo+ICsgICAgICAgdWludDMyX3QgbmFtZXN6LCBkZXNjc3osIHR5cGU7Cj4gKyAgICAgICBF
bGZfTm90ZSAqZW47Cj4gKyAgICAgICBzaXplX3Qgc3osIGhkcnN6Owo+ICsKPiArICAgICAgIGlm
IChkc3ogPCBjb3VudCkgICAgICAgIC8qIERlc3RpbmF0aW9uIGJ1ZmZlciBpcyB0b28gc21hbGwu
ICovCj4gKyAgICAgICAgICAgICAgIHJldHVybiAoMCk7Cj4gKwo+ICsgICAgICAgaGRyc3ogPSAz
ICogc2l6ZW9mKHVpbnQzMl90KTsKPiArICAgICAgIGlmIChjb3VudCA8IGhkcnN6KSAgICAgICAg
ICAgICAgLyogU291cmNlIHRvbyBzbWFsbC4gKi8KPiArICAgICAgICAgICAgICAgcmV0dXJuICgw
KTsKPiArCj4gKyAgICAgICBpZiAoIWJ5dGVzd2FwKSB7Cj4gKyAgICAgICAgICAgICAgICh2b2lk
KSBtZW1jcHkoZHN0LCBzcmMsIGNvdW50KTsKPiArICAgICAgICAgICAgICAgcmV0dXJuICgxKTsK
PiArICAgICAgIH0KPiArCj4gKyAgICAgICAvKiBQcm9jZXNzIGFsbCBub3RlcyBpbiB0aGUgc2Vj
dGlvbi4gKi8KPiArICAgICAgIHdoaWxlIChjb3VudCA+IGhkcnN6KSB7Cj4gKyAgICAgICAgICAg
ICAgIC8qIFJlYWQgdGhlIG5vdGUgaGVhZGVyLiAqLwo+ICsgICAgICAgICAgICAgICBSRUFEX1dP
UkQoc3JjLCBuYW1lc3opOwo+ICsgICAgICAgICAgICAgICBSRUFEX1dPUkQoc3JjLCBkZXNjc3op
Owo+ICsgICAgICAgICAgICAgICBSRUFEX1dPUkQoc3JjLCB0eXBlKTsKPiArCj4gKyAgICAgICAg
ICAgICAgIC8qIFRyYW5zbGF0ZS4gKi8KPiArICAgICAgICAgICAgICAgU1dBUF9XT1JEKG5hbWVz
eik7Cj4gKyAgICAgICAgICAgICAgIFNXQVBfV09SRChkZXNjc3opOwo+ICsgICAgICAgICAgICAg
ICBTV0FQX1dPUkQodHlwZSk7Cj4gKwo+ICsgICAgICAgICAgICAgICAvKiBDb3B5IG91dCB0aGUg
dHJhbnNsYXRlZCBub3RlIGhlYWRlci4gKi8KPiArICAgICAgICAgICAgICAgZW4gPSAoRWxmX05v
dGUgKikgKHVpbnRwdHJfdCkgZHN0Owo+ICsgICAgICAgICAgICAgICBlbi0+bl9uYW1lc3ogPSBu
YW1lc3o7Cj4gKyAgICAgICAgICAgICAgIGVuLT5uX2Rlc2NzeiA9IGRlc2NzejsKPiArICAgICAg
ICAgICAgICAgZW4tPm5fdHlwZSA9IHR5cGU7Cj4gKwo+ICsgICAgICAgICAgICAgICBkc3ogLT0g
c2l6ZW9mKEVsZl9Ob3RlKTsKPiArICAgICAgICAgICAgICAgZHN0ICs9IHNpemVvZihFbGZfTm90
ZSk7Cj4gKyAgICAgICAgICAgICAgIGNvdW50IC09IGhkcnN6Owo+ICsKPiArICAgICAgICAgICAg
ICAgUk9VTkRVUDIobmFtZXN6LCA0VSk7Cj4gKyAgICAgICAgICAgICAgIFJPVU5EVVAyKGRlc2Nz
eiwgNFUpOwo+ICsKPiArICAgICAgICAgICAgICAgc3ogPSBuYW1lc3ogKyBkZXNjc3o7Cj4gKwo+
ICsgICAgICAgICAgICAgICBpZiAoY291bnQgPCBzeiB8fCBkc3ogPCBzeikgICAgIC8qIEJ1ZmZl
cnMgYXJlIHRvbyBzbWFsbC4gKi8KPiArICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKDAp
Owo+ICsKPiArICAgICAgICAgICAgICAgKHZvaWQpIG1lbWNweShkc3QsIHNyYywgc3opOwo+ICsK
PiArICAgICAgICAgICAgICAgc3JjICs9IHN6Owo+ICsgICAgICAgICAgICAgICBkc3QgKz0gc3o7
Cj4gKwo+ICsgICAgICAgICAgICAgICBjb3VudCAtPSBzejsKPiArICAgICAgICAgICAgICAgZHN6
IC09IHN6Owo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIHJldHVybiAoMSk7Cj4gK30KPiArCj4g
K3N0YXRpYyBpbnQKPiArX2xpYmVsZl9jdnRfTk9URV90b2YodW5zaWduZWQgY2hhciAqZHN0LCBz
aXplX3QgZHN6LCB1bnNpZ25lZCBjaGFyICpzcmMsCj4gKyAgICBzaXplX3QgY291bnQsIGludCBi
eXRlc3dhcCkKPiArewo+ICsgICAgICAgdWludDMyX3QgbmFtZXN6LCBkZXNjc3osIHR5cGU7Cj4g
KyAgICAgICBFbGZfTm90ZSAqZW47Cj4gKyAgICAgICBzaXplX3Qgc3o7Cj4gKwo+ICsgICAgICAg
aWYgKGRzeiA8IGNvdW50KQo+ICsgICAgICAgICAgICAgICByZXR1cm4gKDApOwo+ICsKPiArICAg
ICAgIGlmICghYnl0ZXN3YXApIHsKPiArICAgICAgICAgICAgICAgKHZvaWQpIG1lbWNweShkc3Qs
IHNyYywgY291bnQpOwo+ICsgICAgICAgICAgICAgICByZXR1cm4gKDEpOwo+ICsgICAgICAgfQo+
ICsKPiArICAgICAgIHdoaWxlIChjb3VudCA+IHNpemVvZihFbGZfTm90ZSkpIHsKPiArCj4gKyAg
ICAgICAgICAgICAgIGVuID0gKEVsZl9Ob3RlICopICh1aW50cHRyX3QpIHNyYzsKPiArICAgICAg
ICAgICAgICAgbmFtZXN6ID0gZW4tPm5fbmFtZXN6Owo+ICsgICAgICAgICAgICAgICBkZXNjc3og
PSBlbi0+bl9kZXNjc3o7Cj4gKyAgICAgICAgICAgICAgIHR5cGUgPSBlbi0+bl90eXBlOwo+ICsK
PiArICAgICAgICAgICAgICAgc3ogPSBuYW1lc3o7Cj4gKyAgICAgICAgICAgICAgIFJPVU5EVVAy
KHN6LCA0VSk7Cj4gKyAgICAgICAgICAgICAgIHN6ICs9IGRlc2NzejsKPiArICAgICAgICAgICAg
ICAgUk9VTkRVUDIoc3osIDRVKTsKPiArCj4gKyAgICAgICAgICAgICAgIFNXQVBfV09SRChuYW1l
c3opOwo+ICsgICAgICAgICAgICAgICBTV0FQX1dPUkQoZGVzY3N6KTsKPiArICAgICAgICAgICAg
ICAgU1dBUF9XT1JEKHR5cGUpOwo+ICsKPiArICAgICAgICAgICAgICAgV1JJVEVfV09SRChkc3Qs
IG5hbWVzeik7Cj4gKyAgICAgICAgICAgICAgIFdSSVRFX1dPUkQoZHN0LCBkZXNjc3opOwo+ICsg
ICAgICAgICAgICAgICBXUklURV9XT1JEKGRzdCwgdHlwZSk7Cj4gKwo+ICsgICAgICAgICAgICAg
ICBzcmMgKz0gc2l6ZW9mKEVsZl9Ob3RlKTsKPiArCj4gKyAgICAgICAgICAgICAgIGlmIChjb3Vu
dCA8IHN6KQo+ICsgICAgICAgICAgICAgICAgICAgICAgIHN6ID0gY291bnQ7Cj4gKwo+ICsgICAg
ICAgICAgICAgICAodm9pZCkgbWVtY3B5KGRzdCwgc3JjLCBzeik7Cj4gKwo+ICsgICAgICAgICAg
ICAgICBzcmMgKz0gc3o7Cj4gKyAgICAgICAgICAgICAgIGRzdCArPSBzejsKPiArICAgICAgICAg
ICAgICAgY291bnQgLT0gc3o7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgcmV0dXJuICgxKTsK
PiArfQo+ICsKPiArc3RydWN0IGNvbnZlcnRlcnMgewo+ICsgICAgICAgaW50ICAgICAoKnRvZjMy
KSh1bnNpZ25lZCBjaGFyICpkc3QsIHNpemVfdCBkc3osIHVuc2lnbmVkIGNoYXIgKnNyYywKPiAr
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBjbnQsIGludCBieXRlc3dhcCk7Cj4gKyAgICAgICBp
bnQgICAgICgqdG9tMzIpKHVuc2lnbmVkIGNoYXIgKmRzdCwgc2l6ZV90IGRzeiwgdW5zaWduZWQg
Y2hhciAqc3JjLAo+ICsgICAgICAgICAgICAgICAgICAgc2l6ZV90IGNudCwgaW50IGJ5dGVzd2Fw
KTsKPiArICAgICAgIGludCAgICAgKCp0b2Y2NCkodW5zaWduZWQgY2hhciAqZHN0LCBzaXplX3Qg
ZHN6LCB1bnNpZ25lZCBjaGFyICpzcmMsCj4gKyAgICAgICAgICAgICAgICAgICBzaXplX3QgY250
LCBpbnQgYnl0ZXN3YXApOwo+ICsgICAgICAgaW50ICAgICAoKnRvbTY0KSh1bnNpZ25lZCBjaGFy
ICpkc3QsIHNpemVfdCBkc3osIHVuc2lnbmVkIGNoYXIgKnNyYywKPiArICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBjbnQsIGludCBieXRlc3dhcCk7Cj4gK307Cj4gKwo+ICsKPiArc3RhdGljIHN0
cnVjdCBjb252ZXJ0ZXJzIGN2dFtFTEZfVF9OVU1dID0gewo+ICsgICAgICAgLypbKi8KPiArQ09O
VkVSVEVSX05BTUVTKEVMRl9UWVBFX0xJU1QpCj4gKyAgICAgICAvKl0qLwo+ICsKPiArICAgICAg
IC8qCj4gKyAgICAgICAgKiBUeXBlcyB0aGF0IG5lZWQgaGFuZC1jb2RlZCBjb252ZXJ0ZXJzIGZv
bGxvdy4KPiArICAgICAgICAqLwo+ICsKPiArICAgICAgIFtFTEZfVF9CWVRFXSA9IHsKPiArICAg
ICAgICAgICAgICAgLnRvZjMyID0gX2xpYmVsZl9jdnRfQllURV90b3gsCj4gKyAgICAgICAgICAg
ICAgIC50b20zMiA9IF9saWJlbGZfY3Z0X0JZVEVfdG94LAo+ICsgICAgICAgICAgICAgICAudG9m
NjQgPSBfbGliZWxmX2N2dF9CWVRFX3RveCwKPiArICAgICAgICAgICAgICAgLnRvbTY0ID0gX2xp
YmVsZl9jdnRfQllURV90b3gKPiArICAgICAgIH0sCj4gKwo+ICsgICAgICAgW0VMRl9UX05PVEVd
ID0gewo+ICsgICAgICAgICAgICAgICAudG9mMzIgPSBfbGliZWxmX2N2dF9OT1RFX3RvZiwKPiAr
ICAgICAgICAgICAgICAgLnRvbTMyID0gX2xpYmVsZl9jdnRfTk9URV90b20sCj4gKyAgICAgICAg
ICAgICAgIC50b2Y2NCA9IF9saWJlbGZfY3Z0X05PVEVfdG9mLAo+ICsgICAgICAgICAgICAgICAu
dG9tNjQgPSBfbGliZWxmX2N2dF9OT1RFX3RvbQo+ICsgICAgICAgfQo+ICt9Owo+ICsKPiAraW50
ICgqX2xpYmVsZl9nZXRfdHJhbnNsYXRvcihFbGZfVHlwZSB0LCBpbnQgZGlyZWN0aW9uLCBpbnQg
ZWxmY2xhc3MpKQo+ICsgKHVuc2lnbmVkIGNoYXIgKl9kc3QsIHNpemVfdCBkc3osIHVuc2lnbmVk
IGNoYXIgKl9zcmMsIHNpemVfdCBfY250LAo+ICsgIGludCBfYnl0ZXN3YXApCj4gK3sKPiArICAg
ICAgIGFzc2VydChlbGZjbGFzcyA9PSBFTEZDTEFTUzMyIHx8IGVsZmNsYXNzID09IEVMRkNMQVNT
NjQpOwo+ICsgICAgICAgYXNzZXJ0KGRpcmVjdGlvbiA9PSBFTEZfVE9GSUxFIHx8IGRpcmVjdGlv
biA9PSBFTEZfVE9NRU1PUlkpOwo+ICsKPiArICAgICAgIGlmICh0ID49IEVMRl9UX05VTSB8fAo+
ICsgICAgICAgICAgIChlbGZjbGFzcyAhPSBFTEZDTEFTUzMyICYmIGVsZmNsYXNzICE9IEVMRkNM
QVNTNjQpIHx8Cj4gKyAgICAgICAgICAgKGRpcmVjdGlvbiAhPSBFTEZfVE9GSUxFICYmIGRpcmVj
dGlvbiAhPSBFTEZfVE9NRU1PUlkpKQo+ICsgICAgICAgICAgICAgICByZXR1cm4gKE5VTEwpOwo+
ICsKPiArICAgICAgIHJldHVybiAoKGVsZmNsYXNzID09IEVMRkNMQVNTMzIpID8KPiArICAgICAg
ICAgICAoZGlyZWN0aW9uID09IEVMRl9UT0ZJTEUgPyBjdnRbdF0udG9mMzIgOiBjdnRbdF0udG9t
MzIpIDoKPiArICAgICAgICAgICAoZGlyZWN0aW9uID09IEVMRl9UT0ZJTEUgPyBjdnRbdF0udG9m
NjQgOiBjdnRbdF0udG9tNjQpKTsKPiArfQo+IGRpZmYgLS1naXQgYS9saWJlbGZfZGF0YS5jIGIv
bGliZWxmX2RhdGEuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uZmNm
ZmQ4Ygo+IC0tLSAvZGV2L251bGwKPiArKysgYi9saWJlbGZfZGF0YS5jCj4gQEAgLTAsMCArMSwx
MDEgQEAKPiArLyotCj4gKyAqIENvcHlyaWdodCAoYykgMjAwNiwyMDA4IEpvc2VwaCBLb3NoeQo+
ICsgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgo+ICsgKgo+ICsgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKPiArICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCj4gKyAqIGFyZSBtZXQ6Cj4gKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cj4gKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KPiArICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKPiArICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQo+ICsgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgo+ICsg
Kgo+ICsgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRS
SUJVVE9SUyBgYEFTIElTJycgQU5ECj4gKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQo+ICsgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRQo+ICsgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRI
T1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQo+ICsgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAo+ICsg
KiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUwo+ICsgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKPiArICogSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QKPiArICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQo+ICsgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCj4gKyAqIFNVQ0gg
REFNQUdFLgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlIDxsaWJlbGYuaD4KPiArCj4gKyNpbmNsdWRl
ICJfbGliZWxmLmgiCj4gKwo+ICtFTEZUQ19WQ1NJRCgiJElkOiBsaWJlbGZfZGF0YS5jIDMxNzQg
MjAxNS0wMy0yNyAxNzoxMzo0MVogZW1hc3RlICQiKTsKPiArCj4gK2ludAo+ICtfbGliZWxmX3hs
YXRlX3NodHlwZSh1aW50MzJfdCBzaHQpCj4gK3sKPiArICAgICAgIC8qCj4gKyAgICAgICAgKiBM
b29rIGZvciBrbm93biBzZWN0aW9uIHR5cGVzLgo+ICsgICAgICAgICovCj4gKyAgICAgICBzd2l0
Y2ggKHNodCkgewo+ICsgICAgICAgY2FzZSBTSFRfRFlOQU1JQzoKPiArICAgICAgICAgICAgICAg
cmV0dXJuIChFTEZfVF9EWU4pOwo+ICsgICAgICAgY2FzZSBTSFRfRFlOU1lNOgo+ICsgICAgICAg
ICAgICAgICByZXR1cm4gKEVMRl9UX1NZTSk7Cj4gKyAgICAgICBjYXNlIFNIVF9GSU5JX0FSUkFZ
Ogo+ICsgICAgICAgICAgICAgICByZXR1cm4gKEVMRl9UX0FERFIpOwo+ICsgICAgICAgY2FzZSBT
SFRfR05VX0hBU0g6Cj4gKyAgICAgICAgICAgICAgIHJldHVybiAoRUxGX1RfR05VSEFTSCk7Cj4g
KyAgICAgICBjYXNlIFNIVF9HTlVfTElCTElTVDoKPiArICAgICAgICAgICAgICAgcmV0dXJuIChF
TEZfVF9XT1JEKTsKPiArICAgICAgIGNhc2UgU0hUX0dST1VQOgo+ICsgICAgICAgICAgICAgICBy
ZXR1cm4gKEVMRl9UX1dPUkQpOwo+ICsgICAgICAgY2FzZSBTSFRfSEFTSDoKPiArICAgICAgICAg
ICAgICAgcmV0dXJuIChFTEZfVF9XT1JEKTsKPiArICAgICAgIGNhc2UgU0hUX0lOSVRfQVJSQVk6
Cj4gKyAgICAgICAgICAgICAgIHJldHVybiAoRUxGX1RfQUREUik7Cj4gKyAgICAgICBjYXNlIFNI
VF9OT0JJVFM6Cj4gKyAgICAgICAgICAgICAgIHJldHVybiAoRUxGX1RfQllURSk7Cj4gKyAgICAg
ICBjYXNlIFNIVF9OT1RFOgo+ICsgICAgICAgICAgICAgICByZXR1cm4gKEVMRl9UX05PVEUpOwo+
ICsgICAgICAgY2FzZSBTSFRfUFJFSU5JVF9BUlJBWToKPiArICAgICAgICAgICAgICAgcmV0dXJu
IChFTEZfVF9BRERSKTsKPiArICAgICAgIGNhc2UgU0hUX1BST0dCSVRTOgo+ICsgICAgICAgICAg
ICAgICByZXR1cm4gKEVMRl9UX0JZVEUpOwo+ICsgICAgICAgY2FzZSBTSFRfUkVMOgo+ICsgICAg
ICAgICAgICAgICByZXR1cm4gKEVMRl9UX1JFTCk7Cj4gKyAgICAgICBjYXNlIFNIVF9SRUxBOgo+
ICsgICAgICAgICAgICAgICByZXR1cm4gKEVMRl9UX1JFTEEpOwo+ICsgICAgICAgY2FzZSBTSFRf
U1RSVEFCOgo+ICsgICAgICAgICAgICAgICByZXR1cm4gKEVMRl9UX0JZVEUpOwo+ICsgICAgICAg
Y2FzZSBTSFRfU1lNVEFCOgo+ICsgICAgICAgICAgICAgICByZXR1cm4gKEVMRl9UX1NZTSk7Cj4g
KyAgICAgICBjYXNlIFNIVF9TWU1UQUJfU0hORFg6Cj4gKyAgICAgICAgICAgICAgIHJldHVybiAo
RUxGX1RfV09SRCk7Cj4gKyAgICAgICBjYXNlIFNIVF9TVU5XX2RvZjoKPiArICAgICAgICAgICAg
ICAgcmV0dXJuIChFTEZfVF9CWVRFKTsKPiArICAgICAgIGNhc2UgU0hUX1NVTldfbW92ZToKPiAr
ICAgICAgICAgICAgICAgcmV0dXJuIChFTEZfVF9NT1ZFKTsKPiArICAgICAgIGNhc2UgU0hUX1NV
Tldfc3ltaW5mbzoKPiArICAgICAgICAgICAgICAgcmV0dXJuIChFTEZfVF9TWU1JTkZPKTsKPiAr
ICAgICAgIGNhc2UgU0hUX1NVTldfdmVyZGVmOiAgIC8qID09IFNIVF9HTlVfdmVyZGVmICovCj4g
KyAgICAgICAgICAgICAgIHJldHVybiAoRUxGX1RfVkRFRik7Cj4gKyAgICAgICBjYXNlIFNIVF9T
VU5XX3Zlcm5lZWQ6ICAvKiA9PSBTSFRfR05VX3Zlcm5lZWQgKi8KPiArICAgICAgICAgICAgICAg
cmV0dXJuIChFTEZfVF9WTkVFRCk7Cj4gKyAgICAgICBjYXNlIFNIVF9TVU5XX3ZlcnN5bTogICAv
KiA9PSBTSFRfR05VX3ZlcnN5bSAqLwo+ICsgICAgICAgICAgICAgICByZXR1cm4gKEVMRl9UX0hB
TEYpOwo+ICsgICAgICAgZGVmYXVsdDoKPiArICAgICAgICAgICAgICAgLyoKPiArICAgICAgICAg
ICAgICAgICogVmFsdWVzIGluIHRoZSByYW5nZSBbU0hUX0xPT1MuLlNIVF9ISVVTRVJdIChpLmUu
LAo+ICsgICAgICAgICAgICAgICAgKiBPUywgcHJvY2Vzc29yIGFuZCB1c2VyLWRlZmluZWQgc2Vj
dGlvbiB0eXBlcykgYXJlCj4gKyAgICAgICAgICAgICAgICAqIGxlZ2FsLCBidXQgc2luY2Ugd2Ug
ZG8gbm90IGtub3cgYW55dGhpbmcgbW9yZSBhYm91dAo+ICsgICAgICAgICAgICAgICAgKiB0aGVp
ciBzZW1hbnRpY3MsIHdlIHJldHVybiBhIHR5cGUgb2YgRUxGX1RfQllURS4KPiArICAgICAgICAg
ICAgICAgICovCj4gKyAgICAgICAgICAgICAgIGlmIChzaHQgPj0gU0hUX0xPT1MgJiYgc2h0IDw9
IFNIVF9ISVVTRVIpCj4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChFTEZfVF9CWVRF
KTsKPiArCj4gKyAgICAgICAgICAgICAgIC8qCj4gKyAgICAgICAgICAgICAgICAqIE90aGVyIHZh
bHVlcyBhcmUgdW5zdXBwb3J0ZWQuCj4gKyAgICAgICAgICAgICAgICAqLwo+ICsgICAgICAgICAg
ICAgICByZXR1cm4gKC0xKTsKPiArICAgICAgIH0KPiArfQo+IGRpZmYgLS1naXQgYS9saWJlbGZf
ZWhkci5jIGIvbGliZWxmX2VoZHIuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAw
MDAwMC4uZDM3NWZiMwo+IC0tLSAvZGV2L251bGwKPiArKysgYi9saWJlbGZfZWhkci5jCj4gQEAg
LTAsMCArMSwyMDQgQEAKPiArLyotCj4gKyAqIENvcHlyaWdodCAoYykgMjAwNiwyMDA4IEpvc2Vw
aCBLb3NoeQo+ICsgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgo+ICsgKgo+ICsgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
PiArICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCj4gKyAqIGFyZSBtZXQ6Cj4gKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cj4gKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KPiArICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKPiArICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQo+ICsgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgo+ICsgKgo+ICsgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1Ig
QU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECj4gKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQo+ICsgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRQo+ICsgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQo+ICsgKiBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTAo+ICsgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUwo+ICsgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKPiArICogSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QKPiArICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQo+ICsgKiBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCj4g
KyAqIFNVQ0ggREFNQUdFLgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlIDxhc3NlcnQuaD4KPiArI2lu
Y2x1ZGUgPGdlbGYuaD4KPiArI2luY2x1ZGUgPGxpYmVsZi5oPgo+ICsjaW5jbHVkZSA8c3RkbGli
Lmg+Cj4gKwo+ICsjaW5jbHVkZSAiX2xpYmVsZi5oIgo+ICsKPiArRUxGVENfVkNTSUQoIiRJZDog
bGliZWxmX2VoZHIuYyAzMTc0IDIwMTUtMDMtMjcgMTc6MTM6NDFaIGVtYXN0ZSAkIik7Cj4gKwo+
ICsvKgo+ICsgKiBSZXRyaWV2ZSBjb3VudHMgZm9yIHNlY3Rpb25zLCBwaGRycyBhbmQgdGhlIHNl
Y3Rpb24gc3RyaW5nIHRhYmxlIGluZGV4Cj4gKyAqIGZyb20gc2VjdGlvbiBoZWFkZXIgIzAgb2Yg
dGhlIEVMRiBvYmplY3QuCj4gKyAqLwo+ICtzdGF0aWMgaW50Cj4gK19saWJlbGZfbG9hZF9leHRl
bmRlZChFbGYgKmUsIGludCBlYywgdWludDY0X3Qgc2hvZmYsIHVpbnQxNl90IHBobnVtLAo+ICsg
ICAgdWludDE2X3Qgc3RybmR4KQo+ICt7Cj4gKyAgICAgICBFbGZfU2NuICpzY247Cj4gKyAgICAg
ICBzaXplX3QgZnN6Owo+ICsgICAgICAgaW50ICgqeGxhdG9yKSh1bnNpZ25lZCBjaGFyICpfZCwg
c2l6ZV90IF9kc3osIHVuc2lnbmVkIGNoYXIgKl9zLAo+ICsgICAgICAgICAgIHNpemVfdCBfYywg
aW50IF9zd2FwKTsKPiArICAgICAgIHVpbnQzMl90IHNodHlwZTsKPiArCj4gKyAgICAgICBhc3Nl
cnQoU1RBSUxRX0VNUFRZKCZlLT5lX3UuZV9lbGYuZV9zY24pKTsKPiArCj4gKyAgICAgICBmc3og
PSBfbGliZWxmX2ZzaXplKEVMRl9UX1NIRFIsIGVjLCBlLT5lX3ZlcnNpb24sIDEpOwo+ICsgICAg
ICAgYXNzZXJ0KGZzeiA+IDApOwo+ICsKPiArICAgICAgIGlmIChlLT5lX3Jhd3NpemUgPCBzaG9m
ZiArIGZzeikgeyAvKiByYXcgZmlsZSB0b28gc21hbGwgKi8KPiArICAgICAgICAgICAgICAgTElC
RUxGX1NFVF9FUlJPUihIRUFERVIsIDApOwo+ICsgICAgICAgICAgICAgICByZXR1cm4gKDApOwo+
ICsgICAgICAgfQo+ICsKPiArICAgICAgIGlmICgoc2NuID0gX2xpYmVsZl9hbGxvY2F0ZV9zY24o
ZSwgKHNpemVfdCkgMCkpID09IE5VTEwpCj4gKyAgICAgICAgICAgICAgIHJldHVybiAoMCk7Cj4g
Kwo+ICsgICAgICAgeGxhdG9yID0gX2xpYmVsZl9nZXRfdHJhbnNsYXRvcihFTEZfVF9TSERSLCBF
TEZfVE9NRU1PUlksIGVjKTsKPiArICAgICAgICgqeGxhdG9yKSgodW5zaWduZWQgY2hhciAqKSAm
c2NuLT5zX3NoZHIsIHNpemVvZihzY24tPnNfc2hkciksCj4gKyAgICAgICAgICAgKHVuc2lnbmVk
IGNoYXIgKikgZS0+ZV9yYXdmaWxlICsgc2hvZmYsIChzaXplX3QpIDEsCj4gKyAgICAgICAgICAg
ZS0+ZV9ieXRlb3JkZXIgIT0gTElCRUxGX1BSSVZBVEUoYnl0ZW9yZGVyKSk7Cj4gKwo+ICsjZGVm
aW5lICAgICAgICBHRVRfU0hEUl9NRU1CRVIoTSkgKChlYyA9PSBFTEZDTEFTUzMyKSA/IHNjbi0+
c19zaGRyLnNfc2hkcjMyLk0gOiBcCj4gKyAgICAgICAgICAgICAgIHNjbi0+c19zaGRyLnNfc2hk
cjY0Lk0pCj4gKwo+ICsgICAgICAgaWYgKChzaHR5cGUgPSBHRVRfU0hEUl9NRU1CRVIoc2hfdHlw
ZSkpICE9IFNIVF9OVUxMKSB7Cj4gKyAgICAgICAgICAgICAgIExJQkVMRl9TRVRfRVJST1IoU0VD
VElPTiwgMCk7Cj4gKyAgICAgICAgICAgICAgIHJldHVybiAoMCk7Cj4gKyAgICAgICB9Cj4gKwo+
ICsgICAgICAgZS0+ZV91LmVfZWxmLmVfbnNjbiA9IChzaXplX3QpIEdFVF9TSERSX01FTUJFUihz
aF9zaXplKTsKPiArICAgICAgIGUtPmVfdS5lX2VsZi5lX25waGRyID0gKHBobnVtICE9IFBOX1hO
VU0pID8gcGhudW0gOgo+ICsgICAgICAgICAgIEdFVF9TSERSX01FTUJFUihzaF9pbmZvKTsKPiAr
ICAgICAgIGUtPmVfdS5lX2VsZi5lX3N0cm5keCA9IChzdHJuZHggIT0gU0hOX1hJTkRFWCkgPyBz
dHJuZHggOgo+ICsgICAgICAgICAgIEdFVF9TSERSX01FTUJFUihzaF9saW5rKTsKPiArI3VuZGVm
IEdFVF9TSERSX01FTUJFUgo+ICsKPiArICAgICAgIHJldHVybiAoMSk7Cj4gK30KPiArCj4gKyNk
ZWZpbmUgICAgICAgIEVIRFJfSU5JVChFLFNaKSAgZG8geyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAgICAgICAgIEVsZiMjU1ojI19FaGRyICpl
aCA9IChFKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgICAgICAg
ICBlaC0+ZV9pZGVudFtFSV9NQUcwXSA9IEVMRk1BRzA7ICAgICAgICAgICAgICAgICAgICAgICAg
IFwKPiArICAgICAgICAgICAgICAgZWgtPmVfaWRlbnRbRUlfTUFHMV0gPSBFTEZNQUcxOyAgICAg
ICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAgICAgICAgIGVoLT5lX2lkZW50W0VJX01B
RzJdID0gRUxGTUFHMjsgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgICAgICAg
ICBlaC0+ZV9pZGVudFtFSV9NQUczXSA9IEVMRk1BRzM7ICAgICAgICAgICAgICAgICAgICAgICAg
IFwKPiArICAgICAgICAgICAgICAgZWgtPmVfaWRlbnRbRUlfQ0xBU1NdID0gRUxGQ0xBU1MjI1Na
OyAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAgICAgICAgIGVoLT5lX2lkZW50W0VJX0RB
VEFdICA9IEVMRkRBVEFOT05FOyAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgICAgICAg
ICBlaC0+ZV9pZGVudFtFSV9WRVJTSU9OXSA9IExJQkVMRl9QUklWQVRFKHZlcnNpb24pICYgMHhG
RlU7IFwKPiArICAgICAgICAgICAgICAgZWgtPmVfbWFjaGluZSA9IEVNX05PTkU7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAgICAgICAgIGVoLT5lX3R5cGUgICAg
PSBFTEZfS19OT05FOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgICAg
ICAgICBlaC0+ZV92ZXJzaW9uID0gTElCRUxGX1BSSVZBVEUodmVyc2lvbik7ICAgICAgICAgICAg
ICAgIFwKPiArICAgICAgIH0gd2hpbGUgKDApCj4gKwo+ICt2b2lkICoKPiArX2xpYmVsZl9laGRy
KEVsZiAqZSwgaW50IGVjLCBpbnQgYWxsb2NhdGUpCj4gK3sKPiArICAgICAgIHZvaWQgKmVoZHI7
Cj4gKyAgICAgICBzaXplX3QgZnN6LCBtc3o7Cj4gKyAgICAgICB1aW50MTZfdCBwaG51bSwgc2hu
dW0sIHN0cm5keDsKPiArICAgICAgIHVpbnQ2NF90IHNob2ZmOwo+ICsgICAgICAgaW50ICgqeGxh
dG9yKSh1bnNpZ25lZCBjaGFyICpfZCwgc2l6ZV90IF9kc3osIHVuc2lnbmVkIGNoYXIgKl9zLAo+
ICsgICAgICAgICAgIHNpemVfdCBfYywgaW50IF9zd2FwKTsKPiArCj4gKyAgICAgICBhc3NlcnQo
ZWMgPT0gRUxGQ0xBU1MzMiB8fCBlYyA9PSBFTEZDTEFTUzY0KTsKPiArCj4gKyAgICAgICBpZiAo
ZSA9PSBOVUxMIHx8IGUtPmVfa2luZCAhPSBFTEZfS19FTEYpIHsKPiArICAgICAgICAgICAgICAg
TElCRUxGX1NFVF9FUlJPUihBUkdVTUVOVCwgMCk7Cj4gKyAgICAgICAgICAgICAgIHJldHVybiAo
TlVMTCk7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgaWYgKGUtPmVfY2xhc3MgIT0gRUxGQ0xB
U1NOT05FICYmIGUtPmVfY2xhc3MgIT0gZWMpIHsKPiArICAgICAgICAgICAgICAgTElCRUxGX1NF
VF9FUlJPUihDTEFTUywgMCk7Cj4gKyAgICAgICAgICAgICAgIHJldHVybiAoTlVMTCk7Cj4gKyAg
ICAgICB9Cj4gKwo+ICsgICAgICAgaWYgKGUtPmVfdmVyc2lvbiAhPSBFVl9DVVJSRU5UKSB7Cj4g
KyAgICAgICAgICAgICAgIExJQkVMRl9TRVRfRVJST1IoVkVSU0lPTiwgMCk7Cj4gKyAgICAgICAg
ICAgICAgIHJldHVybiAoTlVMTCk7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgaWYgKGUtPmVf
Y2xhc3MgPT0gRUxGQ0xBU1NOT05FKQo+ICsgICAgICAgICAgICAgICBlLT5lX2NsYXNzID0gZWM7
Cj4gKwo+ICsgICAgICAgaWYgKGVjID09IEVMRkNMQVNTMzIpCj4gKyAgICAgICAgICAgICAgIGVo
ZHIgPSAodm9pZCAqKSBlLT5lX3UuZV9lbGYuZV9laGRyLmVfZWhkcjMyOwo+ICsgICAgICAgZWxz
ZQo+ICsgICAgICAgICAgICAgICBlaGRyID0gKHZvaWQgKikgZS0+ZV91LmVfZWxmLmVfZWhkci5l
X2VoZHI2NDsKPiArCj4gKyAgICAgICBpZiAoZWhkciAhPSBOVUxMKSAgICAgICAvKiBhbHJlYWR5
IGhhdmUgYSB0cmFuc2xhdGVkIGVoZHIgKi8KPiArICAgICAgICAgICAgICAgcmV0dXJuIChlaGRy
KTsKPiArCj4gKyAgICAgICBmc3ogPSBfbGliZWxmX2ZzaXplKEVMRl9UX0VIRFIsIGVjLCBlLT5l
X3ZlcnNpb24sIChzaXplX3QpIDEpOwo+ICsgICAgICAgYXNzZXJ0KGZzeiA+IDApOwo+ICsKPiAr
ICAgICAgIGlmIChlLT5lX2NtZCAhPSBFTEZfQ19XUklURSAmJiBlLT5lX3Jhd3NpemUgPCBmc3op
IHsKPiArICAgICAgICAgICAgICAgTElCRUxGX1NFVF9FUlJPUihIRUFERVIsIDApOwo+ICsgICAg
ICAgICAgICAgICByZXR1cm4gKE5VTEwpOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIG1zeiA9
IF9saWJlbGZfbXNpemUoRUxGX1RfRUhEUiwgZWMsIEVWX0NVUlJFTlQpOwo+ICsKPiArICAgICAg
IGFzc2VydChtc3ogPiAwKTsKPiArCj4gKyAgICAgICBpZiAoKGVoZHIgPSBjYWxsb2MoKHNpemVf
dCkgMSwgbXN6KSkgPT0gTlVMTCkgewo+ICsgICAgICAgICAgICAgICBMSUJFTEZfU0VUX0VSUk9S
KFJFU09VUkNFLCAwKTsKPiArICAgICAgICAgICAgICAgcmV0dXJuIChOVUxMKTsKPiArICAgICAg
IH0KPiArCj4gKyAgICAgICBpZiAoZWMgPT0gRUxGQ0xBU1MzMikgewo+ICsgICAgICAgICAgICAg
ICBlLT5lX3UuZV9lbGYuZV9laGRyLmVfZWhkcjMyID0gZWhkcjsKPiArICAgICAgICAgICAgICAg
RUhEUl9JTklUKGVoZHIsMzIpOwo+ICsgICAgICAgfSBlbHNlIHsKPiArICAgICAgICAgICAgICAg
ZS0+ZV91LmVfZWxmLmVfZWhkci5lX2VoZHI2NCA9IGVoZHI7Cj4gKyAgICAgICAgICAgICAgIEVI
RFJfSU5JVChlaGRyLDY0KTsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICBpZiAoYWxsb2NhdGUp
Cj4gKyAgICAgICAgICAgICAgIGUtPmVfZmxhZ3MgfD0gRUxGX0ZfRElSVFk7Cj4gKwo+ICsgICAg
ICAgaWYgKGUtPmVfY21kID09IEVMRl9DX1dSSVRFKQo+ICsgICAgICAgICAgICAgICByZXR1cm4g
KGVoZHIpOwo+ICsKPiArICAgICAgIHhsYXRvciA9IF9saWJlbGZfZ2V0X3RyYW5zbGF0b3IoRUxG
X1RfRUhEUiwgRUxGX1RPTUVNT1JZLCBlYyk7Cj4gKyAgICAgICAoKnhsYXRvcikoKHVuc2lnbmVk
IGNoYXIqKSBlaGRyLCBtc3osIGUtPmVfcmF3ZmlsZSwgKHNpemVfdCkgMSwKPiArICAgICAgICAg
ICBlLT5lX2J5dGVvcmRlciAhPSBMSUJFTEZfUFJJVkFURShieXRlb3JkZXIpKTsKPiArCj4gKyAg
ICAgICAvKgo+ICsgICAgICAgICogSWYgZXh0ZW5kZWQgbnVtYmVyaW5nIGlzIGJlaW5nIHVzZWQs
IHJlYWQgdGhlIGNvcnJlY3QKPiArICAgICAgICAqIG51bWJlciBvZiBzZWN0aW9ucyBhbmQgcHJv
Z3JhbSBoZWFkZXIgZW50cmllcy4KPiArICAgICAgICAqLwo+ICsgICAgICAgaWYgKGVjID09IEVM
RkNMQVNTMzIpIHsKPiArICAgICAgICAgICAgICAgcGhudW0gPSAoKEVsZjMyX0VoZHIgKikgZWhk
ciktPmVfcGhudW07Cj4gKyAgICAgICAgICAgICAgIHNobnVtID0gKChFbGYzMl9FaGRyICopIGVo
ZHIpLT5lX3NobnVtOwo+ICsgICAgICAgICAgICAgICBzaG9mZiA9ICgoRWxmMzJfRWhkciAqKSBl
aGRyKS0+ZV9zaG9mZjsKPiArICAgICAgICAgICAgICAgc3RybmR4ID0gKChFbGYzMl9FaGRyICop
IGVoZHIpLT5lX3Noc3RybmR4Owo+ICsgICAgICAgfSBlbHNlIHsKPiArICAgICAgICAgICAgICAg
cGhudW0gPSAoKEVsZjY0X0VoZHIgKikgZWhkciktPmVfcGhudW07Cj4gKyAgICAgICAgICAgICAg
IHNobnVtID0gKChFbGY2NF9FaGRyICopIGVoZHIpLT5lX3NobnVtOwo+ICsgICAgICAgICAgICAg
ICBzaG9mZiA9ICgoRWxmNjRfRWhkciAqKSBlaGRyKS0+ZV9zaG9mZjsKPiArICAgICAgICAgICAg
ICAgc3RybmR4ID0gKChFbGY2NF9FaGRyICopIGVoZHIpLT5lX3Noc3RybmR4Owo+ICsgICAgICAg
fQo+ICsKPiArICAgICAgIGlmIChzaG51bSA+PSBTSE5fTE9SRVNFUlZFIHx8Cj4gKyAgICAgICAg
ICAgKHNob2ZmID09IDBMTCAmJiAoc2hudW0gIT0gMCB8fCBwaG51bSA9PSBQTl9YTlVNIHx8Cj4g
KyAgICAgICAgICAgICAgIHN0cm5keCA9PSBTSE5fWElOREVYKSkpIHsKPiArICAgICAgICAgICAg
ICAgTElCRUxGX1NFVF9FUlJPUihIRUFERVIsIDApOwo+ICsgICAgICAgICAgICAgICByZXR1cm4g
KE5VTEwpOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIGlmIChzaG51bSAhPSAwIHx8IHNob2Zm
ID09IDBMTCkgeyAvKiBub3QgdXNpbmcgZXh0ZW5kZWQgbnVtYmVyaW5nICovCj4gKyAgICAgICAg
ICAgICAgIGUtPmVfdS5lX2VsZi5lX25waGRyID0gcGhudW07Cj4gKyAgICAgICAgICAgICAgIGUt
PmVfdS5lX2VsZi5lX25zY24gPSBzaG51bTsKPiArICAgICAgICAgICAgICAgZS0+ZV91LmVfZWxm
LmVfc3RybmR4ID0gc3RybmR4Owo+ICsgICAgICAgfSBlbHNlIGlmIChfbGliZWxmX2xvYWRfZXh0
ZW5kZWQoZSwgZWMsIHNob2ZmLCBwaG51bSwgc3RybmR4KSA9PSAwKQo+ICsgICAgICAgICAgICAg
ICByZXR1cm4gKE5VTEwpOwo+ICsKPiArICAgICAgIHJldHVybiAoZWhkcik7Cj4gK30KPiBkaWZm
IC0tZ2l0IGEvbGliZWxmX2V4dGVuZGVkLmMgYi9saWJlbGZfZXh0ZW5kZWQuYwo+IG5ldyBmaWxl
IG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uOTY3NjVhOAo+IC0tLSAvZGV2L251bGwKPiAr
KysgYi9saWJlbGZfZXh0ZW5kZWQuYwo+IEBAIC0wLDAgKzEsMTM0IEBACj4gKy8qLQo+ICsgKiBD
b3B5cmlnaHQgKGMpIDIwMDYsMjAwOCBKb3NlcGggS29zaHkKPiArICogQWxsIHJpZ2h0cyByZXNl
cnZlZC4KPiArICoKPiArICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cj4gKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwo+ICsgKiBhcmUgbWV0
Ogo+ICsgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAo+ICsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCj4gKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cj4gKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKPiArICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KPiArICoKPiArICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFO
RAo+ICsgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKPiArICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKPiArICogQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUKPiArICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKPiArICogREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKPiAr
ICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pCj4gKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCj4gKyAqIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkKPiArICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgo+ICsgKiBTVUNIIERBTUFHRS4KPiArICovCj4gKwo+
ICsjaW5jbHVkZSA8YXNzZXJ0Lmg+Cj4gKyNpbmNsdWRlIDxsaWJlbGYuaD4KPiArCj4gKyNpbmNs
dWRlICJfbGliZWxmLmgiCj4gKwo+ICtFTEZUQ19WQ1NJRCgiJElkOiBsaWJlbGZfZXh0ZW5kZWQu
YyAzMTc0IDIwMTUtMDMtMjcgMTc6MTM6NDFaIGVtYXN0ZSAkIik7Cj4gKwo+ICsvKgo+ICsgKiBS
ZXRyaWV2ZSBzZWN0aW9uICMwLCBhbGxvY2F0aW5nIGEgbmV3IHNlY3Rpb24gaWYgbmVlZGVkLgo+
ICsgKi8KPiArc3RhdGljIEVsZl9TY24gKgo+ICtfbGliZWxmX2dldHNjbjAoRWxmICplKQo+ICt7
Cj4gKyAgICAgICBFbGZfU2NuICpzOwo+ICsKPiArICAgICAgIGlmICgocyA9IFNUQUlMUV9GSVJT
VCgmZS0+ZV91LmVfZWxmLmVfc2NuKSkgIT0gTlVMTCkKPiArICAgICAgICAgICAgICAgcmV0dXJu
IChzKTsKPiArCj4gKyAgICAgICByZXR1cm4gKF9saWJlbGZfYWxsb2NhdGVfc2NuKGUsIChzaXpl
X3QpIFNITl9VTkRFRikpOwo+ICt9Cj4gKwo+ICtpbnQKPiArX2xpYmVsZl9zZXRzaG51bShFbGYg
KmUsIHZvaWQgKmVoLCBpbnQgZWMsIHNpemVfdCBzaG51bSkKPiArewo+ICsgICAgICAgRWxmX1Nj
biAqc2NuOwo+ICsKPiArICAgICAgIGlmIChzaG51bSA+PSBTSE5fTE9SRVNFUlZFKSB7Cj4gKyAg
ICAgICAgICAgICAgIGlmICgoc2NuID0gX2xpYmVsZl9nZXRzY24wKGUpKSA9PSBOVUxMKQo+ICsg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoMCk7Cj4gKwo+ICsgICAgICAgICAgICAgICBh
c3NlcnQoc2NuLT5zX25keCA9PSBTSE5fVU5ERUYpOwo+ICsKPiArICAgICAgICAgICAgICAgaWYg
KGVjID09IEVMRkNMQVNTMzIpCj4gKyAgICAgICAgICAgICAgICAgICAgICAgc2NuLT5zX3NoZHIu
c19zaGRyMzIuc2hfc2l6ZSA9IHNobnVtOwo+ICsgICAgICAgICAgICAgICBlbHNlCj4gKyAgICAg
ICAgICAgICAgICAgICAgICAgc2NuLT5zX3NoZHIuc19zaGRyNjQuc2hfc2l6ZSA9IHNobnVtOwo+
ICsKPiArICAgICAgICAgICAgICAgKHZvaWQpIGVsZl9mbGFnc2hkcihzY24sIEVMRl9DX1NFVCwg
RUxGX0ZfRElSVFkpOwo+ICsKPiArICAgICAgICAgICAgICAgc2hudW0gPSAwOwo+ICsgICAgICAg
fQo+ICsKPiArICAgICAgIGlmIChlYyA9PSBFTEZDTEFTUzMyKQo+ICsgICAgICAgICAgICAgICAo
KEVsZjMyX0VoZHIgKikgZWgpLT5lX3NobnVtID0gc2hudW0gJiAweEZGRkZVOwo+ICsgICAgICAg
ZWxzZQo+ICsgICAgICAgICAgICAgICAoKEVsZjY0X0VoZHIgKikgZWgpLT5lX3NobnVtID0gc2hu
dW0gJiAweEZGRkZVOwo+ICsKPiArCj4gKyAgICAgICByZXR1cm4gKDEpOwo+ICt9Cj4gKwo+ICtp
bnQKPiArX2xpYmVsZl9zZXRzaHN0cm5keChFbGYgKmUsIHZvaWQgKmVoLCBpbnQgZWMsIHNpemVf
dCBzaHN0cm5keCkKPiArewo+ICsgICAgICAgRWxmX1NjbiAqc2NuOwo+ICsKPiArICAgICAgIGlm
IChzaHN0cm5keCA+PSBTSE5fTE9SRVNFUlZFKSB7Cj4gKyAgICAgICAgICAgICAgIGlmICgoc2Nu
ID0gX2xpYmVsZl9nZXRzY24wKGUpKSA9PSBOVUxMKQo+ICsgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiAoMCk7Cj4gKwo+ICsgICAgICAgICAgICAgICBhc3NlcnQoc2NuLT5zX25keCA9PSBT
SE5fVU5ERUYpOwo+ICsKPiArICAgICAgICAgICAgICAgaWYgKGVjID09IEVMRkNMQVNTMzIpCj4g
KyAgICAgICAgICAgICAgICAgICAgICAgc2NuLT5zX3NoZHIuc19zaGRyMzIuc2hfbGluayA9IHNo
c3RybmR4Owo+ICsgICAgICAgICAgICAgICBlbHNlCj4gKyAgICAgICAgICAgICAgICAgICAgICAg
c2NuLT5zX3NoZHIuc19zaGRyNjQuc2hfbGluayA9IHNoc3RybmR4Owo+ICsKPiArICAgICAgICAg
ICAgICAgKHZvaWQpIGVsZl9mbGFnc2hkcihzY24sIEVMRl9DX1NFVCwgRUxGX0ZfRElSVFkpOwo+
ICsKPiArICAgICAgICAgICAgICAgc2hzdHJuZHggPSBTSE5fWElOREVYOwo+ICsgICAgICAgfQo+
ICsKPiArICAgICAgIGlmIChlYyA9PSBFTEZDTEFTUzMyKQo+ICsgICAgICAgICAgICAgICAoKEVs
ZjMyX0VoZHIgKikgZWgpLT5lX3Noc3RybmR4ID0gc2hzdHJuZHggJiAweEZGRkZVOwo+ICsgICAg
ICAgZWxzZQo+ICsgICAgICAgICAgICAgICAoKEVsZjY0X0VoZHIgKikgZWgpLT5lX3Noc3RybmR4
ID0gc2hzdHJuZHggJiAweEZGRkZVOwo+ICsKPiArICAgICAgIHJldHVybiAoMSk7Cj4gK30KPiAr
Cj4gK2ludAo+ICtfbGliZWxmX3NldHBobnVtKEVsZiAqZSwgdm9pZCAqZWgsIGludCBlYywgc2l6
ZV90IHBobnVtKQo+ICt7Cj4gKyAgICAgICBFbGZfU2NuICpzY247Cj4gKwo+ICsgICAgICAgaWYg
KHBobnVtID49IFBOX1hOVU0pIHsKPiArICAgICAgICAgICAgICAgaWYgKChzY24gPSBfbGliZWxm
X2dldHNjbjAoZSkpID09IE5VTEwpCj4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgw
KTsKPiArCj4gKyAgICAgICAgICAgICAgIGFzc2VydChzY24tPnNfbmR4ID09IFNITl9VTkRFRik7
Cj4gKwo+ICsgICAgICAgICAgICAgICBpZiAoZWMgPT0gRUxGQ0xBU1MzMikKPiArICAgICAgICAg
ICAgICAgICAgICAgICBzY24tPnNfc2hkci5zX3NoZHIzMi5zaF9pbmZvID0gcGhudW07Cj4gKyAg
ICAgICAgICAgICAgIGVsc2UKPiArICAgICAgICAgICAgICAgICAgICAgICBzY24tPnNfc2hkci5z
X3NoZHI2NC5zaF9pbmZvID0gcGhudW07Cj4gKwo+ICsgICAgICAgICAgICAgICAodm9pZCkgZWxm
X2ZsYWdzaGRyKHNjbiwgRUxGX0NfU0VULCBFTEZfRl9ESVJUWSk7Cj4gKwo+ICsgICAgICAgICAg
ICAgICBwaG51bSA9IFBOX1hOVU07Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgaWYgKGVjID09
IEVMRkNMQVNTMzIpCj4gKyAgICAgICAgICAgICAgICgoRWxmMzJfRWhkciAqKSBlaCktPmVfcGhu
dW0gPSBwaG51bSAmIDB4RkZGRlU7Cj4gKyAgICAgICBlbHNlCj4gKyAgICAgICAgICAgICAgICgo
RWxmNjRfRWhkciAqKSBlaCktPmVfcGhudW0gPSBwaG51bSAmIDB4RkZGRlU7Cj4gKwo+ICsgICAg
ICAgcmV0dXJuICgxKTsKPiArfQo+IGRpZmYgLS1naXQgYS9saWJlbGZfZnNpemUubTQgYi9saWJl
bGZfZnNpemUubTQKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLjk5NDJk
MjcKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvbGliZWxmX2ZzaXplLm00Cj4gQEAgLTAsMCArMSwx
NTkgQEAKPiArLyotCj4gKyAqIENvcHlyaWdodCAoYykgMjAwNiwyMDA4LTIwMTEgSm9zZXBoIEtv
c2h5Cj4gKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCj4gKyAqCj4gKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAo+ICsg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKPiArICogYXJlIG1ldDoKPiArICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKPiArICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgo+
ICsgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAo+ICsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCj4gKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Cj4gKyAqCj4gKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKPiArICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCj4gKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFCj4gKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCj4gKyAqIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
Cj4gKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTCj4gKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQo+ICsgKiBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVAo+ICsgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCj4gKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKPiArICog
U1VDSCBEQU1BR0UuCj4gKyAqLwo+ICsKPiArI2luY2x1ZGUgPGxpYmVsZi5oPgo+ICsKPiArI2lu
Y2x1ZGUgIl9saWJlbGYuaCIKPiArCj4gK0VMRlRDX1ZDU0lEKCIkSWQ6IGxpYmVsZl9mc2l6ZS5t
NCAyMjI1IDIwMTEtMTEtMjYgMTg6NTU6NTRaIGprb3NoeSAkIik7Cj4gKwo+ICsvKiBXQVJOSU5H
OiBHRU5FUkFURUQgRlJPTSBfX2ZpbGVfXy4gKi8KPiArCj4gKy8qCj4gKyAqIENyZWF0ZSBhbiBh
cnJheSBvZiBmaWxlIHNpemVzIGZyb20gdGhlIGVsZl90eXBlIGRlZmluaXRpb25zCj4gKyAqLwo+
ICsKPiArZGl2ZXJ0KC0xKQo+ICtpbmNsdWRlKFNSQ0RJUmAvZWxmX3R5cGVzLm00JykKPiArCj4g
Ky8qCj4gKyAqIFRyYW5zbGF0aW9ucyBmcm9tIHN0cnVjdHVyZSBkZWZpbml0aW9ucyB0byB0aGUg
c2l6ZSBvZiB0aGVpciBmaWxlCj4gKyAqIHJlcHJlc2VudGF0aW9ucy4KPiArICovCj4gKwo+ICsv
KiBgQmFzaWMnIHR5cGVzLiAqLwo+ICtkZWZpbmUoYEJZVEVfU0laRScsICAgIDEpCj4gK2RlZmlu
ZShgSURFTlRfU0laRScsICAgYEVJX05JREVOVCcpCj4gKwo+ICsvKiBUeXBlcyB0aGF0IGhhdmUg
dmFyaWFibGUgbGVuZ3RoLiAqLwo+ICtkZWZpbmUoYEdOVUhBU0hfU0laRScsIDEpCj4gK2RlZmlu
ZShgTk9URV9TSVpFJywgICAgMSkKPiArZGVmaW5lKGBWREVGX1NJWkUnLCAgICAxKQo+ICtkZWZp
bmUoYFZORUVEX1NJWkUnLCAgIDEpCj4gKwo+ICsvKiBDdXJyZW50bHkgdW5pbXBsZW1lbnRlZCB0
eXBlcy4gKi8KPiArZGVmaW5lKGBNT1ZFUF9TSVpFJywgICAwKQo+ICsKPiArLyogT3ZlcnJpZGVz
IGZvciAzMiBiaXQgdHlwZXMgdGhhdCBkbyBub3QgZXhpc3QuICovCj4gK2RlZmluZShgWFdPUkRf
U0laRTMyJywgMCkKPiArZGVmaW5lKGBTWFdPUkRfU0laRTMyJywgICAgICAgIDApCj4gKwo+ICsv
Kgo+ICsgKiBGU1p7MzIsNjR9IGRlZmluZSB0aGUgc2l6ZXMgb2YgMzIgYW5kIDY0IGJpdCBmaWxl
IHN0cnVjdHVyZXMgcmVzcGVjdGl2ZWx5Lgo+ICsgKi8KPiArCj4gK2RlZmluZShgRlNaMzInLGBf
RlNaMzIoJDFfREVGKScpCj4gK2RlZmluZShgX0ZTWjMyJywKPiArICBgaWZlbHNlKCQjLDEsMCwK
PiArICAgIGBfQlNaMzIoJDEpK19GU1ozMihzaGlmdCgkQCkpJyknKQo+ICtkZWZpbmUoYF9CU1oz
MicsYCQyX1NJWkUzMicpCj4gKwo+ICtkZWZpbmUoYEZTWjY0JyxgX0ZTWjY0KCQxX0RFRiknKQo+
ICtkZWZpbmUoYF9GU1o2NCcsCj4gKyAgYGlmZWxzZSgkIywxLDAsCj4gKyAgICBgX0JTWjY0KCQx
KStfRlNaNjQoc2hpZnQoJEApKScpJykKPiArZGVmaW5lKGBfQlNaNjQnLGAkMl9TSVpFNjQnKQo+
ICsKPiArLyoKPiArICogREVGSU5FX0VMRl9GU0laRVMoVFlQRSxOQU1FKQo+ICsgKgo+ICsgKiBT
aG9ydGhhbmQgZm9yIGRlZmluaW5nICBmb3IgMzIgYW5kIDY0IHZlcnNpb25zCj4gKyAqIG9mIGVs
ZiB0eXBlIFRZUEUuCj4gKyAqCj4gKyAqIElmIFRZUEVgJ19TSVpFIGlzIGRlZmluZWQsIHVzZSBp
dHMgdmFsdWUgZm9yIGJvdGggMzIgYml0IGFuZCA2NCBiaXQKPiArICogc2l6ZXMuCj4gKyAqCj4g
KyAqIE90aGVyd2lzZSwgbG9vayBmb3IgYSBleHBsaWNpdCAzMi82NCBiaXQgc2l6ZSBkZWZpbml0
aW9uIGZvciBUWVBFLAo+ICsgKiBUWVBFYCdfU0laRTMyIG9yIFRZUEVgJ19TSVpFNjQuIElmIHRo
aXMgZGVmaW5pdGlvbiBpcyBwcmVzZW50LCB0aGVyZQo+ICsgKiBpcyBub3RoaW5nIGZ1cnRoZXIg
dG8gZG8uCj4gKyAqCj4gKyAqIE90aGVyd2lzZSwgaWYgYW4gRWxmezMyLDY0fV9gJ05BTUUgc3Ry
dWN0dXJlIGRlZmluaXRpb24gaXMga25vd24sCj4gKyAqIGNvbXB1dGUgYW4gZXhwcmVzc2lvbiB0
aGF0IGFkZHMgdXAgdGhlIHNpemVzIG9mIHRoZSBzdHJ1Y3R1cmUncwo+ICsgKiBjb25zdGl0dWVu
dHMuCj4gKyAqCj4gKyAqIElmIHN1Y2ggYSBzdHJ1Y3R1cmUgZGVmaW5pdGlvbiBpcyBub3Qga25v
d24sIHRyZWF0IFRZUEUgYXMgYSBwcmltaXRpdmUKPiArICogKGkuZS4sIGludGVncmFsKSB0eXBl
IGFuZCB1c2Ugc2l6ZW9mKEVsZnszMiw2NH1fYCdOQU1FKSB0byBnZXQgaXRzCj4gKyAqIGZpbGUg
cmVwcmVzZW50YXRpb24gc2l6ZS4KPiArICovCj4gKwo+ICtkZWZpbmUoYERFRklORV9FTEZfRlNJ
WkUnLAo+ICsgIGBpZmRlZigkMWBfU0laRScsCj4gKyAgICBgZGVmaW5lKCQxX1NJWkUzMiwkMV9T
SVpFKQo+ICsgICAgIGRlZmluZSgkMV9TSVpFNjQsJDFfU0laRSknLAo+ICsgICAgYGlmZGVmKCQx
YF9TSVpFMzInLGAnLAo+ICsgICAgICBgaWZkZWYoYEVsZjMyXyckMmBfREVGJywKPiArICAgICAg
ICBgZGVmaW5lKCQxX1NJWkUzMixGU1ozMihFbGYzMl8kMikpJywKPiArICAgICAgICBgZGVmaW5l
KCQxX1NJWkUzMixgc2l6ZW9mKEVsZjMyXyckMmApJyknKScpCj4gKyAgICAgaWZkZWYoJDFgX1NJ
WkU2NCcsYCcsCj4gKyAgICAgIGBpZmRlZihgRWxmNjRfJyQyYF9ERUYnLAo+ICsgICAgICAgIGBk
ZWZpbmUoJDFfU0laRTY0LEZTWjY0KEVsZjY0XyQyKSknLAo+ICsgICAgICAgIGBkZWZpbmUoJDFf
U0laRTY0LGBzaXplb2YoRWxmNjRfJyQyYCknKScpJyknKScpCj4gKwo+ICtkZWZpbmUoYERFRklO
RV9FTEZfRlNJWkVTJywKPiArICBgaWZlbHNlKCQjLDEsYCcsCj4gKyAgICBgREVGSU5FX0VMRl9G
U0laRSgkMSkKPiArICAgICBERUZJTkVfRUxGX0ZTSVpFUyhzaGlmdCgkQCkpJyknKQo+ICsKPiAr
REVGSU5FX0VMRl9GU0laRVMoRUxGX1RZUEVfTElTVCkKPiArREVGSU5FX0VMRl9GU0laRShgSURF
TlQnLGAnKSAgICMgYElERU5UJyBpcyBhIHBzZXVkbyB0eXBlCj4gKwo+ICtkZWZpbmUoYEZTSVpF
JywKPiArICBgW0VMRl9UXyQxXSA9IHsgLmZzejMyID0gJDFfU0laRTMyLCAuZnN6NjQgPSAkMV9T
SVpFNjQgfSwKPiArJykKPiArZGVmaW5lKGBGU0laRVMnLAo+ICsgIGBpZmVsc2UoJCMsMSxgJywK
PiArICAgIGBGU0laRSgkMSkKPiArRlNJWkVTKHNoaWZ0KCRAKSknKScpCj4gKwo+ICtkaXZlcnQo
MCkKPiArCj4gK3N0cnVjdCBmc2l6ZSB7Cj4gKyAgICAgICBzaXplX3QgZnN6MzI7Cj4gKyAgICAg
ICBzaXplX3QgZnN6NjQ7Cj4gK307Cj4gKwo+ICtzdGF0aWMgc3RydWN0IGZzaXplIGZzaXplW0VM
Rl9UX05VTV0gPSB7Cj4gK0ZTSVpFUyhFTEZfVFlQRV9MSVNUKQo+ICt9Owo+ICsKPiArc2l6ZV90
Cj4gK19saWJlbGZfZnNpemUoRWxmX1R5cGUgdCwgaW50IGVjLCB1bnNpZ25lZCBpbnQgdiwgc2l6
ZV90IGMpCj4gK3sKPiArICAgICAgIHNpemVfdCBzejsKPiArCj4gKyAgICAgICBzeiA9IDA7Cj4g
KyAgICAgICBpZiAodiAhPSBFVl9DVVJSRU5UKQo+ICsgICAgICAgICAgICAgICBMSUJFTEZfU0VU
X0VSUk9SKFZFUlNJT04sIDApOwo+ICsgICAgICAgZWxzZSBpZiAoKGludCkgdCA8IEVMRl9UX0ZJ
UlNUIHx8IHQgPiBFTEZfVF9MQVNUKQo+ICsgICAgICAgICAgICAgICBMSUJFTEZfU0VUX0VSUk9S
KEFSR1VNRU5ULCAwKTsKPiArICAgICAgIGVsc2Ugewo+ICsgICAgICAgICAgICAgICBzeiA9IGVj
ID09IEVMRkNMQVNTNjQgPyBmc2l6ZVt0XS5mc3o2NCA6IGZzaXplW3RdLmZzejMyOwo+ICsgICAg
ICAgICAgICAgICBpZiAoc3ogPT0gMCkKPiArICAgICAgICAgICAgICAgICAgICAgICBMSUJFTEZf
U0VUX0VSUk9SKFVOSU1QTCwgMCk7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgcmV0dXJuIChz
eipjKTsKPiArfQo+IGRpZmYgLS1naXQgYS9saWJlbGZfbWVtb3J5LmMgYi9saWJlbGZfbWVtb3J5
LmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLmNiOGU4ZjIKPiAtLS0g
L2Rldi9udWxsCj4gKysrIGIvbGliZWxmX21lbW9yeS5jCj4gQEAgLTAsMCArMSw5NiBAQAo+ICsv
Ki0KPiArICogQ29weXJpZ2h0IChjKSAyMDExIEpvc2VwaCBLb3NoeQo+ICsgKiBBbGwgcmlnaHRz
IHJlc2VydmVkLgo+ICsgKgo+ICsgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKPiArICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCj4gKyAqIGFy
ZSBtZXQ6Cj4gKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Cj4gKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KPiArICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKPiAr
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQo+ICsgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgo+ICsgKgo+ICsgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElT
JycgQU5ECj4gKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQo+ICsgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQo+ICsgKiBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRQo+ICsgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAo+ICsgKiBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
Uwo+ICsgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikKPiArICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKPiArICogTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWQo+ICsgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCj4gKyAqIFNVQ0ggREFNQUdFLgo+ICsgKi8K
PiArCj4gKyNpbmNsdWRlIDxhci5oPgo+ICsjaW5jbHVkZSA8YXNzZXJ0Lmg+Cj4gKyNpbmNsdWRl
IDxzdHJpbmcuaD4KPiArI2luY2x1ZGUgPGxpYmVsZi5oPgo+ICsKPiArI2luY2x1ZGUgIl9saWJl
bGYuaCIKPiArCj4gK0VMRlRDX1ZDU0lEKCIkSWQ6IGxpYmVsZl9tZW1vcnkuYyAzMDEzIDIwMTQt
MDMtMjMgMDY6MTY6NTlaIGprb3NoeSAkIik7Cj4gKwo+ICsvKgo+ICsgKiBDcmVhdGUgYW4gRUxG
IGRlc2NyaXB0b3IgZm9yIGEgbWVtb3J5IGltYWdlLCBvcHRpb25hbGx5IHJlcG9ydGluZwo+ICsg
KiBwYXJzZSBlcnJvcnMuCj4gKyAqLwo+ICsKPiArRWxmICoKPiArX2xpYmVsZl9tZW1vcnkodW5z
aWduZWQgY2hhciAqaW1hZ2UsIHNpemVfdCBzeiwgaW50IHJlcG9ydGVycm9yKQo+ICt7Cj4gKyAg
ICAgICBFbGYgKmU7Cj4gKyAgICAgICBpbnQgZV9jbGFzczsKPiArICAgICAgIGVudW0gRWxmX0Vy
cm9yIGVycm9yOwo+ICsgICAgICAgdW5zaWduZWQgaW50IGVfYnl0ZW9yZGVyLCBlX3ZlcnNpb247
Cj4gKwo+ICsgICAgICAgYXNzZXJ0KGltYWdlICE9IE5VTEwpOwo+ICsgICAgICAgYXNzZXJ0KHN6
ID4gMCk7Cj4gKwo+ICsgICAgICAgaWYgKChlID0gX2xpYmVsZl9hbGxvY2F0ZV9lbGYoKSkgPT0g
TlVMTCkKPiArICAgICAgICAgICAgICAgcmV0dXJuIChOVUxMKTsKPiArCj4gKyAgICAgICBlLT5l
X2NtZCA9IEVMRl9DX1JFQUQ7Cj4gKyAgICAgICBlLT5lX3Jhd2ZpbGUgPSBpbWFnZTsKPiArICAg
ICAgIGUtPmVfcmF3c2l6ZSA9IHN6Owo+ICsKPiArI3VuZGVmIExJQkVMRl9JU19FTEYKPiArI2Rl
ZmluZSAgICAgICAgTElCRUxGX0lTX0VMRihQKSAoKFApW0VJX01BRzBdID09IEVMRk1BRzAgJiYg
ICAgICAgICAgICBcCj4gKyAgICAgICAoUClbRUlfTUFHMV0gPT0gRUxGTUFHMSAmJiAoUClbRUlf
TUFHMl0gPT0gRUxGTUFHMiAmJiAgIFwKPiArICAgICAgIChQKVtFSV9NQUczXSA9PSBFTEZNQUcz
KQo+ICsKPiArICAgICAgIGlmIChzeiA+IEVJX05JREVOVCAmJiBMSUJFTEZfSVNfRUxGKGltYWdl
KSkgewo+ICsgICAgICAgICAgICAgICBlX2J5dGVvcmRlciA9IGltYWdlW0VJX0RBVEFdOwo+ICsg
ICAgICAgICAgICAgICBlX2NsYXNzICAgICA9IGltYWdlW0VJX0NMQVNTXTsKPiArICAgICAgICAg
ICAgICAgZV92ZXJzaW9uICAgPSBpbWFnZVtFSV9WRVJTSU9OXTsKPiArCj4gKyAgICAgICAgICAg
ICAgIGVycm9yID0gRUxGX0VfTk9ORTsKPiArCj4gKyAgICAgICAgICAgICAgIGlmIChlX3ZlcnNp
b24gPiBFVl9DVVJSRU5UKQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGVycm9yID0gRUxGX0Vf
VkVSU0lPTjsKPiArICAgICAgICAgICAgICAgZWxzZSBpZiAoKGVfYnl0ZW9yZGVyICE9IEVMRkRB
VEEyTFNCICYmIGVfYnl0ZW9yZGVyICE9Cj4gKyAgICAgICAgICAgICAgICAgICBFTEZEQVRBMk1T
QikgfHwgKGVfY2xhc3MgIT0gRUxGQ0xBU1MzMiAmJiBlX2NsYXNzICE9Cj4gKyAgICAgICAgICAg
ICAgICAgICBFTEZDTEFTUzY0KSkKPiArICAgICAgICAgICAgICAgICAgICAgICBlcnJvciA9IEVM
Rl9FX0hFQURFUjsKPiArCj4gKyAgICAgICAgICAgICAgIGlmIChlcnJvciAhPSBFTEZfRV9OT05F
KSB7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcG9ydGVycm9yKSB7Cj4gKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBMSUJFTEZfUFJJVkFURShlcnJvcikgPSBMSUJFTEZf
RVJST1IoZXJyb3IsIDApOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQp
IF9saWJlbGZfcmVsZWFzZV9lbGYoZSk7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gKE5VTEwpOwo+ICsgICAgICAgICAgICAgICAgICAgICAgIH0KPiArICAgICAgICAg
ICAgICAgfSBlbHNlIHsKPiArICAgICAgICAgICAgICAgICAgICAgICBfbGliZWxmX2luaXRfZWxm
KGUsIEVMRl9LX0VMRik7Cj4gKwo+ICsgICAgICAgICAgICAgICAgICAgICAgIGUtPmVfYnl0ZW9y
ZGVyID0gZV9ieXRlb3JkZXI7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgZS0+ZV9jbGFzcyA9
IGVfY2xhc3M7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgZS0+ZV92ZXJzaW9uID0gZV92ZXJz
aW9uOwo+ICsgICAgICAgICAgICAgICB9Cj4gKyAgICAgICB9IGVsc2UgaWYgKHN6ID49IFNBUk1B
RyAmJgo+ICsgICAgICAgICAgIHN0cm5jbXAoKGNvbnN0IGNoYXIgKikgaW1hZ2UsIEFSTUFHLCAo
c2l6ZV90KSBTQVJNQUcpID09IDApCj4gKyAgICAgICAgICAgICAgIHJldHVybiAoX2xpYmVsZl9h
cl9vcGVuKGUsIHJlcG9ydGVycm9yKSk7Cj4gKwo+ICsgICAgICAgcmV0dXJuIChlKTsKPiArfQo+
IGRpZmYgLS1naXQgYS9saWJlbGZfbXNpemUubTQgYi9saWJlbGZfbXNpemUubTQKPiBuZXcgZmls
ZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLjE3OTg4MGMKPiAtLS0gL2Rldi9udWxsCj4g
KysrIGIvbGliZWxmX21zaXplLm00Cj4gQEAgLTAsMCArMSwxMDYgQEAKPiArLyotCj4gKyAqIENv
cHlyaWdodCAoYykgMjAwNiwyMDA4LTIwMTEgSm9zZXBoIEtvc2h5Cj4gKyAqIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCj4gKyAqCj4gKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAo+ICsgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKPiArICogYXJl
IG1ldDoKPiArICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKPiArICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgo+ICsgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAo+ICsg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCj4gKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCj4gKyAqCj4gKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JyBBTkQKPiArICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCj4gKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCj4gKyAqIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFCj4gKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCj4gKyAqIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
Cj4gKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKQo+ICsgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAo+ICsgKiBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZCj4gKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKPiArICogU1VDSCBEQU1BR0UuCj4gKyAqLwo+
ICsKPiArI2luY2x1ZGUgPGFzc2VydC5oPgo+ICsjaW5jbHVkZSA8bGliZWxmLmg+Cj4gKyNpbmNs
dWRlIDxzdHJpbmcuaD4KPiArCj4gKyNpbmNsdWRlICJfbGliZWxmLmgiCj4gKwo+ICtFTEZUQ19W
Q1NJRCgiJElkOiBsaWJlbGZfbXNpemUubTQgMzE3NCAyMDE1LTAzLTI3IDE3OjEzOjQxWiBlbWFz
dGUgJCIpOwo+ICsKPiArLyogV0FSTklORzogR0VORVJBVEVEIEZST00gX19maWxlX18uICovCj4g
Kwo+ICtzdHJ1Y3QgbXNpemUgewo+ICsgICAgICAgc2l6ZV90ICBtc3ozMjsKPiArICAgICAgIHNp
emVfdCAgbXN6NjQ7Cj4gK307Cj4gKwo+ICtkaXZlcnQoLTEpCj4gK2luY2x1ZGUoU1JDRElSYC9l
bGZfdHlwZXMubTQnKQo+ICsKPiArLyoKPiArICogRUxGIHR5cGVzIHdob3NlIG1lbW9yeSByZXBy
ZXNlbnRhdGlvbnMgaGF2ZSBhIHZhcmlhYmxlIHNpemUuCj4gKyAqLwo+ICtkZWZpbmUoQllURV9T
SVpFLCAgICAgIDEpCj4gK2RlZmluZShHTlVIQVNIX1NJWkUsICAgMSkKPiArZGVmaW5lKE5PVEVf
U0laRSwgICAgICAxKQo+ICtkZWZpbmUoVkRFRl9TSVpFLCAgICAgIDEpCj4gK2RlZmluZShWTkVF
RF9TSVpFLCAgICAgMSkKPiArCj4gKy8qCj4gKyAqIFVuaW1wbGVtZW50ZWQgdHlwZXMuCj4gKyAq
Lwo+ICtkZWZpbmUoTU9WRVBfU0laRSwgICAgIDApCj4gK2RlZmluZShTWFdPUkRfU0laRTMyLCAg
MCkKPiArZGVmaW5lKFhXT1JEX1NJWkUzMiwgICAwKQo+ICsKPiArZGVmaW5lKGBERUZJTkVfRUxG
X01TSVpFJywKPiArICBgaWZkZWYoJDFgX1NJWkUnLAo+ICsgICAgYGRlZmluZSgkMV9TSVpFMzIs
JDFfU0laRSkKPiArICAgICBkZWZpbmUoJDFfU0laRTY0LCQxX1NJWkUpJywKPiArICAgIGBpZmRl
ZigkMWBfU0laRTMyJyxgJywKPiArICAgICAgYGRlZmluZSgkMV9TSVpFMzIsc2l6ZW9mKEVsZjMy
XyQyKSknKQo+ICsgICAgIGlmZGVmKCQxYF9TSVpFNjQnLGAnLAo+ICsgICAgICBgZGVmaW5lKCQx
X1NJWkU2NCxzaXplb2YoRWxmNjRfJDIpKScpJyknKQo+ICtkZWZpbmUoYERFRklORV9FTEZfTVNJ
WkVTJywKPiArICBgaWZlbHNlKCQjLDEsYCcsCj4gKyAgICBgREVGSU5FX0VMRl9NU0laRSgkMSkK
PiArICAgICBERUZJTkVfRUxGX01TSVpFUyhzaGlmdCgkQCkpJyknKQo+ICsKPiArREVGSU5FX0VM
Rl9NU0laRVMoRUxGX1RZUEVfTElTVCkKPiArCj4gK2RlZmluZShgTVNJWkUnLAo+ICsgIGBbRUxG
X1RfJDFdID0geyAubXN6MzIgPSAkMV9TSVpFMzIsIC5tc3o2NCA9ICQxX1NJWkU2NCB9LAo+ICsn
KQo+ICtkZWZpbmUoYE1TSVpFUycsCj4gKyAgYGlmZWxzZSgkIywxLGAnLAo+ICsgICAgYE1TSVpF
KCQxKQo+ICtNU0laRVMoc2hpZnQoJEApKScpJykKPiArCj4gK2RpdmVydCgwKQo+ICsKPiArc3Rh
dGljIHN0cnVjdCBtc2l6ZSBtc2l6ZVtFTEZfVF9OVU1dID0gewo+ICtNU0laRVMoRUxGX1RZUEVf
TElTVCkKPiArfTsKPiArCj4gK3NpemVfdAo+ICtfbGliZWxmX21zaXplKEVsZl9UeXBlIHQsIGlu
dCBlbGZjbGFzcywgdW5zaWduZWQgaW50IHZlcnNpb24pCj4gK3sKPiArICAgICAgIHNpemVfdCBz
ejsKPiArCj4gKyAgICAgICBhc3NlcnQoZWxmY2xhc3MgPT0gRUxGQ0xBU1MzMiB8fCBlbGZjbGFz
cyA9PSBFTEZDTEFTUzY0KTsKPiArICAgICAgIGFzc2VydCgoc2lnbmVkKSB0ID49IEVMRl9UX0ZJ
UlNUICYmIHQgPD0gRUxGX1RfTEFTVCk7Cj4gKwo+ICsgICAgICAgaWYgKHZlcnNpb24gIT0gRVZf
Q1VSUkVOVCkgewo+ICsgICAgICAgICAgICAgICBMSUJFTEZfU0VUX0VSUk9SKFZFUlNJT04sIDAp
Owo+ICsgICAgICAgICAgICAgICByZXR1cm4gKDApOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAg
IHN6ID0gKGVsZmNsYXNzID09IEVMRkNMQVNTMzIpID8gbXNpemVbdF0ubXN6MzIgOiBtc2l6ZVt0
XS5tc3o2NDsKPiArCj4gKyAgICAgICByZXR1cm4gKHN6KTsKPiArfQo+IGRpZmYgLS1naXQgYS9s
aWJlbGZfb3Blbi5jIGIvbGliZWxmX29wZW4uYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5k
ZXggMDAwMDAwMC4uN2VjMzM5NQo+IC0tLSAvZGV2L251bGwKPiArKysgYi9saWJlbGZfb3Blbi5j
Cj4gQEAgLTAsMCArMSwyNDkgQEAKPiArLyotCj4gKyAqIENvcHlyaWdodCAoYykgMjAwNiwyMDA4
LTIwMTEgSm9zZXBoIEtvc2h5Cj4gKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCj4gKyAqCj4gKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAo+ICsgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKPiArICogYXJlIG1ldDoKPiArICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
PiArICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgo+ICsgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAo+ICsgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCj4gKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCj4gKyAqCj4gKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKPiArICogQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCj4gKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCj4gKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCj4gKyAqIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMCj4gKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCj4gKyAqIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQo+
ICsgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVAo+ICsgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCj4gKyAqIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YKPiArICogU1VDSCBEQU1BR0UuCj4gKyAqLwo+ICsKPiArI2luY2x1ZGUgPHN5cy90
eXBlcy5oPgo+ICsjaW5jbHVkZSA8c3lzL3N0YXQuaD4KPiArCj4gKyNpbmNsdWRlIDxhc3NlcnQu
aD4KPiArI2luY2x1ZGUgPGVycm5vLmg+Cj4gKyNpbmNsdWRlIDxsaWJlbGYuaD4KPiArI2luY2x1
ZGUgPHN0ZGxpYi5oPgo+ICsjaW5jbHVkZSA8dW5pc3RkLmg+Cj4gKwo+ICsjaW5jbHVkZSAiX2xp
YmVsZi5oIgo+ICsKPiArI2lmICAgIEVMRlRDX0hBVkVfTU1BUAo+ICsjaW5jbHVkZSA8c3lzL21t
YW4uaD4KPiArI2VuZGlmCj4gKwo+ICtFTEZUQ19WQ1NJRCgiJElkOiBsaWJlbGZfb3Blbi5jIDMw
MDcgMjAxNC0wMy0yMiAwODoxMDoxNFogamtvc2h5ICQiKTsKPiArCj4gKyNkZWZpbmUgICAgICAg
IF9MSUJFTEZfSU5JVFNJWkUgICAgICAgICg2NCoxMDI0KQo+ICsKPiArLyoKPiArICogUmVhZCBm
cm9tIGEgZGV2aWNlIGZpbGUsIHBpcGUgb3Igc29ja2V0Lgo+ICsgKi8KPiArc3RhdGljIHZvaWQg
Kgo+ICtfbGliZWxmX3JlYWRfc3BlY2lhbF9maWxlKGludCBmZCwgc2l6ZV90ICpmc3opCj4gK3sK
PiArICAgICAgIHNzaXplX3QgcmVhZHN6Owo+ICsgICAgICAgc2l6ZV90IGJ1ZnN6LCBkYXRhc3o7
Cj4gKyAgICAgICB1bnNpZ25lZCBjaGFyICpidWYsICp0Owo+ICsKPiArICAgICAgIGRhdGFzeiA9
IDA7Cj4gKyAgICAgICByZWFkc3ogPSAwOwo+ICsgICAgICAgYnVmc3ogPSBfTElCRUxGX0lOSVRT
SVpFOwo+ICsgICAgICAgaWYgKChidWYgPSBtYWxsb2MoYnVmc3opKSA9PSBOVUxMKQo+ICsgICAg
ICAgICAgICAgICBnb3RvIHJlc291cmNlZXJyb3I7Cj4gKwo+ICsgICAgICAgLyoKPiArICAgICAg
ICAqIFJlYWQgZGF0YSBmcm9tIHRoZSBmaWxlIGRlc2NyaXB0b3IgdGlsbCB3ZSByZWFjaCBFT0Ys
IG9yCj4gKyAgICAgICAgKiB0aWxsIGFuIGVycm9yIGlzIGVuY291bnRlcmVkLgo+ICsgICAgICAg
ICovCj4gKyAgICAgICBkbyB7Cj4gKyAgICAgICAgICAgICAgIC8qIENoZWNrIGlmIHdlIG5lZWQg
dG8gZXhwYW5kIHRoZSBkYXRhIGJ1ZmZlci4gKi8KPiArICAgICAgICAgICAgICAgaWYgKGRhdGFz
eiA9PSBidWZzeikgewo+ICsgICAgICAgICAgICAgICAgICAgICAgIGJ1ZnN6ICo9IDI7Cj4gKyAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKCh0ID0gcmVhbGxvYyhidWYsIGJ1ZnN6KSkgPT0gTlVM
TCkKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcmVzb3VyY2VlcnJvcjsK
PiArICAgICAgICAgICAgICAgICAgICAgICBidWYgPSB0Owo+ICsgICAgICAgICAgICAgICB9Cj4g
Kwo+ICsgICAgICAgICAgICAgICBkbyB7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0
KGJ1ZnN6IC0gZGF0YXN6ID4gMCk7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgdCA9IGJ1ZiAr
IGRhdGFzejsKPiArICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHJlYWRzeiA9IHJlYWQoZmQs
IHQsIGJ1ZnN6IC0gZGF0YXN6KSkgPD0gMCkKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwo+ICsgICAgICAgICAgICAgICAgICAgICAgIGRhdGFzeiArPSAoc2l6ZV90KSBy
ZWFkc3o7Cj4gKyAgICAgICAgICAgICAgIH0gd2hpbGUgKGRhdGFzeiA8IGJ1ZnN6KTsKPiArCj4g
KyAgICAgICB9IHdoaWxlIChyZWFkc3ogPiAwKTsKPiArCj4gKyAgICAgICBpZiAocmVhZHN6IDwg
MCkgewo+ICsgICAgICAgICAgICAgICBMSUJFTEZfU0VUX0VSUk9SKElPLCBlcnJubyk7Cj4gKyAg
ICAgICAgICAgICAgIGdvdG8gZXJyb3I7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgYXNzZXJ0
KHJlYWRzeiA9PSAwKTsKPiArCj4gKyAgICAgICAvKgo+ICsgICAgICAgICogRnJlZSB1cCBleHRy
YSBidWZmZXIgc3BhY2UuCj4gKyAgICAgICAgKi8KPiArICAgICAgIGlmIChidWZzeiA+IGRhdGFz
eikgewo+ICsgICAgICAgICAgICAgICBpZiAoZGF0YXN6ID4gMCkgewo+ICsgICAgICAgICAgICAg
ICAgICAgICAgIGlmICgodCA9IHJlYWxsb2MoYnVmLCBkYXRhc3opKSA9PSBOVUxMKQo+ICsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byByZXNvdXJjZWVycm9yOwo+ICsgICAgICAg
ICAgICAgICAgICAgICAgIGJ1ZiA9IHQ7Cj4gKyAgICAgICAgICAgICAgIH0gZWxzZSB7ICAgICAg
ICAvKiBaZXJvIGJ5dGVzIHJlYWQuICovCj4gKyAgICAgICAgICAgICAgICAgICAgICAgTElCRUxG
X1NFVF9FUlJPUihBUkdVTUVOVCwgMCk7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgZnJlZShi
dWYpOwo+ICsgICAgICAgICAgICAgICAgICAgICAgIGJ1ZiA9IE5VTEw7Cj4gKyAgICAgICAgICAg
ICAgIH0KPiArICAgICAgIH0KPiArCj4gKyAgICAgICAqZnN6ID0gZGF0YXN6Owo+ICsgICAgICAg
cmV0dXJuIChidWYpOwo+ICsKPiArcmVzb3VyY2VlcnJvcjoKPiArICAgICAgIExJQkVMRl9TRVRf
RVJST1IoUkVTT1VSQ0UsIDApOwo+ICtlcnJvcjoKPiArICAgICAgIGlmIChidWYgIT0gTlVMTCkK
PiArICAgICAgICAgICAgICAgZnJlZShidWYpOwo+ICsgICAgICAgcmV0dXJuIChOVUxMKTsKPiAr
fQo+ICsKPiArLyoKPiArICogUmVhZCB0aGUgY29udGVudHMgb2YgdGhlIGZpbGUgcmVmZXJlbmNl
ZCBieSB0aGUgZmlsZSBkZXNjcmlwdG9yCj4gKyAqICdmZCcuCj4gKyAqLwo+ICsKPiArRWxmICoK
PiArX2xpYmVsZl9vcGVuX29iamVjdChpbnQgZmQsIEVsZl9DbWQgYywgaW50IHJlcG9ydGVycm9y
KQo+ICt7Cj4gKyAgICAgICBFbGYgKmU7Cj4gKyAgICAgICB2b2lkICptOwo+ICsgICAgICAgbW9k
ZV90IG1vZGU7Cj4gKyAgICAgICBzaXplX3QgZnNpemU7Cj4gKyAgICAgICBzdHJ1Y3Qgc3RhdCBz
YjsKPiArICAgICAgIHVuc2lnbmVkIGludCBmbGFnczsKPiArCj4gKyAgICAgICBhc3NlcnQoYyA9
PSBFTEZfQ19SRUFEIHx8IGMgPT0gRUxGX0NfUkRXUiB8fCBjID09IEVMRl9DX1dSSVRFKTsKPiAr
Cj4gKyAgICAgICBpZiAoZnN0YXQoZmQsICZzYikgPCAwKSB7Cj4gKyAgICAgICAgICAgICAgIExJ
QkVMRl9TRVRfRVJST1IoSU8sIGVycm5vKTsKPiArICAgICAgICAgICAgICAgcmV0dXJuIChOVUxM
KTsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICBtb2RlID0gc2Iuc3RfbW9kZTsKPiArICAgICAg
IGZzaXplID0gKHNpemVfdCkgc2Iuc3Rfc2l6ZTsKPiArCj4gKyAgICAgICAvKgo+ICsgICAgICAg
ICogUmVqZWN0IHVuc3VwcG9ydGVkIGZpbGUgdHlwZXMuCj4gKyAgICAgICAgKi8KPiArICAgICAg
IGlmICghU19JU1JFRyhtb2RlKSAmJiAhU19JU0NIUihtb2RlKSAmJiAhU19JU0ZJRk8obW9kZSkg
JiYKPiArICAgICAgICAgICAhU19JU1NPQ0sobW9kZSkpIHsKPiArICAgICAgICAgICAgICAgTElC
RUxGX1NFVF9FUlJPUihBUkdVTUVOVCwgMCk7Cj4gKyAgICAgICAgICAgICAgIHJldHVybiAoTlVM
TCk7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgLyoKPiArICAgICAgICAqIEZvciBFTEZfQ19X
UklURSBtb2RlLCBhbGxvY2F0ZSBhbmQgcmV0dXJuIGEgZGVzY3JpcHRvci4KPiArICAgICAgICAq
Lwo+ICsgICAgICAgaWYgKGMgPT0gRUxGX0NfV1JJVEUpIHsKPiArICAgICAgICAgICAgICAgaWYg
KChlID0gX2xpYmVsZl9hbGxvY2F0ZV9lbGYoKSkgIT0gTlVMTCkgewo+ICsgICAgICAgICAgICAg
ICAgICAgICAgIF9saWJlbGZfaW5pdF9lbGYoZSwgRUxGX0tfRUxGKTsKPiArICAgICAgICAgICAg
ICAgICAgICAgICBlLT5lX2J5dGVvcmRlciA9IExJQkVMRl9QUklWQVRFKGJ5dGVvcmRlcik7Cj4g
KyAgICAgICAgICAgICAgICAgICAgICAgZS0+ZV9mZCA9IGZkOwo+ICsgICAgICAgICAgICAgICAg
ICAgICAgIGUtPmVfY21kID0gYzsKPiArICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVNfSVNS
RUcobW9kZSkpCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLT5lX2ZsYWdzIHw9
IExJQkVMRl9GX1NQRUNJQUxfRklMRTsKPiArICAgICAgICAgICAgICAgfQo+ICsKPiArICAgICAg
ICAgICAgICAgcmV0dXJuIChlKTsKPiArICAgICAgIH0KPiArCj4gKwo+ICsgICAgICAgLyoKPiAr
ICAgICAgICAqIEVMRl9DX1JFQUQgYW5kIEVMRl9DX1JEV1IgbW9kZS4KPiArICAgICAgICAqLwo+
ICsgICAgICAgbSA9IE5VTEw7Cj4gKyAgICAgICBmbGFncyA9IDA7Cj4gKyAgICAgICBpZiAoU19J
U1JFRyhtb2RlKSkgewo+ICsKPiArICAgICAgICAgICAgICAgLyoKPiArICAgICAgICAgICAgICAg
ICogUmVqZWN0IHplcm8gbGVuZ3RoIGZpbGVzLgo+ICsgICAgICAgICAgICAgICAgKi8KPiArICAg
ICAgICAgICAgICAgaWYgKGZzaXplID09IDApIHsKPiArICAgICAgICAgICAgICAgICAgICAgICBM
SUJFTEZfU0VUX0VSUk9SKEFSR1VNRU5ULCAwKTsKPiArICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gKE5VTEwpOwo+ICsgICAgICAgICAgICAgICB9Cj4gKwo+ICsjaWYgICAgRUxGVENfSEFW
RV9NTUFQCj4gKyAgICAgICAgICAgICAgIC8qCj4gKyAgICAgICAgICAgICAgICAqIEFsd2F5cyBt
YXAgcmVndWxhciBmaWxlcyBpbiB3aXRoICdQUk9UX1JFQUQnCj4gKyAgICAgICAgICAgICAgICAq
IHBlcm1pc3Npb25zLgo+ICsgICAgICAgICAgICAgICAgKgo+ICsgICAgICAgICAgICAgICAgKiBG
b3Igb2JqZWN0cyBvcGVuZWQgaW4gRUxGX0NfUkRXUiBtb2RlLCB3aGVuCj4gKyAgICAgICAgICAg
ICAgICAqIGVsZl91cGRhdGUoMykgaXMgY2FsbGVkLCB3ZSByZW1vdmUgdGhpcyBtYXBwaW5nLAo+
ICsgICAgICAgICAgICAgICAgKiB3cml0ZSBmaWxlIGRhdGEgb3V0IHVzaW5nIHdyaXRlKDIpLCBh
bmQgbWFwIHRoZSBuZXcKPiArICAgICAgICAgICAgICAgICogY29udGVudHMgYmFjay4KPiArICAg
ICAgICAgICAgICAgICovCj4gKyAgICAgICAgICAgICAgIG0gPSBtbWFwKE5VTEwsIGZzaXplLCBQ
Uk9UX1JFQUQsIE1BUF9QUklWQVRFLCBmZCwgKG9mZl90KSAwKTsKPiArCj4gKyAgICAgICAgICAg
ICAgIGlmIChtID09IE1BUF9GQUlMRUQpCj4gKyAgICAgICAgICAgICAgICAgICAgICAgbSA9IE5V
TEw7Cj4gKyAgICAgICAgICAgICAgIGVsc2UKPiArICAgICAgICAgICAgICAgICAgICAgICBmbGFn
cyA9IExJQkVMRl9GX1JBV0ZJTEVfTU1BUDsKPiArI2VuZGlmCj4gKwo+ICsgICAgICAgICAgICAg
ICAvKgo+ICsgICAgICAgICAgICAgICAgKiBGYWxsYmFjayB0byBhIHJlYWQoKSBpZiB0aGUgY2Fs
bCB0byBtbWFwKCkgZmFpbGVkLAo+ICsgICAgICAgICAgICAgICAgKiBvciBpZiBtbWFwKCkgaXMg
bm90IGF2YWlsYWJsZS4KPiArICAgICAgICAgICAgICAgICovCj4gKyAgICAgICAgICAgICAgIGlm
IChtID09IE5VTEwpIHsKPiArICAgICAgICAgICAgICAgICAgICAgICBpZiAoKG0gPSBtYWxsb2Mo
ZnNpemUpKSA9PSBOVUxMKSB7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMSUJF
TEZfU0VUX0VSUk9SKFJFU09VUkNFLCAwKTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiAoTlVMTCk7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgfQo+ICsKPiArICAg
ICAgICAgICAgICAgICAgICAgICBpZiAocmVhZChmZCwgbSwgZnNpemUpICE9IChzc2l6ZV90KSBm
c2l6ZSkgewo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTElCRUxGX1NFVF9FUlJP
UihJTywgZXJybm8pOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJlZShtKTsK
PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoTlVMTCk7Cj4gKyAgICAg
ICAgICAgICAgICAgICAgICAgfQo+ICsKPiArICAgICAgICAgICAgICAgICAgICAgICBmbGFncyA9
IExJQkVMRl9GX1JBV0ZJTEVfTUFMTE9DOwo+ICsgICAgICAgICAgICAgICB9Cj4gKyAgICAgICB9
IGVsc2UgaWYgKChtID0gX2xpYmVsZl9yZWFkX3NwZWNpYWxfZmlsZShmZCwgJmZzaXplKSkgIT0g
TlVMTCkKPiArICAgICAgICAgICAgICAgZmxhZ3MgPSBMSUJFTEZfRl9SQVdGSUxFX01BTExPQyB8
IExJQkVMRl9GX1NQRUNJQUxfRklMRTsKPiArICAgICAgIGVsc2UKPiArICAgICAgICAgICAgICAg
cmV0dXJuIChOVUxMKTsKPiArCj4gKyAgICAgICBpZiAoKGUgPSBfbGliZWxmX21lbW9yeShtLCBm
c2l6ZSwgcmVwb3J0ZXJyb3IpKSA9PSBOVUxMKSB7Cj4gKyAgICAgICAgICAgICAgIGFzc2VydCgo
ZmxhZ3MgJiBMSUJFTEZfRl9SQVdGSUxFX01BTExPQykgfHwKPiArICAgICAgICAgICAgICAgICAg
IChmbGFncyAmIExJQkVMRl9GX1JBV0ZJTEVfTU1BUCkpOwo+ICsgICAgICAgICAgICAgICBpZiAo
ZmxhZ3MgJiBMSUJFTEZfRl9SQVdGSUxFX01BTExPQykKPiArICAgICAgICAgICAgICAgICAgICAg
ICBmcmVlKG0pOwo+ICsjaWYgICAgRUxGVENfSEFWRV9NTUFQCj4gKyAgICAgICAgICAgICAgIGVs
c2UKPiArICAgICAgICAgICAgICAgICAgICAgICAodm9pZCkgbXVubWFwKG0sIGZzaXplKTsKPiAr
I2VuZGlmCj4gKyAgICAgICAgICAgICAgIHJldHVybiAoTlVMTCk7Cj4gKyAgICAgICB9Cj4gKwo+
ICsgICAgICAgLyogYXIoMSkgYXJjaGl2ZXMgYXJlbid0IHN1cHBvcnRlZCBpbiBSRFdSIG1vZGUu
ICovCj4gKyAgICAgICBpZiAoYyA9PSBFTEZfQ19SRFdSICYmIGUtPmVfa2luZCA9PSBFTEZfS19B
Uikgewo+ICsgICAgICAgICAgICAgICAodm9pZCkgZWxmX2VuZChlKTsKPiArICAgICAgICAgICAg
ICAgTElCRUxGX1NFVF9FUlJPUihBUkdVTUVOVCwgMCk7Cj4gKyAgICAgICAgICAgICAgIHJldHVy
biAoTlVMTCk7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgZS0+ZV9mbGFncyB8PSBmbGFnczsK
PiArICAgICAgIGUtPmVfZmQgPSBmZDsKPiArICAgICAgIGUtPmVfY21kID0gYzsKPiArCj4gKyAg
ICAgICByZXR1cm4gKGUpOwo+ICt9Cj4gZGlmZiAtLWdpdCBhL2xpYmVsZl9waGRyLmMgYi9saWJl
bGZfcGhkci5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi5iYTg3MmJi
Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2xpYmVsZl9waGRyLmMKPiBAQCAtMCwwICsxLDE1MyBA
QAo+ICsvKi0KPiArICogQ29weXJpZ2h0IChjKSAyMDA2LDIwMDggSm9zZXBoIEtvc2h5Cj4gKyAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCj4gKyAqCj4gKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAo+ICsgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKPiArICogYXJlIG1ldDoKPiArICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKPiArICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgo+ICsgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAo+ICsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCj4gKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCj4gKyAqCj4g
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJyBBTkQKPiArICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCj4gKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFCj4gKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFCj4gKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCj4gKyAqIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTCj4gKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQo+ICsgKiBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAo+
ICsgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZCj4gKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKPiArICogU1VDSCBEQU1B
R0UuCj4gKyAqLwo+ICsKPiArI2luY2x1ZGUgPGFzc2VydC5oPgo+ICsjaW5jbHVkZSA8Z2VsZi5o
Pgo+ICsjaW5jbHVkZSA8bGliZWxmLmg+Cj4gKyNpbmNsdWRlIDxzdGRsaWIuaD4KPiArCj4gKyNp
bmNsdWRlICJfbGliZWxmLmgiCj4gKwo+ICtFTEZUQ19WQ1NJRCgiJElkOiBsaWJlbGZfcGhkci5j
IDMxNzQgMjAxNS0wMy0yNyAxNzoxMzo0MVogZW1hc3RlICQiKTsKPiArCj4gK3ZvaWQgKgo+ICtf
bGliZWxmX2dldHBoZHIoRWxmICplLCBpbnQgZWMpCj4gK3sKPiArICAgICAgIHNpemVfdCBwaG51
bTsKPiArICAgICAgIHNpemVfdCBmc3osIG1zejsKPiArICAgICAgIHVpbnQ2NF90IHBob2ZmOwo+
ICsgICAgICAgRWxmMzJfRWhkciAqZWgzMjsKPiArICAgICAgIEVsZjY0X0VoZHIgKmVoNjQ7Cj4g
KyAgICAgICB2b2lkICplaGRyLCAqcGhkcjsKPiArICAgICAgIGludCAoKnhsYXRvcikodW5zaWdu
ZWQgY2hhciAqX2QsIHNpemVfdCBfZHN6LCB1bnNpZ25lZCBjaGFyICpfcywKPiArICAgICAgICAg
ICBzaXplX3QgX2MsIGludCBfc3dhcCk7Cj4gKwo+ICsgICAgICAgYXNzZXJ0KGVjID09IEVMRkNM
QVNTMzIgfHwgZWMgPT0gRUxGQ0xBU1M2NCk7Cj4gKwo+ICsgICAgICAgaWYgKGUgPT0gTlVMTCkg
ewo+ICsgICAgICAgICAgICAgICBMSUJFTEZfU0VUX0VSUk9SKEFSR1VNRU5ULCAwKTsKPiArICAg
ICAgICAgICAgICAgcmV0dXJuIChOVUxMKTsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICBpZiAo
KHBoZHIgPSAoZWMgPT0gRUxGQ0xBU1MzMiA/Cj4gKyAgICAgICAgICAgICAgICAodm9pZCAqKSBl
LT5lX3UuZV9lbGYuZV9waGRyLmVfcGhkcjMyIDoKPiArICAgICAgICAgICAgICAgICh2b2lkICop
IGUtPmVfdS5lX2VsZi5lX3BoZHIuZV9waGRyNjQpKSAhPSBOVUxMKQo+ICsgICAgICAgICAgICAg
ICByZXR1cm4gKHBoZHIpOwo+ICsKPiArICAgICAgIC8qCj4gKyAgICAgICAgKiBDaGVjayB0aGUg
UEhEUiByZWxhdGVkIGZpZWxkcyBpbiB0aGUgRUhEUiBmb3Igc2FuaXR5Lgo+ICsgICAgICAgICov
Cj4gKwo+ICsgICAgICAgaWYgKChlaGRyID0gX2xpYmVsZl9laGRyKGUsIGVjLCAwKSkgPT0gTlVM
TCkKPiArICAgICAgICAgICAgICAgcmV0dXJuIChOVUxMKTsKPiArCj4gKyAgICAgICBwaG51bSA9
IGUtPmVfdS5lX2VsZi5lX25waGRyOwo+ICsKPiArICAgICAgIGlmIChlYyA9PSBFTEZDTEFTUzMy
KSB7Cj4gKyAgICAgICAgICAgICAgIGVoMzIgICAgICA9IChFbGYzMl9FaGRyICopIGVoZHI7Cj4g
KyAgICAgICAgICAgICAgIHBob2ZmICAgICA9ICh1aW50NjRfdCkgZWgzMi0+ZV9waG9mZjsKPiAr
ICAgICAgIH0gZWxzZSB7Cj4gKyAgICAgICAgICAgICAgIGVoNjQgICAgICA9IChFbGY2NF9FaGRy
ICopIGVoZHI7Cj4gKyAgICAgICAgICAgICAgIHBob2ZmICAgICA9ICh1aW50NjRfdCkgZWg2NC0+
ZV9waG9mZjsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICBmc3ogPSBnZWxmX2ZzaXplKGUsIEVM
Rl9UX1BIRFIsIHBobnVtLCBlLT5lX3ZlcnNpb24pOwo+ICsKPiArICAgICAgIGFzc2VydChmc3og
PiAwKTsKPiArCj4gKyAgICAgICBpZiAoKHVpbnQ2NF90KSBlLT5lX3Jhd3NpemUgPCAocGhvZmYg
KyBmc3opKSB7Cj4gKyAgICAgICAgICAgICAgIExJQkVMRl9TRVRfRVJST1IoSEVBREVSLCAwKTsK
PiArICAgICAgICAgICAgICAgcmV0dXJuIChOVUxMKTsKPiArICAgICAgIH0KPiArCj4gKyAgICAg
ICBtc3ogPSBfbGliZWxmX21zaXplKEVMRl9UX1BIRFIsIGVjLCBFVl9DVVJSRU5UKTsKPiArCj4g
KyAgICAgICBhc3NlcnQobXN6ID4gMCk7Cj4gKwo+ICsgICAgICAgaWYgKChwaGRyID0gY2FsbG9j
KHBobnVtLCBtc3opKSA9PSBOVUxMKSB7Cj4gKyAgICAgICAgICAgICAgIExJQkVMRl9TRVRfRVJS
T1IoUkVTT1VSQ0UsIDApOwo+ICsgICAgICAgICAgICAgICByZXR1cm4gKE5VTEwpOwo+ICsgICAg
ICAgfQo+ICsKPiArICAgICAgIGlmIChlYyA9PSBFTEZDTEFTUzMyKQo+ICsgICAgICAgICAgICAg
ICBlLT5lX3UuZV9lbGYuZV9waGRyLmVfcGhkcjMyID0gcGhkcjsKPiArICAgICAgIGVsc2UKPiAr
ICAgICAgICAgICAgICAgZS0+ZV91LmVfZWxmLmVfcGhkci5lX3BoZHI2NCA9IHBoZHI7Cj4gKwo+
ICsKPiArICAgICAgIHhsYXRvciA9IF9saWJlbGZfZ2V0X3RyYW5zbGF0b3IoRUxGX1RfUEhEUiwg
RUxGX1RPTUVNT1JZLCBlYyk7Cj4gKyAgICAgICAoKnhsYXRvcikocGhkciwgcGhudW0gKiBtc3os
IGUtPmVfcmF3ZmlsZSArIHBob2ZmLCBwaG51bSwKPiArICAgICAgICAgICBlLT5lX2J5dGVvcmRl
ciAhPSBMSUJFTEZfUFJJVkFURShieXRlb3JkZXIpKTsKPiArCj4gKyAgICAgICByZXR1cm4gKHBo
ZHIpOwo+ICt9Cj4gKwo+ICt2b2lkICoKPiArX2xpYmVsZl9uZXdwaGRyKEVsZiAqZSwgaW50IGVj
LCBzaXplX3QgY291bnQpCj4gK3sKPiArICAgICAgIHZvaWQgKmVoZHIsICpuZXdwaGRyLCAqb2xk
cGhkcjsKPiArICAgICAgIHNpemVfdCBtc3o7Cj4gKwo+ICsgICAgICAgaWYgKGUgPT0gTlVMTCkg
ewo+ICsgICAgICAgICAgICAgICBMSUJFTEZfU0VUX0VSUk9SKEFSR1VNRU5ULCAwKTsKPiArICAg
ICAgICAgICAgICAgcmV0dXJuIChOVUxMKTsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICBpZiAo
KGVoZHIgPSBfbGliZWxmX2VoZHIoZSwgZWMsIDApKSA9PSBOVUxMKSB7Cj4gKyAgICAgICAgICAg
ICAgIExJQkVMRl9TRVRfRVJST1IoU0VRVUVOQ0UsIDApOwo+ICsgICAgICAgICAgICAgICByZXR1
cm4gKE5VTEwpOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIGFzc2VydChlLT5lX2NsYXNzID09
IGVjKTsKPiArICAgICAgIGFzc2VydChlYyA9PSBFTEZDTEFTUzMyIHx8IGVjID09IEVMRkNMQVNT
NjQpOwo+ICsgICAgICAgYXNzZXJ0KGUtPmVfdmVyc2lvbiA9PSBFVl9DVVJSRU5UKTsKPiArCj4g
KyAgICAgICBtc3ogPSBfbGliZWxmX21zaXplKEVMRl9UX1BIRFIsIGVjLCBlLT5lX3ZlcnNpb24p
Owo+ICsKPiArICAgICAgIGFzc2VydChtc3ogPiAwKTsKPiArCj4gKyAgICAgICBuZXdwaGRyID0g
TlVMTDsKPiArICAgICAgIGlmIChjb3VudCA+IDAgJiYgKG5ld3BoZHIgPSBjYWxsb2MoY291bnQs
IG1zeikpID09IE5VTEwpIHsKPiArICAgICAgICAgICAgICAgTElCRUxGX1NFVF9FUlJPUihSRVNP
VVJDRSwgMCk7Cj4gKyAgICAgICAgICAgICAgIHJldHVybiAoTlVMTCk7Cj4gKyAgICAgICB9Cj4g
Kwo+ICsgICAgICAgaWYgKGVjID09IEVMRkNMQVNTMzIpIHsKPiArICAgICAgICAgICAgICAgaWYg
KChvbGRwaGRyID0gKHZvaWQgKikgZS0+ZV91LmVfZWxmLmVfcGhkci5lX3BoZHIzMikgIT0gTlVM
TCkKPiArICAgICAgICAgICAgICAgICAgICAgICBmcmVlKG9sZHBoZHIpOwo+ICsgICAgICAgICAg
ICAgICBlLT5lX3UuZV9lbGYuZV9waGRyLmVfcGhkcjMyID0gKEVsZjMyX1BoZHIgKikgbmV3cGhk
cjsKPiArICAgICAgIH0gZWxzZSB7Cj4gKyAgICAgICAgICAgICAgIGlmICgob2xkcGhkciA9ICh2
b2lkICopIGUtPmVfdS5lX2VsZi5lX3BoZHIuZV9waGRyNjQpICE9IE5VTEwpCj4gKyAgICAgICAg
ICAgICAgICAgICAgICAgZnJlZShvbGRwaGRyKTsKPiArICAgICAgICAgICAgICAgZS0+ZV91LmVf
ZWxmLmVfcGhkci5lX3BoZHI2NCA9IChFbGY2NF9QaGRyICopIG5ld3BoZHI7Cj4gKyAgICAgICB9
Cj4gKwo+ICsgICAgICAgZS0+ZV91LmVfZWxmLmVfbnBoZHIgPSBjb3VudDsKPiArCj4gKyAgICAg
ICBlbGZfZmxhZ3BoZHIoZSwgRUxGX0NfU0VULCBFTEZfRl9ESVJUWSk7Cj4gKwo+ICsgICAgICAg
cmV0dXJuIChuZXdwaGRyKTsKPiArfQo+IGRpZmYgLS1naXQgYS9saWJlbGZfc2hkci5jIGIvbGli
ZWxmX3NoZHIuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uODYyMjY0
Ygo+IC0tLSAvZGV2L251bGwKPiArKysgYi9saWJlbGZfc2hkci5jCj4gQEAgLTAsMCArMSw1NCBA
QAo+ICsvKi0KPiArICogQ29weXJpZ2h0IChjKSAyMDA2LDIwMDggSm9zZXBoIEtvc2h5Cj4gKyAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCj4gKyAqCj4gKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAo+ICsgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKPiArICogYXJlIG1ldDoKPiArICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKPiArICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgo+ICsgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAo+ICsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCj4gKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCj4gKyAqCj4g
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJyBBTkQKPiArICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCj4gKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFCj4gKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFCj4gKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCj4gKyAqIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTCj4gKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQo+ICsgKiBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAo+
ICsgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZCj4gKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKPiArICogU1VDSCBEQU1B
R0UuCj4gKyAqLwo+ICsKPiArI2luY2x1ZGUgPGdlbGYuaD4KPiArI2luY2x1ZGUgPGxpYmVsZi5o
Pgo+ICsKPiArI2luY2x1ZGUgIl9saWJlbGYuaCIKPiArCj4gK0VMRlRDX1ZDU0lEKCIkSWQ6IGxp
YmVsZl9zaGRyLmMgMzE3NCAyMDE1LTAzLTI3IDE3OjEzOjQxWiBlbWFzdGUgJCIpOwo+ICsKPiAr
dm9pZCAqCj4gK19saWJlbGZfZ2V0c2hkcihFbGZfU2NuICpzLCBpbnQgZWMpCj4gK3sKPiArICAg
ICAgIEVsZiAqZTsKPiArCj4gKyAgICAgICBpZiAocyA9PSBOVUxMIHx8IChlID0gcy0+c19lbGYp
ID09IE5VTEwgfHwKPiArICAgICAgICAgICBlLT5lX2tpbmQgIT0gRUxGX0tfRUxGKSB7Cj4gKyAg
ICAgICAgICAgICAgIExJQkVMRl9TRVRfRVJST1IoQVJHVU1FTlQsIDApOwo+ICsgICAgICAgICAg
ICAgICByZXR1cm4gKE5VTEwpOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIGlmIChlYyA9PSBF
TEZDTEFTU05PTkUpCj4gKyAgICAgICAgICAgICAgIGVjID0gZS0+ZV9jbGFzczsKPiArCj4gKyAg
ICAgICBpZiAoZWMgIT0gZS0+ZV9jbGFzcykgewo+ICsgICAgICAgICAgICAgICBMSUJFTEZfU0VU
X0VSUk9SKENMQVNTLCAwKTsKPiArICAgICAgICAgICAgICAgcmV0dXJuIChOVUxMKTsKPiArICAg
ICAgIH0KPiArCj4gKyAgICAgICByZXR1cm4gKCh2b2lkICopICZzLT5zX3NoZHIpOwo+ICt9Cj4g
ZGlmZiAtLWdpdCBhL2xpYmVsZl94bGF0ZS5jIGIvbGliZWxmX3hsYXRlLmMKPiBuZXcgZmlsZSBt
b2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLjZlZTc2MjQKPiAtLS0gL2Rldi9udWxsCj4gKysr
IGIvbGliZWxmX3hsYXRlLmMKPiBAQCAtMCwwICsxLDE0OCBAQAo+ICsvKi0KPiArICogQ29weXJp
Z2h0IChjKSAyMDA2LDIwMDggSm9zZXBoIEtvc2h5Cj4gKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Cj4gKyAqCj4gKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAo+ICsgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKPiArICogYXJlIG1ldDoKPiAr
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKPiArICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgo+ICsgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAo+ICsgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCj4gKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCj4gKyAqCj4gKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKPiAr
ICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCj4gKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCj4gKyAqIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFCj4gKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCj4gKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCj4gKyAqIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKQo+ICsgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAo+ICsgKiBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
Cj4gKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YKPiArICogU1VDSCBEQU1BR0UuCj4gKyAqLwo+ICsKPiArI2lu
Y2x1ZGUgPGFzc2VydC5oPgo+ICsjaW5jbHVkZSA8bGliZWxmLmg+Cj4gKwo+ICsjaW5jbHVkZSAi
X2xpYmVsZi5oIgo+ICsKPiArRUxGVENfVkNTSUQoIiRJZDogbGliZWxmX3hsYXRlLmMgMzE3NCAy
MDE1LTAzLTI3IDE3OjEzOjQxWiBlbWFzdGUgJCIpOwo+ICsKPiArLyoKPiArICogVHJhbnNsYXRl
IHRvL2Zyb20gdGhlIGZpbGUgcmVwcmVzZW50YXRpb24gb2YgRUxGIG9iamVjdHMuCj4gKyAqCj4g
KyAqIFRyYW5zbGF0aW9uIGNvdWxkIHBvdGVudGlhbGx5IGludm9sdmUgdGhlIGZvbGxvd2luZwo+
ICsgKiB0cmFuc2Zvcm1hdGlvbnM6Cj4gKyAqCj4gKyAqIC0gYW4gZW5kaWFubmVzcyBjb252ZXJz
aW9uLAo+ICsgKiAtIGEgY2hhbmdlIG9mIGxheW91dCwgYXMgdGhlIGZpbGUgcmVwcmVzZW50YXRp
b24gb2YgRUxGIG9iamVjdHMKPiArICogICBjYW4gZGlmZmVyIGZyb20gdGhlaXIgaW4tbWVtb3J5
IHJlcHJlc2VudGF0aW9uLgo+ICsgKiAtIGEgY2hhbmdlIGluIHJlcHJlc2VudGF0aW9uIGR1ZSB0
byBhIGxheW91dCB2ZXJzaW9uIGNoYW5nZS4KPiArICovCj4gKwo+ICtFbGZfRGF0YSAqCj4gK19s
aWJlbGZfeGxhdGUoRWxmX0RhdGEgKmRzdCwgY29uc3QgRWxmX0RhdGEgKnNyYywgdW5zaWduZWQg
aW50IGVuY29kaW5nLAo+ICsgICAgaW50IGVsZmNsYXNzLCBpbnQgZGlyZWN0aW9uKQo+ICt7Cj4g
KyAgICAgICBpbnQgYnl0ZXN3YXA7Cj4gKyAgICAgICBzaXplX3QgY250LCBkc3osIGZzeiwgbXN6
Owo+ICsgICAgICAgdWludHB0cl90IHNiLCBzZSwgZGIsIGRlOwo+ICsKPiArICAgICAgIGlmIChl
bmNvZGluZyA9PSBFTEZEQVRBTk9ORSkKPiArICAgICAgICAgICAgICAgZW5jb2RpbmcgPSBMSUJF
TEZfUFJJVkFURShieXRlb3JkZXIpOwo+ICsKPiArICAgICAgIGlmICgoZW5jb2RpbmcgIT0gRUxG
REFUQTJMU0IgJiYgZW5jb2RpbmcgIT0gRUxGREFUQTJNU0IpIHx8Cj4gKyAgICAgICAgICAgZHN0
ID09IE5VTEwgfHwgc3JjID09IE5VTEwgfHwgZHN0ID09IHNyYykgICB7Cj4gKyAgICAgICAgICAg
ICAgIExJQkVMRl9TRVRfRVJST1IoQVJHVU1FTlQsIDApOwo+ICsgICAgICAgICAgICAgICByZXR1
cm4gKE5VTEwpOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIGFzc2VydChlbGZjbGFzcyA9PSBF
TEZDTEFTUzMyIHx8IGVsZmNsYXNzID09IEVMRkNMQVNTNjQpOwo+ICsgICAgICAgYXNzZXJ0KGRp
cmVjdGlvbiA9PSBFTEZfVE9GSUxFIHx8IGRpcmVjdGlvbiA9PSBFTEZfVE9NRU1PUlkpOwo+ICsK
PiArICAgICAgIGlmIChkc3QtPmRfdmVyc2lvbiAhPSBzcmMtPmRfdmVyc2lvbikgewo+ICsgICAg
ICAgICAgICAgICBMSUJFTEZfU0VUX0VSUk9SKFVOSU1QTCwgMCk7Cj4gKyAgICAgICAgICAgICAg
IHJldHVybiAoTlVMTCk7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgaWYgIChzcmMtPmRfYnVm
ID09IE5VTEwgfHwgZHN0LT5kX2J1ZiA9PSBOVUxMKSB7Cj4gKyAgICAgICAgICAgICAgIExJQkVM
Rl9TRVRfRVJST1IoREFUQSwgMCk7Cj4gKyAgICAgICAgICAgICAgIHJldHVybiAoTlVMTCk7Cj4g
KyAgICAgICB9Cj4gKwo+ICsgICAgICAgaWYgKChpbnQpIHNyYy0+ZF90eXBlIDwgMCB8fCBzcmMt
PmRfdHlwZSA+PSBFTEZfVF9OVU0pIHsKPiArICAgICAgICAgICAgICAgTElCRUxGX1NFVF9FUlJP
UihEQVRBLCAwKTsKPiArICAgICAgICAgICAgICAgcmV0dXJuIChOVUxMKTsKPiArICAgICAgIH0K
PiArCj4gKyAgICAgICBpZiAoKGZzeiA9IChlbGZjbGFzcyA9PSBFTEZDTEFTUzMyID8gZWxmMzJf
ZnNpemUgOiBlbGY2NF9mc2l6ZSkKPiArICAgICAgICAgICAoc3JjLT5kX3R5cGUsIChzaXplX3Qp
IDEsIHNyYy0+ZF92ZXJzaW9uKSkgPT0gMCkKPiArICAgICAgICAgICAgICAgcmV0dXJuIChOVUxM
KTsKPiArCj4gKyAgICAgICBtc3ogPSBfbGliZWxmX21zaXplKHNyYy0+ZF90eXBlLCBlbGZjbGFz
cywgc3JjLT5kX3ZlcnNpb24pOwo+ICsKPiArICAgICAgIGFzc2VydChtc3ogPiAwKTsKPiArCj4g
KyAgICAgICBpZiAoc3JjLT5kX3NpemUgJSAoZGlyZWN0aW9uID09IEVMRl9UT01FTU9SWSA/IGZz
eiA6IG1zeikpIHsKPiArICAgICAgICAgICAgICAgTElCRUxGX1NFVF9FUlJPUihEQVRBLCAwKTsK
PiArICAgICAgICAgICAgICAgcmV0dXJuIChOVUxMKTsKPiArICAgICAgIH0KPiArCj4gKyAgICAg
ICAvKgo+ICsgICAgICAgICogRGV0ZXJtaW5lIHRoZSBudW1iZXIgb2Ygb2JqZWN0cyB0aGF0IG5l
ZWQgdG8gYmUgY29udmVydGVkLCBhbmQKPiArICAgICAgICAqIHRoZSBzcGFjZSByZXF1aXJlZCBm
b3IgdGhlIGNvbnZlcnRlZCBvYmplY3RzIGluIHRoZSBkZXN0aW5hdGlvbgo+ICsgICAgICAgICog
YnVmZmVyLgo+ICsgICAgICAgICovCj4gKyAgICAgICBpZiAoZGlyZWN0aW9uID09IEVMRl9UT01F
TU9SWSkgewo+ICsgICAgICAgICAgICAgICBjbnQgPSAoc2l6ZV90KSBzcmMtPmRfc2l6ZSAvIGZz
ejsKPiArICAgICAgICAgICAgICAgZHN6ID0gY250ICogbXN6Owo+ICsgICAgICAgfSBlbHNlIHsK
PiArICAgICAgICAgICAgICAgY250ID0gKHNpemVfdCkgc3JjLT5kX3NpemUgLyBtc3o7Cj4gKyAg
ICAgICAgICAgICAgIGRzeiA9IGNudCAqIGZzejsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICBp
ZiAoZHN0LT5kX3NpemUgIDwgIGRzeikgewo+ICsgICAgICAgICAgICAgICBMSUJFTEZfU0VUX0VS
Uk9SKERBVEEsIDApOwo+ICsgICAgICAgICAgICAgICByZXR1cm4gKE5VTEwpOwo+ICsgICAgICAg
fQo+ICsKPiArICAgICAgIHNiID0gKHVpbnRwdHJfdCkgc3JjLT5kX2J1ZjsKPiArICAgICAgIHNl
ID0gc2IgKyAoc2l6ZV90KSBzcmMtPmRfc2l6ZTsKPiArICAgICAgIGRiID0gKHVpbnRwdHJfdCkg
ZHN0LT5kX2J1ZjsKPiArICAgICAgIGRlID0gZGIgKyAoc2l6ZV90KSBkc3QtPmRfc2l6ZTsKPiAr
Cj4gKyAgICAgICAvKgo+ICsgICAgICAgICogQ2hlY2sgZm9yIG92ZXJsYXBwaW5nIGJ1ZmZlcnMu
ICBOb3RlIHRoYXQgZGIgPT0gc2IgaXMKPiArICAgICAgICAqIGFsbG93ZWQuCj4gKyAgICAgICAg
Ki8KPiArICAgICAgIGlmIChkYiAhPSBzYiAmJiBkZSA+IHNiICYmIHNlID4gZGIpIHsKPiArICAg
ICAgICAgICAgICAgTElCRUxGX1NFVF9FUlJPUihEQVRBLCAwKTsKPiArICAgICAgICAgICAgICAg
cmV0dXJuIChOVUxMKTsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICBpZiAoKGRpcmVjdGlvbiA9
PSBFTEZfVE9NRU1PUlkgPyBkYiA6IHNiKSAlCj4gKyAgICAgICAgICAgX2xpYmVsZl9tYWxpZ24o
c3JjLT5kX3R5cGUsIGVsZmNsYXNzKSkgewo+ICsgICAgICAgICAgICAgICBMSUJFTEZfU0VUX0VS
Uk9SKERBVEEsIDApOwo+ICsgICAgICAgICAgICAgICByZXR1cm4gKE5VTEwpOwo+ICsgICAgICAg
fQo+ICsKPiArICAgICAgIGRzdC0+ZF90eXBlID0gc3JjLT5kX3R5cGU7Cj4gKyAgICAgICBkc3Qt
PmRfc2l6ZSA9IGRzejsKPiArCj4gKyAgICAgICBieXRlc3dhcCA9IGVuY29kaW5nICE9IExJQkVM
Rl9QUklWQVRFKGJ5dGVvcmRlcik7Cj4gKwo+ICsgICAgICAgaWYgKHNyYy0+ZF9zaXplID09IDAg
fHwKPiArICAgICAgICAgICAoZGIgPT0gc2IgJiYgIWJ5dGVzd2FwICYmIGZzeiA9PSBtc3opKQo+
ICsgICAgICAgICAgICAgICByZXR1cm4gKGRzdCk7ICAgLyogbm90aGluZyBtb3JlIHRvIGRvICov
Cj4gKwo+ICsgICAgICAgaWYgKCEoX2xpYmVsZl9nZXRfdHJhbnNsYXRvcihzcmMtPmRfdHlwZSwg
ZGlyZWN0aW9uLCBlbGZjbGFzcykpCj4gKyAgICAgICAgICAgKGRzdC0+ZF9idWYsIGRzeiwgc3Jj
LT5kX2J1ZiwgY250LCBieXRlc3dhcCkpIHsKPiArICAgICAgICAgICAgICAgTElCRUxGX1NFVF9F
UlJPUihEQVRBLCAwKTsKPiArICAgICAgICAgICAgICAgcmV0dXJuIChOVUxMKTsKPiArICAgICAg
IH0KPiArCj4gKyAgICAgICByZXR1cm4gKGRzdCk7Cj4gK30KPiAtLQo+IDIuMjAuMQo+Cj4KPgo+
IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gTWluaW9z
LWRldmVsIG1haWxpbmcgbGlzdAo+IE1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwo+
IGh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2
ZWwKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlv
cy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0
dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Thu Apr 02 08:46:34 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 02 Apr 2020 08:46: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 1jJvUf-0001if-ME; Thu, 02 Apr 2020 08:46:33 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=z5oR=5S=gmail.com=felipehuici@srs-us1.protection.inumbo.net>)
 id 1jJvUf-0001ia-Ct
 for minios-devel@lists.xen.org; Thu, 02 Apr 2020 08:46:33 +0000
X-Inumbo-ID: 73c7b1ee-74be-11ea-b58d-bc764e2007e4
Received: from mail-ua1-x941.google.com (unknown [2607:f8b0:4864:20::941])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 73c7b1ee-74be-11ea-b58d-bc764e2007e4;
 Thu, 02 Apr 2020 08:46:32 +0000 (UTC)
Received: by mail-ua1-x941.google.com with SMTP id z7so872724uai.6
 for <minios-devel@lists.xen.org>; Thu, 02 Apr 2020 01:46:32 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=mime-version:references:in-reply-to:from:date:message-id:subject:to
 :cc:content-transfer-encoding;
 bh=jEzepYTXtcGDW1Ijim8ZNxKRCj9nyfbn+4sdNwzyfOs=;
 b=oLWC4C9ebTobrrN4CaT4JzEyVzhie8yhMJLaNVp30Zo2BvHBc0CEeu7Qv1MTUDiRuY
 HCodbpc9DIR/xlukxoBP48PgpsUouSCjZFnMhHtN/mmtGQ4t6RLLTfZ5wBulcS5edj7O
 lwB0g8taHeWXhbJ+4Mc1lj4WSomsjkqdgm/26gpRBkFahM8UGt8FH0gWGWI486E9OK8t
 zuy0+zdxtnsw7jTTjqWkTI+Xk6Q3l40dVfC9iMMQIn03qFE9UqlC1c3Ne5cRUi8sz22i
 qqn+Nq0YQeOmJ+7yb4kCF640BKWAu0v2hA9mfxiHDlrKcuD9Q0tD/dsE+/zueGITIXKa
 qJAw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:mime-version:references:in-reply-to:from:date
 :message-id:subject:to:cc:content-transfer-encoding;
 bh=jEzepYTXtcGDW1Ijim8ZNxKRCj9nyfbn+4sdNwzyfOs=;
 b=XpXuFAN8NE8ISkT2VQzGbNEysExyr+2AMXXoabSIHOyzW8b1TxMFAqE2xuQBV/Wr2+
 hWAFOd+CCdW4XSxno8Q4bqkezr6B3IiBjxeHrFiirzLBJlXx/elIJjEj1Yj6TIZXPnr2
 frgO9XEDRN587yEn1d2UCa5KhTWatsevXfkyGAqlZg0N6GjYXXNInypeCRMQb36/5Q0e
 oJpQmek2TyGIb/cguOeoXWIdX+9VIIMbwXfS8q2jl1tYML5SaUbj3EW41LAHwD8fzdxs
 YhdKnJW6fwsGg5eQsYlImhkO/kXX2sAj5wxAEm8yUfAxUEiDEmnuiVC46ad9q/roKfpI
 ETqw==
X-Gm-Message-State: AGi0PuaWFEpMowBGQ7gjJB5USMFJYxnKKTfLe5iwWoQwmEMD0iu1viMr
 xAXO3sGLBMFDxHeEShJMl4brYSw0KfKbFdK/6UQ=
X-Google-Smtp-Source: APiQypL08fux7xV7dY1XAzLlVqeyftUAaWihWRRPD2e0fx02foIMEai8L2uHGmC0NLq8MWlbs0J0u/VGy8ZtXCOugu0=
X-Received: by 2002:ab0:4913:: with SMTP id z19mr1635080uac.132.1585817191938; 
 Thu, 02 Apr 2020 01:46:31 -0700 (PDT)
MIME-Version: 1.0
References: <20200331143947.22480-1-vlad_andrei.badoiu@stud.acs.upb.ro>
 <20200331143947.22480-2-vlad_andrei.badoiu@stud.acs.upb.ro>
In-Reply-To: <20200331143947.22480-2-vlad_andrei.badoiu@stud.acs.upb.ro>
From: "felipehuici ." <felipehuici@gmail.com>
Date: Thu, 2 Apr 2020 10:46:20 +0200
Message-ID: <CAEX4t-MYk6a7yrxrb7Q_u9jxzNogcXWgzi1UYAnjzA5riNSpdw@mail.gmail.com>
To: =?UTF-8?Q?Vlad=2DAndrei_B=C4=82DOIU?= <vlad_andrei.badoiu@stud.acs.upb.ro>
Subject: Re: [Minios-devel] [UNIKRAFT/LWIP PATCH 1/3] Use if_nametoindex and
 if_nametoindex from lwip
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>, 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>

SGkgVmxhZCwgbG9va3MgZ29vZCwgdGhhbmtzLgoKUmV2aWV3ZWQtYnk6IEZlbGlwZSBIdWljaSA8
ZmVsaXBlLmh1aWNpQG5lY2xhYi5ldT4KCk9uIFR1ZSwgTWFyIDMxLCAyMDIwIGF0IDQ6NDAgUE0g
VmxhZC1BbmRyZWkgQsSCRE9JVQo8dmxhZF9hbmRyZWkuYmFkb2l1QHN0dWQuYWNzLnVwYi5ybz4g
d3JvdGU6Cj4KPiBpZl9uYW1ldG9pbmRleCBhbmQgaWZfbmFtZXRvaW5kZXggYXJlIGN1cnJlbnRs
eSBzdWJiZWQuIFdlCj4gcmVtb3ZlIHRoZSBzdHVicyBhbmQgdXNlIHRoZSBpbXBsZW1lbnRhdGlv
biBmcm9tIGx3aXAuCj4KPiBTaWduZWQtb2ZmLWJ5OiBWbGFkLUFuZHJlaSBCxIJET0lVIDx2bGFk
X2FuZHJlaS5iYWRvaXVAc3R1ZC5hY3MudXBiLnJvPgo+IC0tLQo+ICBNYWtlZmlsZS51ayB8ICAy
ICstCj4gIGlmbmFtZS5jICAgIHwgMzkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCj4gIHNvY2tldHMuYyAgIHwgMjEgKysrKysrKysrKysrKysrKysrKysrCj4gIDMgZmls
ZXMgY2hhbmdlZCwgMjIgaW5zZXJ0aW9ucygrKSwgNDAgZGVsZXRpb25zKC0pCj4gIGRlbGV0ZSBt
b2RlIDEwMDY0NCBpZm5hbWUuYwo+Cj4gZGlmZiAtLWdpdCBhL01ha2VmaWxlLnVrIGIvTWFrZWZp
bGUudWsKPiBpbmRleCA1MDU0ZWY0Li5kM2M2YzljIDEwMDY0NAo+IC0tLSBhL01ha2VmaWxlLnVr
Cj4gKysrIGIvTWFrZWZpbGUudWsKPiBAQCAtODYsNyArODYsNiBAQCBMSUJMV0lQX1NSQ1MtJChD
T05GSUdfTFdJUF9USFJFQURTKSArPSAkKExJQkxXSVBfQkFTRSkvbXV0ZXguY3x1bmlrcmFmdAo+
ICBMSUJMV0lQX1NSQ1MtJChDT05GSUdfTFdJUF9USFJFQURTKSArPSAkKExJQkxXSVBfQkFTRSkv
c2VtYXBob3JlLmN8dW5pa3JhZnQKPiAgTElCTFdJUF9TUkNTLSQoQ09ORklHX0xXSVBfVEhSRUFE
UykgKz0gJChMSUJMV0lQX0JBU0UpL21haWxib3guY3x1bmlrcmFmdAo+ICBMSUJMV0lQX1NSQ1Mt
JChDT05GSUdfTFdJUF9USFJFQURTKSArPSAkKExJQkxXSVBfQkFTRSkvdGhyZWFkcy5jfHVuaWty
YWZ0Cj4gLUxJQkxXSVBfU1JDUy15ICs9ICQoTElCTFdJUF9CQVNFKS9pZm5hbWUuY3x1bmlrcmFm
dAo+ICBMSUJMV0lQX1NSQ1MteSArPSAkKExJQkxXSVBfQkFTRSkvaW5pdC5jfHVuaWtyYWZ0Cj4g
IExJQkxXSVBfU1JDUy15ICs9ICQoTElCTFdJUF9CQVNFKS90aW1lLmN8dW5pa3JhZnQKPiAgTElC
TFdJUF9TUkNTLXkgKz0gJChMSUJMV0lQX0JBU0UpL3NlbmRmaWxlLmN8dW5pa3JhZnQKPiBAQCAt
MTIwLDYgKzExOSw3IEBAIExJQkxXSVBfU1JDUy15ICs9ICQoTElCTFdJUF9FWFRSQUNURUQpL2Fw
aS9uZXRidWYuYwo+ICBMSUJMV0lQX1NSQ1MteSArPSAkKExJQkxXSVBfRVhUUkFDVEVEKS9hcGkv
bmV0ZGIuYwo+ICBMSUJMV0lQX1NSQ1MteSArPSAkKExJQkxXSVBfRVhUUkFDVEVEKS9hcGkvbmV0
aWZhcGkuYwo+ICBMSUJMV0lQX1NSQ1MteSArPSAkKExJQkxXSVBfRVhUUkFDVEVEKS9hcGkvdGNw
aXAuYwo+ICtMSUJMV0lQX1NSQ1MteSArPSAkKExJQkxXSVBfRVhUUkFDVEVEKS9hcGkvaWZfYXBp
LmMKPiAgTElCTFdJUF9TUkNTLSQoQ09ORklHX0xXSVBfU09DS0VUKSArPSAkKExJQkxXSVBfRVhU
UkFDVEVEKS9hcGkvc29ja2V0cy5jCj4KPiAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKPiBkaWZm
IC0tZ2l0IGEvaWZuYW1lLmMgYi9pZm5hbWUuYwo+IGRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAo+
IGluZGV4IGY2MjJhM2YuLjAwMDAwMDAKPiAtLS0gYS9pZm5hbWUuYwo+ICsrKyAvZGV2L251bGwK
PiBAQCAtMSwzOSArMCwwIEBACj4gLS8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1D
bGF1c2UgKi8KPiAtLyoKPiAtICogQ29weXJpZ2h0IChjKSAyMDE5LCBORUMgTGFib3JhdG9yaWVz
IEV1cm9wZSBHbWJILCBORUMgQ29ycG9yYXRpb24uCj4gLSAqICAgICAgICAgICAgICAgICAgICAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KPiAtICoKPiAtICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cj4gLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwo+IC0gKiBhcmUgbWV0Ogo+IC0gKgo+IC0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAo+IC0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCj4gLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Cj4gLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKPiAtICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KPiAt
ICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgY29weXJpZ2h0IGhvbGRlciBub3IgdGhlIG5h
bWVzIG9mIGl0cwo+IC0gKiAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQo+IC0gKiAgICB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgo+IC0gKgo+IC0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTICJBUyBJUyIKPiAtICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQo+IC0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRQo+IC0gKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFCj4gLSAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKPiAtICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKPiAtICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCj4gLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCj4gLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCj4gLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCj4gLSAqIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgo+IC0gKgo+IC0gKiBUSElTIEhFQURFUiBNQVkgTk9UIEJFIEVYVFJBQ1RF
RCBPUiBNT0RJRklFRCBJTiBBTlkgV0FZLgo+IC0gKi8KPiAtCj4gLSNpbmNsdWRlIDxuZXQvaWYu
aD4KPiAtCj4gLWNoYXIgKmlmX2luZGV4dG9uYW1lKHVuc2lnbmVkIGluZGV4LCBjaGFyICpuYW1l
KQo+IC17Cj4gLSAgcmV0dXJuIDA7Cj4gLX0KPiBkaWZmIC0tZ2l0IGEvc29ja2V0cy5jIGIvc29j
a2V0cy5jCj4gaW5kZXggOGZkZTIxYS4uYTAxMzIyNSAxMDA2NDQKPiAtLS0gYS9zb2NrZXRzLmMK
PiArKysgYi9zb2NrZXRzLmMKPiBAQCAtNTAsNiArNTAsNyBAQAo+ICAjaW5jbHVkZSA8c3RkaW8u
aD4KPiAgI2luY2x1ZGUgPGVycm5vLmg+Cj4gICNpbmNsdWRlIDxsd2lwL3NvY2tldHMuaD4KPiAr
I2luY2x1ZGUgPGx3aXAvaWZfYXBpLmg+Cj4KPiAgI2RlZmluZSBTT0NLX05FVF9TRVRfRVJSTk8o
ZXJyY29kZSkgXAo+ICAgICAgICAgKGVycm5vID0gLShlcnJjb2RlKSkKPiBAQCAtODk5LDMgKzkw
MCwyMyBAQCBpbnQgc29ja2V0cGFpcihpbnQgZG9tYWluLCBpbnQgdHlwZSwgaW50IHByb3RvY29s
LCBpbnQgc3ZbMl0pCj4gICAgICAgICBlcnJubyA9IEVOT1RTVVA7Cj4gICAgICAgICByZXR1cm4g
LTE7Cj4gIH0KPiArCj4gKyNpZmRlZiBMV0lQX1NPQ0tFVAo+ICt1bnNpZ25lZCBpbnQgaWZfbmFt
ZXRvaW5kZXgoY29uc3QgY2hhciAqaWZuYW1lKQo+ICt7Cj4gKyAgICAgICBpbnQgcmV0Owo+ICsK
PiArICAgICAgIHJldCA9IGx3aXBfaWZfbmFtZXRvaW5kZXgoaWZuYW1lKTsKPiArCj4gKyAgICAg
ICByZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICtjaGFyICppZl9pbmRleHRvbmFtZSh1bnNpZ25lZCBp
bnQgaWZpbmRleCwgY2hhciAqaWZuYW1lKQo+ICt7Cj4gKyAgICAgICBjaGFyICpyZXQ7Cj4gKwo+
ICsgICAgICAgcmV0ID0gbHdpcF9pZl9pbmRleHRvbmFtZShpZmluZGV4LCBpZm5hbWUpOwo+ICsK
PiArICAgICAgIHJldHVybiByZXQ7Cj4gK30KPiArI2VuZGlmCj4gLS0KPiAyLjIwLjEKPgo+Cj4g
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBNaW5pb3Mt
ZGV2ZWwgbWFpbGluZyBsaXN0Cj4gTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCj4g
aHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZl
bAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9z
LWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0
cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Thu Apr 02 08:46:53 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 02 Apr 2020 08:46: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 1jJvUz-0001kd-OO; Thu, 02 Apr 2020 08:46:53 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=z5oR=5S=gmail.com=felipehuici@srs-us1.protection.inumbo.net>)
 id 1jJvUz-0001kW-9F
 for minios-devel@lists.xen.org; Thu, 02 Apr 2020 08:46:53 +0000
X-Inumbo-ID: 7ff2eba0-74be-11ea-9e09-bc764e2007e4
Received: from mail-vk1-xa41.google.com (unknown [2607:f8b0:4864:20::a41])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 7ff2eba0-74be-11ea-9e09-bc764e2007e4;
 Thu, 02 Apr 2020 08:46:52 +0000 (UTC)
Received: by mail-vk1-xa41.google.com with SMTP id f63so674985vkh.0
 for <minios-devel@lists.xen.org>; Thu, 02 Apr 2020 01:46:52 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=mime-version:references:in-reply-to:from:date:message-id:subject:to
 :cc:content-transfer-encoding;
 bh=xebMUBMUvc1KO5Lb3/5Jl/pf8zwJ2X7SWRbu15pTkec=;
 b=RkffVa87mfxg8J7A7bfxvkQZMXfSYWQ1/LCEcDsEXSB0GfLAuhObDSDM3U9JqpYTRd
 +840tueVjAuX8NEi+TVv9T3+P6IwQxJLa0Ayyw3WGag+EYsKgdn8NAU5N6G0eWIEIEW+
 kaktk6Xf12IROU3LEREd5t3WPVeVj7GHbnRxu6pinG5XBORIFn2+VzW0Uf9BpIK9i6gX
 KD7N8UwKsbHmeIawm4EUpnY9Z9XzZPQ+lrQg+GqZVXv1Ngw2MqdkdmMD8voEnuZlf1KH
 ufKnH0TvfMmf9SPc9vrRNM20dpGL4hqiy6y8hPXfs6yBysNwKCIXeAU3/sfo3ZxYFNtf
 1RMg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:mime-version:references:in-reply-to:from:date
 :message-id:subject:to:cc:content-transfer-encoding;
 bh=xebMUBMUvc1KO5Lb3/5Jl/pf8zwJ2X7SWRbu15pTkec=;
 b=peq/rPPp3+HFws3Bp+90dS17JDWUYpCeAoX2hbWxK5L8mLvDbArqzmYaas9Qk+g+3A
 jWJ49iP6KcHiVkIK+4HYMeOdXhZ0wOLFu9PjEv6Y/EPrKYFb5ZH/KuI55VtlNYDrm9mp
 5k7GZiGPKue7KLIRRIcxf94pUJ5AOk3Nwcf9Om3tVkgNLW6uKwp4fmWM565LXG2vMEQp
 /IzAN1xA/JEefKqqZeJHsEgbvPeEMPzWONgnEP3zL5Z+pdZel1Bqs4OEyy5ZHeYufM01
 QcGBEYSuWGc/WMKhuJWlZNROyiyb+Z4jsPNoDbkHVMDHkzpRLndkBGwphGMfga03N6VD
 4fFg==
X-Gm-Message-State: AGi0PuZdNoInNZIl5OFsgqGnXLYC+vIRvdQ4In4D6K4oILagxLgIs1UN
 mWkWQ5oyf2u2A9a7Dy9OmgQ/i+zGsh3YNkEQ4U4=
X-Google-Smtp-Source: APiQypJNPhaNtcWSI+n0fFm7PzlkkXs5yUQcNLGZKPY554OGGO0vHdR/d9DxIj04K2ZkTzCH9rcWP6skzV5Dp86hIjI=
X-Received: by 2002:a1f:728a:: with SMTP id n132mr1279948vkc.1.1585817212488; 
 Thu, 02 Apr 2020 01:46:52 -0700 (PDT)
MIME-Version: 1.0
References: <20200331143947.22480-1-vlad_andrei.badoiu@stud.acs.upb.ro>
 <20200331143947.22480-3-vlad_andrei.badoiu@stud.acs.upb.ro>
In-Reply-To: <20200331143947.22480-3-vlad_andrei.badoiu@stud.acs.upb.ro>
From: "felipehuici ." <felipehuici@gmail.com>
Date: Thu, 2 Apr 2020 10:46:41 +0200
Message-ID: <CAEX4t-NyywaWvtLufe62c9ppaecb4KwObKoGegGfmbVV2-W6kg@mail.gmail.com>
To: =?UTF-8?Q?Vlad=2DAndrei_B=C4=82DOIU?= <vlad_andrei.badoiu@stud.acs.upb.ro>
Subject: Re: [Minios-devel] [UNIKRAFT/LWIP PATCH 2/3] netinet/tcp.h: Add
 header guards
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>, 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>

UmV2aWV3ZWQtYnk6IEZlbGlwZSBIdWljaSA8ZmVsaXBlLmh1aWNpQG5lY2xhYi5ldT4KCk9uIFR1
ZSwgTWFyIDMxLCAyMDIwIGF0IDQ6NDAgUE0gVmxhZC1BbmRyZWkgQsSCRE9JVQo8dmxhZF9hbmRy
ZWkuYmFkb2l1QHN0dWQuYWNzLnVwYi5ybz4gd3JvdGU6Cj4KPiB0Y3AuaCBpcyBtaXNzaW5nIHRo
ZSBoZWFkZXIgZ3VhcmRzLCB3ZSBhZGQKPiB0aGVtIGluIHRoaXMgcGF0Y2guCj4KPiBTaWduZWQt
b2ZmLWJ5OiBWbGFkLUFuZHJlaSBCxIJET0lVIDx2bGFkX2FuZHJlaS5iYWRvaXVAc3R1ZC5hY3Mu
dXBiLnJvPgo+IC0tLQo+ICBpbmNsdWRlL25ldGluZXQvdGNwLmggfCA1ICsrKysrCj4gIDEgZmls
ZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKykKPgo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL25ldGlu
ZXQvdGNwLmggYi9pbmNsdWRlL25ldGluZXQvdGNwLmgKPiBpbmRleCBiYzNhN2I0Li44NGIyNTQ5
IDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUvbmV0aW5ldC90Y3AuaAo+ICsrKyBiL2luY2x1ZGUvbmV0
aW5ldC90Y3AuaAo+IEBAIC0zMyw2ICszMyw5IEBACj4gICAqICAgICBAKCMpdGNwLmggICAgICAg
OC4xIChCZXJrZWxleSkgNi8xMC85Mwo+ICAgKi8KPgo+ICsjaWZuZGVmIF9UQ1BfSF8KPiArI2Rl
ZmluZSBfVENQX0hfCj4gKwo+ICB0eXBlZGVmICAgICAgICB1X2xvbmcgIHRjcF9zZXE7Cj4gIC8q
Cj4gICAqIFRDUCBoZWFkZXIuCj4gQEAgLTg5LDMgKzkyLDUgQEAgc3RydWN0IHRjcGhkciB7Cj4g
ICNkZWZpbmUgICAgICAgIFRDUF9OT0RFTEFZICAgICAweDAxICAgIC8qIGRvbid0IGRlbGF5IHNl
bmQgdG8gY29hbGVzY2UgcGFja2V0cyAqLwo+ICAjZGVmaW5lICAgICAgICBUQ1BfTUFYU0VHICAg
ICAgMHgwMiAgICAvKiBzZXQgbWF4aW11bSBzZWdtZW50IHNpemUgKi8KPiAgI2RlZmluZSAgICAg
ICAgVENQX0NPUksgICAgICAgIDB4MDMgICAgLyogZG9uJ3Qgc2VuZCBvdXQgcGFydGlhbCBmcmFt
ZXMuIE5vdCBzdXBwb3J0ZWQvc3R1YiAqLwo+ICsKPiArI2VuZGlmCj4gLS0KPiAyLjIwLjEKPgo+
Cj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBNaW5p
b3MtZGV2ZWwgbWFpbGluZyBsaXN0Cj4gTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3Jn
Cj4gaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1k
ZXZlbAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWlu
aW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcK
aHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZl
bA==

From minios-devel-bounces@lists.xenproject.org Thu Apr 02 08:47:03 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 02 Apr 2020 08:47: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 1jJvV9-0001lx-Qu; Thu, 02 Apr 2020 08:47:03 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=z5oR=5S=gmail.com=felipehuici@srs-us1.protection.inumbo.net>)
 id 1jJvV9-0001lr-4r
 for minios-devel@lists.xen.org; Thu, 02 Apr 2020 08:47:03 +0000
X-Inumbo-ID: 85b43b0c-74be-11ea-b4f4-bc764e2007e4
Received: from mail-vs1-xe44.google.com (unknown [2607:f8b0:4864:20::e44])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 85b43b0c-74be-11ea-b4f4-bc764e2007e4;
 Thu, 02 Apr 2020 08:47:02 +0000 (UTC)
Received: by mail-vs1-xe44.google.com with SMTP id o3so1788185vsd.4
 for <minios-devel@lists.xen.org>; Thu, 02 Apr 2020 01:47:02 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=mime-version:references:in-reply-to:from:date:message-id:subject:to
 :cc:content-transfer-encoding;
 bh=VZTEnfvC82Su55fT09Nvy7zOgu1itVGPke9W2WNt1DI=;
 b=NTxL+FRGqTaHv3mSThv8c2XIr7WmpgfxwG9IawWQBr0Vm2S1JX2IF5m0qh0ojfLyJ0
 g2F4slkdJaznbCrTGdPWmX1cPiDepHUx0jqYkRIRX2EBlweNxcYgTdP9ippniSBduitq
 Vn8J739WKk782+KMfqn0nAbFYhqIiNsLnwkBtNb5XSh7zf9fTCr9zpG26l0uG7T2bhdN
 liBlKgnba37LfrxhTHgZ/DnDniq7+wtLWyzZhOwTL/4lSs4+ungPcPMrznzdl4ENCcz5
 zKDzptU+lECaVsV53H8A01DLfuQZ7koJsIORRu/z9eS/ykXPEoIWdsGWyzGPfRkR1LC+
 ZPzQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:mime-version:references:in-reply-to:from:date
 :message-id:subject:to:cc:content-transfer-encoding;
 bh=VZTEnfvC82Su55fT09Nvy7zOgu1itVGPke9W2WNt1DI=;
 b=VxerZKlGxElwf5oTetGS3kG8JVYaelelTPk+XerzxXW4hMZ8YtB+c9QCPi/M3yIvE0
 NtNtvNZRa5ZOWAmv/fXB3uTU9VUttdYEPs61nzZg/2CyvVDIpUZWS8HtDHMDhNeqUFIt
 kCJ9XJqZB8uyh46gbYDDAGGPwh2wr3I3pYTWcV4nrLP4tHMCqZKhAJfCmoyLlp2DL89/
 3RmDFCJIOc1TOZTALJJeM8QxFHeWshbLLa+tOpBfPS6FGsNl5oTOPT4Rj22oDkZlXjTT
 TPiIaxYB8nYVs2mI8oZYMvZ2xkPGMEU95uullolcYAaOfGojPOuN0jsaXTDqYhh+Fao9
 J/8Q==
X-Gm-Message-State: AGi0PuaFD4Z260RJLgXsxNEDHKbs6WUk6E0h8IzzpuUe/1UnenfsiKr4
 gv/olarjIOcmV68aqcYEueG+tD8QDhAfzOjn0U8=
X-Google-Smtp-Source: APiQypKySKGHWehbIrCwHhFh5TQ3tpcDePcubgasYNzvb/rtoq2UhJ67qFSEokvkX9/SA9wJieIeJoqfYJF0+jZ2aow=
X-Received: by 2002:a67:f24d:: with SMTP id y13mr1387063vsm.72.1585817222117; 
 Thu, 02 Apr 2020 01:47:02 -0700 (PDT)
MIME-Version: 1.0
References: <20200331143947.22480-1-vlad_andrei.badoiu@stud.acs.upb.ro>
 <20200331143947.22480-4-vlad_andrei.badoiu@stud.acs.upb.ro>
In-Reply-To: <20200331143947.22480-4-vlad_andrei.badoiu@stud.acs.upb.ro>
From: "felipehuici ." <felipehuici@gmail.com>
Date: Thu, 2 Apr 2020 10:46:50 +0200
Message-ID: <CAEX4t-PYahn1Hz4EL=6-vhvV5AZ5hn7eOuJk626uXXZGdYFtDA@mail.gmail.com>
To: =?UTF-8?Q?Vlad=2DAndrei_B=C4=82DOIU?= <vlad_andrei.badoiu@stud.acs.upb.ro>
Subject: Re: [Minios-devel] [UNIKRAFT/LWIP PATCH 3/3] netinet/in.h: Add
 several missing IPV6 & IP defines and structures
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>, 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>

UmV2aWV3ZWQtYnk6IEZlbGlwZSBIdWljaSA8ZmVsaXBlLmh1aWNpQG5lY2xhYi5ldT4KCk9uIFR1
ZSwgTWFyIDMxLCAyMDIwIGF0IDQ6NDAgUE0gVmxhZC1BbmRyZWkgQsSCRE9JVQo8dmxhZF9hbmRy
ZWkuYmFkb2l1QHN0dWQuYWNzLnVwYi5ybz4gd3JvdGU6Cj4KPiBPdXIgaW4uaCBoZWFkZXIgaXMg
bWlzc2luZyBzZXZlcmFsIGRlZmluZXMgYW5kIHN0cnVjdHVyZXMuIFdlCj4gaW1wb3J0IHRoZWly
IGRlZmluaXRpb24gZnJvbSBtdXNsLgo+Cj4gU2lnbmVkLW9mZi1ieTogVmxhZC1BbmRyZWkgQsSC
RE9JVSA8dmxhZF9hbmRyZWkuYmFkb2l1QHN0dWQuYWNzLnVwYi5ybz4KPiAtLS0KPiAgaW5jbHVk
ZS9uZXRpbmV0L2luLmggfCAxMTIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrLQo+ICAxIGZpbGUgY2hhbmdlZCwgMTExIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24o
LSkKPgo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL25ldGluZXQvaW4uaCBiL2luY2x1ZGUvbmV0aW5l
dC9pbi5oCj4gaW5kZXggMThlZTA3NS4uMDBkN2ZkNCAxMDA2NDQKPiAtLS0gYS9pbmNsdWRlL25l
dGluZXQvaW4uaAo+ICsrKyBiL2luY2x1ZGUvbmV0aW5ldC9pbi5oCj4gQEAgLTIsNyArMiw2IEBA
Cj4gICNkZWZpbmUgX05FVElORVRfSU5fSF8KPgo+ICAjaW5jbHVkZSA8dWsvY29uZmlnLmg+Cj4g
LQo+ICAjaWZkZWYgQ09ORklHX0xXSVBfU09DS0VUCj4gICNpbmNsdWRlIDxsd2lwL3NvY2tldHMu
aD4KPiAgLyogVGFrZW4gZnJvbSBtdXNsJ3MgbmV0aW5ldC9pbi5oICovCj4gQEAgLTE3LDYgKzE2
LDEwNCBAQAo+ICAjaW5jbHVkZV9uZXh0IDxuZXRpbmV0L2luLmg+Cj4gICNlbmRpZgo+Cj4gKyNk
ZWZpbmUgSVBfQUREX1NPVVJDRV9NRU1CRVJTSElQICAzOQo+ICsjZGVmaW5lIElQX0RST1BfU09V
UkNFX01FTUJFUlNISVAgNDAKPiArCj4gKyNkZWZpbmUgTUNBU1RfSk9JTl9HUk9VUCAgIDQyCj4g
KyNkZWZpbmUgTUNBU1RfQkxPQ0tfU09VUkNFIDQzCj4gKyNkZWZpbmUgTUNBU1RfVU5CTE9DS19T
T1VSQ0UgICAgICA0NAo+ICsjZGVmaW5lIE1DQVNUX0xFQVZFX0dST1VQICA0NQo+ICsjZGVmaW5l
IE1DQVNUX0pPSU5fU09VUkNFX0dST1VQICAgNDYKPiArI2RlZmluZSBNQ0FTVF9MRUFWRV9TT1VS
Q0VfR1JPVVAgIDQ3Cj4gKyNkZWZpbmUgTUNBU1RfTVNGSUxURVIgICAgIDQ4Cj4gKwo+ICtzdHJ1
Y3QgaXBfbXJlcV9zb3VyY2Ugewo+ICsgICAgICAgc3RydWN0IGluX2FkZHIgaW1yX211bHRpYWRk
cjsKPiArICAgICAgIHN0cnVjdCBpbl9hZGRyIGltcl9pbnRlcmZhY2U7Cj4gKyAgICAgICBzdHJ1
Y3QgaW5fYWRkciBpbXJfc291cmNlYWRkcjsKPiArfTsKPiArCj4gK3N0cnVjdCBncm91cF9zb3Vy
Y2VfcmVxIHsKPiArICAgICAgIHVpbnQzMl90IGdzcl9pbnRlcmZhY2U7Cj4gKyAgICAgICBzdHJ1
Y3Qgc29ja2FkZHJfc3RvcmFnZSBnc3JfZ3JvdXA7Cj4gKyAgICAgICBzdHJ1Y3Qgc29ja2FkZHJf
c3RvcmFnZSBnc3Jfc291cmNlOwo+ICt9Owo+ICsKPiArCj4gKyNpZmRlZiBDT05GSUdfTFdJUF9J
UFY2Cj4gKyNkZWZpbmUgSVBWNl9BRERSRk9STSAgICAgICAgICAgMQo+ICsjZGVmaW5lIElQVjZf
MjI5MlBLVElORk8gICAgICAgIDIKPiArI2RlZmluZSBJUFY2XzIyOTJIT1BPUFRTICAgICAgICAz
Cj4gKyNkZWZpbmUgSVBWNl8yMjkyRFNUT1BUUyAgICAgICAgNAo+ICsjZGVmaW5lIElQVjZfMjI5
MlJUSERSICAgICAgICAgIDUKPiArI2RlZmluZSBJUFY2XzIyOTJQS1RPUFRJT05TICAgICA2Cj4g
KyNkZWZpbmUgSVBWNl9DSEVDS1NVTSAgICAgICAgICAgNwo+ICsjZGVmaW5lIElQVjZfMjI5MkhP
UExJTUlUICAgICAgIDgKPiArI2RlZmluZSBJUFY2X05FWFRIT1AgICAgICAgICAgICA5Cj4gKyNk
ZWZpbmUgSVBWNl9BVVRISERSICAgICAgICAgICAgMTAKPiArI2RlZmluZSBJUFY2X1VOSUNBU1Rf
SE9QUyAgICAgICAxNgo+ICsjZGVmaW5lIElQVjZfTVVMVElDQVNUX0lGICAgICAgIDE3Cj4gKyNk
ZWZpbmUgSVBWNl9NVUxUSUNBU1RfSE9QUyAgICAgMTgKPiArI2RlZmluZSBJUFY2X01VTFRJQ0FT
VF9MT09QICAgICAxOQo+ICsjZGVmaW5lIElQVjZfUk9VVEVSX0FMRVJUICAgICAgIDIyCj4gKyNk
ZWZpbmUgSVBWNl9NVFVfRElTQ09WRVIgICAgICAgMjMKPiArI2RlZmluZSBJUFY2X01UVSAgICAg
ICAgICAgICAgICAyNAo+ICsjZGVmaW5lIElQVjZfUkVDVkVSUiAgICAgICAgICAgIDI1Cj4gKyNk
ZWZpbmUgSVBWNl9KT0lOX0FOWUNBU1QgICAgICAgMjcKPiArI2RlZmluZSBJUFY2X0xFQVZFX0FO
WUNBU1QgICAgICAyOAo+ICsjZGVmaW5lIElQVjZfTVVMVElDQVNUX0FMTCAgICAgIDI5Cj4gKyNk
ZWZpbmUgSVBWNl9ST1VURVJfQUxFUlRfSVNPTEFURSAzMAo+ICsjZGVmaW5lIElQVjZfSVBTRUNf
UE9MSUNZICAgICAgIDM0Cj4gKyNkZWZpbmUgSVBWNl9YRlJNX1BPTElDWSAgICAgICAgMzUKPiAr
I2RlZmluZSBJUFY2X0hEUklOQ0wgICAgICAgICAgICAzNgo+ICsKPiArI2RlZmluZSBJUFY2X1JF
Q1ZQS1RJTkZPICAgICAgICA0OQo+ICsjZGVmaW5lIElQVjZfUEtUSU5GTyAgICAgICAgICAgIDUw
Cj4gKyNkZWZpbmUgSVBWNl9SRUNWSE9QTElNSVQgICAgICAgNTEKPiArI2RlZmluZSBJUFY2X0hP
UExJTUlUICAgICAgICAgICA1Mgo+ICsjZGVmaW5lIElQVjZfUkVDVkhPUE9QVFMgICAgICAgIDUz
Cj4gKyNkZWZpbmUgSVBWNl9IT1BPUFRTICAgICAgICAgICAgNTQKPiArI2RlZmluZSBJUFY2X1JU
SERSRFNUT1BUUyAgICAgICA1NQo+ICsjZGVmaW5lIElQVjZfUkVDVlJUSERSICAgICAgICAgIDU2
Cj4gKyNkZWZpbmUgSVBWNl9SVEhEUiAgICAgICAgICAgICAgNTcKPiArI2RlZmluZSBJUFY2X1JF
Q1ZEU1RPUFRTICAgICAgICA1OAo+ICsjZGVmaW5lIElQVjZfRFNUT1BUUyAgICAgICAgICAgIDU5
Cj4gKyNkZWZpbmUgSVBWNl9SRUNWUEFUSE1UVSAgICAgICAgNjAKPiArI2RlZmluZSBJUFY2X1BB
VEhNVFUgICAgICAgICAgICA2MQo+ICsjZGVmaW5lIElQVjZfRE9OVEZSQUcgICAgICAgICAgIDYy
Cj4gKyNkZWZpbmUgSVBWNl9SRUNWVENMQVNTICAgICAgICAgNjYKPiArI2RlZmluZSBJUFY2X1RD
TEFTUyAgICAgICAgICAgICA2Nwo+ICsjZGVmaW5lIElQVjZfQVVUT0ZMT1dMQUJFTCAgICAgIDcw
Cj4gKyNkZWZpbmUgSVBWNl9BRERSX1BSRUZFUkVOQ0VTICAgNzIKPiArI2RlZmluZSBJUFY2X01J
TkhPUENPVU5UICAgICAgICA3Mwo+ICsjZGVmaW5lIElQVjZfT1JJR0RTVEFERFIgICAgICAgIDc0
Cj4gKyNkZWZpbmUgSVBWNl9SRUNWT1JJR0RTVEFERFIgICAgSVBWNl9PUklHRFNUQUREUgo+ICsj
ZGVmaW5lIElQVjZfVFJBTlNQQVJFTlQgICAgICAgIDc1Cj4gKyNkZWZpbmUgSVBWNl9VTklDQVNU
X0lGICAgICAgICAgNzYKPiArI2RlZmluZSBJUFY2X1JFQ1ZGUkFHU0laRSAgICAgICA3Nwo+ICsj
ZGVmaW5lIElQVjZfRlJFRUJJTkQgICAgICAgICAgIDc4Cj4gKwo+ICsjZGVmaW5lIElQVjZfUE1U
VURJU0NfRE9OVCAgICAgIDAKPiArI2RlZmluZSBJUFY2X1BNVFVESVNDX1dBTlQgICAgICAxCj4g
KyNkZWZpbmUgSVBWNl9QTVRVRElTQ19ETyAgICAgICAgMgo+ICsjZGVmaW5lIElQVjZfUE1UVURJ
U0NfUFJPQkUgICAgIDMKPiArI2RlZmluZSBJUFY2X1BNVFVESVNDX0lOVEVSRkFDRSA0Cj4gKyNk
ZWZpbmUgSVBWNl9QTVRVRElTQ19PTUlUICAgICAgNQo+ICsKPiArI2RlZmluZSBJUFY2X1BSRUZF
Ul9TUkNfVE1QICAgICAgICAgICAgMHgwMDAxCj4gKyNkZWZpbmUgSVBWNl9QUkVGRVJfU1JDX1BV
QkxJQyAgICAgICAgIDB4MDAwMgo+ICsjZGVmaW5lIElQVjZfUFJFRkVSX1NSQ19QVUJUTVBfREVG
QVVMVCAweDAxMDAKPiArI2RlZmluZSBJUFY2X1BSRUZFUl9TUkNfQ09BICAgICAgICAgICAgMHgw
MDA0Cj4gKyNkZWZpbmUgSVBWNl9QUkVGRVJfU1JDX0hPTUUgICAgICAgICAgIDB4MDQwMAo+ICsj
ZGVmaW5lIElQVjZfUFJFRkVSX1NSQ19DR0EgICAgICAgICAgICAweDAwMDgKPiArI2RlZmluZSBJ
UFY2X1BSRUZFUl9TUkNfTk9OQ0dBICAgICAgICAgMHgwODAwCj4gKwo+ICsjZGVmaW5lIElQVjZf
UlRIRFJfTE9PU0UgICAgICAgIDAKPiArI2RlZmluZSBJUFY2X1JUSERSX1NUUklDVCAgICAgICAx
Cj4gKwo+ICsjZGVmaW5lIElQVjZfUlRIRFJfVFlQRV8wICAgICAgIDAKPiArI2VuZGlmCj4gKwo+
ICAjZGVmaW5lIElONl9JU19BRERSX1VOU1BFQ0lGSUVEKGEpIFwKPiAgICAgICAgICAoKCh1aW50
MzJfdCAqKSAoYSkpWzBdID09IDAgJiYgKCh1aW50MzJfdCAqKSAoYSkpWzFdID09IDAgJiYgXAo+
ICAgICAgICAgICAoKHVpbnQzMl90ICopIChhKSlbMl0gPT0gMCAmJiAoKHVpbnQzMl90ICopIChh
KSlbM10gPT0gMCkKPiBAQCAtNjgsNCArMTY1LDE3IEBAIHN0cnVjdCBpcF9tcmVxbiB7Cj4gIH07
Cj4gICNlbmRpZiAvKiBkZWZpbmVkKF9HTlVfU09VUkNFKSB8fCBkZWZpbmVkKF9CU0RfU09VUkNF
KSAqLwo+Cj4gKwo+ICsjaWZkZWYgQ09ORklHX0xXSVBfSVBWNgo+ICtzdHJ1Y3QgaW42X3BrdGlu
Zm8gewo+ICsgICAgICAgc3RydWN0IGluNl9hZGRyIGlwaTZfYWRkcjsKPiArICAgICAgIHVuc2ln
bmVkIGlwaTZfaWZpbmRleDsKPiArfTsKPiArCj4gK3N0cnVjdCBpcDZfbXR1aW5mbyB7Cj4gKyAg
ICAgICBzdHJ1Y3Qgc29ja2FkZHJfaW42IGlwNm1fYWRkcjsKPiArICAgICAgIHVpbnQzMl90IGlw
Nm1fbXR1Owo+ICt9Owo+ICsjZW5kaWYKPiArCj4gICNlbmRpZiAvKiBfTkVUSU5FVF9JTl9IXyAq
Lwo+IC0tCj4gMi4yMC4xCj4KPgo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fCj4gTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdAo+IE1pbmlvcy1kZXZlbEBs
aXN0cy54ZW5wcm9qZWN0Lm9yZwo+IGh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1h
bi9saXN0aW5mby9taW5pb3MtZGV2ZWwKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxp
c3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9s
aXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Thu Apr 02 08:56:59 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 02 Apr 2020 08:56: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 1jJvej-0002Yw-JB; Thu, 02 Apr 2020 08:56:57 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=z5oR=5S=gmail.com=felipehuici@srs-us1.protection.inumbo.net>)
 id 1jJvei-0002Yr-Aw
 for minios-devel@lists.xen.org; Thu, 02 Apr 2020 08:56:56 +0000
X-Inumbo-ID: e74d7b8e-74bf-11ea-b58d-bc764e2007e4
Received: from mail-vs1-xe41.google.com (unknown [2607:f8b0:4864:20::e41])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id e74d7b8e-74bf-11ea-b58d-bc764e2007e4;
 Thu, 02 Apr 2020 08:56:55 +0000 (UTC)
Received: by mail-vs1-xe41.google.com with SMTP id w185so1781583vsw.10
 for <minios-devel@lists.xen.org>; Thu, 02 Apr 2020 01:56:55 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=mime-version:references:in-reply-to:from:date:message-id:subject:to
 :cc:content-transfer-encoding;
 bh=MQd51Qftdm5EqFAyiOYU7Fs3X3+dDkjHoREKkT/w16I=;
 b=EvIDfOzLyxQuw7ncIXkC58rNWNxAAUfnbUB2yQG2KMslZ/kiihYoQsgBVIKGt3ic2m
 /MHK4GfDtqtAjfN1fjmO+LH9yhMfQIttTGxsqjHfC3CFclZZakH8BO46Vc7ehK4QwkA4
 loG8GoO9r/sDGcjreEIcML6mgIVaze9OBL+nRuE+6mJ28TZVcov9obk3Z6ldYRjRW4JV
 j8hi5BynqQiRHs56LrtM+7HYWmWjDimzT9gd8VZ6WKjs4bpYUiyfsbGYdrCJCcFZaJut
 PK1nSS7McvDMxS9eja1UIHvtEX1Q52d/UyRzgCnxf4vLVn28//l+ce2rw4FGQ410B0J8
 AjUA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:mime-version:references:in-reply-to:from:date
 :message-id:subject:to:cc:content-transfer-encoding;
 bh=MQd51Qftdm5EqFAyiOYU7Fs3X3+dDkjHoREKkT/w16I=;
 b=p2R8muQJRI5eodcqKYz5KoKDb20aY89LPJdxogs5mlF8GE4GHe8gHL+UuLIC6Jo/4B
 Z71tcc6nJPP0IdZq3Fjvg6jSt8pFT7Jpo/W4gFAeV4qz2wEUJL2ExHpz4tQpOkqjwdmy
 ceSA8NvSbLR464zTf/ZAWdF/1RT7U1UtsTknfqnyM5FhDmON7hoNf+Zin0L5565EGhht
 YBbzDokEoMUt2B1D3vOLmBjhlomyoUwg1mWpg1mTRldqCFSO8XvUBrU+jZB7CfMZ6IFC
 0yaM2CQgZ+lWLFh7dgtBmV8TsIu5IbbkiceQnYqgov7y00SZpvXhmHTNrgMOhc7ItszZ
 WW5w==
X-Gm-Message-State: AGi0PuZjoLHA2S0VhhFMTd3UqQJYDkwgpsVEiq1l4Le6Pd7ihjB6yFl+
 YlBZmTnI5qW0cZ0OEk6nCb5tRX2Tu63PyZruOHo=
X-Google-Smtp-Source: APiQypI0wkWTdTAsmgWwUV16AycF5zEwnRBEV5C1Hn8kza8Z7tPvNJsaxv++vN1DTHNwrDLAsaGNBvs43JLmEpYRV0I=
X-Received: by 2002:a67:b01:: with SMTP id 1mr1460655vsl.181.1585817815383;
 Thu, 02 Apr 2020 01:56:55 -0700 (PDT)
MIME-Version: 1.0
References: <20200331150719.24040-1-vlad_andrei.badoiu@stud.acs.upb.ro>
 <20200331150719.24040-3-vlad_andrei.badoiu@stud.acs.upb.ro>
In-Reply-To: <20200331150719.24040-3-vlad_andrei.badoiu@stud.acs.upb.ro>
From: "felipehuici ." <felipehuici@gmail.com>
Date: Thu, 2 Apr 2020 10:56:44 +0200
Message-ID: <CAEX4t-NvZ2DzQgRYRz_L6GGh8c2-Rd2=JPF508GnHP_a6RP25A@mail.gmail.com>
To: =?UTF-8?Q?Vlad=2DAndrei_B=C4=82DOIU?= <vlad_andrei.badoiu@stud.acs.upb.ro>
Subject: Re: [Minios-devel] [UNIKRAFT/PTHREAD-EMBEDDED PATCH 2/2] Implement
 pthread_condattr_{getclock, setclock}
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>, Costin Lupu <costin.lup@gmail.com>,
 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>

UmV2aWV3ZWQtYnk6IEZlbGlwZSBIdWljaSA8ZmVsaXBlLmh1aWNpQG5lY2xhYi5ldT4KCk9uIFR1
ZSwgTWFyIDMxLCAyMDIwIGF0IDU6MDggUE0gVmxhZC1BbmRyZWkgQsSCRE9JVQo8dmxhZF9hbmRy
ZWkuYmFkb2l1QHN0dWQuYWNzLnVwYi5ybz4gd3JvdGU6Cj4KPiBXZSBhZGFwdCB0aGUgaW1wbGVt
ZW50YXRpb24gZnJvbSBtdXNsLgo+Cj4gU2lnbmVkLW9mZi1ieTogVmxhZC1BbmRyZWkgQsSCRE9J
VSA8dmxhZF9hbmRyZWkuYmFkb2l1QHN0dWQuYWNzLnVwYi5ybz4KPiAtLS0KPiAgcHRocmVhZF9j
b25kYXR0ci5jIHwgMTUgKysrKysrKystLS0tLS0tCj4gIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2Vy
dGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCj4KPiBkaWZmIC0tZ2l0IGEvcHRocmVhZF9jb25kYXR0
ci5jIGIvcHRocmVhZF9jb25kYXR0ci5jCj4gaW5kZXggNTNkY2M2NC4uMDg2MWE1MyAxMDA2NDQK
PiAtLS0gYS9wdGhyZWFkX2NvbmRhdHRyLmMKPiArKysgYi9wdGhyZWFkX2NvbmRhdHRyLmMKPiBA
QCAtMjMsMTkgKzIzLDIwIEBACj4gICNpbmNsdWRlIDxlcnJuby5oPgo+ICAjaW5jbHVkZSA8dGlt
ZS5oPgo+ICAjaW5jbHVkZSA8cHRocmVhZC5oPgo+IC0KPiArI2luY2x1ZGUgPGltcGxlbWVudC5o
Pgo+Cj4gIGludCBwdGhyZWFkX2NvbmRhdHRyX2dldGNsb2NrKGNvbnN0IHB0aHJlYWRfY29uZGF0
dHJfdCAqX19yZXN0cmljdCBhdHRyLAo+ICAgICAgICAgICAgICAgICBjbG9ja2lkX3QgKl9fcmVz
dHJpY3QgY2xvY2tfaWQpCj4gIHsKPiAtICAgICAgIFdBUk5fU1RVQkJFRCgpOwo+IC0gICAgICAg
ZXJybm8gPSBFTk9UU1VQOwo+IC0gICAgICAgcmV0dXJuIC0xOwo+ICsgICAgICAgKmNsb2NrX2lk
ID0gKCphdHRyKS0+Y2xvY2sgJiAweDdmZmZmZmZmOwo+ICsgICAgICAgcmV0dXJuIDA7Cj4gIH0K
Pgo+ICBpbnQgcHRocmVhZF9jb25kYXR0cl9zZXRjbG9jayhwdGhyZWFkX2NvbmRhdHRyX3QgKmF0
dHIsIGNsb2NraWRfdCBjbG9ja19pZCkKPiAgewo+IC0gICAgICAgV0FSTl9TVFVCQkVEKCk7Cj4g
LSAgICAgICBlcnJubyA9IEVOT1RTVVA7Cj4gLSAgICAgICByZXR1cm4gLTE7Cj4gKyAgICAgICBp
ZiAoY2xvY2tfaWQgPCAwIHx8IGNsb2NrX2lkLTJVIDwgMikKPiArICAgICAgICAgICAgICAgcmV0
dXJuIEVJTlZBTDsKPiArICAgICAgICgqYXR0ciktPmNsb2NrICY9IDB4ODAwMDAwMDA7Cj4gKyAg
ICAgICAoKmF0dHIpLT5jbG9jayB8PSBjbG9ja19pZDsKPiArICAgICAgIHJldHVybiAwOwo+ICB9
Cj4gLS0KPiAyLjIwLjEKPgo+Cj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX18KPiBNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Cj4gTWluaW9zLWRldmVsQGxp
c3RzLnhlbnByb2plY3Qub3JnCj4gaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFu
L2xpc3RpbmZvL21pbmlvcy1kZXZlbAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlz
dHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xp
c3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Thu Apr 02 08:57:12 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 02 Apr 2020 08:57: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 1jJvey-0002Zo-LM; Thu, 02 Apr 2020 08:57:12 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=z5oR=5S=gmail.com=felipehuici@srs-us1.protection.inumbo.net>)
 id 1jJvex-0002Zh-Ic
 for minios-devel@lists.xen.org; Thu, 02 Apr 2020 08:57:11 +0000
X-Inumbo-ID: f077c9c6-74bf-11ea-b58d-bc764e2007e4
Received: from mail-vs1-xe42.google.com (unknown [2607:f8b0:4864:20::e42])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id f077c9c6-74bf-11ea-b58d-bc764e2007e4;
 Thu, 02 Apr 2020 08:57:11 +0000 (UTC)
Received: by mail-vs1-xe42.google.com with SMTP id e138so1768338vsc.11
 for <minios-devel@lists.xen.org>; Thu, 02 Apr 2020 01:57:11 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=mime-version:references:in-reply-to:from:date:message-id:subject:to
 :cc:content-transfer-encoding;
 bh=UwE5VkwIDA+5gOzq0CL8wrLE0gPggzIkbyEzA5aCq0M=;
 b=Ky2DEcbiVXCLdBArXV8HmZDQ8gtqpEX2ofW90CAt6BSYcpdaTe4o4mxtPE4hb0B+P3
 eJhP6u/MefCidTZdLPMTzxkIBDmCOMhZICSApa0olIq8MF+WxstPt1kSnzdCSKnX1ZfJ
 ofxxOClxpmoCJbulWtp6pH1Yv6QtxgAuHO4NTKJJcxxSWN/eFtL2RCcUxr3pRVSjfRth
 dqtf+ufCoc7B4aXluSeURgu4hf8NSUe2iG7rzWKjrfeGIzaGchPcNUrYxYS6ZcGh+pya
 MpojLFw9OXXWglXTxQiZMogQyziEYN7/kf5mdyUgDzwB/wuWfXvI3ts362Eo9/o2tM8n
 tDSA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:mime-version:references:in-reply-to:from:date
 :message-id:subject:to:cc:content-transfer-encoding;
 bh=UwE5VkwIDA+5gOzq0CL8wrLE0gPggzIkbyEzA5aCq0M=;
 b=I+qvY7epcC1ktQV4ocWftVQv/u/UEKfSL+O6PJqZKOCCdRKogFVHF5dQJpfDunTxQw
 MSYLVRU/YWFkX+P7IWijze4BkZaMGFZclxdLpi5y0K+YA0pEAQ4okTxy7HXo1U9gnsof
 qR2+4Upa1NCTXadq6ivHq2oc88Dgw3J4gc8QYAPPc6vFZqEgV1IKA0pZutb6adJpXX+e
 NnPI9/s6MYe3EPdQQaEJ8IJZLW0BE+8aj8uKiRPkSoZqEXOp7Ls7cYTp3mLvyDWtSUuT
 FbPmUb16EU6PoNPXBSx51cHgwFU5ex7hjbeL2G6YJNBULDIDmU6biqSq3YNb0tIOJWwL
 2q6Q==
X-Gm-Message-State: AGi0PubAiKRWsSOaCUG9aP+N3YkkIJo4bGi+kR+uYIU78CGn+9Aa10+E
 UsDFLbuVWISXTMyuLu0L0myPSif3bIukb2Qja6I=
X-Google-Smtp-Source: APiQypL52vukEzpHZP6BYyc9MP6mWWjWdZssv0a0oDxm7xpuUoKBvpC58XkLgULdtcizL7LZzCalFCMMw7iq6G7pncQ=
X-Received: by 2002:a05:6102:3139:: with SMTP id
 f25mr1275809vsh.111.1585817830763; 
 Thu, 02 Apr 2020 01:57:10 -0700 (PDT)
MIME-Version: 1.0
References: <20200331150719.24040-1-vlad_andrei.badoiu@stud.acs.upb.ro>
 <20200331150719.24040-2-vlad_andrei.badoiu@stud.acs.upb.ro>
In-Reply-To: <20200331150719.24040-2-vlad_andrei.badoiu@stud.acs.upb.ro>
From: "felipehuici ." <felipehuici@gmail.com>
Date: Thu, 2 Apr 2020 10:56:59 +0200
Message-ID: <CAEX4t-MSo1wUaUpFPxWiaCXht9O9VrRrpMGX4ZZrAeJ43kp8VA@mail.gmail.com>
To: =?UTF-8?Q?Vlad=2DAndrei_B=C4=82DOIU?= <vlad_andrei.badoiu@stud.acs.upb.ro>
Subject: Re: [Minios-devel] [UNIKRAFT/PTHREAD-EMBEDDED PATCH 1/2] Add
 clockid_t field to pthread_condattr_t_
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>, Costin Lupu <costin.lup@gmail.com>,
 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>

UmV2aWV3ZWQtYnk6IEZlbGlwZSBIdWljaSA8ZmVsaXBlLmh1aWNpQG5lY2xhYi5ldT4KCk9uIFR1
ZSwgTWFyIDMxLCAyMDIwIGF0IDU6MDggUE0gVmxhZC1BbmRyZWkgQsSCRE9JVQo8dmxhZF9hbmRy
ZWkuYmFkb2l1QHN0dWQuYWNzLnVwYi5ybz4gd3JvdGU6Cj4KPiBTaW5jZSBwdGhyZWFkX2NvbmRh
dHRyX3QgaXMgZGVmaW5lZCBhcyBwdGhyZWFkX2NvbmRhdHRyX3RfLAo+IHdlIGFkZCB0aGUgY2xv
Y2tpZF90IGZpZWxkIHRvIHB0aHJlYWRfY29uZGF0dHJfdF8uIFRoaXMgZmllbGQKPiBpcyB1c2Vk
IGJ5IGZ1bmNpb25zIHN1Y2ggYXMgcHRocmVhZF9jb25kYXR0cl9nZXRjbG9jay4KPgo+IFNpZ25l
ZC1vZmYtYnk6IFZsYWQtQW5kcmVpIELEgkRPSVUgPHZsYWRfYW5kcmVpLmJhZG9pdUBzdHVkLmFj
cy51cGIucm8+Cj4gLS0tCj4gIC4uLm9ja2lkX3QtZmllbGQtdG8tcHRocmVhZF9jb25kYXR0cl90
Xy5wYXRjaCB8IDI5ICsrKysrKysrKysrKysrKysrKysKPiAgMSBmaWxlIGNoYW5nZWQsIDI5IGlu
c2VydGlvbnMoKykKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHBhdGNoZXMvMDAxMS1BZGQtY2xvY2tp
ZF90LWZpZWxkLXRvLXB0aHJlYWRfY29uZGF0dHJfdF8ucGF0Y2gKPgo+IGRpZmYgLS1naXQgYS9w
YXRjaGVzLzAwMTEtQWRkLWNsb2NraWRfdC1maWVsZC10by1wdGhyZWFkX2NvbmRhdHRyX3RfLnBh
dGNoIGIvcGF0Y2hlcy8wMDExLUFkZC1jbG9ja2lkX3QtZmllbGQtdG8tcHRocmVhZF9jb25kYXR0
cl90Xy5wYXRjaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uNzA1Mjc2
MAo+IC0tLSAvZGV2L251bGwKPiArKysgYi9wYXRjaGVzLzAwMTEtQWRkLWNsb2NraWRfdC1maWVs
ZC10by1wdGhyZWFkX2NvbmRhdHRyX3RfLnBhdGNoCj4gQEAgLTAsMCArMSwyOSBAQAo+ICtGcm9t
IDZmMWRmZjhjZDlkZjQ4MmZhN2YxM2E1NWM2ZTIwMzAzZjA4MDlmMzUgTW9uIFNlcCAxNyAwMDow
MDowMCAyMDAxCj4gK0Zyb206ID0/VVRGLTg/cT9WbGFkLUFuZHJlaT0yMEI9QzQ9ODJET0lVPz0K
PiArIDx2bGFkX2FuZHJlaS5iYWRvaXVAc3R1ZC5hY3MudXBiLnJvPgo+ICtEYXRlOiBNb24sIDIz
IE1hciAyMDIwIDEyOjUyOjU3ICswMjAwCj4gK1N1YmplY3Q6IFtQQVRDSCAxLzFdIEFkZCBjbG9j
a2lkX3QgZmllbGQgdG8gcHRocmVhZF9jb25kYXR0cl90Xwo+ICtNSU1FLVZlcnNpb246IDEuMAo+
ICtDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKPiArQ29udGVudC1UcmFu
c2Zlci1FbmNvZGluZzogOGJpdAo+ICsKPiArU2lnbmVkLW9mZi1ieTogVmxhZC1BbmRyZWkgQsSC
RE9JVSA8dmxhZF9hbmRyZWkuYmFkb2l1QHN0dWQuYWNzLnVwYi5ybz4KPiArLS0tCj4gKyBpbXBs
ZW1lbnQuaCB8IDEgKwo+ICsgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCj4gKwo+ICtk
aWZmIC0tZ2l0IGEvaW1wbGVtZW50LmggYi9pbXBsZW1lbnQuaAo+ICtpbmRleCAyNWFlNGYxLi5h
ZDk0NjAyIDEwMDY0NAo+ICstLS0gYS9pbXBsZW1lbnQuaAo+ICsrKysgYi9pbXBsZW1lbnQuaAo+
ICtAQCAtMjUwLDYgKzI1MCw3IEBAIHN0cnVjdCBwdGhyZWFkX2NvbmRfdF8KPiArCj4gKyBzdHJ1
Y3QgcHRocmVhZF9jb25kYXR0cl90Xwo+ICsgICB7Cj4gKysgICAgY2xvY2tpZF90IGNsb2NrOwo+
ICsgICAgIGludCBwc2hhcmVkOwo+ICsgICB9Owo+ICsKPiArLS0KPiArMi4yMC4xCj4gKwo+IC0t
Cj4gMi4yMC4xCj4KPgo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fCj4gTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdAo+IE1pbmlvcy1kZXZlbEBsaXN0cy54
ZW5wcm9qZWN0Lm9yZwo+IGh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0
aW5mby9taW5pb3MtZGV2ZWwKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhl
bnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5m
by9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Thu Apr 02 09:43:23 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 02 Apr 2020 09:43: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 1jJwNc-0006PX-WB; Thu, 02 Apr 2020 09:43:20 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=RS4R=5S=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1jJwNb-0006PS-RO
 for minios-devel@lists.xen.org; Thu, 02 Apr 2020 09:43:19 +0000
X-Inumbo-ID: 61d18e1c-74c6-11ea-9e09-bc764e2007e4
Received: from queen.nlehd.de (unknown [195.37.154.80])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTP
 id 61d18e1c-74c6-11ea-9e09-bc764e2007e4;
 Thu, 02 Apr 2020 09:43:18 +0000 (UTC)
Received: from localhost (c110.ant-net [192.168.0.36])
 by queen.nlehd.de (Postfix) with ESMTP id 37AD441343;
 Thu,  2 Apr 2020 11:43:17 +0200 (CEST)
From: Felipe Huici <felipe.huici@neclab.eu>
To: minios-devel@lists.xen.org
Date: Thu,  2 Apr 2020 11:43:16 +0200
Message-Id: <20200402094316.17678-1-felipe.huici@neclab.eu>
X-Mailer: git-send-email 2.20.1
MIME-Version: 1.0
Subject: [Minios-devel] [UNIKRAFT/LIBPTHREADPOOL PATCH] Freeze the library
 against a particular commit hash.
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>
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>

Q3VycmVudGx5IHB0aHJlYWRwb29sIGJ1aWxkcyBhZ2FpbnN0IG1hc3Rlci4gU2luY2UgbWFzdGVy
IGNoYW5nZXMsCnRoaXMgbWFrZXMgdGhlIGJ1aWxkIG9mIHRoaXMgbGlicmFyeSBicml0dGxlOyBp
biB0aGlzIHBhdGNoIHdlIGZyZWV6ZQphZ2FpbnN0IG9uZSBvZiB0aGUgbGF0ZXN0IGNvbW1pdHMu
CgpTaWduZWQtb2ZmLWJ5OiBGZWxpcGUgSHVpY2kgPGZlbGlwZS5odWljaUBuZWNsYWIuZXU+Ci0t
LQogTWFrZWZpbGUudWsgfCA2ICsrKy0tLQogMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygr
KSwgMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9NYWtlZmlsZS51ayBiL01ha2VmaWxlLnVr
CmluZGV4IDY5NDRjNzQuLmQ2MmYzMDUgMTAwNjQ0Ci0tLSBhL01ha2VmaWxlLnVrCisrKyBiL01h
a2VmaWxlLnVrCkBAIC0zOSwxNSArMzksMTUgQEAgJChldmFsICQoY2FsbCBhZGRsaWJfcyxsaWJw
dGhyZWFkcG9vbCwkKENPTkZJR19MSUJQVEhSRUFEUE9PTCkpKQogIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMKICMgU291cmNlcwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLUxJQlBUSFJFQURQT09M
X1ZFUlNJT049bWFzdGVyCi1MSUJQVEhSRUFEUE9PTF9VUkw9aHR0cHM6Ly9naXRodWIuY29tL01h
cmF0eXN6Y3phL3B0aHJlYWRwb29sL2FyY2hpdmUvbWFzdGVyLnppcAorTElCUFRIUkVBRFBPT0xf
VkVSU0lPTj03NjA0MjE1NWE4YjFlMTg5YzhmMTQxNDI5ZmQ3MjIxOTQ3MmMzMmUxCitMSUJQVEhS
RUFEUE9PTF9VUkw9aHR0cHM6Ly9naXRodWIuY29tL01hcmF0eXN6Y3phL3B0aHJlYWRwb29sL2Fy
Y2hpdmUvJChMSUJQVEhSRUFEUE9PTF9WRVJTSU9OKS56aXAKIExJQlBUSFJFQURQT09MX1BBVENI
RElSPSQoTElCUFRIUkVBRFBPT0xfQkFTRSkvcGF0Y2hlcwogJChldmFsICQoY2FsbCBmZXRjaCxs
aWJwdGhyZWFkcG9vbCwkKExJQlBUSFJFQURQT09MX1VSTCkpKQogCiAjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIwogIyBIZWxwZXJzCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotTElCUFRIUkVBRFBP
T0xfU1VCRElSPXB0aHJlYWRwb29sLW1hc3RlcgorTElCUFRIUkVBRFBPT0xfU1VCRElSPXB0aHJl
YWRwb29sLSQoTElCUFRIUkVBRFBPT0xfVkVSU0lPTikKIExJQlBUSFJFQURQT09MX1NSQz0kKExJ
QlBUSFJFQURQT09MX09SSUdJTikvJChMSUJQVEhSRUFEUE9PTF9TVUJESVIpCiAKICMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjCi0tIAoyLjIwLjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZl
bEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxt
YW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Thu Apr 02 09:45:01 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 02 Apr 2020 09: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 1jJwPF-0006Vl-D6; Thu, 02 Apr 2020 09:45:01 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=RS4R=5S=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1jJwPE-0006Vf-3k
 for minios-devel@lists.xen.org; Thu, 02 Apr 2020 09:45:00 +0000
X-Inumbo-ID: 9e12280a-74c6-11ea-b4f4-bc764e2007e4
Received: from queen.nlehd.de (unknown [195.37.154.80])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTP
 id 9e12280a-74c6-11ea-b4f4-bc764e2007e4;
 Thu, 02 Apr 2020 09:44:59 +0000 (UTC)
Received: from localhost (c431.ant-net [192.168.0.36])
 by queen.nlehd.de (Postfix) with ESMTP id 0981441343;
 Thu,  2 Apr 2020 11:44:59 +0200 (CEST)
From: Felipe Huici <felipe.huici@neclab.eu>
To: minios-devel@lists.xen.org
Date: Thu,  2 Apr 2020 11:44:58 +0200
Message-Id: <20200402094458.17745-1-felipe.huici@neclab.eu>
X-Mailer: git-send-email 2.20.1
MIME-Version: 1.0
Subject: [Minios-devel] [UNIKRAFT/NNPACK PATCH] Update dependency name to
 LIBPOSIX_SYSINFO
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>
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>

VGhlIGludGVybmFsIGxpYnJhcnkgVUtTWVNJTkZPIGhhcyBiZWVuIHJlbmFtZWQgdG8gTElCUE9T
SVhfU1lTSU5GTzsKdGhpcyBwYXRjaCB1cGRhdGVzIENvbmZpZy51ayB0byBtYXRjaCB0aGlzIGNo
YW5nZS4KClNpZ25lZC1vZmYtYnk6IEZlbGlwZSBIdWljaSA8ZmVsaXBlLmh1aWNpQG5lY2xhYi5l
dT4KLS0tCiBDb25maWcudWsgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyks
IDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9Db25maWcudWsgYi9Db25maWcudWsKaW5kZXgg
ZGE4YjY3NS4uZGRjYjcwMyAxMDA2NDQKLS0tIGEvQ29uZmlnLnVrCisrKyBiL0NvbmZpZy51awpA
QCAtNCw3ICs0LDcgQEAgbWVudWNvbmZpZyBMSUJOTlBBQ0sKIAlzZWxlY3QgTElCUFRIUkVBRF9F
TUJFRERFRAogCXNlbGVjdCBDWFhfVEhSRUFEUwogCXNlbGVjdCBMSUJQT1NJWF9VU0VSCi0Jc2Vs
ZWN0IFVLU1lTSU5GTworCXNlbGVjdCBMSUJQT1NJWF9TWVNJTkZPCiAJc2VsZWN0IExJQklOVEVM
X0lOVFJJTlNJQ1MKIAlzZWxlY3QgTElCRlAxNgogCXNlbGVjdCBMSUJGWERJVgotLSAKMi4yMC4x
CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9z
LWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0
cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Thu Apr 02 15:26:03 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 02 Apr 2020 15:26: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 1jK1jF-0001xV-GW; Thu, 02 Apr 2020 15:26:01 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=z5oR=5S=gmail.com=felipehuici@srs-us1.protection.inumbo.net>)
 id 1jK1jE-0001xQ-CT
 for minios-devel@lists.xen.org; Thu, 02 Apr 2020 15:26:00 +0000
X-Inumbo-ID: 40b7090c-74f6-11ea-9e09-bc764e2007e4
Received: from mail-vs1-xe43.google.com (unknown [2607:f8b0:4864:20::e43])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 40b7090c-74f6-11ea-9e09-bc764e2007e4;
 Thu, 02 Apr 2020 15:25:58 +0000 (UTC)
Received: by mail-vs1-xe43.google.com with SMTP id b5so2580267vsb.1
 for <minios-devel@lists.xen.org>; Thu, 02 Apr 2020 08:25:58 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=mime-version:references:in-reply-to:from:date:message-id:subject:to
 :cc; bh=dOSvCW0hpMzEsvJyfgX6Ss+v+11Gfj46mc145L1HCUU=;
 b=MeM7p2A0TD1YZAQOUlIcgY+VoKRiDLUgg48zDioZCTSJIp3UNDLgzDKitTVjZayqh+
 v7L1Dh0iso+t+AwLQHRwBK7iB/ah711Sn1g5F8q1ktyEYRR+Q3j69grJHZyqF9PEGNoc
 5fMl1EbkGZc2z5Q0cdZ3tD+bdTNp5MnU7jeD3e/33x8Sd5+vB2lwF3TF8AHzkSd4MXU/
 q4/1FYsRwXufuuhK26MwwEH0AJk2pldMzM6G8ATlqajLWeY3Stny5Ltjy1Bpw75n1mr7
 gbn2EDS6Js2yr7Z6JIPYATU1uNmKlR7P/JFhD5LFgbontq1EEGBEuHRKDIE+vDRebppm
 IGmA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:mime-version:references:in-reply-to:from:date
 :message-id:subject:to:cc;
 bh=dOSvCW0hpMzEsvJyfgX6Ss+v+11Gfj46mc145L1HCUU=;
 b=D2/5ZHLrLcNEkRpc4cLm8V18BQFPACBtbdfaqKVKJb0KfKOEA1cvCfWtwli/Sl9n93
 ZsknUALsLgaLpvhoMHFHORbbXEsHJ9Obf+o/CtthFSv9f7szVKFhxR4RlagN5aHeEQM1
 GIv0zpAC+143/0UHWR/O3xjxuQS65LypZneHnfyjhmpcT7MJU9k9PxTt28z8nBKw5oa6
 rhGdEytKzIQz4pxX3qOjzaqUg9J+Y2wxKsxEXa6AIztlQZ7OIV07mwrEsVXcvS/+80fC
 r0vxiowAxO1UxA6t7lU1cKZ+/iBX0rp1vIqjGdGMhQ5xHqOJy+AXPH3QkWgZS2esTUro
 Pv0w==
X-Gm-Message-State: AGi0PuaslT5kuYtU4fNToZTHvzoWxnEaRFykTQP/gmDYrYIIDi8wknvy
 V97tOOAnjnR423WjO3plB/+0JlbdUAktk/fVbfUq8i63jsk=
X-Google-Smtp-Source: APiQypLGohZ1vum32TNKzh9JSywd6zirPeA/fdUpxmiB3+POyqj7KCAyzYXgbscE1tE6u7sjJGEaJBxLsuaYZWVa0sY=
X-Received: by 2002:a67:b01:: with SMTP id 1mr2844056vsl.181.1585841157952;
 Thu, 02 Apr 2020 08:25:57 -0700 (PDT)
MIME-Version: 1.0
References: <20200331100658.31057-1-simon.kuenzer@neclab.eu>
 <20200331100658.31057-2-simon.kuenzer@neclab.eu>
In-Reply-To: <20200331100658.31057-2-simon.kuenzer@neclab.eu>
From: "felipehuici ." <felipehuici@gmail.com>
Date: Thu, 2 Apr 2020 17:25:46 +0200
Message-ID: <CAEX4t-MZQJPYHqVkDGDR56u+nMuNYapfVTMz7qs0WuJbDpEXTQ@mail.gmail.com>
To: Simon Kuenzer <simon.kuenzer@neclab.eu>
Subject: Re: [Minios-devel] [UNIKRAFT/ZYDIS PATCH 1/3] Introduce library
 skeleton
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>, 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>

SGkgU2ltb24sIHRoYW5rcyBmb3IgdGhlc2UgcGF0Y2hlcywgZ29vZCB0byBzZWUgbW9yZSBkZWJ1
Z2dpbmcKZmFjaWxpdGllcyBpbiBVbmlrcmFmdC4KClJldmlld2VkLWJ5OiBGZWxpcGUgSHVpY2kg
PGZlbGlwZS5odWljaUBuZWNsYWIuZXU+CgpPbiBUdWUsIE1hciAzMSwgMjAyMCBhdCAxMjowNyBQ
TSBTaW1vbiBLdWVuemVyIDxzaW1vbi5rdWVuemVyQG5lY2xhYi5ldT4gd3JvdGU6Cj4KPiBXZSB1
c2UgdGhlIEJTRC0zLUNsYXVzZSBsaWNlbnNlIGZvciBsaWJyYXJ5IGdsdWUgY29kZS4KPgo+IFNp
Z25lZC1vZmYtYnk6IFNpbW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJAbmVjbGFiLmV1Pgo+IC0t
LQo+ICAuZ2l0aWdub3JlICAgICAgfCAyNyArKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAg
Q09ESU5HX1NUWUxFLm1kIHwgIDQgKysrKwo+ICBDT05UUklCVVRJTkcubWQgfCAgNCArKysrCj4g
IENPUFlJTkcubWQgICAgICB8IDM4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrCj4gIE1BSU5UQUlORVJTLm1kICB8IDEwICsrKysrKysrKysKPiAgUkVBRE1FLm1kICAgICAg
IHwgIDggKysrKysrKysKPiAgNiBmaWxlcyBjaGFuZ2VkLCA5MSBpbnNlcnRpb25zKCspCj4gIGNy
ZWF0ZSBtb2RlIDEwMDY0NCAuZ2l0aWdub3JlCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBDT0RJTkdf
U1RZTEUubWQKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IENPTlRSSUJVVElORy5tZAo+ICBjcmVhdGUg
bW9kZSAxMDA2NDQgQ09QWUlORy5tZAo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgTUFJTlRBSU5FUlMu
bWQKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IFJFQURNRS5tZAo+Cj4gZGlmZiAtLWdpdCBhLy5naXRp
Z25vcmUgYi8uZ2l0aWdub3JlCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAw
Li43NWQyZmQzCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiLy5naXRpZ25vcmUKPiBAQCAtMCwwICsx
LDI3IEBACj4gKyouZGVwZW5kCj4gKyoubwo+ICsqLmEKPiArKi5kCj4gKyouc28KPiArKi5vcmln
Cj4gKyoucmVqCj4gKyouYmFrCj4gKyouc3dwCj4gKyp+Cj4gKywqCj4gK1wjKlwjCj4gKy5cIyoK
PiArXCNfKlwjCj4gKy5cI18qCj4gKyEuZ2l0aWdub3JlCj4gKy4qCj4gKwo+ICsjIGdudSBnbG9i
YWwgZmlsZXMKPiArR1BBVEgKPiArR1JUQUdTCj4gK0dTWU1TCj4gK0dUQUdTCj4gKwo+ICsjIGNz
Y29wZSBmaWxlcwo+ICtjc2NvcGUuKgo+ICtuY3Njb3BlLioKPiBkaWZmIC0tZ2l0IGEvQ09ESU5H
X1NUWUxFLm1kIGIvQ09ESU5HX1NUWUxFLm1kCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRl
eCAwMDAwMDAwLi41NzMwMDQxCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL0NPRElOR19TVFlMRS5t
ZAo+IEBAIC0wLDAgKzEsNCBAQAo+ICtDb2RpbmcgU3R5bGUKPiArPT09PT09PT09PT09Cj4gKwo+
ICtQbGVhc2UgcmVmZXIgdG8gdGhlIGBDT0RJTkdfU1RZTEUubWRgIGZpbGUgaW4gdGhlIG1haW4g
VW5pa3JhZnQgcmVwb3NpdG9yeS4KPiBkaWZmIC0tZ2l0IGEvQ09OVFJJQlVUSU5HLm1kIGIvQ09O
VFJJQlVUSU5HLm1kCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi4xNGY2
YWM2Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL0NPTlRSSUJVVElORy5tZAo+IEBAIC0wLDAgKzEs
NCBAQAo+ICtDb250cmlidXRpbmcgdG8gVW5pa3JhZnQKPiArPT09PT09PT09PT09PT09PT09PT09
PT09Cj4gKwo+ICtQbGVhc2UgcmVmZXIgdG8gdGhlIGBDT05UUklCVVRJTkcubWRgIGZpbGUgaW4g
dGhlIG1haW4gVW5pa3JhZnQgcmVwb3NpdG9yeS4KPiBkaWZmIC0tZ2l0IGEvQ09QWUlORy5tZCBi
L0NPUFlJTkcubWQKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLjc3ZDAz
OTUKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvQ09QWUlORy5tZAo+IEBAIC0wLDAgKzEsMzggQEAK
PiArTGljZW5zZQo+ICs9PT09PT09Cj4gKwo+ICtVbmlrcmFmdCBaeURpcyB3cmFwcGVycwo+ICst
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICsKPiArVGhpcyByZXBvc2l0b3J5IGNvbnRhaW5zIHdy
YXBwZXIgY29kZSB0byBidWlsZCBaeURpcyB3aXRoIFVuaWtyYWZ0Lgo+ICtFYWNoIEMgY29kZSBm
aWxlIGluIHRoaXMgcmVwb3NpdG9yeSBzaG91bGQgZGVjbGFyZSB3aG8gaXMgdGhlCj4gK2NvcHly
aWdodCBvd25lciBhbmQgdW5kZXIgd2hpY2ggdGVybXMgYW5kIGNvbmRpdGlvbnMgdGhlIGNvZGUg
aXMKPiArbGljZW5zZWQuIElmIHN1Y2ggYSBsaWNlbmNlIG5vdGUgaXMgbWlzc2luZywgdGhlIGZv
bGxvd2luZyBjb3B5cmlnaHQKPiArbm90aWNlIHdpbGwgYXBwbHk6Cj4gKwo+ICsgICAgICAgQ29w
eXJpZ2h0IChjKSAyMDIwLCBORUMgRXVyb3BlIEx0ZC4sIE5FQyBDb3Jwb3JhdGlvbi4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KPiArCj4gKyAgICAgICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKPiArICAgICAgIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwo+ICsgICAgICAgYXJlIG1ldDoKPiArCj4gKyAgICAgICAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAo+ICsgICAgICAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgo+ICsgICAgICAgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKPiArICAgICAgICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKPiArICAg
ICAgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCj4gKyAgICAgICAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBj
b3B5cmlnaHQgaG9sZGVyIG5vciB0aGUgbmFtZXMgb2YgaXRzCj4gKyAgICAgICAgICBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQo+ICsgICAgICAgICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KPiArCj4gKyAgICAgICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKPiArICAg
ICAgIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKPiArICAgICAgIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCj4gKyAgICAg
ICBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIg
T1IgQ09OVFJJQlVUT1JTIEJFCj4gKyAgICAgICBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCj4gKyAgICAgICBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgo+ICsgICAgICAgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCj4gKyAgICAgICBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgo+
ICsgICAgICAgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKPiArICAgICAgIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCj4gKyAg
ICAgICBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KPiBkaWZmIC0tZ2l0IGEvTUFJTlRBSU5F
UlMubWQgYi9NQUlOVEFJTkVSUy5tZAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAw
MDAwMC4uNDFjNzZiOAo+IC0tLSAvZGV2L251bGwKPiArKysgYi9NQUlOVEFJTkVSUy5tZAo+IEBA
IC0wLDAgKzEsMTAgQEAKPiArTWFpbnRhaW5lcnMgTGlzdAo+ICs9PT09PT09PT09PT09PT09Cj4g
Kwo+ICtGb3Igbm90ZXMgb24gaG93IHRvIHJlYWQgdGhpcyBpbmZvcm1hdGlvbiwgcGxlYXNlIHJl
ZmVyIHRvIGBNQUlOVEFJTkVSUy5tZGAgaW4KPiArdGhlIG1haW4gVW5pa3JhZnQgcmVwb3NpdG9y
eS4KPiArCj4gKyAgICAgICBMSUJaWURJUy1VTklLUkFGVAo+ICsgICAgICAgTTogICAgICBTaW1v
biBLdWVuemVyIDxzaW1vbi5rdWVuemVyQG5lY2xhYi5ldT4KPiArICAgICAgIEw6ICAgICAgbWlu
aW9zLWRldmVsQGxpc3RzLnhlbi5vcmcKPiArICAgICAgIEY6ICoKPiBkaWZmIC0tZ2l0IGEvUkVB
RE1FLm1kIGIvUkVBRE1FLm1kCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAw
Li42MDRjMWM2Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL1JFQURNRS5tZAo+IEBAIC0wLDAgKzEs
OCBAQAo+ICtsaWJ6eWRpcyBmb3IgVW5pa3JhZnQKPiArPT09PT09PT09PT09PT09PT09PT09Cj4g
K1RoaXMgaXMgYSBwb3J0IG9mIFp5RGlzICh0aGUgdWx0aW1hdGUsIG9wZW4tc291cmNlIFg4NiAm
IFg4Ni02NAo+ICtkZWNvZGVyL2Rpc2Fzc2VtYmxlciBsaWJyYXJ5KSB0byBVbmlrcmFmdC4KPiAr
Cj4gK1BsZWFzZSByZWZlciB0byB0aGUgYFJFQURNRS5tZGAsIHRoZSBkb2N1bWVudGF0aW9uIGlu
IHRoZSBgZG9jL2AKPiArc3ViZGlyZWN0b3J5IG9mIHRoZSBtYWluIHVuaWtyYWZ0IHJlcG9zaXRv
cnksIGFuZCBgaHR0cHM6Ly96eWRpcy5yZS9gCj4gK2ZvciBmdXJ0aGVyIGluZm9ybWF0aW9uLgo+
IC0tCj4gMi4yMC4xCj4KPgo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fCj4gTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdAo+IE1pbmlvcy1kZXZlbEBsaXN0
cy54ZW5wcm9qZWN0Lm9yZwo+IGh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9s
aXN0aW5mby9taW5pb3MtZGV2ZWwKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3Rz
LnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0
aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Thu Apr 02 15:26:16 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 02 Apr 2020 15:26: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 1jK1jU-0001yt-JE; Thu, 02 Apr 2020 15:26:16 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=z5oR=5S=gmail.com=felipehuici@srs-us1.protection.inumbo.net>)
 id 1jK1jT-0001yn-Ts
 for minios-devel@lists.xen.org; Thu, 02 Apr 2020 15:26:15 +0000
X-Inumbo-ID: 4aa63faa-74f6-11ea-b58d-bc764e2007e4
Received: from mail-vk1-xa41.google.com (unknown [2607:f8b0:4864:20::a41])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 4aa63faa-74f6-11ea-b58d-bc764e2007e4;
 Thu, 02 Apr 2020 15:26:15 +0000 (UTC)
Received: by mail-vk1-xa41.google.com with SMTP id b187so970973vkh.12
 for <minios-devel@lists.xen.org>; Thu, 02 Apr 2020 08:26:15 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=mime-version:references:in-reply-to:from:date:message-id:subject:to
 :cc; bh=XqC50Bj1mHXfmksR0IxtgRCa5QnzKVVjub4yhEo9XfA=;
 b=X7Ch2sGTwOy7VEU+H1s6xTjHyBzv9JsaZTehZldfm5S6efHuAoOg4/eDzz1r5sAKUY
 3Qi6yXbGGFypRDB46Pe0azuxX8mFUxMXJc+BXKGKyp0J2VUe37WUuyTMBpR6qsc2mhud
 nBSPc5whbw/8MG7t9gMd76tDHtml1QXaoGv/D5OV/mqv+fETA7yuKgJcR+mcjvJYsQXP
 gGm3MylW/et6jQGrAWfZJ7fruqat3TlQlz3AizY0YnQNA0URV0NKnUP8NfNN6fsyxLxw
 Wq2uz2GJR91YXCyJdpHqNOqe8wlnLTPAJW9e6o0rHJG/zJHmZOfjJNuZJnvlotZ0dTh4
 UXCQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:mime-version:references:in-reply-to:from:date
 :message-id:subject:to:cc;
 bh=XqC50Bj1mHXfmksR0IxtgRCa5QnzKVVjub4yhEo9XfA=;
 b=N3ve0E7DOAnQ8+563DCj8xNA4+Oq3eTL7pgz+0plMq264GzUVFwalgRZFkziLyX9mH
 fSzhcGWiihuNaLQQJMKOA/YuI9zek7xkb6szcnQeIajbel2Im9yomPNgPlSm7zJG5E9+
 w0bO0GvNj9JIDdUkj8E3KGwxaOH/s+ENf6ImulftG5BMBShRqLecy+QSUc2PvGcZbk4M
 Gi7iZBk7pUjXqCBzVBqa/vk7Vc66+4gIYevuG4Ls0MkpLIhtbhc6Q5LBJJ6/SoC34q6v
 2/g/kpNPsLHAfoAn/6BdSDmH2xWJ0mgIMW4Iltaqhy54eyZYg95AgfZAfiEm66aT0p7F
 2dkg==
X-Gm-Message-State: AGi0PuajtlXZV4Kb/DUNstuzgIZPIeOyQdFMKOo6rBmkqZas8Sj3RZ71
 G88s38g3i5qO1PHQL1imOVjQc8OwVMiVdTu0/T9JFe+7GAc=
X-Google-Smtp-Source: APiQypIiqhCmB4Z3WaS/FJuQOMUlsP4L+jRhD05rxnM4qCL5A7UJ6JnfLml0zupSfClzmud6MjRf77eH1YAsJf90Dsg=
X-Received: by 2002:a1f:ca04:: with SMTP id a4mr2671975vkg.65.1585841174829;
 Thu, 02 Apr 2020 08:26:14 -0700 (PDT)
MIME-Version: 1.0
References: <20200331100658.31057-1-simon.kuenzer@neclab.eu>
 <20200331100658.31057-3-simon.kuenzer@neclab.eu>
In-Reply-To: <20200331100658.31057-3-simon.kuenzer@neclab.eu>
From: "felipehuici ." <felipehuici@gmail.com>
Date: Thu, 2 Apr 2020 17:26:03 +0200
Message-ID: <CAEX4t-PVEkKNkyB1fPzoScr0yZAunfoZJ_CSXwHbUuGQ+j67Vw@mail.gmail.com>
To: Simon Kuenzer <simon.kuenzer@neclab.eu>
Subject: Re: [Minios-devel] [UNIKRAFT/ZYDIS PATCH 2/3] libzycorec: Core
 library needed by Zyan libraries
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>, 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>

UmV2aWV3ZWQtYnk6IEZlbGlwZSBIdWljaSA8ZmVsaXBlLmh1aWNpQG5lY2xhYi5ldT4KCk9uIFR1
ZSwgTWFyIDMxLCAyMDIwIGF0IDEyOjA3IFBNIFNpbW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJA
bmVjbGFiLmV1PiB3cm90ZToKPgo+IFRoZSBaeUNvcmVDIGxpYnJhcnkgcHJvdmlkZXMgcGxhdGZv
cm0gaW5kZXBlbmRlbnQgdHlwZXMgYW5kIG1hY3Jvcwo+IHVzZWQgYnkgZm9yIFp5YW4gbGlicmFy
aWVzLiBXZSB1c2UgdGhpcyBsaWJyYXJ5IG9ubHkgdG8gcHJvdmlkZSB0aGUKPiBkYXRhIHR5cGUg
ZGVmaW5pdGlvbnMgZm9yIGxpYnp5ZGlzLiBTaW5jZSB3ZSBoYXZlIGEgbGliYyAoaW5jbHVkaW5n
Cj4gbm9saWJjKSBpbiBVbmlrcmFmdCwgdGhlIHNvdXJjZSBmaWxlcyBhcmUgbm90IHJlcXVpcmVk
IHRvIGJlCj4gY29tcGlsZWQgaW4gb3VyIHVzZSBjYXNlLiBCZWNhdXNlIGxpYnp5ZGlzIHdpbGwg
YmUgdGhlIG9ubHkgbGlicmFyeQo+IHNvIGZhciB0aGF0IG5lZWRzIHRoZXNlIGhlYWRlcnMsIHdl
IGhpZGUgbGlienljb3JlYyBmcm9tIHRoZSBtZW51Lgo+Cj4gU2lnbmVkLW9mZi1ieTogU2ltb24g
S3VlbnplciA8c2ltb24ua3VlbnplckBuZWNsYWIuZXU+Cj4gLS0tCj4gIENvbmZpZy51ayAgICAg
ICAgICAgICAgICAgICAgfCAgNyArKysrKysKPiAgTWFrZWZpbGUudWsgICAgICAgICAgICAgICAg
ICB8IDM1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICBpbmNsdWRlL1p5Y29yZUV4
cG9ydENvbmZpZy5oIHwgNDIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4g
IDMgZmlsZXMgY2hhbmdlZCwgODQgaW5zZXJ0aW9ucygrKQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQg
Q29uZmlnLnVrCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBNYWtlZmlsZS51awo+ICBjcmVhdGUgbW9k
ZSAxMDA2NDQgaW5jbHVkZS9aeWNvcmVFeHBvcnRDb25maWcuaAo+Cj4gZGlmZiAtLWdpdCBhL0Nv
bmZpZy51ayBiL0NvbmZpZy51awo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAw
MC4uNTA4YjhmMgo+IC0tLSAvZGV2L251bGwKPiArKysgYi9Db25maWcudWsKPiBAQCAtMCwwICsx
LDcgQEAKPiArIyBJbnZpc2libGUgbGlicmFyeSBjb25maWd1cmF0aW9uIGZvciBsaWJ6eWNvcmUt
YywgdGhlIFp5YW4gQ29yZSBMaWJyYXJ5IGZvciBDCj4gK2NvbmZpZyBMSUJaWUNPUkVDCj4gKyAg
ICAgICBib29sCj4gKyAgICAgICBkZWZhdWx0IG4KPiArICAgICAgIGRlcGVuZHMgb24gQVJDSF9Y
ODZfMzIgfHwgQVJDSF9YODZfNjQKPiArICAgICAgIHNlbGVjdCBMSUJOT0xJQkMgaWYgIUhBVkVf
TElCQwo+ICsgICAgICAgc2VsZWN0IExJQlVLVElNRSBpZiAhSEFWRV9MSUJDCj4gZGlmZiAtLWdp
dCBhL01ha2VmaWxlLnVrIGIvTWFrZWZpbGUudWsKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGlu
ZGV4IDAwMDAwMDAuLmNhYTNkMDkKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvTWFrZWZpbGUudWsK
PiBAQCAtMCwwICsxLDM1IEBACj4gKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICsjICBaeWNvcmVDCj4gKyMgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICsKPiArJChldmFsICQo
Y2FsbCBhZGRsaWJfcyxsaWJ6eWNvcmVjLCQoQ09ORklHX0xJQlpZQ09SRUMpKSkKPiArCj4gK0xJ
QlpZQ09SRUNfQ09NTUlUPTQ4MjI5OGFlY2I1OTA3MmY2MTdmZThjNTNiOTFhZmQyNTJlZjEwNTgK
PiArTElCWllDT1JFQ19VUkw9aHR0cHM6Ly9naXRodWIuY29tL3p5YW50aWZpYy96eWNvcmUtYy9h
cmNoaXZlLyQoTElCWllDT1JFQ19DT01NSVQpLnRhci5nego+ICsKPiArJChldmFsICQoY2FsbCBm
ZXRjaCxsaWJ6eWNvcmVjLCQoTElCWllDT1JFQ19VUkwpKSkKPiArCj4gK0xJQlpZQ09SRUNfRVhU
UkFDVEVEPSQoTElCWllDT1JFQ19PUklHSU4pL3p5Y29yZS1jLSQoTElCWllDT1JFQ19DT01NSVQp
Cj4gK0xJQlpZQ09SRUNfU09VUkNFUz0kKExJQlpZQ09SRUNfRVhUUkFDVEVEKS9zcmMKPiArTElC
WllDT1JFQ19JTkNMVURFUz0kKExJQlpZQ09SRUNfRVhUUkFDVEVEKS9pbmNsdWRlCj4gK0xJQlpZ
Q09SRUNfQ09NUEZMQUdTLXk9LVduby1pbXBsaWNpdC1mYWxsdGhyb3VnaAo+ICsKPiArQ0lOQ0xV
REVTLSQoQ09ORklHX0xJQlpZQ09SRUMpICs9IC1JJChMSUJaWUNPUkVDX0JBU0UpL2luY2x1ZGUK
PiArQ0lOQ0xVREVTLSQoQ09ORklHX0xJQlpZQ09SRUMpICs9IC1JJChMSUJaWUNPUkVDX0lOQ0xV
REVTKQo+ICsKPiArIwo+ICsjIE5PVEU6IFdlIHVzZSB0aGUgb25seSBoZWFkZXJzIG9mIHRoaXMg
bGlicmFyeSBmb3Igbm93Cj4gKyMKPiArCj4gKyNMSUJaWUNPUkVDX1NSQ1MteSArPSAkKExJQlpZ
Q09SRUNfU09VUkNFUykvQWxsb2NhdG9yLmMKPiArI0xJQlpZQ09SRUNfU1JDUy15ICs9ICQoTElC
WllDT1JFQ19TT1VSQ0VTKS9BcmdQYXJzZS5jCj4gKyNMSUJaWUNPUkVDX1NSQ1MteSArPSAkKExJ
QlpZQ09SRUNfU09VUkNFUykvQml0c2V0LmMKPiArI0xJQlpZQ09SRUNfU1JDUy15ICs9ICQoTElC
WllDT1JFQ19TT1VSQ0VTKS9Gb3JtYXQuYwo+ICsjTElCWllDT1JFQ19TUkNTLXkgKz0gJChMSUJa
WUNPUkVDX1NPVVJDRVMpL0xpc3QuYwo+ICsjTElCWllDT1JFQ19TUkNTLXkgKz0gJChMSUJaWUNP
UkVDX1NPVVJDRVMpL1N0cmluZy5jCj4gKyNMSUJaWUNPUkVDX1NSQ1MteSArPSAkKExJQlpZQ09S
RUNfU09VUkNFUykvVmVjdG9yLmMKPiArI0xJQlpZQ09SRUNfU1JDUy15ICs9ICQoTElCWllDT1JF
Q19TT1VSQ0VTKS9aeWNvcmUuYwo+ICsjTElCWllDT1JFQ19TUkNTLXkgKz0gJChMSUJaWUNPUkVD
X1NPVVJDRVMpL0FQSS9NZW1vcnkuYwo+ICsjTElCWllDT1JFQ19TUkNTLSQoQ09ORklHX0xJQlBU
SFJFQURfRU1CRURERUQpICs9ICQoTElCWllDT1JFQ19TT1VSQ0VTKS9BUEkvU3luY2hyb25pemF0
aW9uLmMKPiArI0xJQlpZQ09SRUNfU1JDUy0kKENPTkZJR19MSUJQVEhSRUFEX0VNQkVEREVEKSAr
PSAkKExJQlpZQ09SRUNfU09VUkNFUykvQVBJL1RocmVhZC5jCj4gKyNMSUJaWUNPUkVDX1NSQ1Mt
JChDT05GSUdfTElCVkZTQ09SRSkgKz0gJChMSUJaWUNPUkVDX1NPVVJDRVMpL0FQSS9UZXJtaW5h
bC5jCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvWnljb3JlRXhwb3J0Q29uZmlnLmggYi9pbmNsdWRl
L1p5Y29yZUV4cG9ydENvbmZpZy5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAw
MDAwLi45ZDE1NWE3Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2luY2x1ZGUvWnljb3JlRXhwb3J0
Q29uZmlnLmgKPiBAQCAtMCwwICsxLDQyIEBACj4gKwo+ICsjaWZuZGVmIFpZQ09SRV9FWFBPUlRf
SAo+ICsjZGVmaW5lIFpZQ09SRV9FWFBPUlRfSAo+ICsKPiArI2lmZGVmIFpZQ09SRV9TVEFUSUNf
REVGSU5FCj4gKyMgIGRlZmluZSBaWUNPUkVfRVhQT1JUCj4gKyMgIGRlZmluZSBaWUNPUkVfTk9f
RVhQT1JUCj4gKyNlbHNlCj4gKyMgIGlmbmRlZiBaWUNPUkVfRVhQT1JUCj4gKyMgICAgaWZkZWYg
Wnljb3JlX0VYUE9SVFMKPiArICAgICAgICAvKiBXZSBhcmUgYnVpbGRpbmcgdGhpcyBsaWJyYXJ5
ICovCj4gKyMgICAgICBkZWZpbmUgWllDT1JFX0VYUE9SVAo+ICsjICAgIGVsc2UKPiArICAgICAg
ICAvKiBXZSBhcmUgdXNpbmcgdGhpcyBsaWJyYXJ5ICovCj4gKyMgICAgICBkZWZpbmUgWllDT1JF
X0VYUE9SVAo+ICsjICAgIGVuZGlmCj4gKyMgIGVuZGlmCj4gKwo+ICsjICBpZm5kZWYgWllDT1JF
X05PX0VYUE9SVAo+ICsjICAgIGRlZmluZSBaWUNPUkVfTk9fRVhQT1JUCj4gKyMgIGVuZGlmCj4g
KyNlbmRpZgo+ICsKPiArI2lmbmRlZiBaWUNPUkVfREVQUkVDQVRFRAo+ICsjICBkZWZpbmUgWllD
T1JFX0RFUFJFQ0FURUQgX19hdHRyaWJ1dGVfXyAoKF9fZGVwcmVjYXRlZF9fKSkKPiArI2VuZGlm
Cj4gKwo+ICsjaWZuZGVmIFpZQ09SRV9ERVBSRUNBVEVEX0VYUE9SVAo+ICsjICBkZWZpbmUgWllD
T1JFX0RFUFJFQ0FURURfRVhQT1JUIFpZQ09SRV9FWFBPUlQgWllDT1JFX0RFUFJFQ0FURUQKPiAr
I2VuZGlmCj4gKwo+ICsjaWZuZGVmIFpZQ09SRV9ERVBSRUNBVEVEX05PX0VYUE9SVAo+ICsjICBk
ZWZpbmUgWllDT1JFX0RFUFJFQ0FURURfTk9fRVhQT1JUIFpZQ09SRV9OT19FWFBPUlQgWllDT1JF
X0RFUFJFQ0FURUQKPiArI2VuZGlmCj4gKwo+ICsjaWYgMCAvKiBERUZJTkVfTk9fREVQUkVDQVRF
RCAqLwo+ICsjICBpZm5kZWYgWllDT1JFX05PX0RFUFJFQ0FURUQKPiArIyAgICBkZWZpbmUgWllD
T1JFX05PX0RFUFJFQ0FURUQKPiArIyAgZW5kaWYKPiArI2VuZGlmCj4gKwo+ICsjZW5kaWYgLyog
WllDT1JFX0VYUE9SVF9IICovCj4gLS0KPiAyLjIwLjEKPgo+Cj4gX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0
Cj4gTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCj4gaHR0cHM6Ly9saXN0cy54ZW5w
cm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbAoKX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlz
dApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9q
ZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Thu Apr 02 15:26:28 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 02 Apr 2020 15:26: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 1jK1jg-0001zi-LO; Thu, 02 Apr 2020 15:26:28 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=z5oR=5S=gmail.com=felipehuici@srs-us1.protection.inumbo.net>)
 id 1jK1jg-0001za-0b
 for minios-devel@lists.xen.org; Thu, 02 Apr 2020 15:26:28 +0000
X-Inumbo-ID: 51e6b6a0-74f6-11ea-b4f4-bc764e2007e4
Received: from mail-vk1-xa43.google.com (unknown [2607:f8b0:4864:20::a43])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 51e6b6a0-74f6-11ea-b4f4-bc764e2007e4;
 Thu, 02 Apr 2020 15:26:27 +0000 (UTC)
Received: by mail-vk1-xa43.google.com with SMTP id s194so973222vkb.11
 for <minios-devel@lists.xen.org>; Thu, 02 Apr 2020 08:26:27 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=mime-version:references:in-reply-to:from:date:message-id:subject:to
 :cc; bh=71XxG938UFeU5yU5xcMZTXNALpf6cVw3l1rLQkSvyuM=;
 b=Xrh/cYrOf4afAu+Trm5IFCzfy7CNqNXPL4xGeaQt4/QGYaB8uJNGKzTRbPKae4dBug
 vZCM6KMXliEQ0Z99+5QpXRXJ1NzvHAN4W6p3spjxMjV5HHrBwpYXqw2XOfv/1kmVY1gj
 19LVpM95xUoy0z2pdb0ER2DZ27/8ArqmCVLjtlqXo9s1N3IquddXggXLoTbGVyBYX8uK
 U3x1U3+iQbf236DuqNAnEdqtt8VLFTkniQMmDvPk86a9oGK7Fu/Z+rDDaAbTJMd/HOxs
 DlT+CBYryVGNCEiQeb+ab6toMsDzr4sxYVdKbRN5J4vF1S0DylVdIr5bMnJUkr/K4gpa
 nybQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:mime-version:references:in-reply-to:from:date
 :message-id:subject:to:cc;
 bh=71XxG938UFeU5yU5xcMZTXNALpf6cVw3l1rLQkSvyuM=;
 b=s/HV1u9uOX1S06WqGGiHEg5cWbmQ3xqYKdDdgLBs03tz49DoXtNk3gGURYqFfsLTjK
 jvl/17bcf6mdHMr/+KHQt/RMUQCLPGtvSOnxPzT2Aa5XcUHQ6+uONbaLr4dMJ2ayqGQU
 I64u8YRpGnk1mGaUK7mAAuHaFGx6iPwNtbmVD2mGFm2N5NuBc7b90po/jlpSiMdLu7kr
 614hgaihp12cLPPOvsRnLXh0jUyq/cXcYbkixWidfWmVUwhgEiHXjsf8RWmluId89C0i
 nFqySenVdKGniNpbUp7ymoW5arz9ZUhPtB1vVQxJwJws/m5Z2SrCaAIMJk1HqHAJzaG9
 8k6g==
X-Gm-Message-State: AGi0PuYdmMA/agVU84bfDVWStb/dmurPDj2jLI5s9pzYhqFFmDp+2eKa
 ys3yj1CCt7a021Kr5d08gB4Fc6PChc4SYP4je/Ea0+Cl2Fs=
X-Google-Smtp-Source: APiQypIBfybC6i5IKZSUHKVQq0SsrvvegaQg8bKOYEDFXBKVhduepmSQYo5DgNpuKMBreWAy9AoVmxhyo7ImFb6pSKU=
X-Received: by 2002:a1f:728a:: with SMTP id n132mr2574930vkc.1.1585841187027; 
 Thu, 02 Apr 2020 08:26:27 -0700 (PDT)
MIME-Version: 1.0
References: <20200331100658.31057-1-simon.kuenzer@neclab.eu>
 <20200331100658.31057-4-simon.kuenzer@neclab.eu>
In-Reply-To: <20200331100658.31057-4-simon.kuenzer@neclab.eu>
From: "felipehuici ." <felipehuici@gmail.com>
Date: Thu, 2 Apr 2020 17:26:15 +0200
Message-ID: <CAEX4t-NT-SUFwo+oMdQF=Bay-Rc+HnyvKenW-vHvNxYu7NByFw@mail.gmail.com>
To: Simon Kuenzer <simon.kuenzer@neclab.eu>
Subject: Re: [Minios-devel] [UNIKRAFT/ZYDIS PATCH 3/3] libzydis:
 Disassembler library port
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>, 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>

UmV2aWV3ZWQtYnk6IEZlbGlwZSBIdWljaSA8ZmVsaXBlLmh1aWNpQG5lY2xhYi5ldT4KCk9uIFR1
ZSwgTWFyIDMxLCAyMDIwIGF0IDEyOjA3IFBNIFNpbW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJA
bmVjbGFiLmV1PiB3cm90ZToKPgo+IEludHJvZHVjZXMgYSBwb3J0IG9mIFp5RGlzIHRvIFVuaWty
YWZ0Cj4KPiBTaWduZWQtb2ZmLWJ5OiBTaW1vbiBLdWVuemVyIDxzaW1vbi5rdWVuemVyQG5lY2xh
Yi5ldT4KPiAtLS0KPiAgQ29uZmlnLnVrICAgICAgICAgICAgICAgICAgIHwgMTAgKysrKysrKysr
Cj4gIE1ha2VmaWxlLnVrICAgICAgICAgICAgICAgICB8IDM0ICsrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKwo+ICBpbmNsdWRlL1p5ZGlzRXhwb3J0Q29uZmlnLmggfCA0MiArKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gIDMgZmlsZXMgY2hhbmdlZCwgODYgaW5zZXJ0
aW9ucygrKQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9aeWRpc0V4cG9ydENvbmZpZy5o
Cj4KPiBkaWZmIC0tZ2l0IGEvQ29uZmlnLnVrIGIvQ29uZmlnLnVrCj4gaW5kZXggNTA4YjhmMi4u
NmE3ZWJjNyAxMDA2NDQKPiAtLS0gYS9Db25maWcudWsKPiArKysgYi9Db25maWcudWsKPiBAQCAt
NSwzICs1LDEzIEBAIGNvbmZpZyBMSUJaWUNPUkVDCj4gICAgICAgICBkZXBlbmRzIG9uIEFSQ0hf
WDg2XzMyIHx8IEFSQ0hfWDg2XzY0Cj4gICAgICAgICBzZWxlY3QgTElCTk9MSUJDIGlmICFIQVZF
X0xJQkMKPiAgICAgICAgIHNlbGVjdCBMSUJVS1RJTUUgaWYgIUhBVkVfTElCQwo+ICsKPiArY29u
ZmlnIExJQlpZRElTCj4gKyAgICAgICBib29sICJsaWJ6eWRpczogeDg2L3g4Ni02NCBkaXNhc3Nl
bWJsZXIiCj4gKyAgICAgICBkZWZhdWx0IG4KPiArICAgICAgIGRlcGVuZHMgb24gQVJDSF9YODZf
MzIgfHwgQVJDSF9YODZfNjQKPiArICAgICAgIHNlbGVjdCBMSUJOT0xJQkMgaWYgIUhBVkVfTElC
Qwo+ICsgICAgICAgc2VsZWN0IExJQlVLVElNRSBpZiAhSEFWRV9MSUJDCj4gKyAgICAgICBzZWxl
Y3QgTElCWllDT1JFQwo+ICsgICAgICAgaGVscAo+ICsgICAgICAgICAgICAgICBGYXN0IGFuZCBs
aWdodHdlaWdodCBvcGVuLXNvdXJjZSB4ODYveDg2LTY0IGRpc2Fzc2VtYmxlciBsaWJyYXJ5OiBo
dHRwczovL3p5ZGlzLnJlLwo+IGRpZmYgLS1naXQgYS9NYWtlZmlsZS51ayBiL01ha2VmaWxlLnVr
Cj4gaW5kZXggY2FhM2QwOS4uZjBkNDQwMyAxMDA2NDQKPiAtLS0gYS9NYWtlZmlsZS51awo+ICsr
KyBiL01ha2VmaWxlLnVrCj4gQEAgLTMzLDMgKzMzLDM3IEBAIENJTkNMVURFUy0kKENPTkZJR19M
SUJaWUNPUkVDKSAgICAgICArPSAtSSQoTElCWllDT1JFQ19JTkNMVURFUykKPiAgI0xJQlpZQ09S
RUNfU1JDUy0kKENPTkZJR19MSUJQVEhSRUFEX0VNQkVEREVEKSArPSAkKExJQlpZQ09SRUNfU09V
UkNFUykvQVBJL1N5bmNocm9uaXphdGlvbi5jCj4gICNMSUJaWUNPUkVDX1NSQ1MtJChDT05GSUdf
TElCUFRIUkVBRF9FTUJFRERFRCkgKz0gJChMSUJaWUNPUkVDX1NPVVJDRVMpL0FQSS9UaHJlYWQu
Ywo+ICAjTElCWllDT1JFQ19TUkNTLSQoQ09ORklHX0xJQlZGU0NPUkUpICs9ICQoTElCWllDT1JF
Q19TT1VSQ0VTKS9BUEkvVGVybWluYWwuYwo+ICsKPiArIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gKyMgIFp5RGlzCj4gKyMgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICsKPiAr
JChldmFsICQoY2FsbCBhZGRsaWJfcyxsaWJ6eWRpcywkKENPTkZJR19MSUJaWURJUykpKQo+ICsK
PiArTElCWllESVNfVkVSU0lPTj0zLjAuMAo+ICtMSUJaWURJU19VUkw9aHR0cHM6Ly9naXRodWIu
Y29tL3p5YW50aWZpYy96eWRpcy9hcmNoaXZlL3YkKExJQlpZRElTX1ZFUlNJT04pLnRhci5nego+
ICsKPiArJChldmFsICQoY2FsbCBmZXRjaCxsaWJ6eWRpcywkKExJQlpZRElTX1VSTCkpKQo+ICsK
PiArTElCWllESVNfRVhUUkFDVEVEPSQoTElCWllESVNfT1JJR0lOKS96eWRpcy0kKExJQlpZRElT
X1ZFUlNJT04pCj4gK0xJQlpZRElTX1NPVVJDRVM9JChMSUJaWURJU19FWFRSQUNURUQpL3NyYwo+
ICtMSUJaWURJU19JTkNMVURFUz0kKExJQlpZRElTX0VYVFJBQ1RFRCkvaW5jbHVkZQo+ICtMSUJa
WURJU19DT01QRkxBR1MteT0tV25vLWltcGxpY2l0LWZhbGx0aHJvdWdoCj4gKwo+ICtDSU5DTFVE
RVMtJChDT05GSUdfTElCWllESVMpICAgKz0gLUkkKExJQlpZRElTX0lOQ0xVREVTKQo+ICtMSUJa
WURJU19DSU5DTFVERVMgICAgICAgICAgICAgKz0gLUkkKExJQlpZRElTX1NPVVJDRVMpCj4gKwo+
ICtMSUJaWURJU19TUkNTLXkgKz0gJChMSUJaWURJU19TT1VSQ0VTKS9EZWNvZGVyLmMKPiArTElC
WllESVNfU1JDUy15ICs9ICQoTElCWllESVNfU09VUkNFUykvRGVjb2RlckRhdGEuYwo+ICtMSUJa
WURJU19TUkNTLXkgKz0gJChMSUJaWURJU19TT1VSQ0VTKS9Gb3JtYXR0ZXIuYwo+ICtMSUJaWURJ
U19TUkNTLXkgKz0gJChMSUJaWURJU19TT1VSQ0VTKS9Gb3JtYXR0ZXJBVFQuYwo+ICtMSUJaWURJ
U19TUkNTLXkgKz0gJChMSUJaWURJU19TT1VSQ0VTKS9Gb3JtYXR0ZXJCYXNlLmMKPiArTElCWllE
SVNfU1JDUy15ICs9ICQoTElCWllESVNfU09VUkNFUykvRm9ybWF0dGVyQnVmZmVyLmMKPiArTElC
WllESVNfU1JDUy15ICs9ICQoTElCWllESVNfU09VUkNFUykvRm9ybWF0dGVySW50ZWwuYwo+ICtM
SUJaWURJU19TUkNTLXkgKz0gJChMSUJaWURJU19TT1VSQ0VTKS9NZXRhSW5mby5jCj4gK0xJQlpZ
RElTX1NSQ1MteSArPSAkKExJQlpZRElTX1NPVVJDRVMpL01uZW1vbmljLmMKPiArTElCWllESVNf
U1JDUy15ICs9ICQoTElCWllESVNfU09VUkNFUykvUmVnaXN0ZXIuYwo+ICtMSUJaWURJU19TUkNT
LXkgKz0gJChMSUJaWURJU19TT1VSQ0VTKS9TaGFyZWREYXRhLmMKPiArTElCWllESVNfU1JDUy15
ICs9ICQoTElCWllESVNfU09VUkNFUykvU3RyaW5nLmMKPiArTElCWllESVNfU1JDUy15ICs9ICQo
TElCWllESVNfU09VUkNFUykvVXRpbHMuYwo+ICtMSUJaWURJU19TUkNTLXkgKz0gJChMSUJaWURJ
U19TT1VSQ0VTKS9aeWRpcy5jCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvWnlkaXNFeHBvcnRDb25m
aWcuaCBiL2luY2x1ZGUvWnlkaXNFeHBvcnRDb25maWcuaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0
Cj4gaW5kZXggMDAwMDAwMC4uMmU3NTI0Mwo+IC0tLSAvZGV2L251bGwKPiArKysgYi9pbmNsdWRl
L1p5ZGlzRXhwb3J0Q29uZmlnLmgKPiBAQCAtMCwwICsxLDQyIEBACj4gKwo+ICsjaWZuZGVmIFpZ
RElTX0VYUE9SVF9ICj4gKyNkZWZpbmUgWllESVNfRVhQT1JUX0gKPiArCj4gKyNpZmRlZiBaWURJ
U19TVEFUSUNfREVGSU5FCj4gKyMgIGRlZmluZSBaWURJU19FWFBPUlQKPiArIyAgZGVmaW5lIFpZ
RElTX05PX0VYUE9SVAo+ICsjZWxzZQo+ICsjICBpZm5kZWYgWllESVNfRVhQT1JUCj4gKyMgICAg
aWZkZWYgWnlkaXNfRVhQT1JUUwo+ICsgICAgICAgIC8qIFdlIGFyZSBidWlsZGluZyB0aGlzIGxp
YnJhcnkgKi8KPiArIyAgICAgIGRlZmluZSBaWURJU19FWFBPUlQKPiArIyAgICBlbHNlCj4gKyAg
ICAgICAgLyogV2UgYXJlIHVzaW5nIHRoaXMgbGlicmFyeSAqLwo+ICsjICAgICAgZGVmaW5lIFpZ
RElTX0VYUE9SVAo+ICsjICAgIGVuZGlmCj4gKyMgIGVuZGlmCj4gKwo+ICsjICBpZm5kZWYgWllE
SVNfTk9fRVhQT1JUCj4gKyMgICAgZGVmaW5lIFpZRElTX05PX0VYUE9SVAo+ICsjICBlbmRpZgo+
ICsjZW5kaWYKPiArCj4gKyNpZm5kZWYgWllESVNfREVQUkVDQVRFRAo+ICsjICBkZWZpbmUgWllE
SVNfREVQUkVDQVRFRCBfX2F0dHJpYnV0ZV9fICgoX19kZXByZWNhdGVkX18pKQo+ICsjZW5kaWYK
PiArCj4gKyNpZm5kZWYgWllESVNfREVQUkVDQVRFRF9FWFBPUlQKPiArIyAgZGVmaW5lIFpZRElT
X0RFUFJFQ0FURURfRVhQT1JUIFpZRElTX0VYUE9SVCBaWURJU19ERVBSRUNBVEVECj4gKyNlbmRp
Zgo+ICsKPiArI2lmbmRlZiBaWURJU19ERVBSRUNBVEVEX05PX0VYUE9SVAo+ICsjICBkZWZpbmUg
WllESVNfREVQUkVDQVRFRF9OT19FWFBPUlQgWllESVNfTk9fRVhQT1JUIFpZRElTX0RFUFJFQ0FU
RUQKPiArI2VuZGlmCj4gKwo+ICsjaWYgMCAvKiBERUZJTkVfTk9fREVQUkVDQVRFRCAqLwo+ICsj
ICBpZm5kZWYgWllESVNfTk9fREVQUkVDQVRFRAo+ICsjICAgIGRlZmluZSBaWURJU19OT19ERVBS
RUNBVEVECj4gKyMgIGVuZGlmCj4gKyNlbmRpZgo+ICsKPiArI2VuZGlmIC8qIFpZRElTX0VYUE9S
VF9IICovCj4gLS0KPiAyLjIwLjEKPgo+Cj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX18KPiBNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Cj4gTWluaW9zLWRl
dmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCj4gaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9t
YWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbAoKX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2
ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWls
bWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Thu Apr 02 15:26:42 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 02 Apr 2020 15:26: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 1jK1ju-00021d-6r; Thu, 02 Apr 2020 15:26:42 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=z5oR=5S=gmail.com=felipehuici@srs-us1.protection.inumbo.net>)
 id 1jK1js-00021Q-VH
 for minios-devel@lists.xen.org; Thu, 02 Apr 2020 15:26:41 +0000
X-Inumbo-ID: 5934f796-74f6-11ea-b58d-bc764e2007e4
Received: from mail-vs1-xe44.google.com (unknown [2607:f8b0:4864:20::e44])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 5934f796-74f6-11ea-b58d-bc764e2007e4;
 Thu, 02 Apr 2020 15:26:39 +0000 (UTC)
Received: by mail-vs1-xe44.google.com with SMTP id u9so2549165vsp.6
 for <minios-devel@lists.xen.org>; Thu, 02 Apr 2020 08:26:39 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=mime-version:references:in-reply-to:from:date:message-id:subject:to
 :cc; bh=yKibSYzj4RJ2yEO0hJvWtxzxesxAL1QobyYCiWbk8iI=;
 b=m5NTBbkDXaYNaIjeqZECo5flVqGdMFoDGYFzElLyZhXHExdHxmw0qiyo4mXh4qJBb/
 7A8phvQRJnAecKg7XwQrFzu2X2HmLOL9LGJKFiSqhl9KdDv/v/bIHt21LaPu2z0D0gW8
 VDZZzRfddUf6iF4wuXBZLzUcu6nTwadaoHGY1KIjYTLFPfp9HTovICbi8JsBu3cfEBRv
 OJxniZZWgSuBhTjK3zGhcjbOs1tZoHzLvUjqPsIsE9E4Ubn3Olj/SX9iSfcpniFbuZH+
 GAPVeRa/+Y5/HY5AkvTM1YBydM5qFaq9LEpm+9ML9/IITnT1KFEyASCNxJlvtTAc8NQx
 Qk4w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:mime-version:references:in-reply-to:from:date
 :message-id:subject:to:cc;
 bh=yKibSYzj4RJ2yEO0hJvWtxzxesxAL1QobyYCiWbk8iI=;
 b=rbK5tZM/HOCb8YpSwdp582Ds4+HqEvXMOJV0C/kUpi+OLIXK0YA1dzAei/dRwGQoxM
 +u02B4y9vxd8WGW4C4OoEx5aQa4IJEwugA4OjyC2sSD7y+rU8MVgXxZW31YYmRUstvAL
 8dHw+ARqYExM+4+Ys8nwq2PQYvRcKb3ET+SAbG7ZjC57Yca2Rk0c8XlptcnHz5eRw3nX
 VDNdCRo+SjOSgMyen9y32U98LJTqzz5I9SgLLuhZ6JZJlgjaP6FijVBLmmunO8EA+x2Z
 co9pvSwFe/z/ldG+XQv26jPiEOQO3UgC4NWH2NgfAO4xlhO9jn5MJHon2DZM3WmODKfa
 9G8g==
X-Gm-Message-State: AGi0PubaxY9mALfBSau/SKIi956aOVMzTpSIN2hPuKNYYEVM+5vM0ivw
 Q+bfFyKwkO6CV4hzfiqMK05d+e9rpb0HGa8laR2hgseTD5A=
X-Google-Smtp-Source: APiQypIdwz4XLE75anzguNthynPPqHa5x6X939GlG7yXTMN/KNmmYBYrQPpjXuYoJb6kUeg2YS+vI98U7Rnc3DbvwMs=
X-Received: by 2002:a05:6102:3139:: with SMTP id
 f25mr2497569vsh.111.1585841198955; 
 Thu, 02 Apr 2020 08:26:38 -0700 (PDT)
MIME-Version: 1.0
References: <20200331214927.5398-1-simon.kuenzer@neclab.eu>
 <20200331214927.5398-2-simon.kuenzer@neclab.eu>
In-Reply-To: <20200331214927.5398-2-simon.kuenzer@neclab.eu>
From: "felipehuici ." <felipehuici@gmail.com>
Date: Thu, 2 Apr 2020 17:26:27 +0200
Message-ID: <CAEX4t-OQbwBRz22ZXge6h-MpjzJGXhoYVN=yHzU8ULuz6uXb5A@mail.gmail.com>
To: Simon Kuenzer <simon.kuenzer@neclab.eu>
Subject: Re: [Minios-devel] [UNIKRAFT PATCH 1/3] lib/ukdebug: Move hexdump
 output demultiplexer
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>, 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>

UmV2aWV3ZWQtYnk6IEZlbGlwZSBIdWljaSA8ZmVsaXBlLmh1aWNpQG5lY2xhYi5ldT4KCk9uIFR1
ZSwgTWFyIDMxLCAyMDIwIGF0IDExOjUwIFBNIFNpbW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJA
bmVjbGFiLmV1PiB3cm90ZToKPgo+IFRoaXMgY29tbWl0IG1vdmVzIHRoZSBvdXRwdXQgZGVtdWx0
aXBsZXhlciBmcm9tIGhleGR1bXAgdG8gYW4gb3duCj4gcGxhY2Ugc28gdGhhdCBpdCBjb3VsZCBi
ZSB1c2VkIGJ5IG90aGVyIHVrZGVidWctaW50ZXJuYWwgcm91dGluZXMuCj4KPiBTaWduZWQtb2Zm
LWJ5OiBTaW1vbiBLdWVuemVyIDxzaW1vbi5rdWVuemVyQG5lY2xhYi5ldT4KPiAtLS0KPiAgbGli
L3VrZGVidWcvTWFrZWZpbGUudWsgfCAgIDEgKwo+ICBsaWIvdWtkZWJ1Zy9oZXhkdW1wLmMgICB8
IDE0MiArKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gIGxpYi91a2Rl
YnVnL291dGYuYyAgICAgIHwgIDg1ICsrKysrKysrKysrKysrKysrKysrKysrKwo+ICBsaWIvdWtk
ZWJ1Zy9vdXRmLmggICAgICB8IDExNCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+
ICA0IGZpbGVzIGNoYW5nZWQsIDIyNyBpbnNlcnRpb25zKCspLCAxMTUgZGVsZXRpb25zKC0pCj4g
IGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvdWtkZWJ1Zy9vdXRmLmMKPiAgY3JlYXRlIG1vZGUgMTAw
NjQ0IGxpYi91a2RlYnVnL291dGYuaAo+Cj4gZGlmZiAtLWdpdCBhL2xpYi91a2RlYnVnL01ha2Vm
aWxlLnVrIGIvbGliL3VrZGVidWcvTWFrZWZpbGUudWsKPiBpbmRleCA4ZjQ2MDYxZC4uNmIzYWNm
N2EgMTAwNjQ0Cj4gLS0tIGEvbGliL3VrZGVidWcvTWFrZWZpbGUudWsKPiArKysgYi9saWIvdWtk
ZWJ1Zy9NYWtlZmlsZS51awo+IEBAIC04LDYgKzgsNyBAQCBMSUJVS0RFQlVHX0NYWEZMQUdTLXkg
Kz0gLURfX0lOX0xJQlVLREVCVUdfXwo+Cj4gIExJQlVLREVCVUdfU1JDUy15ICs9ICQoTElCVUtE
RUJVR19CQVNFKS9wcmludC5jCj4gIExJQlVLREVCVUdfU1JDUy0kKENPTkZJR19IQVZFX0xJQkMp
ICs9ICQoTElCVUtERUJVR19CQVNFKS9zbnByaW50Zi5jCj4gK0xJQlVLREVCVUdfU1JDUy15ICs9
ICQoTElCVUtERUJVR19CQVNFKS9vdXRmLmMKPiAgTElCVUtERUJVR19TUkNTLXkgKz0gJChMSUJV
S0RFQlVHX0JBU0UpL2hleGR1bXAuYwo+ICBMSUJVS0RFQlVHX1NSQ1MtJChDT05GSUdfTElCVUtE
RUJVR19UUkFDRVBPSU5UUykgKz0gJChMSUJVS0RFQlVHX0JBU0UpL3RyYWNlLmMKPiAgTElCVUtE
RUJVR19TUkNTLSQoQ09ORklHX0xJQlZGU0NPUkUpICs9ICQoTElCVUtERUJVR19CQVNFKS9leHRy
YS5sZAo+IGRpZmYgLS1naXQgYS9saWIvdWtkZWJ1Zy9oZXhkdW1wLmMgYi9saWIvdWtkZWJ1Zy9o
ZXhkdW1wLmMKPiBpbmRleCBmYzU3YzY3My4uMDcwODQ4OWQgMTAwNjQ0Cj4gLS0tIGEvbGliL3Vr
ZGVidWcvaGV4ZHVtcC5jCj4gKysrIGIvbGliL3VrZGVidWcvaGV4ZHVtcC5jCj4gQEAgLTM2LDkg
KzM2LDcgQEAKPiAgICovCj4KPiAgI2luY2x1ZGUgPHN0cmluZy5oPgo+IC0jaW5jbHVkZSA8aW50
dHlwZXMuaD4KPiAtI2luY2x1ZGUgPHN0ZGFyZy5oPgo+IC0jaW5jbHVkZSAic25wcmludGYuaCIK
PiArI2luY2x1ZGUgIm91dGYuaCIKPgo+ICAjaW5jbHVkZSA8dWsvYXJjaC90eXBlcy5oPgo+ICAj
aW5jbHVkZSA8dWsvZXNzZW50aWFscy5oPgo+IEBAIC00OSw5MCArNDcsMTEgQEAKPiAgICAgICAg
IChVS19IWERGX0dSUEJZVEUgfCBVS19IWERGX0dSUFdPUkQgfCBVS19IWERGX0dSUERXT1JEICAg
ICAgICAgICAgICAgICAgXAo+ICAgICAgICAgIHwgVUtfSFhERl9HUlBRV09SRCkKPgo+IC1lbnVt
IF9oeGRfb3V0cHV0X3R5cGUgewo+IC0gICAgICAgVUtfSFhET1VUX0ZJTEUgPSAwLAo+IC0gICAg
ICAgVUtfSFhET1VUX0JVRkZFUiwKPiAtI2lmIENPTkZJR19MSUJVS0RFQlVHX1BSSU5USwo+IC0g
ICAgICAgVUtfSFhET1VUX0tFUk4sCj4gLSNlbmRpZgo+IC0gICAgICAgVUtfSFhET1VUX0RFQlVH
LAo+IC19Owo+IC0KPiAtc3RydWN0IF9oeGRfb3V0cHV0IHsKPiAtICAgICAgIGVudW0gX2h4ZF9v
dXRwdXRfdHlwZSB0eXBlOwo+IC0KPiAtICAgICAgIHVuaW9uIHsKPiAtICAgICAgICAgICAgICAg
LyogVUtfSFhET1VUX0tFUk4sIFVLX0hYRE9VVF9ERUJVRyAqLwo+IC0gICAgICAgICAgICAgICBz
dHJ1Y3Qgewo+IC0gICAgICAgICAgICAgICAgICAgICAgIGludCBsdmw7IC8qIFVLX0hYRE9VVF9L
RVJOIG9ubHkgKi8KPiAtICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpsaWJuYW1l
Owo+IC0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnNyY25hbWU7Cj4gLSAgICAg
ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHNyY2xpbmU7Cj4gLSAgICAgICAgICAgICAg
IH0gdWtwcmludDsKPiAtCj4gLSAgICAgICAgICAgICAgIC8qIFVLX0hYRE9VVF9GSUxFICovCj4g
LSAgICAgICAgICAgICAgIHN0cnVjdCB7Cj4gLSAgICAgICAgICAgICAgICAgICAgICAgRklMRSAq
ZnA7Cj4gLSAgICAgICAgICAgICAgIH0gZmlsZTsKPiAtCj4gLSAgICAgICAgICAgICAgIC8qIFVL
X0hYRE9VVF9CVUZGRVIgKi8KPiAtICAgICAgICAgICAgICAgc3RydWN0IHsKPiAtICAgICAgICAg
ICAgICAgICAgICAgICBjaGFyICpwb3M7Cj4gLSAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IGxlZnQ7Cj4gLSAgICAgICAgICAgICAgIH0gYnVmZmVyOwo+IC0gICAgICAgfTsKPiAtfTsKPiAt
Cj4gLS8qKgo+IC0gKiBTZW5kIGEgZm9ybWF0dGVkIHN0cmluZyB0byBhbiBvdXRwdXQgZGV2aWNl
Cj4gLSAqLwo+IC1zdGF0aWMgaW50IF9oeGRfb3V0ZihzdHJ1Y3QgX2h4ZF9vdXRwdXQgKm8sIGNv
bnN0IGNoYXIgKmZtdCwgLi4uKQo+IC17Cj4gLSAgICAgICBpbnQgcmV0ID0gMDsKPiAtICAgICAg
IHZhX2xpc3QgYXA7Cj4gLQo+IC0gICAgICAgdmFfc3RhcnQoYXAsIGZtdCk7Cj4gLSAgICAgICBz
d2l0Y2ggKG8tPnR5cGUpIHsKPiAtICAgICAgIGNhc2UgVUtfSFhET1VUX0ZJTEU6Cj4gLSAgICAg
ICAgICAgICAgIC8qIFVzZSBzdGFuZGFyZCBsaWJjIGFwcHJvYWNoIHdoZW4gcHJpbnRpbmcgdG8g
YSBmaWxlICovCj4gLSAgICAgICAgICAgICAgIHJldCA9IHZmcHJpbnRmKG8tPmZpbGUuZnAsIGZt
dCwgYXApOwo+IC0gICAgICAgICAgICAgICBicmVhazsKPiAtICAgICAgIGNhc2UgVUtfSFhET1VU
X0JVRkZFUjoKPiAtICAgICAgICAgICAgICAgcmV0ID0gX191a192c25wcmludGYoby0+YnVmZmVy
LnBvcywgby0+YnVmZmVyLmxlZnQsIGZtdCwgYXApOwo+IC0KPiAtICAgICAgICAgICAgICAgaWYg
KHJldCA+IDApIHsKPiAtICAgICAgICAgICAgICAgICAgICAgICAvKiBpbiBvcmRlciB0byBvdmVy
d3JpdGUgJ1wwJyBieSBzdWNjZXNzaXZlIGNhbGxzLAo+IC0gICAgICAgICAgICAgICAgICAgICAg
ICAqIHdlIG1vdmUgdGhlIGJ1ZmZlciBwb2ludGVyIGJ5IChyZXQtMSkgY2hhcmFjdGVycwo+IC0g
ICAgICAgICAgICAgICAgICAgICAgICAqLwo+IC0gICAgICAgICAgICAgICAgICAgICAgIG8tPmJ1
ZmZlci5wb3MgKz0gKHJldCAtIDEpOwo+IC0gICAgICAgICAgICAgICAgICAgICAgIG8tPmJ1ZmZl
ci5sZWZ0IC09IChyZXQgLSAxKTsKPiAtICAgICAgICAgICAgICAgfQo+IC0gICAgICAgICAgICAg
ICBicmVhazsKPiAtICAgICAgIGNhc2UgVUtfSFhET1VUX0RFQlVHOgo+IC0gICAgICAgICAgICAg
ICBfdWtfdnByaW50ZChvLT51a3ByaW50LmxpYm5hbWUsCj4gLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG8tPnVrcHJpbnQuc3JjbmFtZSwgby0+dWtwcmludC5zcmNsaW5lLAo+IC0gICAgICAg
ICAgICAgICAgICAgICAgICAgICBmbXQsIGFwKTsKPiAtICAgICAgICAgICAgICAgYnJlYWs7Cj4g
LSNpZiBDT05GSUdfTElCVUtERUJVR19QUklOVEsKPiAtICAgICAgIGNhc2UgVUtfSFhET1VUX0tF
Uk46Cj4gLSAgICAgICAgICAgICAgIF91a192cHJpbnRrKG8tPnVrcHJpbnQubHZsLCBvLT51a3By
aW50LmxpYm5hbWUsCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgIG8tPnVrcHJpbnQuc3Jj
bmFtZSwgby0+dWtwcmludC5zcmNsaW5lLAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICBm
bXQsIGFwKTsKPiAtICAgICAgICAgICAgICAgYnJlYWs7Cj4gLSNlbmRpZgo+IC0gICAgICAgZGVm
YXVsdDoKPiAtICAgICAgICAgICAgICAgYnJlYWs7Cj4gLSAgICAgICB9Cj4gLSAgICAgICB2YV9l
bmQoYXApOwo+IC0KPiAtICAgICAgIHJldHVybiByZXQ7Cj4gLX0KPiAtCj4gIC8qKgo+ICAgKiBQ
bG90IG9uZSBoZXhkdW1wIGRhdGEgbGluZQo+ICAgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBi
eSBfaHhkKCkKPiAgICovCj4gLXN0YXRpYyBpbmxpbmUgc2l6ZV90IF9oeGRfbGluZShzdHJ1Y3Qg
X2h4ZF9vdXRwdXQgKm8sIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsCj4gK3N0YXRpYyBpbmxp
bmUgc2l6ZV90IF9oeGRfbGluZShzdHJ1Y3Qgb3V0X2RldiAqbywgY29uc3QgdW5zaWduZWQgY2hh
ciAqZGF0YSwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxlbiwgc2l6
ZV90IGxpbmVsZW4sIGludCBmbGFncykKPiAgewo+ICAgICAgICAgc2l6ZV90IGksIGdycGxlbiA9
IDA7Cj4gQEAgLTE1MSwxMyArNzAsMTMgQEAgc3RhdGljIGlubGluZSBzaXplX3QgX2h4ZF9saW5l
KHN0cnVjdCBfaHhkX291dHB1dCAqbywgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSwKPiAgICAg
ICAgIC8qIGhleCBzZWN0aW9uICovCj4gICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyArK2kp
IHsKPiAgICAgICAgICAgICAgICAgYyA9ICooZGF0YSArIGkpOwo+IC0gICAgICAgICAgICAgICBp
cmV0ID0gX2h4ZF9vdXRmKG8sICIlMDJ4ICIsICh1bnNpZ25lZCBjaGFyKWMpOwo+ICsgICAgICAg
ICAgICAgICBpcmV0ID0gb3V0ZihvLCAiJTAyeCAiLCAodW5zaWduZWQgY2hhciljKTsKPiAgICAg
ICAgICAgICAgICAgaWYgKGlyZXQgPCAwKQo+ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBpcmV0Owo+ICAgICAgICAgICAgICAgICByZXQgKz0gaXJldDsKPgo+ICAgICAgICAgICAgICAg
ICBpZiAoaSAmJiBncnBsZW4gJiYgKChpICsgMSkgJSBncnBsZW4gPT0gMCkpIHsKPiAtICAgICAg
ICAgICAgICAgICAgICAgICBpcmV0ID0gX2h4ZF9vdXRmKG8sICIgIik7Cj4gKyAgICAgICAgICAg
ICAgICAgICAgICAgaXJldCA9IG91dGYobywgIiAiKTsKPiAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoaXJldCA8IDApCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
aXJldDsKPiAgICAgICAgICAgICAgICAgICAgICAgICByZXQgKz0gaXJldDsKPiBAQCAtMTY4LDQ1
ICs4Nyw0NSBAQCBzdGF0aWMgaW5saW5lIHNpemVfdCBfaHhkX2xpbmUoc3RydWN0IF9oeGRfb3V0
cHV0ICpvLCBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhLAo+ICAgICAgICAgaWYgKGZsYWdzICYg
VUtfSFhERl9BU0NJSVNFQykgewo+ICAgICAgICAgICAgICAgICAvKiBmaWxsdXAgdG8gYWxpZ24g
YXNjaWkgc2VjdGlvbiAqLwo+ICAgICAgICAgICAgICAgICBmb3IgKDsgaSA8IGxpbmVsZW47ICsr
aSkgewo+IC0gICAgICAgICAgICAgICAgICAgICAgIGlyZXQgPSBfaHhkX291dGYobywgIiAgICIp
Owo+ICsgICAgICAgICAgICAgICAgICAgICAgIGlyZXQgPSBvdXRmKG8sICIgICAiKTsKPiAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoaXJldCA8IDApCj4gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gaXJldDsKPiAgICAgICAgICAgICAgICAgICAgICAgICByZXQgKz0g
aXJldDsKPgo+ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpICYmIGdycGxlbiAmJiAoKGkg
KyAxKSAlIGdycGxlbiA9PSAwKSkgewo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aXJldCA9IF9oeGRfb3V0ZihvLCAiICIpOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaXJldCA9IG91dGYobywgIiAiKTsKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChpcmV0IDwgMCkKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGlyZXQ7Cj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXQgKz0gaXJl
dDsKPiAgICAgICAgICAgICAgICAgICAgICAgICB9Cj4gICAgICAgICAgICAgICAgIH0KPiAgICAg
ICAgICAgICAgICAgaWYgKCFncnBsZW4pIHsKPiAtICAgICAgICAgICAgICAgICAgICAgICBpcmV0
ID0gX2h4ZF9vdXRmKG8sICIgIik7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgaXJldCA9IG91
dGYobywgIiAiKTsKPiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXJldCA8IDApCj4gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXJldDsKPiAgICAgICAgICAgICAg
ICAgICAgICAgICByZXQgKz0gaXJldDsKPiAgICAgICAgICAgICAgICAgfQo+Cj4gICAgICAgICAg
ICAgICAgIC8qIHByaW50IGFzY2lpIGNoYXJhY3RlcnMgKi8KPiAtICAgICAgICAgICAgICAgaXJl
dCA9IF9oeGRfb3V0ZihvLCAifCIpOwo+ICsgICAgICAgICAgICAgICBpcmV0ID0gb3V0ZihvLCAi
fCIpOwo+ICAgICAgICAgICAgICAgICBpZiAoaXJldCA8IDApCj4gICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGlyZXQ7Cj4gICAgICAgICAgICAgICAgIHJldCArPSBpcmV0Owo+ICAgICAg
ICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyArK2kpIHsKPiAgICAgICAgICAgICAgICAg
ICAgICAgICBjID0gKihkYXRhICsgaSk7Cj4gLSAgICAgICAgICAgICAgICAgICAgICAgaXJldCA9
IF9oeGRfb3V0ZihvLCAiJWMiLAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKGMgPj0gJyAnICYmIGMgPD0gJ34nKSA/IGMgOiAnLicpOwo+ICsgICAgICAgICAgICAg
ICAgICAgICAgIGlyZXQgPSBvdXRmKG8sICIlYyIsCj4gKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKGMgPj0gJyAnICYmIGMgPD0gJ34nKSA/IGMgOiAnLicpOwo+ICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChpcmV0IDwgMCkKPiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBpcmV0Owo+ICAgICAgICAgICAgICAgICAgICAgICAgIHJldCArPSBpcmV0
Owo+ICAgICAgICAgICAgICAgICB9Cj4gLSAgICAgICAgICAgICAgIGlyZXQgPSBfaHhkX291dGYo
bywgInwiKTsKPiArICAgICAgICAgICAgICAgaXJldCA9IG91dGYobywgInwiKTsKPiAgICAgICAg
ICAgICAgICAgaWYgKGlyZXQgPCAwKQo+ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBp
cmV0Owo+ICAgICAgICAgICAgICAgICByZXQgKz0gaXJldDsKPiAgICAgICAgIH0KPgo+IC0gICAg
ICAgaXJldCA9IF9oeGRfb3V0ZihvLCAiXG4iKTsKPiArICAgICAgIGlyZXQgPSBvdXRmKG8sICJc
biIpOwo+ICAgICAgICAgaWYgKGlyZXQgPCAwKQo+ICAgICAgICAgICAgICAgICByZXR1cm4gaXJl
dDsKPiAgICAgICAgIHJldCArPSBpcmV0Owo+IEBAIC0yMjcsNyArMTQ2LDcgQEAgc3RhdGljIGlu
bGluZSBzaXplX3QgX2h4ZF9saW5lKHN0cnVjdCBfaHhkX291dHB1dCAqbywgY29uc3QgdW5zaWdu
ZWQgY2hhciAqZGF0YSwKPiAgICogQHBhcmFtIGxpbmVfcHJlZml4IFN0cmluZyB0byBiZSBwcmVw
ZW5kZWQgdG8gZWFjaCBsaW5lLCBjYW4gYmUgTlVMTAo+ICAgKiBAcmV0dXJuIFJldHVybnMgdGhl
IG51bWJlciBvZiBwcmludGVkIGNoYXJhY3RlcnMgdG8gb3V0cHV0IG8KPiAgICovCj4gLXN0YXRp
YyBpbnQgX2h4ZChzdHJ1Y3QgX2h4ZF9vdXRwdXQgKm8sIGNvbnN0IHZvaWQgKmRhdGEsIHNpemVf
dCBsZW4sCj4gK3N0YXRpYyBpbnQgX2h4ZChzdHJ1Y3Qgb3V0X2RldiAqbywgY29uc3Qgdm9pZCAq
ZGF0YSwgc2l6ZV90IGxlbiwKPiAgICAgICAgICAgICAgICAgc2l6ZV90IGFkZHIwLCBpbnQgZmxh
Z3MsIHVuc2lnbmVkIGludCBncnBzX3Blcl9saW5lLAo+ICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyICpsaW5lX3ByZWZpeCkKPiAgewo+IEBAIC0yNjYsNyArMTg1LDcgQEAgc3RhdGljIGludCBf
aHhkKHN0cnVjdCBfaHhkX291dHB1dCAqbywgY29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IGxlbiwK
PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoY29uc3QgdW5zaWduZWQgY2hh
ciAqKWRhdGEpICsgaSwgbGluZWJ5dGVzKQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
PSAwKSB7Cj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXByZXZjKSB7Cj4g
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlyZXQgPSBfaHhkX291dGYo
bywgIipcbiIpOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcmV0
ID0gb3V0ZihvLCAiKlxuIik7Cj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChpcmV0IDwgMCkKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gaXJldDsKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0ICs9IGlyZXQ7Cj4gQEAgLTI3OCwxNiArMTk3LDE1IEBAIHN0YXRpYyBpbnQg
X2h4ZChzdHJ1Y3QgX2h4ZF9vdXRwdXQgKm8sIGNvbnN0IHZvaWQgKmRhdGEsIHNpemVfdCBsZW4s
Cj4gICAgICAgICAgICAgICAgIHByZXZjID0gMDsKPgo+ICAgICAgICAgICAgICAgICBpZiAobGlu
ZV9wcmVmaXgpIHsKPiAtICAgICAgICAgICAgICAgICAgICAgICBpcmV0ID0gX2h4ZF9vdXRmKG8s
ICIlcyIsIGxpbmVfcHJlZml4KTsKPiArICAgICAgICAgICAgICAgICAgICAgICBpcmV0ID0gb3V0
ZihvLCAiJXMiLCBsaW5lX3ByZWZpeCk7Cj4gICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGly
ZXQgPCAwKQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlyZXQ7Cj4g
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0ICs9IGlyZXQ7Cj4gICAgICAgICAgICAgICAgIH0K
Pgo+ICAgICAgICAgICAgICAgICBpZiAoZmxhZ3MgJiBVS19IWERGX0FERFIpIHsKPiAtICAgICAg
ICAgICAgICAgICAgICAgICBpcmV0ID0gX2h4ZF9vdXRmKG8sICIlMDgiX19QUkl1cHRyCj4gLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAiLAo+IC0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fdXB0cikoaSArIGFkZHIwKSk7Cj4g
KyAgICAgICAgICAgICAgICAgICAgICAgaXJldCA9IG91dGYobywgIiUwOCJfX1BSSXVwdHIiICAi
LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX3VwdHIpKGkgKyBhZGRy
MCkpOwo+ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpcmV0IDwgMCkKPiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpcmV0Owo+ICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldCArPSBpcmV0Owo+IEBAIC0zMDgsMjEgKzIyNiwyMCBAQCBpbnQgdWtfaGV4ZHVtcHNu
KGNoYXIgKnN0ciwgc2l6ZV90IHNpemUsIGNvbnN0IHZvaWQgKmRhdGEsIHNpemVfdCBsZW4sCj4g
ICAgICAgICAgICAgICAgICBzaXplX3QgYWRkcjAsIGludCBmbGFncywgdW5zaWduZWQgaW50IGdy
cHNfcGVyX2xpbmUsCj4gICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpsaW5lX3ByZWZpeCkK
PiAgewo+IC0gICAgICAgc3RydWN0IF9oeGRfb3V0cHV0IG8gPSB7LnR5cGUgPSBVS19IWERPVVRf
QlVGRkVSLAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmJ1ZmZlci5wb3MgPSBz
dHIsCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYnVmZmVyLmxlZnQgPSBzaXpl
fTsKPiAtICAgICAgIFVLX0FTU0VSVChzdHIgIT0gTlVMTCk7Cj4gKyAgICAgICBzdHJ1Y3Qgb3V0
X2RldiBvOwo+Cj4gKyAgICAgICBVS19BU1NFUlQoc3RyICE9IE5VTEwpOwo+ICsgICAgICAgb3V0
X2Rldl9pbml0X2J1ZmZlcigmbywgc3RyLCBzaXplKTsKPiAgICAgICAgIHJldHVybiBfaHhkKCZv
LCBkYXRhLCBsZW4sIGFkZHIwLCBmbGFncywgZ3Jwc19wZXJfbGluZSwgbGluZV9wcmVmaXgpOwo+
ICB9Cj4KPiAgaW50IHVrX2hleGR1bXBmKEZJTEUgKmZwLCBjb25zdCB2b2lkICpkYXRhLCBzaXpl
X3QgbGVuLCBzaXplX3QgYWRkcjAsIGludCBmbGFncywKPiAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgaW50IGdycHNfcGVyX2xpbmUsIGNvbnN0IGNoYXIgKmxpbmVfcHJlZml4KQo+ICB7Cj4gLSAg
ICAgICBzdHJ1Y3QgX2h4ZF9vdXRwdXQgbyA9IHsudHlwZSA9IFVLX0hYRE9VVF9GSUxFLAo+IC0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbGUuZnAgPSBmcH07Cj4gLSAgICAgICBV
S19BU1NFUlQoZnAgIT0gTlVMTCk7Cj4gKyAgICAgICBzdHJ1Y3Qgb3V0X2RldiBvOwo+Cj4gKyAg
ICAgICBVS19BU1NFUlQoZnAgIT0gTlVMTCk7Cj4gKyAgICAgICBvdXRfZGV2X2luaXRfZmlsZSgm
bywgZnApOwo+ICAgICAgICAgcmV0dXJuIF9oeGQoJm8sIGRhdGEsIGxlbiwgYWRkcjAsIGZsYWdz
LCBncnBzX3Blcl9saW5lLCBsaW5lX3ByZWZpeCk7Cj4gIH0KPgo+IEBAIC0zMzEsMTEgKzI0OCw5
IEBAIHZvaWQgX3VrX2hleGR1bXBkKGNvbnN0IGNoYXIgKmxpYm5hbWUsIGNvbnN0IGNoYXIgKnNy
Y25hbWUsCj4gICAgICAgICAgICAgICAgICAgc2l6ZV90IGFkZHIwLCBpbnQgZmxhZ3MsIHVuc2ln
bmVkIGludCBncnBzX3Blcl9saW5lLAo+ICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmxp
bmVfcHJlZml4KQo+ICB7Cj4gLSAgICAgICBzdHJ1Y3QgX2h4ZF9vdXRwdXQgbyA9IHsudHlwZSA9
IFVLX0hYRE9VVF9ERUJVRywKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC51a3By
aW50LmxpYm5hbWUgPSBsaWJuYW1lLAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LnVrcHJpbnQuc3JjbmFtZSA9IHNyY25hbWUsCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAudWtwcmludC5zcmNsaW5lID0gc3JjbGluZX07Cj4gKyAgICAgICBzdHJ1Y3Qgb3V0X2Rl
diBvOwo+Cj4gKyAgICAgICBvdXRfZGV2X2luaXRfZGVidWcoJm8sIGxpYm5hbWUsIHNyY25hbWUs
IHNyY2xpbmUpOwo+ICAgICAgICAgX2h4ZCgmbywgZGF0YSwgbGVuLCBhZGRyMCwgZmxhZ3MsIGdy
cHNfcGVyX2xpbmUsIGxpbmVfcHJlZml4KTsKPiAgfQo+Cj4gQEAgLTM0NSwxMiArMjYwLDkgQEAg
dm9pZCBfdWtfaGV4ZHVtcGsoaW50IGx2bCwgY29uc3QgY2hhciAqbGlibmFtZSwgY29uc3QgY2hh
ciAqc3JjbmFtZSwKPiAgICAgICAgICAgICAgICAgICBzaXplX3QgYWRkcjAsIGludCBmbGFncywg
dW5zaWduZWQgaW50IGdycHNfcGVyX2xpbmUsCj4gICAgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciAqbGluZV9wcmVmaXgpCj4gIHsKPiAtICAgICAgIHN0cnVjdCBfaHhkX291dHB1dCBvID0gey50
eXBlID0gVUtfSFhET1VUX0tFUk4sCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAu
dWtwcmludC5sdmwgPSBsdmwsCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudWtw
cmludC5saWJuYW1lID0gbGlibmFtZSwKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC51a3ByaW50LnNyY25hbWUgPSBzcmNuYW1lLAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLnVrcHJpbnQuc3JjbGluZSA9IHNyY2xpbmV9Owo+ICsgICAgICAgc3RydWN0IG91dF9k
ZXYgbzsKPgo+ICsgICAgICAgb3V0X2Rldl9pbml0X2tlcm4oJm8sIGx2bCwgbGlibmFtZSwgc3Jj
bmFtZSwgc3JjbGluZSk7Cj4gICAgICAgICBfaHhkKCZvLCBkYXRhLCBsZW4sIGFkZHIwLCBmbGFn
cywgZ3Jwc19wZXJfbGluZSwgbGluZV9wcmVmaXgpOwo+ICB9Cj4gICNlbmRpZgo+IGRpZmYgLS1n
aXQgYS9saWIvdWtkZWJ1Zy9vdXRmLmMgYi9saWIvdWtkZWJ1Zy9vdXRmLmMKPiBuZXcgZmlsZSBt
b2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwLi4xMjU4YmU5Mwo+IC0tLSAvZGV2L251bGwKPiAr
KysgYi9saWIvdWtkZWJ1Zy9vdXRmLmMKPiBAQCAtMCwwICsxLDg1IEBACj4gKy8qIFNQRFgtTGlj
ZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UgKi8KPiArLyoKPiArICogSW50ZXJuYWwgaGVs
cGVyIGZvciB0ZXh0IG91dHB1dCByZWRpcmVjdGlvbgo+ICsgKgo+ICsgKiBBdXRob3JzOiBTaW1v
biBLdWVuemVyIDxzaW1vbi5rdWVuemVyQG5lY2xhYi5ldT4KPiArICoKPiArICoKPiArICogQ29w
eXJpZ2h0IChjKSAyMDE3LCBORUMgRXVyb3BlIEx0ZC4sIE5FQyBDb3Jwb3JhdGlvbi4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KPiArICoKPiArICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cj4gKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwo+ICsg
KiBhcmUgbWV0Ogo+ICsgKgo+ICsgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAo+ICsgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCj4gKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Cj4gKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKPiArICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KPiArICogMy4g
TmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgY29weXJpZ2h0IGhvbGRlciBub3IgdGhlIG5hbWVzIG9m
IGl0cwo+ICsgKiAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQo+ICsgKiAgICB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgo+ICsgKgo+ICsgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
ICJBUyBJUyIKPiArICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQo+ICsgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQo+
ICsgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xE
RVIgT1IgQ09OVFJJQlVUT1JTIEJFCj4gKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKPiArICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
PiArICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCj4gKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCj4gKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCj4gKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCj4gKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlICJvdXRmLmgiCj4gKwo+ICsjaW5jbHVkZSA8
c3RyaW5nLmg+Cj4gKyNpbmNsdWRlIDxzdGRhcmcuaD4KPiArI2luY2x1ZGUgPHVrL2Fzc2VydC5o
Pgo+ICsjaW5jbHVkZSAic25wcmludGYuaCIKPiArCj4gK2ludCBvdXRmKHN0cnVjdCBvdXRfZGV2
ICpkZXYsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQo+ICt7Cj4gKyAgICAgICBpbnQgcmV0ID0gMDsK
PiArICAgICAgIHZhX2xpc3QgYXA7Cj4gKwo+ICsgICAgICAgVUtfQVNTRVJUKGRldik7Cj4gKwo+
ICsgICAgICAgdmFfc3RhcnQoYXAsIGZtdCk7Cj4gKyAgICAgICBzd2l0Y2ggKGRldi0+dHlwZSkg
ewo+ICsgICAgICAgY2FzZSBPVVRERVZfRklMRToKPiArICAgICAgICAgICAgICAgLyogVXNlIHN0
YW5kYXJkIGxpYmMgYXBwcm9hY2ggd2hlbiBwcmludGluZyB0byBhIGZpbGUgKi8KPiArICAgICAg
ICAgICAgICAgcmV0ID0gdmZwcmludGYoZGV2LT5maWxlLmZwLCBmbXQsIGFwKTsKPiArICAgICAg
ICAgICAgICAgYnJlYWs7Cj4gKyAgICAgICBjYXNlIE9VVERFVl9CVUZGRVI6Cj4gKyAgICAgICAg
ICAgICAgIHJldCA9IF9fdWtfdnNucHJpbnRmKGRldi0+YnVmZmVyLnBvcywgZGV2LT5idWZmZXIu
bGVmdCwgZm10LCBhcCk7Cj4gKwo+ICsgICAgICAgICAgICAgICBpZiAocmV0ID4gMCkgewo+ICsg
ICAgICAgICAgICAgICAgICAgICAgIC8qIGluIG9yZGVyIHRvIG92ZXJ3cml0ZSAnXDAnIGJ5IHN1
Y2Nlc3NpdmUgY2FsbHMsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICogd2UgbW92ZSB0aGUg
YnVmZmVyIHBvaW50ZXIgYnkgKHJldC0xKSBjaGFyYWN0ZXJzCj4gKyAgICAgICAgICAgICAgICAg
ICAgICAgICovCj4gKyAgICAgICAgICAgICAgICAgICAgICAgZGV2LT5idWZmZXIucG9zICArPSAo
cmV0IC0gMSk7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgZGV2LT5idWZmZXIubGVmdCAtPSAo
cmV0IC0gMSk7Cj4gKyAgICAgICAgICAgICAgIH0KPiArICAgICAgICAgICAgICAgYnJlYWs7Cj4g
KyAgICAgICBjYXNlIE9VVERFVl9ERUJVRzoKPiArICAgICAgICAgICAgICAgX3VrX3ZwcmludGQo
ZGV2LT51a19wci5saWJuYW1lLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXYtPnVr
X3ByLnNyY25hbWUsIGRldi0+dWtfcHIuc3JjbGluZSwKPiArICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZm10LCBhcCk7Cj4gKyAgICAgICAgICAgICAgIGJyZWFrOwo+ICsjaWYgQ09ORklHX0xJ
QlVLREVCVUdfUFJJTlRLCj4gKyAgICAgICBjYXNlIE9VVERFVl9LRVJOOgo+ICsgICAgICAgICAg
ICAgICBfdWtfdnByaW50ayhkZXYtPnVrX3ByLmx2bCwgZGV2LT51a19wci5saWJuYW1lLAo+ICsg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkZXYtPnVrX3ByLnNyY25hbWUsIGRldi0+dWtfcHIu
c3JjbGluZSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgZm10LCBhcCk7Cj4gKyAgICAg
ICAgICAgICAgIGJyZWFrOwo+ICsjZW5kaWYKPiArICAgICAgIGRlZmF1bHQ6Cj4gKyAgICAgICAg
ICAgICAgIGJyZWFrOwo+ICsgICAgICAgfQo+ICsgICAgICAgdmFfZW5kKGFwKTsKPiArCj4gKyAg
ICAgICByZXR1cm4gcmV0Owo+ICt9Cj4gZGlmZiAtLWdpdCBhL2xpYi91a2RlYnVnL291dGYuaCBi
L2xpYi91a2RlYnVnL291dGYuaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAw
MDAuLmM0Y2Q0NzBkCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2xpYi91a2RlYnVnL291dGYuaAo+
IEBAIC0wLDAgKzEsMTE0IEBACj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1D
bGF1c2UgKi8KPiArLyoKPiArICogSW50ZXJuYWwgaGVscGVyIGZvciB0ZXh0IG91dHB1dCByZWRp
cmVjdGlvbgo+ICsgKgo+ICsgKiBBdXRob3JzOiBTaW1vbiBLdWVuemVyIDxzaW1vbi5rdWVuemVy
QG5lY2xhYi5ldT4KPiArICoKPiArICoKPiArICogQ29weXJpZ2h0IChjKSAyMDIwLCBORUMgRXVy
b3BlIEx0ZC4sIE5FQyBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KPiArICoKPiAr
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Cj4gKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwo+ICsgKiBhcmUgbWV0Ogo+ICsgKgo+ICsgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAo+ICsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCj4gKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cj4gKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKPiArICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KPiArICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUg
Y29weXJpZ2h0IGhvbGRlciBub3IgdGhlIG5hbWVzIG9mIGl0cwo+ICsgKiAgICBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQo+ICsgKiAgICB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgo+ICsgKgo+ICsgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKPiArICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQo+ICsgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQo+ICsgKiBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFCj4g
KyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKPiArICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKPiArICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCj4g
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCj4gKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCj4gKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFCj4gKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgo+ICsgKi8KPiArCj4gKyNp
Zm5kZWYgX19VS0RFQlVHX0lOVEVSTkFMX09VVEZfSF9fCj4gKyNkZWZpbmUgX19VS0RFQlVHX0lO
VEVSTkFMX09VVEZfSF9fCj4gKwo+ICsjaW5jbHVkZSA8dWsvY29uZmlnLmg+Cj4gKyNpbmNsdWRl
IDxpbnR0eXBlcy5oPgo+ICsjaW5jbHVkZSA8c3RkaW8uaD4KPiArCj4gK2VudW0gb3V0X2Rldl90
eXBlIHsKPiArICAgICAgIE9VVERFVl9GSUxFID0gMCwKPiArICAgICAgIE9VVERFVl9CVUZGRVIs
Cj4gKyNpZiBDT05GSUdfTElCVUtERUJVR19QUklOVEsKPiArICAgICAgIE9VVERFVl9LRVJOLAo+
ICsjZW5kaWYKPiArICAgICAgIE9VVERFVl9ERUJVRywKPiArfTsKPiArCj4gK3N0cnVjdCBvdXRf
ZGV2IHsKPiArICAgICAgIGVudW0gb3V0X2Rldl90eXBlIHR5cGU7Cj4gKwo+ICsgICAgICAgdW5p
b24gewo+ICsgICAgICAgICAgICAgICAvKiBPVVRERVZfS0VSTiwgT1VUREVWX0RFQlVHICovCj4g
KyAgICAgICAgICAgICAgIHN0cnVjdCB7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgaW50IGx2
bDsgLyogT1VUREVWX0tFUk4gb25seSAqLwo+ICsgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIgKmxpYm5hbWU7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc3Jj
bmFtZTsKPiArICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgc3JjbGluZTsKPiAr
ICAgICAgICAgICAgICAgfSB1a19wcjsKPiArCj4gKyAgICAgICAgICAgICAgIC8qIFVLX0hYRE9V
VF9GSUxFICovCj4gKyAgICAgICAgICAgICAgIHN0cnVjdCB7Cj4gKyAgICAgICAgICAgICAgICAg
ICAgICAgRklMRSAqZnA7Cj4gKyAgICAgICAgICAgICAgIH0gZmlsZTsKPiArCj4gKyAgICAgICAg
ICAgICAgIC8qIFVLX0hYRE9VVF9CVUZGRVIgKi8KPiArICAgICAgICAgICAgICAgc3RydWN0IHsK
PiArICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpwb3M7Cj4gKyAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IGxlZnQ7Cj4gKyAgICAgICAgICAgICAgIH0gYnVmZmVyOwo+ICsgICAgICAg
fTsKPiArfTsKPiArCj4gKy8qKgo+ICsgKiBTZW5kcyBhIGZvcm1hdHRlZCBzdHJpbmcgdG8gYSBn
aXZlbiBvdXRwdXQgZGV2aWNlCj4gKyAqLwo+ICtpbnQgb3V0ZihzdHJ1Y3Qgb3V0X2RldiAqZGV2
LCBjb25zdCBjaGFyICpmbXQsIC4uLik7Cj4gKwo+ICsjZGVmaW5lIG91dF9kZXZfaW5pdF9maWxl
KGRldiwgZnApICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICBkbyB7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAg
ICAgICAgICAgICAgKGRldiktPnR5cGUgICAgICAgICAgPSBPVVRERVZfRklMRTsgICAgICAgICAg
ICAgXAo+ICsgICAgICAgICAgICAgICAoZGV2KS0+ZmlsZS5mcCAgICAgICA9IChmcCk7ICAgICAg
ICAgICAgICAgICAgICBcCj4gKyAgICAgICB9IHdoaWxlICgwKQo+ICsKPiArI2RlZmluZSBvdXRf
ZGV2X2luaXRfYnVmZmVyKGRldiwgYWRkciwgbGVuKSAgICAgICAgICAgICAgICAgICAgXAo+ICsg
ICAgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCj4gKyAgICAgICAgICAgICAgIChkZXYpLT50eXBlICAgICAgICAgID0gT1VUREVWX0JV
RkZFUjsgICAgICAgICAgIFwKPiArICAgICAgICAgICAgICAgKGRldiktPmJ1ZmZlci5wb3MgICAg
PSAoYWRkcik7ICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgICAgICAgICAoZGV2KS0+YnVm
ZmVyLmxlZnQgICA9IChsZW4pOyAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICB9IHdoaWxl
ICgwKQo+ICsKPiArI2lmIENPTkZJR19MSUJVS0RFQlVHX1BSSU5USwo+ICsjZGVmaW5lIG91dF9k
ZXZfaW5pdF9rZXJuKGRldiwgbHZsLCBsaWJuYW1lLCBzcmNuYW1lLCBzcmNsaW5lKSBcCj4gKyAg
ICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKPiArICAgICAgICAgICAgICAgKGRldiktPnR5cGUgICAgICAgICAgPSBPVVRERVZfS0VS
TjsgICAgICAgICAgICAgXAo+ICsgICAgICAgICAgICAgICAoZGV2KS0+dWtfcHIubHZsICAgICA9
IChsdmwpOyAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAgICAgICAgIChkZXYpLT51a19w
ci5saWJuYW1lID0gKGxpYm5hbWUpOyAgICAgICAgICAgICAgIFwKPiArICAgICAgICAgICAgICAg
KGRldiktPnVrX3ByLnNyY25hbWUgPSAoc3JjbmFtZSk7ICAgICAgICAgICAgICAgXAo+ICsgICAg
ICAgICAgICAgICAoZGV2KS0+dWtfcHIuc3JjbGluZSA9IChzcmNsaW5lKTsgICAgICAgICAgICAg
ICBcCj4gKyAgICAgICB9IHdoaWxlICgwKQo+ICsjZW5kaWYKPiArCj4gKyNkZWZpbmUgb3V0X2Rl
dl9pbml0X2RlYnVnKGRldiwgbGlibmFtZSwgc3JjbmFtZSwgc3JjbGluZSkgICAgIFwKPiArICAg
ICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAo+ICsgICAgICAgICAgICAgICAoZGV2KS0+dHlwZSAgICAgICAgICA9IE9VVERFVl9ERUJV
RzsgICAgICAgICAgICBcCj4gKyAgICAgICAgICAgICAgIChkZXYpLT51a19wci5saWJuYW1lID0g
KGxpYm5hbWUpOyAgICAgICAgICAgICAgIFwKPiArICAgICAgICAgICAgICAgKGRldiktPnVrX3By
LnNyY25hbWUgPSAoc3JjbmFtZSk7ICAgICAgICAgICAgICAgXAo+ICsgICAgICAgICAgICAgICAo
ZGV2KS0+dWtfcHIuc3JjbGluZSA9IChzcmNsaW5lKTsgICAgICAgICAgICAgICBcCj4gKyAgICAg
ICB9IHdoaWxlICgwKQo+ICsKPiArI2VuZGlmIC8qIF9fVUtERUJVR19JTlRFUk5BTF9PVVRGX0hf
XyAqLwo+IC0tCj4gMi4yMC4xCj4KPgo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fCj4gTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdAo+IE1pbmlvcy1kZXZl
bEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwo+IGh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFp
bG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWwKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVs
QGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1h
bi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Thu Apr 02 15:27:48 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 02 Apr 2020 15:27: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 1jK1ky-00027t-CD; Thu, 02 Apr 2020 15:27:48 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=z5oR=5S=gmail.com=felipehuici@srs-us1.protection.inumbo.net>)
 id 1jK1kx-00027k-9q
 for minios-devel@lists.xen.org; Thu, 02 Apr 2020 15:27:47 +0000
X-Inumbo-ID: 80efc1bc-74f6-11ea-83d8-bc764e2007e4
Received: from mail-ua1-x941.google.com (unknown [2607:f8b0:4864:20::941])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 80efc1bc-74f6-11ea-83d8-bc764e2007e4;
 Thu, 02 Apr 2020 15:27:46 +0000 (UTC)
Received: by mail-ua1-x941.google.com with SMTP id l18so1323482uak.4
 for <minios-devel@lists.xen.org>; Thu, 02 Apr 2020 08:27:46 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=mime-version:references:in-reply-to:from:date:message-id:subject:to
 :cc; bh=UyF5vg3Ex2pMCGF7EaiUhK/WCz8TnNGUTrsvHhNupI4=;
 b=agV2q9u0KEKG/8bGEwAtjq6VZQX54CnGZbVW5oTYSJzjKIGzTv6Ud5ahlLgVjgMe8g
 bUGs95Z2oilkiNzDLgeQ+b2bsB79ZxB/MNXDEXgYk5NDzX3lR3WOeZo7GW0mjc1PO8wj
 R2V/Rk0hwKZ9RCHKxXYr6urrGWSCR6yHkiZIZDAgnIqtsjPKBFV+MIwer5VGJUs+TWSR
 0C+6yDp9DmxZmN3AeOsFHDqaiR9Bo5MdC02yvgyD4yQ1su9U+hyzDf2WAcQyHA1WEDYo
 yU6vn215SudDp7XyyH7D2KmXlFewGX+qzIgSYdjx1UeJajYyxlr4KiqcfNfsEgnqLHA2
 T/8w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:mime-version:references:in-reply-to:from:date
 :message-id:subject:to:cc;
 bh=UyF5vg3Ex2pMCGF7EaiUhK/WCz8TnNGUTrsvHhNupI4=;
 b=iqookHIxvnDgSdO1fQi5qD6JIE75qFCCUuKwWQ8fydlQA+8oi1uWq9RD2XbY5bOh/t
 bfnrrjCP+GTfOmbvuyviddwuq8+QCf8CBscpbmNIMVNeIhyBGw03gxqdRe8HA5TBHCYY
 Og1Jo60ocmV+vLF+/fOk1EzUxsIx2VubQD9uMXafoN2K/r7zmpi23bFgXaQ3iC2EJ2Uq
 v3+UE4axSgUZgl2HDTvywIEzvGEbuWcUVr2/yomZrRpYHoJj6AR5Dh02Aqg9vGU7IQNj
 xU2JmD80ASFxhwZ2S0GoCDAfWaMocbQp45EJCYZ4+Uruw/4/FGXM6UNqC8v+Hqzpsef1
 OLyQ==
X-Gm-Message-State: AGi0PuY5+M+0GP8oWGxBjHah7jP+aY9Gwj3l3vJW3OpA8fYG9XnsmOWa
 GS05r34NgeOZ2c0Y/+7oWD7nuBTmWET+cOInkGM=
X-Google-Smtp-Source: APiQypKAQnjz6obYA13mHUp5bPSRCxGAX4VVRXqlqZxUoE23qZd+boAC1U5lc8gFQg0OiVTP2rdAAr1PDQYBNrxBnPs=
X-Received: by 2002:ab0:4913:: with SMTP id z19mr2871536uac.132.1585841265746; 
 Thu, 02 Apr 2020 08:27:45 -0700 (PDT)
MIME-Version: 1.0
References: <20200331214927.5398-1-simon.kuenzer@neclab.eu>
 <20200331214927.5398-3-simon.kuenzer@neclab.eu>
In-Reply-To: <20200331214927.5398-3-simon.kuenzer@neclab.eu>
From: "felipehuici ." <felipehuici@gmail.com>
Date: Thu, 2 Apr 2020 17:27:34 +0200
Message-ID: <CAEX4t-PW0nVDVjDw6r7uOgi8fn7-Wf_9QJH0N_2CuSLhDAUM=w@mail.gmail.com>
To: Simon Kuenzer <simon.kuenzer@neclab.eu>
Subject: Re: [Minios-devel] [UNIKRAFT PATCH 2/3] lib/ukdebug: Provide
 uk_asmdumpd(), uk_asmdumpk()
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>, 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>

UmV2aWV3ZWQtYnk6IEZlbGlwZSBIdWljaSA8ZmVsaXBlLmh1aWNpQG5lY2xhYi5ldT4KCk9uIFR1
ZSwgTWFyIDMxLCAyMDIwIGF0IDExOjUwIFBNIFNpbW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJA
bmVjbGFiLmV1PiB3cm90ZToKPgo+IFRoaXMgY29tbWl0IGludHJvZHVjZXMgYHVrX2FzbWR1bXBk
KClgIGFuZCBgdWtfYXNtZHVtcGsoKWAuIFRoZXNlCj4gbWV0aG9kcyBwcmludCBmb3IgYSBnaXZl
biBpbnN0cnVjdGlvbiBhZGRyZXNzIHRoZSBkaXNhc3NlbWJsZWQKPiByZXByZXNlbnRhdGlvbiB0
byB0aGUgREVCVUcgb3IgS0VSTiBvdXRwdXQuIFRoZSBjYWxscyBhcmUKPiBhdXRvbWF0aWNhbGx5
IHJlbW92ZWQgZnJvbSB0aGUgY29kZSB3aGVuIHRoZXJlIGlzIG5vIHN1cHBvcnRlZAo+IGRpc2Fz
c2VtYmxlciBsaWJyYXJ5IGF2YWlsYWJsZS4gVGhpcyBjb21taXQgaW5jbHVkZXMgc3VwcG9ydCBm
b3IKPiBsaWJ6eWRpcy4KPgo+IFNpZ25lZC1vZmYtYnk6IFNpbW9uIEt1ZW56ZXIgPHNpbW9uLmt1
ZW56ZXJAbmVjbGFiLmV1Pgo+IC0tLQo+ICBsaWIvdWtkZWJ1Zy9NYWtlZmlsZS51ayAgICAgICAg
ICB8ICAgMSArCj4gIGxpYi91a2RlYnVnL2FzbWR1bXAuYyAgICAgICAgICAgIHwgMTE3ICsrKysr
KysrKysrKysrKysrKysrKysrKysrKysKPiAgbGliL3VrZGVidWcvZXhwb3J0c3ltcy51ayAgICAg
ICAgfCAgIDIgKwo+ICBsaWIvdWtkZWJ1Zy9pbmNsdWRlL3VrL2FzbWR1bXAuaCB8IDEyOSArKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gIDQgZmlsZXMgY2hhbmdlZCwgMjQ5IGluc2Vy
dGlvbnMoKykKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi91a2RlYnVnL2FzbWR1bXAuYwo+ICBj
cmVhdGUgbW9kZSAxMDA2NDQgbGliL3VrZGVidWcvaW5jbHVkZS91ay9hc21kdW1wLmgKPgo+IGRp
ZmYgLS1naXQgYS9saWIvdWtkZWJ1Zy9NYWtlZmlsZS51ayBiL2xpYi91a2RlYnVnL01ha2VmaWxl
LnVrCj4gaW5kZXggNmIzYWNmN2EuLmYwNmVlYjg3IDEwMDY0NAo+IC0tLSBhL2xpYi91a2RlYnVn
L01ha2VmaWxlLnVrCj4gKysrIGIvbGliL3VrZGVidWcvTWFrZWZpbGUudWsKPiBAQCAtMTAsNiAr
MTAsNyBAQCBMSUJVS0RFQlVHX1NSQ1MteSArPSAkKExJQlVLREVCVUdfQkFTRSkvcHJpbnQuYwo+
ICBMSUJVS0RFQlVHX1NSQ1MtJChDT05GSUdfSEFWRV9MSUJDKSArPSAkKExJQlVLREVCVUdfQkFT
RSkvc25wcmludGYuYwo+ICBMSUJVS0RFQlVHX1NSQ1MteSArPSAkKExJQlVLREVCVUdfQkFTRSkv
b3V0Zi5jCj4gIExJQlVLREVCVUdfU1JDUy15ICs9ICQoTElCVUtERUJVR19CQVNFKS9oZXhkdW1w
LmMKPiArTElCVUtERUJVR19TUkNTLSQoQ09ORklHX0xJQlpZRElTKSArPSAkKExJQlVLREVCVUdf
QkFTRSkvYXNtZHVtcC5jCj4gIExJQlVLREVCVUdfU1JDUy0kKENPTkZJR19MSUJVS0RFQlVHX1RS
QUNFUE9JTlRTKSArPSAkKExJQlVLREVCVUdfQkFTRSkvdHJhY2UuYwo+ICBMSUJVS0RFQlVHX1NS
Q1MtJChDT05GSUdfTElCVkZTQ09SRSkgKz0gJChMSUJVS0RFQlVHX0JBU0UpL2V4dHJhLmxkCj4K
PiBkaWZmIC0tZ2l0IGEvbGliL3VrZGVidWcvYXNtZHVtcC5jIGIvbGliL3VrZGVidWcvYXNtZHVt
cC5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMC4uZjczYjBkNjUKPiAt
LS0gL2Rldi9udWxsCj4gKysrIGIvbGliL3VrZGVidWcvYXNtZHVtcC5jCj4gQEAgLTAsMCArMSwx
MTcgQEAKPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZSAqLwo+ICsv
Kgo+ICsgKiBEdW1wIGRpc2Fzc2VtYmxlciBvdXRwdXQgdG8ga2Vybi9kZWJ1ZyBjb25zb2xlCj4g
KyAqCj4gKyAqIEF1dGhvcnM6IFNpbW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJAbmVjbGFiLmV1
Pgo+ICsgKgo+ICsgKgo+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMjAsIE5FQyBFdXJvcGUgTHRkLiwg
TkVDIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgo+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
ICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCj4gKyAqLwo+ICsKPiArI2luY2x1ZGUgPHVr
L2FzbWR1bXAuaD4KPiArI2luY2x1ZGUgPHVrL2Fzc2VydC5oPgo+ICsjaW5jbHVkZSA8ZXJybm8u
aD4KPiArI2luY2x1ZGUgIm91dGYuaCIKPiArCj4gKyNpZiBDT05GSUdfTElCWllESVMKPiArI2lu
Y2x1ZGUgPFp5ZGlzL1p5ZGlzLmg+Cj4gKwo+ICsvKioKPiArICogRGlzYXNzZW1ibGUgPG51bV9p
bnM+IGluc3RydWN0aW9ucyB3aXRoIHp5ZGlzIHN0YXJ0aW5nCj4gKyAqIHdpdGggaW5zdHJ1Y3Rp
b24gYXQgPGFkZHI+Cj4gKyAqLwo+ICtzdGF0aWMgaW50IF9hc21kdW1wKHN0cnVjdCBvdXRfZGV2
ICpvLAo+ICsgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICppbnN0ciwgdW5zaWduZWQgaW50
IGNvdW50KQo+ICt7Cj4gKyAgICAgICBaeWRpc0RlY29kZXIgZGNyOwo+ICsgICAgICAgWnlkaXNG
b3JtYXR0ZXIgZm10Owo+ICsgICAgICAgWnlkaXNEZWNvZGVkSW5zdHJ1Y3Rpb24gaW5zOwo+ICsg
ICAgICAgY2hhciBidWZbMTI4XTsKPiArICAgICAgIGludCBvZmZzZXQgPSAwOwo+ICsgICAgICAg
aW50IHJldCwgdG90YWwgPSAwOwo+ICsgICAgICAgX191cHRyIGFkZHIgPSAoX191cHRyKSBpbnN0
cjsKPiArCj4gKyNpZiBfX1g4Nl8zMl9fCj4gKyAgICAgICBpZiAoIVpZQU5fU1VDQ0VTUyhaeWRp
c0RlY29kZXJJbml0KCZkY3IsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFpZRElTX01BQ0hJTkVfTU9ERV9MT05HX0NPTVBBVF8zMiwKPiArICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWllESVNfQUREUkVTU19XSURUSF8zMikpKQo+
ICsgICAgICAgICAgICAgICByZXR1cm4gLTE7Cj4gKyNlbGlmIF9fWDg2XzY0X18KPiArICAgICAg
IGlmICghWllBTl9TVUNDRVNTKFp5ZGlzRGVjb2RlckluaXQoJmRjciwKPiArICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWllESVNfTUFDSElORV9NT0RFX0xPTkdfNjQs
Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFpZRElTX0FERFJF
U1NfV0lEVEhfNjQpKSkKPiArICAgICAgICAgICAgICAgcmV0dXJuIC0xOwo+ICsjZWxzZQo+ICsj
ZXJyb3IgbGlienlkaXM6IFVuc3VwcG9ydGVkIGFyY2hpdGVjdHVyZQo+ICsjZW5kaWYKPiArCj4g
KyAgICAgICBpZiAoIVpZQU5fU1VDQ0VTUyhaeWRpc0Zvcm1hdHRlckluaXQoJmZtdCwKPiArICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBaWURJU19GT1JNQVRURVJf
U1RZTEVfQVRUKSkpCj4gKyAgICAgICAgICAgICAgIHJldHVybiAtMTsKPiArCj4gKyAgICAgICB3
aGlsZSAoY291bnQpIHsKPiArICAgICAgICAgICAgICAgYWRkciA9ICgoX191cHRyKSBpbnN0cikg
KyBvZmZzZXQ7Cj4gKyAgICAgICAgICAgICAgIFp5ZGlzRGVjb2RlckRlY29kZUJ1ZmZlcigmZGNy
LCAoY29uc3Qgdm9pZCAqKSBhZGRyLCAxNiwgJmlucyk7Cj4gKyAgICAgICAgICAgICAgIFp5ZGlz
Rm9ybWF0dGVyRm9ybWF0SW5zdHJ1Y3Rpb24oJmZtdCwgJmlucywgYnVmLCBzaXplb2YoYnVmKSwK
PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyKTsK
PiArICAgICAgICAgICAgICAgcmV0ID0gb3V0ZihvLCAiJTA4Il9fUFJJdXB0ciIgPCslZD46ICVo
c1xuIiwgYWRkciwgb2Zmc2V0LCBidWYpOwo+ICsgICAgICAgICAgICAgICBpZiAocmV0IDwgMCkK
PiArICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ICsKPiArICAgICAgICAgICAg
ICAgdG90YWwgKz0gcmV0Owo+ICsgICAgICAgICAgICAgICBvZmZzZXQgKz0gaW5zLmxlbmd0aDsK
PiArICAgICAgICAgICAgICAgY291bnQtLTsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICByZXR1
cm4gdG90YWw7Cj4gK30KPiArI2Vsc2UgLyogQ09ORklHX0xJQlpZRElTICovCj4gKyNlcnJvciBO
byBzdXBwb3J0ZWQgZGlzYXNzZW1ibGVyIGJhY2tlbmQgYXZhaWxhYmxlLgo+ICsjZW5kaWYgLyog
Q09ORklHX0xJQlpZRElTICovCj4gKwo+ICt2b2lkIF91a19hc21kdW1wZChjb25zdCBjaGFyICps
aWJuYW1lLCBjb25zdCBjaGFyICpzcmNuYW1lLAo+ICsgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGludCBzcmNsaW5lLCBjb25zdCB2b2lkICppbnN0ciwKPiArICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBpbnQgaW5zdHJfY291bnQpCj4gK3sKPiArICAgICAgIHN0cnVjdCBvdXRfZGV2IG87Cj4g
Kwo+ICsgICAgICAgb3V0X2Rldl9pbml0X2RlYnVnKCZvLCBsaWJuYW1lLCBzcmNuYW1lLCBzcmNs
aW5lKTsKPiArICAgICAgIF9hc21kdW1wKCZvLCBpbnN0ciwgaW5zdHJfY291bnQpOwo+ICt9Cj4g
Kwo+ICsjaWYgQ09ORklHX0xJQlVLREVCVUdfUFJJTlRLCj4gK3ZvaWQgX3VrX2FzbWR1bXBrKGlu
dCBsdmwsIGNvbnN0IGNoYXIgKmxpYm5hbWUsCj4gKyAgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciAqc3JjbmFtZSwgdW5zaWduZWQgaW50IHNyY2xpbmUsCj4gKyAgICAgICAgICAgICAgICAgY29u
c3Qgdm9pZCAqaW5zdHIsIHVuc2lnbmVkIGludCBpbnN0cl9jb3VudCkKPiArewo+ICsgICAgICAg
c3RydWN0IG91dF9kZXYgbzsKPiArCj4gKyAgICAgICBvdXRfZGV2X2luaXRfa2VybigmbywgbHZs
LCBsaWJuYW1lLCBzcmNuYW1lLCBzcmNsaW5lKTsKPiArICAgICAgIF9hc21kdW1wKCZvLCBpbnN0
ciwgaW5zdHJfY291bnQpOwo+ICt9Cj4gKyNlbmRpZiAvKiBDT05GSUdfTElCVUtERUJVR19QUklO
VEsgKi8KPiBkaWZmIC0tZ2l0IGEvbGliL3VrZGVidWcvZXhwb3J0c3ltcy51ayBiL2xpYi91a2Rl
YnVnL2V4cG9ydHN5bXMudWsKPiBpbmRleCA5NzYzNzY4Zi4uZjFlMTk5MDAgMTAwNjQ0Cj4gLS0t
IGEvbGliL3VrZGVidWcvZXhwb3J0c3ltcy51awo+ICsrKyBiL2xpYi91a2RlYnVnL2V4cG9ydHN5
bXMudWsKPiBAQCAtNyw1ICs3LDcgQEAgdWtfaGV4ZHVtcGYKPiAgdWtfaGV4ZHVtcGQKPiAgX3Vr
X2hleGR1bXBkCj4gIF91a19oZXhkdW1wawo+ICtfdWtfYXNtZHVtcGQKPiArX3VrX2FzbWR1bXBr
Cj4gIHVrX3RyYWNlX2J1ZmZlcl9mcmVlCj4gIHVrX3RyYWNlX2J1ZmZlcl93cml0ZXAKPiBkaWZm
IC0tZ2l0IGEvbGliL3VrZGVidWcvaW5jbHVkZS91ay9hc21kdW1wLmggYi9saWIvdWtkZWJ1Zy9p
bmNsdWRlL3VrL2FzbWR1bXAuaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAw
MDAuLmEwNDY4ODEwCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2xpYi91a2RlYnVnL2luY2x1ZGUv
dWsvYXNtZHVtcC5oCj4gQEAgLTAsMCArMSwxMjkgQEAKPiArLyogU1BEWC1MaWNlbnNlLUlkZW50
aWZpZXI6IEJTRC0zLUNsYXVzZSAqLwo+ICsvKgo+ICsgKiBEdW1wIGRpc2Fzc2VtYmxlciBvdXRw
dXQgdG8ga2Vybi9kZWJ1ZyBjb25zb2xlCj4gKyAqCj4gKyAqIEF1dGhvcnM6IFNpbW9uIEt1ZW56
ZXIgPHNpbW9uLmt1ZW56ZXJAbmVjbGFiLmV1Pgo+ICsgKgo+ICsgKgo+ICsgKiBDb3B5cmlnaHQg
KGMpIDIwMjAsIE5FQyBFdXJvcGUgTHRkLiwgTkVDIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgo+ICsgKgo+ICsgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKPiArICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCj4gKyAqIGFyZSBt
ZXQ6Cj4gKyAqCj4gKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cj4gKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KPiArICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
PiArICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQo+ICsgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgo+ICsgKiAzLiBOZWl0aGVy
IHRoZSBuYW1lIG9mIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5vciB0aGUgbmFtZXMgb2YgaXRzCj4g
KyAqICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCj4gKyAqICAgIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCj4gKyAqCj4gKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElT
Igo+ICsgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCj4gKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCj4gKyAqIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBD
T05UUklCVVRPUlMgQkUKPiArICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgo+ICsgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgo+ICsgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKPiArICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KPiArICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
PiArICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKPiArICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Cj4gKyAqLwo+ICsKPiArI2lmbmRlZiBfX1VLREVCVUdfQVNNRFVNUF9fCj4gKyNkZWZpbmUgX19V
S0RFQlVHX0FTTURVTVBfXwo+ICsKPiArLyoqCj4gKyAqIE5PVEU6IFBsZWFzZSBub3RlLCB0aGlz
IGZpbGUgZGVmaW5lcyBvbmx5IHZhcmlhbnRzIHRoYXQgcHJpbnQgZGlzYXNzZW1ibGVyCj4gKyAq
ICAgICAgIG91dHB1dCB0byB0aGUgS0VSTiBhbmQgREVCVUcgY29uc29sZTogdWtfYXNtZHVtcGQo
KSwgdWthc21kdW1waygpLgo+ICsgKiAgICAgICBUaGV5IGFyZSBpbnRlbmRlZCBmb3IgZGVidWdn
aW5nIHB1cnBvc2Ugb25seSBiZWNhdXNlIHRoZSBjYWxscyBnZXQKPiArICogICAgICAgcmVtb3Zl
ZCBpZiB0aGVyZSBpcyBubyBzdXBwb3J0ZWQgZGlzYXNzZW1ibGVyIGJhY2tlbmQgYXZhaWxhYmxl
Cj4gKyAqICAgICAgIChlLmcuLCBsaWJ6eWRpcykuCj4gKyAqLwo+ICsKPiArI2luY2x1ZGUgPHN0
ZGlvLmg+Cj4gKyNpbmNsdWRlIDx1ay9wcmludC5oPgo+ICsKPiArI2lmZGVmIF9fY3BsdXNwbHVz
Cj4gK2V4dGVybiAiQyIgewo+ICsjZW5kaWYKPiArCj4gKy8qCj4gKyAqIFRoZSBmb2xsb3dpbmcg
YmxvY2sgaXMgb25seSBlbmFibGVkIGlmIHN1cHBvcnRlZCBiYWNrZW5kcyBhcmUgYXZhaWxhYmxl
Lgo+ICsgKiBUT0RPOiBJbiBvcmRlciB0byBhZGQgc3VwcG9ydCBmb3IgYW5vdGhlciBiYWNrZW5k
IGxpYnJhcnksIGV4dGVuZCB0aGlzCj4gKyAqICAgICAgICNpZi1jb25kaXRpb24gYW5kIGltcGxl
bWVudCBhIHByaW50aW5nIGhhbmRsZXIgKF9hc21kdW1wKCkpCj4gKyAqICAgICAgIGluIGBhc21k
dW1wLmNgCj4gKyAqLwo+ICsjaWYgQ09ORklHX0xJQlpZRElTCj4gKwo+ICsjaWZkZWYgX19JTl9M
SUJVS0RFQlVHX18KPiArLyoKPiArICogVGhpcyByZWRlZmluaXRpb24gb2YgQ09ORklHX0xJQlVL
REVCVUdfUFJJTlREIGlzIGRvaW5nIHRoZSB0cmljayB0bwo+ICsgKiBzd2l0Y2ggb24gdGhlIGNv
cnJlY3QgZGVjbGFyYXRpb24gb2YgdWtfaGV4ZHVtcGQoKSB3aGVuIHdlIGFyZSBjb21waWxpbmcK
PiArICogdGhpcyBsaWJyYXJ5IGFuZCBoYXZlIHRoZSBnbG9iYWwgZGVidWcgc3dpdGNoIENPTkZJ
R19MSUJVS0RFQlVHX1BSSU5URAo+ICsgKiBub3QgZW5hYmxlZC4KPiArICovCj4gKyNpZiAhZGVm
aW5lZCBDT05GSUdfTElCVUtERUJVR19QUklOVEQgfHwgIUNPTkZJR19MSUJVS0RFQlVHX1BSSU5U
RAo+ICsjdW5kZWYgQ09ORklHX0xJQlVLREVCVUdfUFJJTlRECj4gKyNkZWZpbmUgQ09ORklHX0xJ
QlVLREVCVUdfUFJJTlREIDEKPiArI2VuZGlmCj4gKyNlbmRpZiAvKiBfX0lOX0xJQlVLREVCVUdf
XyAqLwo+ICsKPiArI2lmIChkZWZpbmVkIFVLX0RFQlVHKSB8fCBDT05GSUdfTElCVUtERUJVR19Q
UklOVEQKPiArLyogUGxlYXNlIHVzZSB1a19hc21kdW1wZCgpIGluc3RlYWQgKi8KPiArdm9pZCBf
dWtfYXNtZHVtcGQoY29uc3QgY2hhciAqbGlibmFtZSwgY29uc3QgY2hhciAqc3JjbmFtZSwKPiAr
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgc3JjbGluZSwgY29uc3Qgdm9pZCAqaW5zdHIs
Cj4gKyAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGluc3RyX2NvdW50KTsKPiArCj4gKyNk
ZWZpbmUgdWtfYXNtZHVtcGQoaW5zdHIsIGluc3RyX2NvdW50KSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICBfdWtfYXNtZHVtcGQoX19TVFJfTElCTkFN
RV9fLCBfX1NUUl9CQVNFTkFNRV9fLCAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgICAgICAg
ICAgICAgIF9fTElORV9fLCAoaW5zdHIpLCAoaW5zdHJfY291bnQpKQo+ICsjZWxzZSAvKiAoZGVm
aW5lZCBVS19ERUJVRykgfHwgQ09ORklHX0xJQlVLREVCVUdfUFJJTlREICovCj4gK3N0YXRpYyBp
bmxpbmUgdm9pZCB1a19hc21kdW1wZChjb25zdCB2b2lkICppbnN0ciBfX3VudXNlZCwKPiArICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgaW5zdHJfY291bnQgX191bnVz
ZWQpCj4gK3t9Cj4gKyNlbmRpZgo+ICsKPiArI2lmIENPTkZJR19MSUJVS0RFQlVHX1BSSU5USwo+
ICsvKiBQbGVhc2UgdXNlIHVrX2FzbWR1bXBrKCkgaW5zdGVhZCAqLwo+ICt2b2lkIF91a19hc21k
dW1wayhpbnQgbHZsLCBjb25zdCBjaGFyICpsaWJuYW1lLCBjb25zdCBjaGFyICpzcmNuYW1lLAo+
ICsgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHNyY2xpbmUsIGNvbnN0IHZvaWQgKmluc3Ry
LAo+ICsgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGluc3RyX2NvdW50KTsKPiArCj4gKyNk
ZWZpbmUgdWtfYXNtZHVtcGsobHZsLCBpbnN0ciwgaW5zdHJfY291bnQpICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAo+ICsgICAgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICAgICAgICAgaWYgKChs
dmwpIDw9IEtMVkxfTUFYKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAg
ICAgICAgICAgICAgICAgICAgICAgX3VrX2FzbWR1bXBrKChsdmwpLCBfX1NUUl9MSUJOQU1FX18s
IF9fU1RSX0JBU0VOQU1FX18sIFwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgX19MSU5FX18sIChpbnN0ciksIChpbnN0cl9jb3VudCkpOyBcCj4gKyAgICAgICB9IHdoaWxl
ICgwKQo+ICsjZWxzZSAvKiBDT05GSUdfTElCVUtERUJVR19QUklOVEsgKi8KPiArc3RhdGljIGlu
bGluZSB2b2lkIHVrX2FzbWR1bXBrKGludCBsdmwgX191bnVzZWQsIGNvbnN0IHZvaWQgKmluc3Ry
IF9fdW51c2VkLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBp
bnN0cl9jb3VudCBfX3VudXNlZCkKPiAre30KPiArI2VuZGlmIC8qIENPTkZJR19MSUJVS0RFQlVH
X1BSSU5USyAqLwo+ICsKPiArI2Vsc2UgLyogQmFja2VuZHMgKi8KPiArLyoKPiArICogSW4gY2Fz
ZSB0aGVyZSBpcyBubyBzdXBwb3J0ZWQgYmFja2VuZCwgd2UgcmVtb3ZlIHRoZSBhc21kdW1wKGR8
aykKPiArICogY2FsbHMgZnJvbSB0aGUgY29kZToKPiArICovCj4gK3N0YXRpYyBpbmxpbmUgdm9p
ZCB1a19hc21kdW1wZChjb25zdCB2b2lkICppbnN0ciBfX3VudXNlZCwKPiArICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGluc3RyX2NvdW50IF9fdW51c2VkKQo+ICt7
fQo+ICsKPiArI2lmIENPTkZJR19MSUJVS0RFQlVHX1BSSU5USwo+ICtzdGF0aWMgaW5saW5lIHZv
aWQgdWtfYXNtZHVtcGsoaW50IGx2bCBfX3VudXNlZCwgY29uc3Qgdm9pZCAqaW5zdHIgX191bnVz
ZWQsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBpbnN0cl9j
b3VudCBfX3VudXNlZCkKPiAre30KPiArI2VuZGlmIC8qIENPTkZJR19MSUJVS0RFQlVHX1BSSU5U
SyAqLwo+ICsKPiArI2VuZGlmIC8qIEJhY2tlbmRzICovCj4gKwo+ICsjaWZkZWYgX19jcGx1c3Bs
dXMKPiArfQo+ICsjZW5kaWYKPiArCj4gKyNlbmRpZiAvKiBfX1VLREVCVUdfQVNNRFVNUF9fICov
Cj4gLS0KPiAyLjIwLjEKPgo+Cj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX18KPiBNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Cj4gTWluaW9zLWRldmVsQGxp
c3RzLnhlbnByb2plY3Qub3JnCj4gaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFu
L2xpc3RpbmZvL21pbmlvcy1kZXZlbAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlz
dHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xp
c3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Thu Apr 02 15:28:33 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 02 Apr 2020 15:28: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 1jK1lh-0002B1-FU; Thu, 02 Apr 2020 15:28:33 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=z5oR=5S=gmail.com=felipehuici@srs-us1.protection.inumbo.net>)
 id 1jK1lg-0002Aw-KZ
 for minios-devel@lists.xen.org; Thu, 02 Apr 2020 15:28:32 +0000
X-Inumbo-ID: 9c37d680-74f6-11ea-b4f4-bc764e2007e4
Received: from mail-vk1-xa42.google.com (unknown [2607:f8b0:4864:20::a42])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 9c37d680-74f6-11ea-b4f4-bc764e2007e4;
 Thu, 02 Apr 2020 15:28:32 +0000 (UTC)
Received: by mail-vk1-xa42.google.com with SMTP id n128so991818vke.5
 for <minios-devel@lists.xen.org>; Thu, 02 Apr 2020 08:28:32 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=mime-version:references:in-reply-to:from:date:message-id:subject:to
 :cc; bh=rDIgA1HRyFmWmL+7CcD4UhCY1T0Pm6RGIY2iXrA40NE=;
 b=qDVreVGG0fQfgPDukyPRlk08hjCiHLkJX+U4LSJm++CKvu7sBF8oGw9wmx0r1p0tQy
 WROpv4kXIu1bMJpEIdp+deWIx98T2ogY52IZI/a3CP/MvmpjvEPXhYvCe6/OuHPhaN3a
 haEXYOFbht5hTahHcflEaBLi4rhS0CCiEwOAXEsJlsJSROjqbHtps45utGIpZgFa5WO7
 cLkClXDmE4WoCryBh7ra/287kGbNm2qVyeTaCznnLHT7ZY8cafV99O8CgQMJ4jVE4Nei
 z2fc1G3971iw5a2xonZ1SBTsVLGGrOn7spI9Q3amPcCni8rcxhXOh2FSnIIAOWO/UZ/P
 gHKw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:mime-version:references:in-reply-to:from:date
 :message-id:subject:to:cc;
 bh=rDIgA1HRyFmWmL+7CcD4UhCY1T0Pm6RGIY2iXrA40NE=;
 b=V0mu9OGksCy4kcH3q+W48S3RdGOqUTIQMCsC52dvma+yD7qq7Ij6M4VNOU0ex9Tnv5
 evvQVDp4geoipZyRfjqV1dm8roxPO3WI7F9vB8REbHOjGJTYeDlMj5WL/F+rlVy2KtfB
 bSHl6n1DeqXLPrGiZJBzS11w8W5y3kqYwslnuhP4URuLljffDsh045b3e6IWm/XhqvKm
 8IZFf2L7NIIE4tDeLDCGWf9R4g5/s588fzDFXtkBSOF6MeKW18r0wc71wCwUQUt+3W3S
 wHW2f64fKZvny42n7bt/nXHiMcylnIgR8dvJ/uN0kOL4I637Df9+87kBwIkVyLTIMWZt
 WVRQ==
X-Gm-Message-State: AGi0PuYp+6rrVikJ9jHmLmC/mZYertibTP6GP5rxIVbqly1ff0mg6IP3
 WZARgG1WWFkZlp1ceasu2OW2PdyJlRG6pafS9vjC7XK8bAM=
X-Google-Smtp-Source: APiQypIak34LMc7VlozDLbMWPY8b+qIBExEI9EELlZM8za4x8YnItHL3qc2fPtdpLsReWaLrSWbdxhWD0mIGXM65EAw=
X-Received: by 2002:a1f:6182:: with SMTP id v124mr2600671vkb.48.1585841311619; 
 Thu, 02 Apr 2020 08:28:31 -0700 (PDT)
MIME-Version: 1.0
References: <20200331214927.5398-1-simon.kuenzer@neclab.eu>
 <20200331214927.5398-4-simon.kuenzer@neclab.eu>
In-Reply-To: <20200331214927.5398-4-simon.kuenzer@neclab.eu>
From: "felipehuici ." <felipehuici@gmail.com>
Date: Thu, 2 Apr 2020 17:28:20 +0200
Message-ID: <CAEX4t-PELNrzidL+WAAYqLzYSX5+VQL40jnRASE9X9p=UMg=zQ@mail.gmail.com>
To: Simon Kuenzer <simon.kuenzer@neclab.eu>
Subject: Re: [Minios-devel] [UNIKRAFT PATCH 3/3] plat/common/x86:
 Disassemble failed instruction on crashes
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>, 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>

UmV2aWV3ZWQtYnk6IEZlbGlwZSBIdWljaSA8ZmVsaXBlLmh1aWNpQG5lY2xhYi5ldT4KCk9uIFR1
ZSwgTWFyIDMxLCAyMDIwIGF0IDExOjUwIFBNIFNpbW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJA
bmVjbGFiLmV1PiB3cm90ZToKPgo+IFNob3cgZGlzYXNzZW1ibGVkIGZhaWxlZCBpbnN0cnVjdGlv
biBvbiBjcmFzaCBvdXRwdXRzIHdpdGgKPiBgdWtfYXNtZHVtcGsoKWAuIFRoaXMgZnVuY3Rpb25h
bGl0eSBpcyBvbmx5IGF2YWlsYWJsZSB3aGVuIGEKPiBzdXBwb3J0ZWQgZGlzYXNzZW1ibGVyIGJh
Y2tlbmQgbGlicmFyeSBpcyBpbmNsdWRlZCB0byB0aGUgYnVpbGQKPiAoZS5nLiwgbGlienlkaXMp
Lgo+Cj4gU2lnbmVkLW9mZi1ieTogU2ltb24gS3VlbnplciA8c2ltb24ua3VlbnplckBuZWNsYWIu
ZXU+Cj4gLS0tCj4gIHBsYXQvY29tbW9uL3g4Ni90cmFwcy5jIHwgNCArKysrCj4gIDEgZmlsZSBj
aGFuZ2VkLCA0IGluc2VydGlvbnMoKykKPgo+IGRpZmYgLS1naXQgYS9wbGF0L2NvbW1vbi94ODYv
dHJhcHMuYyBiL3BsYXQvY29tbW9uL3g4Ni90cmFwcy5jCj4gaW5kZXggM2FmOWM0OTkuLjk2MTQz
ODY3IDEwMDY0NAo+IC0tLSBhL3BsYXQvY29tbW9uL3g4Ni90cmFwcy5jCj4gKysrIGIvcGxhdC9j
b21tb24veDg2L3RyYXBzLmMKPiBAQCAtMzksNiArMzksNyBAQAo+ICAjaW5jbHVkZSA8eDg2L3Ry
YXBzLmg+Cj4gICNpbmNsdWRlIDx1ay9wcmludC5oPgo+ICAjaW5jbHVkZSA8dWsvYXNzZXJ0Lmg+
Cj4gKyNpbmNsdWRlIDx1ay9hc21kdW1wLmg+Cj4KPiAgLyogQSBnZW5lcmFsIHdvcmQgb2YgY2F1
dGlvbiB3aGVuIHdyaXRpbmcgdHJhcCBoYW5kbGVycy4gVGhlIHBsYXRmb3JtIHRyYXAKPiAgICog
ZW50cnkgY29kZSBpcyBzZXQgdXAgdG8gcHJvcGVybHkgc2F2ZSBnZW5lcmFsLXB1cnBvc2UgcmVn
aXN0ZXJzIChlLmcuLCByc2ksCj4gQEAgLTc4LDYgKzc5LDcgQEAgdm9pZCBkb191bmhhbmRsZWRf
dHJhcChpbnQgdHJhcG5yLCBjaGFyICpzdHIsIHN0cnVjdCBfX3JlZ3MgKnJlZ3MsCj4gICAgICAg
ICB1a19wcl9pbmZvKCJSZWdzIGFkZHJlc3MgJXBcbiIsIHJlZ3MpOwo+ICAgICAgICAgLyogVE9E
TyByZXZpc2l0IHdoZW4gVUtfQ1JBU0ggd2lsbCBhbHNvIGR1bXAgdGhlIHJlZ2lzdGVycyAqLwo+
ICAgICAgICAgZHVtcF9yZWdzKHJlZ3MpOwo+ICsgICAgICAgdWtfYXNtZHVtcGsoS0xWTF9DUklU
LCAodm9pZCAqKSByZWdzLT5yaXAsIDgpOwo+ICAgICAgICAgVUtfQ1JBU0goIkNyYXNoaW5nXG4i
KTsKPiAgfQo+Cj4gQEAgLTEwNCw2ICsxMDYsNyBAQCB2b2lkIGRvX2dwX2ZhdWx0KHN0cnVjdCBf
X3JlZ3MgKnJlZ3MsIGxvbmcgZXJyb3JfY29kZSkKPiAgICAgICAgICAgICAgICAgICAgcmVncy0+
cmlwLCBlcnJvcl9jb2RlKTsKPiAgICAgICAgIGR1bXBfcmVncyhyZWdzKTsKPiAgICAgICAgIHN0
YWNrX3dhbGtfZm9yX2ZyYW1lKHJlZ3MtPnJicCk7Cj4gKyAgICAgICB1a19hc21kdW1wayhLTFZM
X0NSSVQsICh2b2lkICopIHJlZ3MtPnJpcCwgNik7Cj4gICAgICAgICBkdW1wX21lbShyZWdzLT5y
c3ApOwo+ICAgICAgICAgZHVtcF9tZW0ocmVncy0+cmJwKTsKPiAgICAgICAgIGR1bXBfbWVtKHJl
Z3MtPnJpcCk7Cj4gQEAgLTEyMSw2ICsxMjQsNyBAQCB2b2lkIGRvX3BhZ2VfZmF1bHQoc3RydWN0
IF9fcmVncyAqcmVncywgdW5zaWduZWQgbG9uZyBlcnJvcl9jb2RlKQo+Cj4gICAgICAgICBkdW1w
X3JlZ3MocmVncyk7Cj4gICAgICAgICBzdGFja193YWxrX2Zvcl9mcmFtZShyZWdzLT5yYnApOwo+
ICsgICAgICAgdWtfYXNtZHVtcGsoS0xWTF9DUklULCAodm9pZCAqKSByZWdzLT5yaXAsIDYpOwo+
ICAgICAgICAgZHVtcF9tZW0ocmVncy0+cnNwKTsKPiAgICAgICAgIGR1bXBfbWVtKHJlZ3MtPnJi
cCk7Cj4gICAgICAgICBkdW1wX21lbShyZWdzLT5yaXApOwo+IC0tCj4gMi4yMC4xCj4KPgo+IF9f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gTWluaW9zLWRl
dmVsIG1haWxpbmcgbGlzdAo+IE1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwo+IGh0
dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWwK
Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1k
ZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBz
Oi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Thu Apr 02 16:30:22 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 02 Apr 2020 16:30: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 1jK2jU-000179-KL; Thu, 02 Apr 2020 16:30: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=Ah0r=5S=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1jK2jT-000174-Du
 for minios-devel@lists.xenproject.org; Thu, 02 Apr 2020 16:30:19 +0000
X-Inumbo-ID: 3cb98cf4-74ff-11ea-bc05-12813bfff9fa
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 3cb98cf4-74ff-11ea-bc05-12813bfff9fa;
 Thu, 02 Apr 2020 16:30:18 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id DF8EF103BD8;
 Thu,  2 Apr 2020 18:30:16 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (atlas-a.office.hd)
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 ROLR6jVgf1F0; Thu,  2 Apr 2020 18:30:16 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from puck.office.hd (puck.office.hd [192.168.24.91])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id BA4B6100BD9;
 Thu,  2 Apr 2020 18:30:16 +0200 (CEST)
Received: from [10.7.0.24] (192.168.24.96) by puck.office.hd (192.168.24.91)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Thu, 2 Apr 2020
 18:30:16 +0200
To: Hugo Lefeuvre <hle@owl.eu.com>, <minios-devel@lists.xenproject.org>
References: <5b7ac3809a611277163efca3d71e7da5120164c5.1582895769.git.hugo.lefeuvre@neclab.eu>
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
Message-ID: <b079dd89-2814-a29a-3db8-c9b849c1e20c@neclab.eu>
Date: Thu, 2 Apr 2020 18:30:15 +0200
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:68.0)
 Gecko/20100101 Thunderbird/68.6.0
MIME-Version: 1.0
In-Reply-To: <5b7ac3809a611277163efca3d71e7da5120164c5.1582895769.git.hugo.lefeuvre@neclab.eu>
Content-Language: en-US
X-Originating-IP: [192.168.24.96]
X-ClientProxiedBy: oberon.office.hd (192.168.24.90) To puck.office.hd
 (192.168.24.91)
Subject: Re: [Minios-devel] [UNIKRAFT PATCH] lib/vfscore: fix null pointer
 dereferences
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

SGkgSHVnbywKCnRoYW5rcyBhIGxvdCBmb3IgdGhpcyB3b3JrLCBJIGhhdmUgc29tZSBjb21tZW50
cyBpbmxpbmUuCgpUaGFua3MsCgpTaW1vbgoKT24gMjguMDIuMjAgMTQ6MjIsIEh1Z28gTGVmZXV2
cmUgd3JvdGU6Cj4gZGVudHJ5X2FsbG9jIGFuZCBkZW50cnlfbW92ZSBib3RoIGNyZWF0ZSBkZW50
cnkgZF9wYXRoIGZpZWxkcyB1c2luZwo+IHN0cmR1cCwgd2l0aG91dCBjaGVja2luZyBmb3IgTlVM
TCByZXR1cm4gdmFsdWVzLiBUaGlzIGxlYWRzIHRvIG51bGwKPiBwb2ludGVyIGRlcmVmZXJlbmNl
cyBpZiB0aGUgYWxsb2NhdG9yIGdvZXMgT09NLgo+IAo+IE1vZGlmeSBkZW50cnlfbW92ZSB0byBy
ZXR1cm4gYW4gZXJyb3IgY29kZSAoMCBmb3Igc3VjY2Vzcywgb3RoZXJ3aXNlCj4gZXJyb3IgY29k
ZSkuCj4gCj4gU2lnbmVkLW9mZi1ieTogSHVnbyBMZWZldXZyZSA8aHVnby5sZWZldXZyZUBuZWNs
YWIuZXU+Cj4gLS0tCj4gICBsaWIvdmZzY29yZS9kZW50cnkuYyAgICAgICAgICAgICAgICAgfCAx
MiArKysrKysrKysrKy0KPiAgIGxpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9kZW50cnkuaCB8
ICAyICstCj4gICBsaWIvdmZzY29yZS9zeXNjYWxscy5jICAgICAgICAgICAgICAgfCAgNSArKysr
LQo+ICAgMyBmaWxlcyBjaGFuZ2VkLCAxNiBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQo+
IAo+IGRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9kZW50cnkuYyBiL2xpYi92ZnNjb3JlL2RlbnRy
eS5jCj4gaW5kZXggNzZmN2E2Yi4uYTQ3MjhmYyAxMDA2NDQKPiAtLS0gYS9saWIvdmZzY29yZS9k
ZW50cnkuYwo+ICsrKyBiL2xpYi92ZnNjb3JlL2RlbnRyeS5jCj4gQEAgLTgxLDYgKzgxLDExIEBA
IGRlbnRyeV9hbGxvYyhzdHJ1Y3QgZGVudHJ5ICpwYXJlbnRfZHAsIHN0cnVjdCB2bm9kZSAqdnAs
IGNvbnN0IGNoYXIgKnBhdGgpCj4gICAJZHAtPmRfdm5vZGUgPSB2cDsKPiAgIAlkcC0+ZF9tb3Vu
dCA9IG1wOwo+ICAgCWRwLT5kX3BhdGggPSBzdHJkdXAocGF0aCk7Cj4gKwo+ICsJaWYgKCFkcC0+
ZF9wYXRoKSB7Cj4gKwkJcmV0dXJuIE5VTEw7Cj4gKwl9CgpJIHRoaW5rIHRoaXMgc2hvdWxkIGJl
IGFuIFVLX0FTU0VSVCgpIGluIHRoZSBmdW5jdGlvbiBlbnRyeSBpbnN0ZWFkIGlmIAppdCBpcyBy
ZXF1aXJlZCB0byBoYW5kLW92ZXIgYSBwYXRoLgoKPiArCj4gICAJVUtfSU5JVF9MSVNUX0hFQUQo
JmRwLT5kX2NoaWxkX2xpc3QpOwo+ICAgCj4gICAJaWYgKHBhcmVudF9kcCkgewo+IEBAIC0xMzMs
MTEgKzEzOCwxMiBAQCBzdGF0aWMgdm9pZCBkZW50cnlfY2hpbGRyZW5fcmVtb3ZlKHN0cnVjdCBk
ZW50cnkgKmRwKQo+ICAgCj4gICB9Cj4gICAKPiAtdm9pZAo+ICtpbnQKPiAgIGRlbnRyeV9tb3Zl
KHN0cnVjdCBkZW50cnkgKmRwLCBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnRfZHAsIGNoYXIgKnBhdGgp
Cj4gICB7Cj4gICAJc3RydWN0IGRlbnRyeSAqb2xkX3BkcCA9IGRwLT5kX3BhcmVudDsKPiAgIAlj
aGFyICpvbGRfcGF0aCA9IGRwLT5kX3BhdGg7Cj4gKwlpbnQgZXJyb3IgPSAwOwo+ICAgCj4gICAJ
aWYgKG9sZF9wZHApIHsKPiAgIAkJdWtfbXV0ZXhfbG9jaygmb2xkX3BkcC0+ZF9sb2NrKTsKPiBA
QCAtMTYyLDYgKzE2OCw5IEBAIGRlbnRyeV9tb3ZlKHN0cnVjdCBkZW50cnkgKmRwLCBzdHJ1Y3Qg
ZGVudHJ5ICpwYXJlbnRfZHAsIGNoYXIgKnBhdGgpCj4gICAJdWtfaGxpc3RfZGVsKCZkcC0+ZF9s
aW5rKTsKPiAgIAkvLyBVcGRhdGUgZHAuCj4gICAJZHAtPmRfcGF0aCA9IHN0cmR1cChwYXRoKTsK
PiArCWlmICghZHAtPmRfcGF0aCkKPiArCQllcnJvciA9IEVOT01FTTsKPiArCgpIdW0uLi4gSSB0
aGluayBpdCBpcyBiZXR0ZXIgdG8gZG8gdGhlIHN0cmR1cCgpIGF0IHRoZSBmdW5jdGlvbiBlbnRy
eSBhbmQgCnJldHVybiBhdCBmYWlsdXJlIGJlZm9yZSBjaGFuZ2luZyBhbnl0aGluZyB0byB0aGUg
VkZTLgpCdHcsIGRvIHRoZSBmdW5jdGlvbnMgdGhhdCBjYWxsIGRlbnRyeV9tb3ZlKCkgZXhwZWN0
IHRoYXQgdGhlIHBhdGggaXMgCm5ld2x5IGFsbG9jYXRlZCAoZS5nLiwgYnkgZ2l2aW5nIHNvbWV0
aGluZyBhbG9jYXRlZCBvbiB0aGUgc3RhY2spLiBJIApndWVzcyB5ZXMgYW5kIGl0IHdvdWxkIGJl
IHRoZSBiZXR0ZXIgc3R5bGUuIEkganVzdCB3YW50IHRvIGRvdWJsZS1jaGVjay4KCkFsc28sIGNv
dWxkIGRwIGhhdmUgY29udGFpbiBhbHJlYWR5IGEgcGF0aD8gSWYgc28sIHNob3VsZCB0aGF0IG9u
ZSBiZSAKZnJlZWQgYmVmb3JlPwoKPiAgIAlkcC0+ZF9wYXJlbnQgPSBwYXJlbnRfZHA7Cj4gICAJ
Ly8gSW5zZXJ0IGRwIHVwZGF0ZWQgaGFzaCBpbmZvIGludG8gdGhlIGhhc2h0YWJsZS4KPiAgIAl1
a19obGlzdF9hZGRfaGVhZCgmZHAtPmRfbGluaywKPiBAQCAtMTczLDYgKzE4Miw3IEBAIGRlbnRy
eV9tb3ZlKHN0cnVjdCBkZW50cnkgKmRwLCBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnRfZHAsIGNoYXIg
KnBhdGgpCj4gICAJfQo+ICAgCj4gICAJZnJlZShvbGRfcGF0aCk7Cj4gKwlyZXR1cm4gZXJyb3I7
Cj4gICB9Cj4gICAKPiAgIHZvaWQKPiBkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvaW5jbHVkZS92
ZnNjb3JlL2RlbnRyeS5oIGIvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL2RlbnRyeS5oCj4g
aW5kZXggMGEzODQwMi4uMmMzNTY1MyAxMDA2NDQKPiAtLS0gYS9saWIvdmZzY29yZS9pbmNsdWRl
L3Zmc2NvcmUvZGVudHJ5LmgKPiArKysgYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvZGVu
dHJ5LmgKPiBAQCAtNTYsNyArNTYsNyBAQCBzdHJ1Y3QgZGVudHJ5IHsKPiAgIAo+ICAgc3RydWN0
IGRlbnRyeSAqZGVudHJ5X2FsbG9jKHN0cnVjdCBkZW50cnkgKnBhcmVudF9kcCwgc3RydWN0IHZu
b2RlICp2cCwgY29uc3QgY2hhciAqcGF0aCk7Cj4gICBzdHJ1Y3QgZGVudHJ5ICpkZW50cnlfbG9v
a3VwKHN0cnVjdCBtb3VudCAqbXAsIGNoYXIgKnBhdGgpOwo+IC12b2lkIGRlbnRyeV9tb3ZlKHN0
cnVjdCBkZW50cnkgKmRwLCBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnRfZHAsIGNoYXIgKnBhdGgpOwo+
ICtpbnQgZGVudHJ5X21vdmUoc3RydWN0IGRlbnRyeSAqZHAsIHN0cnVjdCBkZW50cnkgKnBhcmVu
dF9kcCwgY2hhciAqcGF0aCk7Cj4gICB2b2lkIGRlbnRyeV9yZW1vdmUoc3RydWN0IGRlbnRyeSAq
ZHApOwo+ICAgdm9pZCBkcmVmKHN0cnVjdCBkZW50cnkgKmRwKTsKPiAgIHZvaWQgZHJlbGUoc3Ry
dWN0IGRlbnRyeSAqZHApOwo+IGRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9zeXNjYWxscy5jIGIv
bGliL3Zmc2NvcmUvc3lzY2FsbHMuYwo+IGluZGV4IDliNWE2YmQuLjlhMTMyYjcgMTAwNjQ0Cj4g
LS0tIGEvbGliL3Zmc2NvcmUvc3lzY2FsbHMuYwo+ICsrKyBiL2xpYi92ZnNjb3JlL3N5c2NhbGxz
LmMKPiBAQCAtODMzLDggKzgzMywxMSBAQCBzeXNfcmVuYW1lKGNoYXIgKnNyYywgY2hhciAqZGVz
dCkKPiAgIAl9Cj4gICAKPiAgIAllcnJvciA9IFZPUF9SRU5BTUUoZHZwMSwgdnAxLCBzbmFtZSwg
ZHZwMiwgdnAyLCBkbmFtZSk7Cj4gKwlpZiAoZXJyb3IpCj4gKwkJZ290byBlcnIzOwo+ICsKPiAr
CWVycm9yID0gZGVudHJ5X21vdmUoZHAxLCBkZHAyLCBkbmFtZSk7Cj4gICAKPiAtCWRlbnRyeV9t
b3ZlKGRwMSwgZGRwMiwgZG5hbWUpOwo+ICAgCWlmIChkcDIpCj4gICAJCWRlbnRyeV9yZW1vdmUo
ZHAyKTsKPiAgIAo+IAo+IAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fCj4gTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdAo+IE1pbmlvcy1kZXZlbEBsaXN0
cy54ZW5wcm9qZWN0Lm9yZwo+IGh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9s
aXN0aW5mby9taW5pb3MtZGV2ZWwKPiAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxp
c3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9s
aXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Thu Apr 02 16:54:25 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 02 Apr 2020 16:54: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 1jK36l-0002kd-J2; Thu, 02 Apr 2020 16:54: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=Ah0r=5S=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1jK36j-0002kY-NA
 for minios-devel@lists.xen.org; Thu, 02 Apr 2020 16:54:21 +0000
X-Inumbo-ID: 973b39fe-7502-11ea-bc09-12813bfff9fa
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 973b39fe-7502-11ea-bc09-12813bfff9fa;
 Thu, 02 Apr 2020 16:54:18 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 1068FF2018;
 Thu,  2 Apr 2020 18:54:17 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (atlas-b.office.hd)
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 XKPH1I02TusQ; Thu,  2 Apr 2020 18:54:16 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from puck.office.hd (puck.office.hd [192.168.24.91])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id C48D8F2013;
 Thu,  2 Apr 2020 18:53:30 +0200 (CEST)
Received: from [10.7.0.24] (192.168.24.96) by puck.office.hd (192.168.24.91)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Thu, 2 Apr 2020
 18:53:18 +0200
To: alicesuiu <alicesuiu17@gmail.com>, <minios-devel@lists.xen.org>
References: <20200301191336.24672-1-alicesuiu17@gmail.com>
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
Message-ID: <49fcbbd4-c74a-36f1-d346-f837778b1d10@neclab.eu>
Date: Thu, 2 Apr 2020 18:53:17 +0200
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:68.0)
 Gecko/20100101 Thunderbird/68.6.0
MIME-Version: 1.0
In-Reply-To: <20200301191336.24672-1-alicesuiu17@gmail.com>
Content-Language: en-US
X-Originating-IP: [192.168.24.96]
X-ClientProxiedBy: puck.office.hd (192.168.24.91) To puck.office.hd
 (192.168.24.91)
Subject: Re: [Minios-devel] [UNIKRAFT PATCH] Add support for clang
 compilation
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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, florian.schmidt@neclab.eu, costin.lupu@cs.pub.ro
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>

SGkgQWxpY2UsCgp0aGFua3MgYSBsb3QgZm9yIHRoaXMgd29yayEgSXQgd2lsbCAodW5mb3J0dW5h
dGVseSkgbmVlZCBhIHNvbWUgcnRld29yayAKYmVjYXVzZSB3ZSBoYWQgcmVjZW50bHkgY2hhbmdl
cyBvbiBob3cgYnVpbGQgZmxhZ3MgYXJlIHByb3BhZ2F0ZWQuCgpPbiAwMS4wMy4yMCAyMDoxMywg
YWxpY2VzdWl1IHdyb3RlOgo+IFJlbW92ZSBzb21lIGZsYWdzICgtZm5vLXRyZWUtc3JhLCAtbW5v
LWZwLXJldC1pbi0zODcsIC1mbm8tcmVvcmRlci1ibG9ja3MpIHRvIGFkZCBzdXBwb3J0IGZvciBj
bGFuZyBjb21waWxhdGlvbi4KPiBBZGQgdGhlIENPTkZJR19DT01QSUxFUiB2YXJpYWJsZSB0byBk
ZWZpbmUgdGhlIGNvbXBpbGVyIHRvIGJlIHVzZWQgKGdjYyBvciBjbGFuZykuIEJ5IGRlZmF1bHQg
dGhlIHZhcmlhYmxlIGlzIHNldCB0byBnY2MuCj4gVXNlICdtYWtlIENPTVBJTEVSPWNsYW5nJyB0
byBjb21waWxlIHdpdGggY2xhbmcuCj4gCj4gU2lnbmVkLW9mZi1ieTogQWxpY2UgU3VpdSA8YWxp
Y2VzdWl1MTdAZ21haWwuY29tPgo+IC0tLQo+ICAgTWFrZWZpbGUgICAgICAgICAgICAgICAgICAg
IHwgMTIgKysrKysrKysrKy0tCj4gICBNYWtlZmlsZS51ayAgICAgICAgICAgICAgICAgfCAgNiAr
KystLS0KPiAgIGFyY2gveDg2L3g4Nl82NC9NYWtlZmlsZS51ayB8ICA2ICsrKy0tLQo+ICAgMyBm
aWxlcyBjaGFuZ2VkLCAxNiBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYg
LS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCj4gaW5kZXggODRhZGIxNi4uNTgyODg5MSAxMDA2
NDQKPiAtLS0gYS9NYWtlZmlsZQo+ICsrKyBiL01ha2VmaWxlCj4gQEAgLTQ4MSwxMSArNDgxLDE5
IEBAIGlmbmVxICgiJChvcmlnaW4gQ1JPU1NfQ09NUElMRSkiLCJ1bmRlZmluZWQiKQo+ICAgQ09O
RklHX0NST1NTX0NPTVBJTEUgOj0gJChDUk9TU19DT01QSUxFOiIlIj0lKQo+ICAgZW5kaWYKPiAg
IAo+ICsjIFVzZSAnbWFrZSBDT01QSUxFUj1jbGFuZycgdG8gY29tcGlsZSB3aXRoIGNsYW5nCj4g
K2lmZXEgKCIkKG9yaWdpbiBDT01QSUxFUikiLCAiY29tbWFuZCBsaW5lIikKPiArICBDT05GSUdf
Q09NUElMRVIgOj0gJChDT01QSUxFUikKPiArZW5kaWYKPiAraWZuZGVmIENPTkZJR19DT01QSUxF
Ugo+ICsgIENPTkZJR19DT01QSUxFUiA9IGdjYwo+ICtlbmRpZgo+ICsKPiAgIGluY2x1ZGUgJChD
T05GSUdfVUtfQkFTRSkvYXJjaC8kKFVLX0ZBTUlMWSkvQ29tcGlsZXIudWsKPiAgIAo+ICAgIyBN
YWtlIHZhcmlhYmxlcyAoQ0MsIGV0Yy4uLikKPiAtTEQJCTo9ICQoQ09ORklHX0NST1NTX0NPTVBJ
TEUpZ2NjCj4gLUNDCQk6PSAkKENPTkZJR19DUk9TU19DT01QSUxFKWdjYwo+ICtMRAkJOj0gJChD
T05GSUdfQ1JPU1NfQ09NUElMRSkkKENPTkZJR19DT01QSUxFUikKPiArQ0MJCTo9ICQoQ09ORklH
X0NST1NTX0NPTVBJTEUpJChDT05GSUdfQ09NUElMRVIpCj4gICBDUFAJCTo9ICQoQ0MpCj4gICBD
WFgJCTo9ICQoQ1BQKQo+ICAgR09DCQk6PSAkKENPTkZJR19DUk9TU19DT01QSUxFKWdjY2dvLTcK
CkkgZ3Vlc3MgR28gY2FuIGFsc28gY29tcGlsZWQgd2l0aCBjbGFuZz8gSXQgaXMgZmluZSB0byBh
ZGQgc3VwcG9ydCAKbGF0ZXIsIEkgYW0gYXNraW5nIG91dCBvZiBjdXJpb3NpdHkuCgo+IGRpZmYg
LS1naXQgYS9NYWtlZmlsZS51ayBiL01ha2VmaWxlLnVrCj4gaW5kZXggM2YwMWEyNS4uMzg5MGQ2
MiAxMDA2NDQKPiAtLS0gYS9NYWtlZmlsZS51awo+ICsrKyBiL01ha2VmaWxlLnVrCj4gQEAgLTgs
MTcgKzgsMTcgQEAgQVNGTEFHUyAgICAgKz0gLVUgX19saW51eF9fIC1VIF9fRnJlZUJTRF9fIC1V
IF9fc3VuX18gLURfX0FTU0VNQkxZX18KPiAgIEFTSU5DTFVERVMgICs9IC1ub3N0ZGluYyAtbm9z
dGRsaWIgLUkkKENPTkZJR19VS19CQVNFKS9pbmNsdWRlCj4gICAKPiAgIENGTEFHUyAgICAgICs9
IC1VIF9fbGludXhfXyAtVSBfX0ZyZWVCU0RfXyAtVSBfX3N1bl9fCj4gLUNGTEFHUyAgICAgICs9
IC1mbm8tc3RhY2stcHJvdGVjdG9yIC1mbm8tb21pdC1mcmFtZS1wb2ludGVyIC1mbm8tdHJlZS1z
cmEKPiArQ0ZMQUdTICAgICAgKz0gLWZuby1zdGFjay1wcm90ZWN0b3IgLWZuby1vbWl0LWZyYW1l
LXBvaW50ZXIKPiAgIENGTEFHUyAgICAgICs9IC1XYWxsIC1XZXh0cmEKPiAgIENJTkNMVURFUyAg
ICs9IC1ub3N0ZGluYyAtbm9zdGRsaWIgLUkkKENPTkZJR19VS19CQVNFKS9pbmNsdWRlCj4gICAK
PiAgIENYWEZMQUdTICAgICs9IC1VIF9fbGludXhfXyAtVSBfX0ZyZWVCU0RfXyAtVSBfX3N1bl9f
Cj4gLUNYWEZMQUdTICAgICs9IC1mbm8tc3RhY2stcHJvdGVjdG9yIC1mbm8tb21pdC1mcmFtZS1w
b2ludGVyIC1mbm8tdHJlZS1zcmEKPiArQ1hYRkxBR1MgICAgKz0gLWZuby1zdGFjay1wcm90ZWN0
b3IgLWZuby1vbWl0LWZyYW1lLXBvaW50ZXIKPiAgIENYWEZMQUdTICAgICs9IC1XYWxsIC1XZXh0
cmEKPiAgIENYWElOQ0xVREVTICs9IC1ub3N0ZGluYyAtbm9zdGRsaWIgLUkkKENPTkZJR19VS19C
QVNFKS9pbmNsdWRlCj4gICAKPiAgIEdPQ0ZMQUdTICAgICs9IC1VIF9fbGludXhfXyAtVSBfX0Zy
ZWVCU0RfXyAtVSBfX3N1bl9fCj4gLUdPQ0ZMQUdTICAgICs9IC1mbm8tc3RhY2stcHJvdGVjdG9y
IC1mbm8tb21pdC1mcmFtZS1wb2ludGVyIC1mbm8tdHJlZS1zcmEKPiArR09DRkxBR1MgICAgKz0g
LWZuby1zdGFjay1wcm90ZWN0b3IgLWZuby1vbWl0LWZyYW1lLXBvaW50ZXIKPiAgIEdPQ0ZMQUdT
ICAgICs9IC1mbm8tc3BsaXQtc3RhY2sgLVdhbGwgLVdleHRyYQo+ICAgR09DSU5DTFVERVMgKz0g
LW5vc3RkaW5jIC1ub3N0ZGxpYiAtSSQoQ09ORklHX1VLX0JBU0UpL2luY2x1ZGUKClBsZWFzZSBu
b3RlIHRoYXQgYWxsIGxhbmd1YWdlLWluZGVwZW5kZW50IGZsYWdzIG1vdmVkIHRvOgpBUkNIRkxB
R1MsIElTUl9BUkNIRkxBR1MsIENPTVBGTEFHUwoKPiAgIAo+IGRpZmYgLS1naXQgYS9hcmNoL3g4
Ni94ODZfNjQvTWFrZWZpbGUudWsgYi9hcmNoL3g4Ni94ODZfNjQvTWFrZWZpbGUudWsKPiBpbmRl
eCA4ZWM3ZDZiLi4yODVhNGU5IDEwMDY0NAo+IC0tLSBhL2FyY2gveDg2L3g4Nl82NC9NYWtlZmls
ZS51awo+ICsrKyBiL2FyY2gveDg2L3g4Nl82NC9NYWtlZmlsZS51awo+IEBAIC0xLDkgKzEsOSBA
QAo+ICAgQVNGTEFHUyAgKz0gLURfX1g4Nl82NF9fCj4gICBBU0ZMQUdTICArPSAtbTY0Cj4gICBD
RkxBR1MgICArPSAtRF9fWDg2XzY0X18KPiAtQ0ZMQUdTICAgKz0gLW02NCAtbW5vLXJlZC16b25l
IC1mbm8tcmVvcmRlci1ibG9ja3MgLWZuby1hc3luY2hyb25vdXMtdW53aW5kLXRhYmxlcwo+ICtD
RkxBR1MgICArPSAtbTY0IC1tbm8tcmVkLXpvbmUgLWZuby1hc3luY2hyb25vdXMtdW53aW5kLXRh
Ymxlcwo+ICAgQ1hYRkxBR1MgKz0gLURfX1g4Nl82NF9fCj4gLUNYWEZMQUdTICs9IC1tNjQgLW1u
by1yZWQtem9uZSAtZm5vLXJlb3JkZXItYmxvY2tzIC1mbm8tYXN5bmNocm9ub3VzLXVud2luZC10
YWJsZXMKPiArQ1hYRkxBR1MgKz0gLW02NCAtbW5vLXJlZC16b25lIC1mbm8tYXN5bmNocm9ub3Vz
LXVud2luZC10YWJsZXMKPiAgIAoKQWxzbyB0aG9zZSwgd2hpbGUgd2Ugc3RpbGwgaGF2ZSB0aGUg
bGFuZ3VhZ2Utc3BlY2lmaWMgZmxhZ3MgKEFTRkxBR1MsIApDRkxBR1MsIGV0Yy4pLiBXZSBzZXBh
cmF0ZSB0aGVtIG5vdy4KCj4gICBDSU5DTFVERVMgICArPSAtSSQoQ09ORklHX1VLX0JBU0UpL2Fy
Y2gveDg2L3g4Nl82NC9pbmNsdWRlCj4gICBBU0lOQ0xVREVTICArPSAtSSQoQ09ORklHX1VLX0JB
U0UpL2FyY2gveDg2L3g4Nl82NC9pbmNsdWRlCj4gQEAgLTExLDcgKzExLDcgQEAgQ1hYSU5DTFVE
RVMgKz0gLUkkKENPTkZJR19VS19CQVNFKS9hcmNoL3g4Ni94ODZfNjQvaW5jbHVkZQo+ICAgCj4g
ICAjIGNvbXBpbGVyIGZsYWdzIHRvIHByZXZlbnQgdXNlIG9mIGV4dGVuZGVkIChGUCwgU1NFLCBB
VlgpIHJlZ2lzdGVycy4KPiAgICMgVGhpcyBpcyBmb3IgZmlsZXMgdGhhdCBjb250YWluIHRyYXAv
ZXhjZXB0aW9uL2ludGVycnVwdCBoYW5kbGVycwo+IC1OT19YODZfRVhUUkVHU19GTEFHUyA6PSAt
bW5vLTgwMzg3IC1tbm8tZnAtcmV0LWluLTM4NyAtbW5vLW1teCAtbW5vLXNzZSAtbW5vLWF2eAo+
ICtOT19YODZfRVhUUkVHU19GTEFHUyA6PSAtbW5vLTgwMzg3IC1tbm8tbW14IC1tbm8tc3NlIC1t
bm8tYXZ4Cj4gICAKPiAgIEFTRkxBR1MtJChDT05GSUdfTUFSQ0hfWDg2XzY0X0dFTkVSSUMpICAg
ICArPSAtbXR1bmU9Z2VuZXJpYwo+ICAgQ0ZMQUdTLSQoQ09ORklHX01BUkNIX1g4Nl82NF9HRU5F
UklDKSAgICAgICs9IC1tdHVuZT1nZW5lcmljCj4gCgpJIHRoaW5rIHdlIHNob3VsZCBhZGQgYW5k
IG1vZGlmeSB0aGUgY29tcGlsZXItcmVsYXRlZCBNYWtlZmlsZSBydWxlcyAKd2l0aGluIGBzdXBw
b3J0L2J1aWxkL01ha2VmaWxlLnJ1bGVzYC4gV2UgaGF2ZSB0aGVyZSBzbyBmYXI6CgogICBnY2Nf
dmVyc2lvbl9nZSAgICByZXR1cm5zICd5JyBpZiBjdXJyZW50IEdDQyB2ZXJzaW9uIGlzID49ICd5
JywKICAgICAgICAgICAgICAgICAgICAgb3RoZXJ3aXNlICduJwogICBnY2NfdmVyc2lvbl9sdCAg
ICByZXR1cm5zICd5JyBpZiBjdXJyZW50IEdDQyB2ZXJzaW9uIGlzIDwgJ3knLAogICAgICAgICAg
ICAgICAgICAgICBvdGhlcndpc2UgJ24nCgpUaGVzZSB0d28gYXJlIHVzZWQgdG8gcG9wdWxhdGUg
ZmxhZ3MgYWNjb3JkaW5nIHRvIHRoZSBjdXJyZW50IHVzZWQgR0NDIAp2ZXJzaW9uLiBGb3IgaW5z
dGFuY2U6CiAgIENPTVBGTEFHUy0kKGNhbGwgZ2NjX3ZlcnNpb25fZ2UsNywwKSArPSAtZmxhZ19z
dXBwb3J0ZWRfd2l0aF9nY2M3MAoKICAgZXJyb3JfaWZfZ2NjX3ZlcnNpb25fbHQgIFdpbGwgb3V0
cHV0IGFuIGVycm9yIHRoYXQgYSBuZXdlciBHQ0MKICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlzIG5lZWRlZAoKSSB0aGluayBJIHdvdWxkIGFkZCB0d28gZnVuY3Rpb25zIHRoYXQgcmV0dXJu
ICd5JyBhbmQgJ24nIHdoZW4gY2xhbmcgYW5kIApHQ0MgaXMgZGV0ZWN0ZWQ6CgogICAgaGF2ZV9j
bGFuZwogICAgaGF2ZV9nY2MKClVzaW5nIHRob3NlLCBpdCBwcm9iYWJseSBtYWtlcyBzZW5zZSB0
byB1cGRhdGUgdGhlIHRocmVlIGV4aXN0aW5nIApmdW5jdGlvbnMgc28gdGhhdCB0aGUgZmlyc3Qg
dHdvIHJldHVybiAnbicgYW5kIHRoZSBsYXN0IG9uZSBuZXZlciBmYWlscyAKd2hlbiBoYXZlX2dj
YyByZXR1cm5lZCAnbicgKHdoZW4gY2xhbmcgaXMgdXNlZCkuIEFkZGl0aW9uYWxseSwgSSB3b3Vs
ZCAKYWRkIHRoZSBzYW1lIHNldCBvZiBmdW5jdGlvbnMgZm9yIGNsYW5nOgoKICAgIGNsYW5nX3Zl
cnNpb25fZ2UKICAgIGNsYW5nX3ZlcnNpb25fbGUKICAgIGVycm9yX2lmX2NsYW5nX3ZlcnNpb25f
bHQKClRoZXkgYmVoYXZlIGVxdWl2YWxlbnRseSB0byB0aGUgZ2NjIGZ1bmN0aW9ucyBzbyB0aGF0
IG5vdGhpbmcgYnJlYWtzIAp3aGVuIEdDQyBpcyB1c2VkIGluc3RlYWQgb2YgY2xhbmcgKGhhdmVf
Y2xhbmcpLgoKV2l0aCBhbGwgb2YgdGhpcyB5b3UgYXJlIGFibGUgdG8gcmUtY29vcmRpbmF0ZSB0
aGUgZmxhZ3MuIEFsbCBmbGFncyB0aGF0IApmYWlsIHdpdGggY2xhbmcsIHlvdSB3b3VsZCBrZWVw
IGZvciBHQ0Mgd2l0aAoKICAgIENPTVBGTEFHUy0kKGNhbGwgaGF2ZV9nY2MpICs9IC1nY2Nfb25s
eV9mbGFnCgpXaXRoIHRoaXMgeW91IGNhbiBhbHNvIGludHJvZHVjZSBjbGFuZyBzcGVjaWZpYyBm
bGFncyBhbmQgaXQgY2FuIGJlIAphcHBsaWVkIHRvIGFsbCBmbGFnIHZhcmlhYmxlcywgaW5jbHVk
aW5nIHRoZSBsYW5ndWFnZSBzcGVjaWZpYyBvbmVzIGFuZCAKdGhlIG9uZXMgY29uY2VybmluZyBs
aW5raW5nLgoKV2hhdCBkbyB5b3UgdGhpbms/CgpUaGFua3MsCgpTaW1vbgoKX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcg
bGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5w
cm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Thu Apr 02 16:56:18 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 02 Apr 2020 16:56: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 1jK38b-0002nX-SG; Thu, 02 Apr 2020 16:56: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=Ah0r=5S=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1jK38a-0002nS-Ow
 for minios-devel@lists.xen.org; Thu, 02 Apr 2020 16:56:16 +0000
X-Inumbo-ID: dd61accf-7502-11ea-bc0d-12813bfff9fa
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id dd61accf-7502-11ea-bc0d-12813bfff9fa;
 Thu, 02 Apr 2020 16:56:16 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 57323100BD9;
 Thu,  2 Apr 2020 18:56:15 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (atlas-a.office.hd)
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 rx5zQ0BQsJ2j; Thu,  2 Apr 2020 18:56:15 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from puck.office.hd (puck.office.hd [192.168.24.91])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 2BC2D103BD8;
 Thu,  2 Apr 2020 18:55:35 +0200 (CEST)
Received: from [10.7.0.24] (192.168.24.96) by puck.office.hd (192.168.24.91)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Thu, 2 Apr 2020
 18:55:24 +0200
To: alicesuiu <alicesuiu17@gmail.com>, <minios-devel@lists.xen.org>
References: <20200301191336.24672-1-alicesuiu17@gmail.com>
 <20200301191336.24672-2-alicesuiu17@gmail.com>
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
Message-ID: <ca5ecb2f-8f76-9bf0-aac9-72bfa5bb2438@neclab.eu>
Date: Thu, 2 Apr 2020 18:55:23 +0200
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:68.0)
 Gecko/20100101 Thunderbird/68.6.0
MIME-Version: 1.0
In-Reply-To: <20200301191336.24672-2-alicesuiu17@gmail.com>
Content-Language: en-US
X-Originating-IP: [192.168.24.96]
X-ClientProxiedBy: oberon.office.hd (192.168.24.90) To puck.office.hd
 (192.168.24.91)
Subject: Re: [Minios-devel] [UNIKRAFT/NEWLIB PATCH] include/endian.h Define
 the __bswap16, __bswap32,
 __bswap64 builtin functions only if the compilation is done with gcc
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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, florian.schmidt@neclab.eu, costin.lupu@cs.pub.ro
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>

SGkgQWxpY2UsCgpJIGhhdmUgYSBxdWVzdGlvbiB0byB0aGlzIHBhdGNoOgoKT24gMDEuMDMuMjAg
MjA6MTMsIGFsaWNlc3VpdSB3cm90ZToKPiBTaWduZWQtb2ZmLWJ5OiBBbGljZSBTdWl1IDxhbGlj
ZXN1aXUxN0BnbWFpbC5jb20+Cj4gLS0tCj4gICBpbmNsdWRlL2VuZGlhbi5oIHwgMiArKwo+ICAg
MSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQo+IAo+IGRpZmYgLS1naXQgYS9pbmNsdWRl
L2VuZGlhbi5oIGIvaW5jbHVkZS9lbmRpYW4uaAo+IGluZGV4IDNjOGE3NTIuLjYzZDM2NTAgMTAw
NjQ0Cj4gLS0tIGEvaW5jbHVkZS9lbmRpYW4uaAo+ICsrKyBiL2luY2x1ZGUvZW5kaWFuLmgKPiBA
QCAtNDEsNiArNDEsNyBAQAo+ICAgCj4gICAjaW5jbHVkZSA8c3RkaW50Lmg+Cj4gICAKPiArI2lm
bmRlZiBfX2NsYW5nX18KPiAgIHN0YXRpYyBpbmxpbmUgdWludDE2X3QgX19ic3dhcDE2KHVpbnQx
Nl90IF9feCkKPiAgIHsKPiAgIAlyZXR1cm4gX194PDw4IHwgX194Pj44Owo+IEBAIC01NSw2ICs1
Niw3IEBAIHN0YXRpYyBpbmxpbmUgdWludDY0X3QgX19ic3dhcDY0KHVpbnQ2NF90IF9feCkKPiAg
IHsKPiAgIAlyZXR1cm4gKF9fYnN3YXAzMihfX3gpKzBVTEwpPDwzMiB8IF9fYnN3YXAzMihfX3g+
PjMyKTsKPiAgIH0KPiArI2VuZGlmCgpEb2Vzbid0IEdDQyBoYXMgYSBidWlsdGluIGZvciB0aGlz
IGFuZCBkb2VzIGNsYW5nIGhhcyBvbmUsIHRvbz8gV2UgYWxzbyAKbmVlZCB0byBtYWtlIHN1cmUg
dGhhdCBjbGFuZyBpcyBub3QgaW50cm9kdWNpbmcgbGliYyByZXBsYWNlbWVudHMgYXMgCmRlZmF1
bHQuIE9uIEdDQyB0aGF0IGJyb2tlIHRoZSBwcmludGluZyB3aXRoIG5vbGliYy4uLgoKPiAgIAo+
ICAgI2lmIF9fQllURV9PUkRFUiA9PSBfX0xJVFRMRV9FTkRJQU4KPiAgICNkZWZpbmUgaHRvYmUx
Nih4KSBfX2Jzd2FwMTYoeCkKPiAKClRoYW5rcywKClNpbW9uCgpfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1p
bmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qu
b3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Fri Apr 03 01:28:41 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 03 Apr 2020 01:28: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 1jKB8Q-0005r2-I6; Fri, 03 Apr 2020 01:28:38 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=egkZ=5T=gmail.com=murarugeorgec@srs-us1.protection.inumbo.net>)
 id 1jKB8P-0005qx-4A
 for minios-devel@lists.xenproject.org; Fri, 03 Apr 2020 01:28:37 +0000
X-Inumbo-ID: 7019d996-754a-11ea-b58d-bc764e2007e4
Received: from mail-wm1-x335.google.com (unknown [2a00:1450:4864:20::335])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 7019d996-754a-11ea-b58d-bc764e2007e4;
 Fri, 03 Apr 2020 01:28:36 +0000 (UTC)
Received: by mail-wm1-x335.google.com with SMTP id j19so5974127wmi.2
 for <minios-devel@lists.xenproject.org>; Thu, 02 Apr 2020 18:28:36 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=from:to:cc:subject:date:message-id;
 bh=nBe51F/Np0nXFOr9MAngpOjLG/josz2DKGoZruN2xOg=;
 b=LL0qJdSVcer8W6FyJKK7Dy3yuQQJD9uOnWG0VEzKexrSiENNwiNgJDk/XsyU7MkiLP
 oS8dn2y0KFvwM5C2UHC0GF4kEF5EVUN/IhtyTEYsl7wjJMg/vzNjP1IWpgz8tP4f7f6M
 /J0jt9YuPcfITcRwxZfxoMo0mLtms/dYT1bSvNdEQajxY0E5dHcRCaPDQMJCYMFihNul
 rHyL3eestQ/BUJq3gkh/o2amJOiiqH4WCYR31o8zfQbhnViXkqh54l1pwpQzEpBa4DIQ
 oj5MumODRRXyWnuYNVV+0+rSg7AU8AOwssAYVKm8BnaOoo7ZVQgg0/tX40Y3NrseM8Bi
 TvgA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:from:to:cc:subject:date:message-id;
 bh=nBe51F/Np0nXFOr9MAngpOjLG/josz2DKGoZruN2xOg=;
 b=oxhDS/JhD6vlPNBABlzLWPmvW04cJwFLA86aEqYyTaBdW4Er1lIufjIdmC4MMTvG8c
 A9J5vG9tq/SotFTF8UaeI472xbGgRjlTLC6xgw7UMVMejifxPYvMYX0KDdDH1Vu3+H++
 cRttjINkVkiY9p/ouXsypWuWvSc3ORnZJRpdm9U89dyivx18p+27QWCvK+q8Nsss37p0
 eqxVdUZQu7s0xmbrxpM5/JS+au5cHiquWEJEK7zT43KDPBR4zmqcywOb85mRHEOA9dPE
 L1fZ/NnYj5u3BSCDtv1DouZPQdTmmfRrUrtfl7vNcABx+FE5W9nosQHWYKDGYXSXzyJp
 S50A==
X-Gm-Message-State: AGi0PuYPeleGkLArafOpTAW/p4Ksdb+xybye7mIXkKvObx0dQgAZsRub
 rfjRHLq1B6dx+5D7EBMstWe8tz4qRoU=
X-Google-Smtp-Source: APiQypJ6MuRDrNTyfTag/vKXdFUaOWlQI53/lvKahbkFJNA2zah+DazBiV/jHa/7zc0iyfBPifQT5Q==
X-Received: by 2002:a1c:750f:: with SMTP id o15mr6305862wmc.110.1585877315115; 
 Thu, 02 Apr 2020 18:28:35 -0700 (PDT)
Received: from localhost.localdomain ([2a02:a58:8506:aa00:8881:15b3:ea22:94c2])
 by smtp.googlemail.com with ESMTPSA id a10sm10026684wrm.87.2020.04.02.18.28.33
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 02 Apr 2020 18:28:34 -0700 (PDT)
From: George Muraru <murarugeorgec@gmail.com>
To: minios-devel@lists.xenproject.org
Date: Fri,  3 Apr 2020 04:28:19 +0300
Message-Id: <20200403012820.21698-1-murarugeorgec@gmail.com>
X-Mailer: git-send-email 2.17.1
Subject: [Minios-devel] [UNIKRAFT/EIGEN UPDATE VERSION 0/1]
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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, George Muraru <murarugeorgec@gmail.com>
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>

QnVtcCB0aGUgdmVyc2lvbiBmb3IgdGhlIGVpZ2VuIGxpYnJhcnkKCkdlb3JnZSBNdXJhcnUgKDEp
OgogIFVwZGF0ZSBlaWdlbiB2ZXJzaW9uCgogQ09OVFJJQlVUSU5HLm1kIHwgIDIgKy0KIENvbmZp
Zy51ayAgICAgICB8ICA3ICsrKysrKysKIE1ha2VmaWxlLnVrICAgICB8IDIwICsrKysrKystLS0t
LS0tLS0tLS0tCiBleHBvcnRzeW1zLnVrICAgfCAgMSAtCiA0IGZpbGVzIGNoYW5nZWQsIDE1IGlu
c2VydGlvbnMoKyksIDE1IGRlbGV0aW9ucygtKQogZGVsZXRlIG1vZGUgMTAwNjQ0IGV4cG9ydHN5
bXMudWsKCi0tIAoyLjE3LjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54
ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGlu
Zm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Fri Apr 03 01:28:43 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 03 Apr 2020 01:28: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 1jKB8V-0005rR-Jh; Fri, 03 Apr 2020 01:28:43 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=egkZ=5T=gmail.com=murarugeorgec@srs-us1.protection.inumbo.net>)
 id 1jKB8U-0005rI-2T
 for minios-devel@lists.xenproject.org; Fri, 03 Apr 2020 01:28:42 +0000
X-Inumbo-ID: 71551db6-754a-11ea-b58d-bc764e2007e4
Received: from mail-wm1-x335.google.com (unknown [2a00:1450:4864:20::335])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 71551db6-754a-11ea-b58d-bc764e2007e4;
 Fri, 03 Apr 2020 01:28:38 +0000 (UTC)
Received: by mail-wm1-x335.google.com with SMTP id z7so5542101wmk.1
 for <minios-devel@lists.xenproject.org>; Thu, 02 Apr 2020 18:28:38 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=from:to:cc:subject:date:message-id:in-reply-to:references;
 bh=JWmJk4wn7yt7xEa2AhrK1LHHEPbMYlaC8qXz82flI7Y=;
 b=qwTkTgjO0w5gpVOevTxaHkv4NvhM63oXdrK098oNYokZ6WRhkzvcuX73VueeIjXXcg
 offe6Nk6TCjsMK62fqtBuHTbCGV+JXrXSCzeWcXTrwjkou8VVCmgeyaOYGylprnnNhS0
 zuhpXY3ACMiX84MU1oBT1kIOkWqN15Jr738oCCmUf1XWxX4cYSwrTAcwhdvymLjKVgMQ
 01JBNoetW8HeeaOg+auHlPpuMGgB1qC4C93rX7W3Ap9l0OTJEHz4GAi0A3ivHr0RCafC
 suhSYsbVqWg8IIvhPcoNrW550HNMd8y8y875AeZ6TnjGKPinf6s2QE6SnCYKLuckhCMG
 jhYw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to
 :references;
 bh=JWmJk4wn7yt7xEa2AhrK1LHHEPbMYlaC8qXz82flI7Y=;
 b=H3T+BJziKjVA/Mg+uUoyEyj1yyC9bgXaViLNaoTmyNmMJoBsRbLYs4/IeN1i25nLAs
 uDOGi/pvGSM4nQejkLL3w4VdxcdG7YQr2khf+qJeRCh2+P/ZIRMaBr5tBwcNZqzAXSuL
 lJiu62LwKrcJeOnhUENjVoOdi5+uKxaxXwoluHyNf4o8uQs9f5rNhzMCMCibwl39gWH1
 9Mpb1ACFbB+BglGgGdzFOMo0fjUCkJdBk8f9ryRsb9NXb37Lyo2GFG7Tz5wdMmvohsld
 CHZp59cUtldhr0DY2BNELuAOkdGsF3aaxz2w4GVE47Ok7JQ8YP97eKCBgIj6ffYpK/CQ
 ticg==
X-Gm-Message-State: AGi0PubFjPaXWs5ilwRZzWW27xn4/l7ooOFalccVQj9Bcbd7Hrueco8i
 s5FOpf4cxWDtYu0PTZxpPyd0dlcciHA=
X-Google-Smtp-Source: APiQypKmVhnAoJwfrgLo6EvnFNfrICiIF8FV3dY1STMq0DIGvPZQZI7Qhm+g3x+weqXPvPZrgECIMg==
X-Received: by 2002:a1c:2404:: with SMTP id k4mr5852901wmk.87.1585877317109;
 Thu, 02 Apr 2020 18:28:37 -0700 (PDT)
Received: from localhost.localdomain ([2a02:a58:8506:aa00:8881:15b3:ea22:94c2])
 by smtp.googlemail.com with ESMTPSA id a10sm10026684wrm.87.2020.04.02.18.28.36
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 02 Apr 2020 18:28:36 -0700 (PDT)
From: George Muraru <murarugeorgec@gmail.com>
To: minios-devel@lists.xenproject.org
Date: Fri,  3 Apr 2020 04:28:20 +0300
Message-Id: <20200403012820.21698-2-murarugeorgec@gmail.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20200403012820.21698-1-murarugeorgec@gmail.com>
References: <20200403012820.21698-1-murarugeorgec@gmail.com>
Subject: [Minios-devel] [UNIKRAFT/EIGEN UPDATE VERSION 1/1] Update eigen
 version
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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, George Muraru <murarugeorgec@gmail.com>
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>

U2lnbmVkLW9mZi1ieTogR2VvcmdlIE11cmFydSA8bXVyYXJ1Z2VvcmdlY0BnbWFpbC5jb20+Ci0t
LQogQ09OVFJJQlVUSU5HLm1kIHwgIDIgKy0KIENvbmZpZy51ayAgICAgICB8ICA3ICsrKysrKysK
IE1ha2VmaWxlLnVrICAgICB8IDIwICsrKysrKystLS0tLS0tLS0tLS0tCiBleHBvcnRzeW1zLnVr
ICAgfCAgMSAtCiA0IGZpbGVzIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKyksIDE1IGRlbGV0aW9u
cygtKQogZGVsZXRlIG1vZGUgMTAwNjQ0IGV4cG9ydHN5bXMudWsKCmRpZmYgLS1naXQgYS9DT05U
UklCVVRJTkcubWQgYi9DT05UUklCVVRJTkcubWQKaW5kZXggNWY1NWVjYS4uMTRmNmFjNiAxMDA2
NDQKLS0tIGEvQ09OVFJJQlVUSU5HLm1kCisrKyBiL0NPTlRSSUJVVElORy5tZApAQCAtMSw0ICsx
LDQgQEAKIENvbnRyaWJ1dGluZyB0byBVbmlrcmFmdAotPT09PT09PT09PT09PT09PT09PT09PT0K
Kz09PT09PT09PT09PT09PT09PT09PT09PQogCiBQbGVhc2UgcmVmZXIgdG8gdGhlIGBDT05UUklC
VVRJTkcubWRgIGZpbGUgaW4gdGhlIG1haW4gVW5pa3JhZnQgcmVwb3NpdG9yeS4KZGlmZiAtLWdp
dCBhL0NvbmZpZy51ayBiL0NvbmZpZy51awppbmRleCBlNWIzNjQyLi5lMjI0YjY5IDEwMDY0NAot
LS0gYS9Db25maWcudWsKKysrIGIvQ29uZmlnLnVrCkBAIC0xLDQgKzEsMTEgQEAKIG1lbnVjb25m
aWcgTElCRUlHRU4KICAgICBib29sICJlaWdlbiAtIEMrKyB0ZW1wbGF0ZSBsaWJyYXJ5IGZvciBs
aW5lYXIgYWxnZWJyYSIKICAgICBzZWxlY3QgTElCQ1hYCisgICAgc2VsZWN0IExJQkNYWEFCSQor
ICAgIHNlbGVjdCBMSUJORVdMSUJDCisgICAgc2VsZWN0IExJQlVOV0lORAorICAgIHNlbGVjdCBM
SUJQT1NJWF9TWVNJTkZPCisgICAgc2VsZWN0IExJQkNPTVBJTEVSX1JUCisgICAgc2VsZWN0IExJ
QkNPTVBJTEVSX1JUX0FUT01JQworICAgIHNlbGVjdCBMSUJQVEhSRUFEX0VNQkVEREVECiAgICAg
ZGVmYXVsdCBuCmRpZmYgLS1naXQgYS9NYWtlZmlsZS51ayBiL01ha2VmaWxlLnVrCmluZGV4IDYx
ZmUzNjYuLjI0ZGM3NjQgMTAwNjQ0Ci0tLSBhL01ha2VmaWxlLnVrCisrKyBiL01ha2VmaWxlLnVr
CkBAIC0zNiwyNiArMzYsMjAgQEAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAkKGV2YWwgJChj
YWxsIGFkZGxpYl9zLGxpYmVpZ2VuLCQoQ09ORklHX0xJQkVJR0VOKSkpCiAKLWlmZXEgKCQoQ09O
RklHX0xJQkVJR0VOKSx5KQotaWZuZXEgKCQoQ09ORklHX0xJQkNYWCkseSkKLSQoZXJyb3IgUmVx
dWlyZSBsaWJjeHgpCi1lbmRpZgotZW5kaWYKLQotCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwog
IyBTb3VyY2VzCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotTElCRUlHRU5fVkVSU0lPTj0zLjMu
NwotTElCRUlHRU5fVVJMPWh0dHA6Ly9iaXRidWNrZXQub3JnL2VpZ2VuL2VpZ2VuL2dldC8zLjMu
Ny50YXIuZ3oKK0xJQkVJR0VOX0NPTU1JVD0wNDlhZjJmNTYzMzEKIExJQkVJR0VOX1BBVENIRElS
PSQoTElCRUlHRU5fQkFTRSkvcGF0Y2hlcworCitMSUJFSUdFTl9VUkw9aHR0cHM6Ly9iaXRidWNr
ZXQub3JnL2VpZ2VuL2VpZ2VuL2dldC8ke0xJQkVJR0VOX0NPTU1JVH0udGFyLmd6CiAkKGV2YWwg
JChjYWxsIGZldGNoLGxpYmVpZ2VuLCQoTElCRUlHRU5fVVJMKSkpCi0kKGV2YWwgJChjYWxsIHBh
dGNoLGxpYmVpZ2VuLCQoTElCRUlHRU5fUEFUQ0hESVIpLGVpZ2VuLWVpZ2VuLTMyM2MwNTJlMTcz
MSkpCiskKGV2YWwgJChjYWxsIHBhdGNoLGxpYmVpZ2VuLCQoTElCRUlHRU5fUEFUQ0hESVIpLGVp
Z2VuLWVpZ2VuLSQoTElCRUlHRU5fQ09NTUlUKSkpCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
CiAjIEhlbHBlcnMKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi1MSUJFSUdFTl9TVUJESVI9ZWln
ZW4tZWlnZW4tMzIzYzA1MmUxNzMxCitMSUJFSUdFTl9TVUJESVI9ZWlnZW4tZWlnZW4tJChMSUJF
SUdFTl9DT01NSVQpCiBMSUJFSUdFTl9TUkM9JChMSUJFSUdFTl9PUklHSU4pLyQoTElCRUlHRU5f
U1VCRElSKQogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpAQCAtNzksNSArNzMsNSBAQCBTVVBQ
UkVTU19GTEFHUyArPSAtV25vLXVudXNlZC1wYXJhbWV0ZXIgLVduby11bnVzZWQtdmFyaWFibGUg
LVduby1ub25udWxsCVwKIC1Xbm8tbWlzc2luZy1icmFjZXMgLVduby1lbmRpZi1sYWJlbHMgLVdu
by11bnVzZWQtYnV0LXNldC12YXJpYWJsZQkJXAogLVduby1pbXBsaWNpdC1mdW5jdGlvbi1kZWNs
YXJhdGlvbiAtV25vLXR5cGUtbGltaXRzIC1Xbm8tc2lnbi1jb21wYXJlCiAKLUxJQkVJR0VOX0NG
TEFHUy15ICAgICs9ICAkKFNVUFBSRVNTX0ZMQUdTKQotTElCRUlHRU5fQ1hYRkxBR1MteSAgICAr
PSAgJChTVVBQUkVTU19GTEFHUykKK0xJQkVJR0VOX0NGTEFHUy15ICs9ICQoU1VQUFJFU1NfRkxB
R1MpCitMSUJFSUdFTl9DWFhGTEFHUy15ICs9ICQoU1VQUFJFU1NfRkxBR1MpCmRpZmYgLS1naXQg
YS9leHBvcnRzeW1zLnVrIGIvZXhwb3J0c3ltcy51awpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNjIxZTk0Zi4uMDAwMDAwMAotLS0gYS9leHBvcnRzeW1zLnVrCisrKyAvZGV2L251bGwK
QEAgLTEgKzAsMCBAQAotbm9uZQotLSAKMi4xNy4xCgoKX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3Mt
ZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9t
YWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Fri Apr 03 16:29:51 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 03 Apr 2020 16:29: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 1jKPCY-0000m0-5M; Fri, 03 Apr 2020 16:29: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=0rLu=5T=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1jKPCX-0000lv-4g
 for minios-devel@lists.xen.org; Fri, 03 Apr 2020 16:29:49 +0000
X-Inumbo-ID: 54cee68a-75c8-11ea-bd47-12813bfff9fa
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 54cee68a-75c8-11ea-bd47-12813bfff9fa;
 Fri, 03 Apr 2020 16:29:47 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 1DFB1F2023;
 Fri,  3 Apr 2020 18:29:46 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (atlas-b.office.hd)
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 kH6pnYZ7Tai4; Fri,  3 Apr 2020 18:29:45 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from puck.office.hd (puck.office.hd [192.168.24.91])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id E55F4F201F
 for <minios-devel@lists.xen.org>; Fri,  3 Apr 2020 18:29:43 +0200 (CEST)
Received: from localhost (192.168.24.96) by puck.office.hd (192.168.24.91)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Fri, 3 Apr 2020
 18:29:43 +0200
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Fri, 3 Apr 2020 18:29:34 +0200
Message-ID: <20200403162939.31745-1-simon.kuenzer@neclab.eu>
X-Mailer: git-send-email 2.20.1
MIME-Version: 1.0
X-Originating-IP: [192.168.24.96]
X-ClientProxiedBy: titania.office.hd (192.168.24.89) To puck.office.hd
 (192.168.24.91)
Subject: [Minios-devel] [UNIKRAFT PATCH v2 0/5] lib/syscall_shim: Further
 improvements
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>,
 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>

VGhpcyBwYXRjaCBzZXJpZXMgaW50cm9kdWNlcyAzIGltcHJvdmVtZW50cy9maXhlcyB0byB0aGUg
d2F5IGhvdwpzeXN0ZW0gY2FsbHMgY2FuIGJlIGltcGxlbWVudGVkIGFuZCByZWdpc3RlcmVkIHRv
IHRoZSBzeXN0ZW0gY2FsbApzaGltIGxpYnJhcnk6CjEpIEludHJvZHVjZXMgbG93LWxldmVsIHZh
cmlhbnRzIG9mIFVLX1NZU0NBTExfREVGSU5FIGFuZAogICBVS19TWVNDQUxMX1JfREVGSU5FIHRo
YXQgYWxsb3cgdG8gaW1wbGVtZW50IG93biBsaWJjLXN0eWxlIHdyYXBwZXJzOgogICBVS19MTFNZ
U0NBTExfREVGSU5FLCBVS19MTFNZU0NBTExfUl9ERUZJTkUuIFRoZXNlIHZhcmlhbnRzIGFyZQog
ICBuZWVkZWQgd2hlbmV2ZXIgdGhlIHNpZ251dGFyZSBvZiBsaWJjLXN0eWxlIHdyYXBwZXJzIGRv
ZXMgbm90IG1hdGNoCiAgIHdpdGggdGhlIHVuZGVybHlpbmcgTGludXggc3lzdGVtIGNhbGwgc2ln
bmF0dXJlLgoyKSBJbnRyb2R1Y2VzIGFuIG9wdGlvbiB0byBkaXNhYmxlIGdlbmVyYXRpbmcgbGli
Yy1zdHlsZSB3cmFwcGVycy4KICAgVGhpcyBpcyBuZWVkZWQgd2hlbmV2ZXIgYSBsaWJDIGxpYnJh
cnkgaXMgcHJvdmlkaW5nIG93biB3cmFwcGVycwogICBhbmQgYmFzZXMgaXRzIGltcGxlbWVudGF0
aW9ucyB0byBsaWIvc3lzY2FsbF9zaGltIChlLmcuLCBtdXNsKS4KMykgVUtfU1lTQ0FMTF9SX0RF
RklORSBhbmQgVUtfTExTWVNDQUxMX1JfREVGSU5FIGRvIG5vIGxvbmdlciBzZXQgdGhlCiAgIHJl
dHVybiB0eXBlIGp1c3QgdG8gbG9uZy4gVGhleSB1c2UgdGhlIHVzZXItZ2l2ZW4gcmV0dXJuIHR5
cGUgaW5zdGVhZC4KICAgVGhpcyBpcyBkb25lIGZvciBjb252ZW5pZW5jZSByZWFzb25zIGJlY2F1
c2UgaXQgcmVkdWNlcwogICB0eXBlY2FzdGluZyBvZiByZXR1cm4gdmFsdWVzIG9uIHJhdyBzeXN0
ZW0gY2FsbCBpbXBsZW1lbnRhdGlvbnMuCgpBZGRpdGlvbmFsbHksIHRoaXMgc2VyaWVzIGludHJv
ZHVjZXMgdHdvIGZlYXR1cmVzIHdoaWNoIG1heSBoZWxwZnVsCndoZW4gY3JlYXRpbmcgVW5pa2Vy
bmVsczoKNCkgQW4gb3B0aW9uIHRvIGdlbmVyYXRlIHN0dWJzIGZvciB1bmF2YWlsYWJsZSBzeXN0
ZW0gY2FsbHMgaW4gb3JkZXIKICAgdG8gZ2V0IHRoZSBmdWxsIEFQSS4KNSkgUHJvdmlkZSBhIHZh
cmlhbnQgb2YgdWtfc3lzY2FsbCgpIGFuZCB1a19zeXNjYWxsX3IoKSB0aGF0IGFjY2VwdHMKICAg
YSB2YXJpYWJsZSBhcmd1bWVudCBsaXN0OiB1a192c3lzY2FsbCgpIGFuZCB1a192c3lzY2FsbF9y
KCkKCkNoYW5nZXMgdjI6CiAtIFNlcmllcyB0aXRsZSBjaGFuZ2VkIGZyb20gJ0ltcHJvdmVtZW50
cyB0b3dhcmRzIG11c2wgaW50ZWdyYXRpb24nCiAtIE9wdGlvbiB0byBnZW5lcmF0ZSBsaWJjLXN0
eWxlIHdyYXBwZXIgc3R1YnMKIC0gSW50cm9kdWNlIHVrX3ZzeXNjYWxsKCksIHVrX3ZzeXNjYWxs
X3IoKQoKU2ltb24gS3VlbnplciAoNSk6CiAgbGliL3N5c2NhbGxfc2hpbTogVUtfTExTWVNDQUxM
XyhSXylfREVGSU5FIHZhcmlhbnRzCiAgbGliL3N5c2NhbGxfc2hpbTogT3B0aW9uIHRvIGRpc2Fi
bGUgbGliYy1zdHlsZSB3cmFwcGVyIGZ1bmN0aW9ucwogIGxpYi9zeXNjYWxsX3NoaW06IGBVS18o
TEwpU1lTQ0FMTF9SX0RFRklORSgpYDogVXNlIGdpdmVuIHJldHVybiB0eXBlCiAgbGliL3N5c2Nh
bGxfc2hpbTogUHJvdmlkZSB1a192c3lzY2FsbCgpLCB1a192c3lzY2FsbF9yKCkKICBsaWIvc3lz
Y2FsbF9zaGltOiBPcHRpb24gdG8gZ2VuZXJhdGUgbGliYy1zdHlsZSBzdHVicwoKIGRvYy9ndWlk
ZXMvZGV2ZWxvcGVycy1hcHAucnN0ICAgICAgICAgIHwgIDU1ICsrKysrKysrLS0KIGxpYi9zeXNj
YWxsX3NoaW0vQ29uZmlnLnVrICAgICAgICAgICAgIHwgIDIxICsrKysKIGxpYi9zeXNjYWxsX3No
aW0vTWFrZWZpbGUudWsgICAgICAgICAgIHwgICA4ICsrCiBsaWIvc3lzY2FsbF9zaGltL2dlbl9s
aWJjX3N0dWJzLmF3ayAgICB8ICAxNiArKysKIGxpYi9zeXNjYWxsX3NoaW0vaW5jbHVkZS91ay9z
eXNjYWxsLmggIHwgMTQwICsrKysrKysrKysrKysrKysrKysrLS0tLS0KIGxpYi9zeXNjYWxsX3No
aW0vdWtfc3lzY2FsbC5jLmluX2VuZCAgIHwgIDEyICsrKwogbGliL3N5c2NhbGxfc2hpbS91a19z
eXNjYWxsX3IuYy5pbl9lbmQgfCAgMTIgKysrCiA3IGZpbGVzIGNoYW5nZWQsIDIyOSBpbnNlcnRp
b25zKCspLCAzNSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvc3lzY2FsbF9z
aGltL2dlbl9saWJjX3N0dWJzLmF3awoKLS0gCjIuMjAuMQoKCl9fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWlu
aW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5v
cmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Fri Apr 03 16:29:54 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 03 Apr 2020 16:29: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 1jKPCc-0000mw-7O; Fri, 03 Apr 2020 16:29:54 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=0rLu=5T=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1jKPCb-0000mi-C2
 for minios-devel@lists.xen.org; Fri, 03 Apr 2020 16:29:53 +0000
X-Inumbo-ID: 572768e4-75c8-11ea-83d8-bc764e2007e4
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 572768e4-75c8-11ea-83d8-bc764e2007e4;
 Fri, 03 Apr 2020 16:29:51 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 3A457F2023;
 Fri,  3 Apr 2020 18:29:50 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (atlas-b.office.hd)
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 VX8VwODVgv4F; Fri,  3 Apr 2020 18:29:50 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from puck.office.hd (puck.office.hd [192.168.24.91])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 0DED2F201F
 for <minios-devel@lists.xen.org>; Fri,  3 Apr 2020 18:29:48 +0200 (CEST)
Received: from localhost (192.168.24.96) by puck.office.hd (192.168.24.91)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Fri, 3 Apr 2020
 18:29:46 +0200
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Fri, 3 Apr 2020 18:29:36 +0200
Message-ID: <20200403162939.31745-3-simon.kuenzer@neclab.eu>
X-Mailer: git-send-email 2.20.1
In-Reply-To: <20200403162939.31745-1-simon.kuenzer@neclab.eu>
References: <20200403162939.31745-1-simon.kuenzer@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [192.168.24.96]
X-ClientProxiedBy: oberon.office.hd (192.168.24.90) To puck.office.hd
 (192.168.24.91)
Subject: [Minios-devel] [UNIKRAFT PATCH v2 2/5] lib/syscall_shim: Option to
 disable libc-style wrapper 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: Felipe Huici <felipe.huici@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>

SW50cm9kdWNlcyB0aGUgaGlkZGVuIENvbmZpZy51ayBvcHRpb24gYExJQlNZU0NBTExfU0hJTV9O
T1dSQVBQRVJgIHRvCmRpc2FibGUgdGhlIGdlbmVyYXRpb24gb2YgbGliYy1zdHlsZSBzeXNjYWxs
IHdyYXBwZXIgZnVuY3Rpb25zLiBUaGUKaWRlYSBpcyB0aGF0IGxpYkMgbGlicmFyaWVzIChlLmcu
LCBtdXNsKSB0aGF0IHByb3ZpZGUgb3duCndyYXBwZXJzIChlLmcuLCBiYXNlZCBvbiBgdWtfc3lz
Y2FsbCgpYCBhbmQgYHVrX3N5c2NhbGxfc3RhdGljKClgKQp3b3VsZCBzZXQgdGhpcyBvcHRpb24g
dGhyb3VnaCB0aGVpciBDb25maWcudWsuIEluIHN1Y2ggYSBjYXNlLCB0aGUKc3lzY2FsbF9zaGlt
IGxpYnJhcnkgd2lsbCB0aGVuIG9ubHkgZ2VuZXJhdGUgdGhlIGxvdy1sZXZlbCBzeXN0ZW0gY2Fs
bAppbXBsZW1lbnRhdGlvbnMuCgpTaWduZWQtb2ZmLWJ5OiBTaW1vbiBLdWVuemVyIDxzaW1vbi5r
dWVuemVyQG5lY2xhYi5ldT4KLS0tCiBkb2MvZ3VpZGVzL2RldmVsb3BlcnMtYXBwLnJzdCAgICAg
ICAgIHwgIDkgKysrKysrKwogbGliL3N5c2NhbGxfc2hpbS9Db25maWcudWsgICAgICAgICAgICB8
ICA2ICsrKysrCiBsaWIvc3lzY2FsbF9zaGltL2luY2x1ZGUvdWsvc3lzY2FsbC5oIHwgMzUgKysr
KysrKysrKysrKysrKysrKysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDUwIGluc2VydGlvbnMo
KykKCmRpZmYgLS1naXQgYS9kb2MvZ3VpZGVzL2RldmVsb3BlcnMtYXBwLnJzdCBiL2RvYy9ndWlk
ZXMvZGV2ZWxvcGVycy1hcHAucnN0CmluZGV4IGE3MjQyZTYwLi5jZTJmMDE1MyAxMDA2NDQKLS0t
IGEvZG9jL2d1aWRlcy9kZXZlbG9wZXJzLWFwcC5yc3QKKysrIGIvZG9jL2d1aWRlcy9kZXZlbG9w
ZXJzLWFwcC5yc3QKQEAgLTQ1MCwxMSArNDUwLDIwIEBAIGxpYmMtc3R5bGUgd3JhcHBlciBvbiB0
b3A6CiAgICAgICAgIHJldHVybiByZXQ7CiAgICAgfQogCisgICAgI2lmIFVLX0xJQkNfU1lTQ0FM
TAogICAgIHNzaXplX3Qgd3JpdGUoaW50IGZkLCBjb25zdCB2b2lkICpidWYsIHNpemVfdCBjb3Vu
dCkKICAgICB7CiAgICAgICAgIHJldHVybiAoc3NpemVfdCkgdWtfc3lzY2FsbF9lX3dyaXRlKChs
b25nKSBmZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxv
bmcpIGJ1ZiwgKGxvbmcpIGNvdW50KTsKICAgICB9CisgICAgI2VuZGlmIC8qIFVLX0xJQkNfU1lT
Q0FMTCAqLworCitOb3RlOiBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBj
dXN0b20gbGliYy1zdHlsZSB3cmFwcGVycyBoYXZlIHRvCitiZSBndWFyZGVkIHdpdGggYGAjaWYg
VUtfTElCQ19TWVNDQUxMYGAuIFRoaXMgbWFjcm8gaXMgcHJvdmlkZWQgYnkgdGhlCitgYDx1ay9z
eXNjYWxsLmg+YGAgaGVhZGVyLiBTb21lIGxpYkMgcG9ydHMgKGUuZy4sIG11c2wpIGRlYWN0aXZh
dGUgdGhpcyBvcHRpb24KK3doZW5ldmVyIHRoZWlyIHByb3ZpZGUgb3duIHdyYXBwZXIgZnVuY3Rp
b25zLiBGb3Igc3VjaCBjYXNlcywgdGhlIHN5c2NhbGxfc2hpbQorbGlicmFyeSB3aWxsIG9ubHkg
cHJvdmlkZSB0aGUgYGB1a19zeXNjYWxsX2VfPHN5c2NhbGxfbmFtZT5gYCBhbmQKK2BgdWtfc3lz
Y2FsbF9yXzxzeXNjYWxsX25hbWU+YGAgc3ltYm9scy4KIAogTm90ZTogV2hlbiBgc3lzY2FsbF9z
aGltYCBsaWJyYXJ5IGlzIG5vdCBlbmFibGVkLCB0aGUgb3JpZ2luYWwgZGVzaWduIGlkZWEgd2Fz
CiB0aGF0IHRoZSBtYWNyb3MgcHJvdmlkZSB0aGUgbGliYy1zdHlsZSB3cmFwcGVyIG9ubHkuIEhv
d2V2ZXIsIGFsbCB0aGUKZGlmZiAtLWdpdCBhL2xpYi9zeXNjYWxsX3NoaW0vQ29uZmlnLnVrIGIv
bGliL3N5c2NhbGxfc2hpbS9Db25maWcudWsKaW5kZXggMjA5NjI1OTAuLmMzMzY5NDYzIDEwMDY0
NAotLS0gYS9saWIvc3lzY2FsbF9zaGltL0NvbmZpZy51aworKysgYi9saWIvc3lzY2FsbF9zaGlt
L0NvbmZpZy51awpAQCAtMyw2ICszLDEyIEBAIG1lbnVjb25maWcgTElCU1lTQ0FMTF9TSElNCiAJ
ZGVmYXVsdCBuCiAKIGlmIExJQlNZU0NBTExfU0hJTQorCSMgSGlkZGVuIGNvbmZpZ3VyYXRpb24g
b3B0aW9uIHRoYXQgY2FuIGJlIHNldCBieSBsaWJjJ3MgaW4gb3JkZXIgdG8KKwkjIHN3aXRjaCBv
ZmYgdGhlIGdlbmVyYXRpb24gb2YgbGliYy1zdHlsZSB3cmFwcGVyIHN5bWJvbHMKKwljb25maWcg
TElCU1lTQ0FMTF9TSElNX05PV1JBUFBFUgorCWJvb2wKKwlkZWZhdWx0IG4KKwogCWNvbmZpZyBM
SUJTWVNDQUxMX1NISU1fSEFORExFUgogCQlib29sICJCaW5hcnkgc3lzdGVtIGNhbGwgaGFuZGxl
ciAoTGludXggQUJJKSIKIAkJZGVmYXVsdCBuCmRpZmYgLS1naXQgYS9saWIvc3lzY2FsbF9zaGlt
L2luY2x1ZGUvdWsvc3lzY2FsbC5oIGIvbGliL3N5c2NhbGxfc2hpbS9pbmNsdWRlL3VrL3N5c2Nh
bGwuaAppbmRleCBhMjE5MzY1Yi4uNmVlMTM5ZmEgMTAwNjQ0Ci0tLSBhL2xpYi9zeXNjYWxsX3No
aW0vaW5jbHVkZS91ay9zeXNjYWxsLmgKKysrIGIvbGliL3N5c2NhbGxfc2hpbS9pbmNsdWRlL3Vr
L3N5c2NhbGwuaApAQCAtNDIsNiArNDIsMjAgQEAKICNpbmNsdWRlIDxlcnJuby5oPgogI2luY2x1
ZGUgPHVrL3ByaW50Lmg+CiAKKy8qCisgKiBXaGVuZXZlciB0aGUgaGlkZGVuIENvbmZpZy51ayBv
cHRpb24gTElCU1lTQ0FMTF9TSElNX05PV1JBUFBFUgorICogaXMgc2V0LCB0aGUgY3JlYXRpb24g
b2YgbGliYy1zdHlsZSB3cmFwcGVycyBhcmUgZGlzYWJsZSBieSB0aGUKKyAqIFVLX1NZU0NBTExf
REVGSU5FKCkgYW5kIFVLX1NZU0NBTExfUl9ERUZJTkUoKSBtYWNyb3MuIEFsdGVybmF0aXZlbHks
CisgKiBVS19MSUJDX1NZU0NBTExTIGNhbiBiZSBzZXQgdG8gMCB0aHJvdWdoIGNvbXBpbGF0aW9u
IGZsYWdzLgorICovCisjaWZuZGVmIFVLX0xJQkNfU1lTQ0FMTFMKKyNpZiBDT05GSUdfTElCU1lT
Q0FMTF9TSElNX05PV1JBUFBFUgorI2RlZmluZSBVS19MSUJDX1NZU0NBTExTICgwKQorI2Vsc2UK
KyNkZWZpbmUgVUtfTElCQ19TWVNDQUxMUyAoMSkKKyNlbmRpZiAvKiBDT05GSUdfTElCU1lTQ0FM
TF9TSElNX05PV1JBUFBFUiAqLworI2VuZGlmIC8qIFVLX0xJQkNfU1lTQ0FMTFMgKi8KKwogI2Rl
ZmluZSBfX3VrX3NjYyhYKSAoKGxvbmcpIChYKSkKIHR5cGVkZWYgbG9uZyB1a19zeXNjYWxsX2Fy
Z190OwogCkBAIC0xMzUsNyArMTQ5LDkgQEAgdHlwZWRlZiBsb25nIHVrX3N5c2NhbGxfYXJnX3Q7
CiAvKgogICogVUtfU1lTQ0FMTF9ERUZJTkUoKQogICogQmFzZWQgb24gVUtfTExTWVNDQUxMX0RF
RklORSBhbmQgcHJvdmlkZXMgYSBsaWJjLXN0eWxlIHdyYXBwZXIKKyAqIGluIGNhc2UgVUtfTElC
Q19TWVNDQUxMUyBpcyBlbmFibGVkCiAgKi8KKyNpZiBVS19MSUJDX1NZU0NBTExTCiAjZGVmaW5l
IF9fVUtfU1lTQ0FMTF9ERUZJTkUoeCwgcnR5cGUsIG5hbWUsIGVuYW1lLCBybmFtZSwgLi4uKQkJ
XAogCWxvbmcgZW5hbWUoVUtfQVJHX01BUHgoeCwgVUtfU19BUkdfTE9ORywgX19WQV9BUkdTX18p
KTsJCVwKIAlydHlwZSBuYW1lKFVLX0FSR19NQVB4KHgsIFVLX1NfQVJHX0FDVFVBTCwgX19WQV9B
UkdTX18pKQlcCkBAIC0xNTIsNiArMTY4LDE1IEBAIHR5cGVkZWYgbG9uZyB1a19zeXNjYWxsX2Fy
Z190OwogCQkJICAgX19VS19OQU1FMlNDQUxMRV9GTihuYW1lKSwJCQlcCiAJCQkgICBfX1VLX05B
TUUyU0NBTExSX0ZOKG5hbWUpLAkJCVwKIAkJCSAgIF9fVkFfQVJHU19fKQorI2Vsc2UKKyNkZWZp
bmUgVUtfU1lTQ0FMTF9ERUZJTkUocnR5cGUsIG5hbWUsIC4uLikJCQkJXAorCV9VS19MTFNZU0NB
TExfREVGSU5FKF9fVUtfU1lTQ0FMTF9ERUZfTkFSR1MoX19WQV9BUkdTX18pLAlcCisJCQkgICAg
IHJ0eXBlLAkJCQkJXAorCQkJICAgICBuYW1lLAkJCQkJXAorCQkJICAgICBfX1VLX05BTUUyU0NB
TExFX0ZOKG5hbWUpLAkJCVwKKwkJCSAgICAgX19VS19OQU1FMlNDQUxMUl9GTihuYW1lKSwJCQlc
CisJCQkgICAgIF9fVkFfQVJHU19fKQorI2VuZGlmIC8qIFVLX0xJQkNfU1lTQ0FMTFMgKi8KIAog
LyogUmF3IHN5c3RlbSBjYWxsIGltcGxlbWVudGF0aW9uIHRoYXQgaXMgcmV0dXJuaW5nIG5lZ2F0
aXZlIGNvZGVzIG9uIGVycm9ycyAqLwogLyogVE9ETzogYHZvaWRgIGFzIHJldHVybiB0eXBlIGlz
IGN1cnJlbnRseSBub3Qgc3VwcG9ydGVkLgpAQCAtMTk0LDcgKzIxOSw5IEBAIHR5cGVkZWYgbG9u
ZyB1a19zeXNjYWxsX2FyZ190OwogLyoKICAqIFVLX1NZU0NBTExfUl9ERUZJTkUoKQogICogQmFz
ZWQgb24gVUtfTExTWVNDQUxMX1JfREVGSU5FIGFuZCBwcm92aWRlcyBhIGxpYmMtc3R5bGUgd3Jh
cHBlcgorICogaW4gY2FzZSBVS19MSUJDX1NZU0NBTExTIGlzIGVuYWJsZWQKICAqLworI2lmIFVL
X0xJQkNfU1lTQ0FMTFMKICNkZWZpbmUgX19VS19TWVNDQUxMX1JfREVGSU5FKHgsIHJ0eXBlLCBu
YW1lLCBlbmFtZSwgcm5hbWUsIC4uLikJXAogCWxvbmcgZW5hbWUoVUtfQVJHX01BUHgoeCwgVUtf
U19BUkdfTE9ORywgX19WQV9BUkdTX18pKTsJCVwKIAlydHlwZSBuYW1lKFVLX0FSR19NQVB4KHgs
IFVLX1NfQVJHX0FDVFVBTCwgX19WQV9BUkdTX18pKQlcCkBAIC0yMTEsNiArMjM4LDE0IEBAIHR5
cGVkZWYgbG9uZyB1a19zeXNjYWxsX2FyZ190OwogCQkJICAgICBfX1VLX05BTUUyU0NBTExFX0ZO
KG5hbWUpLAkJCVwKIAkJCSAgICAgX19VS19OQU1FMlNDQUxMUl9GTihuYW1lKSwJCQlcCiAJCQkg
ICAgIF9fVkFfQVJHU19fKQorI2Vsc2UKKyNkZWZpbmUgVUtfU1lTQ0FMTF9SX0RFRklORShydHlw
ZSwgbmFtZSwgLi4uKQkJCQlcCisJX1VLX0xMU1lTQ0FMTF9SX0RFRklORShfX1VLX1NZU0NBTExf
REVGX05BUkdTKF9fVkFfQVJHU19fKSwJXAorCQkJICAgICAgIG5hbWUsCQkJCQlcCisJCQkgICAg
ICAgX19VS19OQU1FMlNDQUxMRV9GTihuYW1lKSwJCVwKKwkJCSAgICAgICBfX1VLX05BTUUyU0NB
TExSX0ZOKG5hbWUpLAkJXAorCQkJICAgICAgIF9fVkFfQVJHU19fKQorI2VuZGlmIC8qIFVLX0xJ
QkNfU1lTQ0FMTFMgKi8KIAogCiAjZGVmaW5lIF9fVUtfU1BST1RPX0FSR1NfVFlQRSBsb25nCi0t
IAoyLjIwLjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
XwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0
Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9z
LWRldmVs

From minios-devel-bounces@lists.xenproject.org Fri Apr 03 16:29:55 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 03 Apr 2020 16:29: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 1jKPCd-0000nF-8r; Fri, 03 Apr 2020 16:29: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=0rLu=5T=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1jKPCc-0000mr-29
 for minios-devel@lists.xen.org; Fri, 03 Apr 2020 16:29:54 +0000
X-Inumbo-ID: 55f6e292-75c8-11ea-bd47-12813bfff9fa
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 55f6e292-75c8-11ea-bd47-12813bfff9fa;
 Fri, 03 Apr 2020 16:29:49 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 2A903F2031;
 Fri,  3 Apr 2020 18:29:48 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (atlas-b.office.hd)
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 MU0heuWj4KhY; Fri,  3 Apr 2020 18:29:48 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from puck.office.hd (puck.office.hd [192.168.24.91])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id F277AF201F
 for <minios-devel@lists.xen.org>; Fri,  3 Apr 2020 18:29:45 +0200 (CEST)
Received: from localhost (192.168.24.96) by puck.office.hd (192.168.24.91)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Fri, 3 Apr 2020
 18:29:45 +0200
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Fri, 3 Apr 2020 18:29:35 +0200
Message-ID: <20200403162939.31745-2-simon.kuenzer@neclab.eu>
X-Mailer: git-send-email 2.20.1
In-Reply-To: <20200403162939.31745-1-simon.kuenzer@neclab.eu>
References: <20200403162939.31745-1-simon.kuenzer@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [192.168.24.96]
X-ClientProxiedBy: puck.office.hd (192.168.24.91) To puck.office.hd
 (192.168.24.91)
Subject: [Minios-devel] [UNIKRAFT PATCH v2 1/5] lib/syscall_shim:
 UK_LLSYSCALL_(R_)_DEFINE variants
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>,
 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>

U29tZSBzeXN0ZW0gY2FsbHMgaGF2ZSBkaWZmZXJlbnQgc2lnbmF0dXJlcyBhbmQgcmV0dXJuIHR5
cGVzIG9uIHRoZQpsaWJDIEFQSSBhbmQgdGhlIExpbnV4IHN5c3RlbSBjYWxsIEFCSSAoZS5nLiwg
YnJrLCBtb3VudCkuIEluIG9yZGVyCnRvIHN1cHBvcnQgaW1wbGVtZW50aW5nIHN1Y2ggbGliYy1z
dHlsZSB3cmFwcGVycyBtYW51YWxseSBvbiB0b3Agb2YKdGhlIHN5c2NhbGxfc2hpbSBsaWJyYXJ5
LCB3ZSBpbnRyb2R1Y2Ugc28gY2FsbGVkIGxvdy1sZXZlbCB2YXJpYW50cwpmb3IgdGhlIFVLX1NZ
U0NBTExfKFJfKV9ERUZJTkUgbWFjcm9zIHRoYXQgb25seSBwcm92aWRlIHRoZQp1a19zeXNjYWxs
XyhlfHIpXzxzeXNjYWxsIG5hbWU+IHN5bWJvbHM6IFVLX0xMU1lTQ0FMTF8oUl8pX0RFRklORQoK
U2lnbmVkLW9mZi1ieTogU2ltb24gS3VlbnplciA8c2ltb24ua3VlbnplckBuZWNsYWIuZXU+Ci0t
LQogZG9jL2d1aWRlcy9kZXZlbG9wZXJzLWFwcC5yc3QgICAgICAgICB8IDM1ICsrKysrKysrKyst
CiBsaWIvc3lzY2FsbF9zaGltL2luY2x1ZGUvdWsvc3lzY2FsbC5oIHwgOTEgKysrKysrKysrKysr
KysrKysrKystLS0tLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDEwMiBpbnNlcnRpb25zKCspLCAyNCBk
ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2MvZ3VpZGVzL2RldmVsb3BlcnMtYXBwLnJzdCBi
L2RvYy9ndWlkZXMvZGV2ZWxvcGVycy1hcHAucnN0CmluZGV4IDY0MzgzMzNjLi5hNzI0MmU2MCAx
MDA2NDQKLS0tIGEvZG9jL2d1aWRlcy9kZXZlbG9wZXJzLWFwcC5yc3QKKysrIGIvZG9jL2d1aWRl
cy9kZXZlbG9wZXJzLWFwcC5yc3QKQEAgLTQyOCwxMCArNDI4LDM5IEBAIEJvdGggbWFjcm9zIGNy
ZWF0ZSB0aGUgZm9sbG93aW5nIHRocmVlIHN5bWJvbHM6CiAgICAgPHJldHVybl90eXBlPiA8c3lz
Y2FsbF9uYW1lPig8YXJnMV90eXBlPiA8YXJnMV9uYW1lPiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDxhcmcyX3R5cGU+IDxhcmcyX25hbWU+LCAuLi4pOwogCitGb3IgdGhlIGNh
c2UgdGhhdCB0aGUgbGliYy1zdHlsZSB3cmFwcGVyIGRvZXMgbm90IG1hdGNoIHRoZSBzaWduYXR1
cmUgYW5kIHJldHVybgordHlwZSBvZiB0aGUgdW5kZXJseWluZyBzeXN0ZW0gY2FsbCwgYSBzbyBj
YWxsZWQgbG93LWxldmVsIHZhcmlhbnQgb2YgdGhlc2UgdHdvCittYWNyb3MgYXJlIGF2YWlsYWJs
ZTogYGBVS19MTFNZU0NBTExfREVGSU5FYGAsIGBgVUtfTExTWVNDQUxMX1JfREVGSU5FYGAuCitU
aGVzZSBtYWNyb3Mgb25seSBnZW5lcmF0ZSB0aGUgYGB1a19zeXNjYWxsX2VfPHN5c2NhbGxfbmFt
ZT5gYCBhbmQKK2BgdWtfc3lzY2FsbF9yXzxzeXNjYWxsX25hbWU+YGAgc3ltYm9scy4gWW91IGNh
biB0aGVuIHByb3ZpZGUgdGhlIGN1c3RvbQorbGliYy1zdHlsZSB3cmFwcGVyIG9uIHRvcDoKKwor
Li4gY29kZS1ibG9jazo6IGMKKworICAgICNpbmNsdWRlIDx1ay9zeXNjYWxsLmg+CisKKyAgICBV
S19MTFNZU0NBTExfUl9ERUZJTkUoc3NpemVfdCwgd3JpdGUsIGludCwgZmQsIGNvbnN0IHZvaWQg
KiwgYnVmLCBzaXplX3QsIGNvdW50KQorICAgIHsKKyAgICAgICAgbG9uZyByZXQ7CisKKyAgICAg
ICAgcmV0ID0gKGxvbmcpIHZmc19kb193cml0ZShmZCwgYnVmLCBjb3VudCk7CisgICAgICAgIGlm
IChyZXQgPCAwKSB7CisgICAgICAgICAgICByZXR1cm4gLUVGQVVMVDsKKyAgICAgICAgfQorICAg
ICAgICByZXR1cm4gcmV0OworICAgIH0KKworICAgIHNzaXplX3Qgd3JpdGUoaW50IGZkLCBjb25z
dCB2b2lkICpidWYsIHNpemVfdCBjb3VudCkKKyAgICB7CisgICAgICAgIHJldHVybiAoc3NpemVf
dCkgdWtfc3lzY2FsbF9lX3dyaXRlKChsb25nKSBmZCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKGxvbmcpIGJ1ZiwgKGxvbmcpIGNvdW50KTsKKyAgICB9CisK
IE5vdGU6IFdoZW4gYHN5c2NhbGxfc2hpbWAgbGlicmFyeSBpcyBub3QgZW5hYmxlZCwgdGhlIG9y
aWdpbmFsIGRlc2lnbiBpZGVhIHdhcwotdGhhdCB0aGUgbWFjcm9zIHByb3ZpZGUgdGhlIGxpYmMt
c3R5bGUgd3JhcHBlciBvbmx5LiBIb3dldmVyLCBib3RoIG1hY3JvcwotcHJvdmlkZSBhbHdheXMg
YWxsIHRocmVlIHZhcmlhbnRzLiBUaGlzIGlzIGRvbmUgdG8gc3VwcG9ydCB0aGUgY2FzZSB0aGF0
IGEKLXN5c3RlbSBjYWxsIGlzIGltcGxlbWVudGVkIG9uIHRvcCBvZiBhbm90aGVyLgordGhhdCB0
aGUgbWFjcm9zIHByb3ZpZGUgdGhlIGxpYmMtc3R5bGUgd3JhcHBlciBvbmx5LiBIb3dldmVyLCBh
bGwgdGhlCitkZXNjcmliZWQgbWFjcm9zIGFyZSBzdGlsbCBhdmFpbGFibGUgYW5kIHBvcHVsYXRl
IHRoZSBzeW1ib2xzIGFzIGRvY3VtZW50ZWQKK2hlcmUuIFRoaXMgaXMgZG9uZSB0byBzdXBwb3J0
IHRoZSBjYXNlIHRoYXQgYSBzeXN0ZW0gY2FsbCBpcyBpbXBsZW1lbnRlZCBieQorY2FsbGluZyBh
bm90aGVyLgogCiBJZiB5b3VyIGxpYnJhcnkgdXNlcyBhbiBgYGV4cG9ydHN5bXMudWtgYCBmaWxl
LCB5b3UgbmVlZCB0byBhZGQgdGhlIHRocmVlCiBzeW1ib2xzIGZvciBtYWtpbmcgdGhlbSBwdWJs
aWMgYXZhaWxhYmxlOiA6OgpkaWZmIC0tZ2l0IGEvbGliL3N5c2NhbGxfc2hpbS9pbmNsdWRlL3Vr
L3N5c2NhbGwuaCBiL2xpYi9zeXNjYWxsX3NoaW0vaW5jbHVkZS91ay9zeXNjYWxsLmgKaW5kZXgg
Y2Q1YzZlNjcuLmEyMTkzNjViIDEwMDY0NAotLS0gYS9saWIvc3lzY2FsbF9zaGltL2luY2x1ZGUv
dWsvc3lzY2FsbC5oCisrKyBiL2xpYi9zeXNjYWxsX3NoaW0vaW5jbHVkZS91ay9zeXNjYWxsLmgK
QEAgLTM3LDYgKzM3LDcgQEAKICNpZm5kZWYgX19VS19TWVNDQUxMX0hfXwogI2RlZmluZSBfX1VL
X1NZU0NBTExfSF9fCiAKKyNpbmNsdWRlIDx1ay9jb25maWcuaD4KICNpbmNsdWRlIDx1ay9lc3Nl
bnRpYWxzLmg+CiAjaW5jbHVkZSA8ZXJybm8uaD4KICNpbmNsdWRlIDx1ay9wcmludC5oPgpAQCAt
OTQsNTYgKzk1LDgzIEBAIHR5cGVkZWYgbG9uZyB1a19zeXNjYWxsX2FyZ190OwogLyogVE9ETzog
YHZvaWRgIGFzIHJldHVybiB0eXBlIGlzIGN1cnJlbnRseSBub3Qgc3VwcG9ydGVkLgogICogTk9U
RTogV29ya2Fyb3VuZCBpcyB0byB1c2UgYGludGAgaW5zdGVhZC4KICAqLwotI2RlZmluZSBfX1VL
X1NZU0NBTExfREVGSU5FKHgsIHJ0eXBlLCBuYW1lLCBlbmFtZSwgcm5hbWUsIC4uLikJCVwKLQly
dHlwZSBuYW1lKFVLX0FSR19NQVB4KHgsIFVLX1NfQVJHX0FDVFVBTCwgX19WQV9BUkdTX18pKTsJ
XAorLyoKKyAqIFVLX0xMU1lTQ0FMTF9ERUZJTkUoKQorICogTG93LWxldmVsIHZhcmlhbnQsIGRv
ZXMgbm90IHByb3ZpZGUgYSBsaWJjLXN0eWxlIHdyYXBwZXIKKyAqLworI2RlZmluZSBfX1VLX0xM
U1lTQ0FMTF9ERUZJTkUoeCwgcnR5cGUsIG5hbWUsIGVuYW1lLCBybmFtZSwgLi4uKQlcCisJbG9u
ZyBlbmFtZShVS19BUkdfTUFQeCh4LCBVS19TX0FSR19MT05HLCBfX1ZBX0FSR1NfXykpOwkJXAog
CWxvbmcgcm5hbWUoVUtfQVJHX01BUHgoeCwgVUtfU19BUkdfTE9ORywgX19WQV9BUkdTX18pKQkJ
XAogCXsJCQkJCQkJCVwKIAkJaW50IF9lcnJubyA9IGVycm5vOwkJCQkJXAogCQlsb25nIHJldDsJ
CQkJCQlcCiAJCQkJCQkJCQlcCiAJCWVycm5vID0gMDsJCQkJCQlcCi0JCXJldCA9IChsb25nKSBu
YW1lKAkJCQkJXAotCQkJVUtfQVJHX01BUHgoeCwgVUtfU19BUkdfQ0FTVF9BQ1RVQUwsIF9fVkFf
QVJHU19fKSk7IFwKKwkJcmV0ID0gZW5hbWUoCQkJCQkJXAorCQkJVUtfQVJHX01BUHgoeCwgVUtf
U19BUkdfQ0FTVF9MT05HLCBfX1ZBX0FSR1NfXykpOyBcCiAJCWlmIChyZXQgPT0gLTEpCQkJCQkJ
XAogCQkJcmV0ID0gZXJybm8gPyAtZXJybm8gOiAtRUZBVUxUOwkJCVwKIAkJZXJybm8gPSBfZXJy
bm87CQkJCQkJXAogCQlyZXR1cm4gcmV0OwkJCQkJCVwKIAl9CQkJCQkJCQlcCisJc3RhdGljIGlu
bGluZSBydHlwZSBfXyMjZW5hbWUoVUtfQVJHX01BUHgoeCwJCQlcCisJCQkJCVVLX1NfQVJHX0FD
VFVBTCwgX19WQV9BUkdTX18pKTsgXAogCWxvbmcgZW5hbWUoVUtfQVJHX01BUHgoeCwgVUtfU19B
UkdfTE9ORywgX19WQV9BUkdTX18pKQkJXAogCXsJCQkJCQkJCVwKLQkJcmV0dXJuIChsb25nKSBu
YW1lKAkJCQkJXAorCQlyZXR1cm4gKGxvbmcpIF9fIyNlbmFtZSgJCQkJXAogCQkJVUtfQVJHX01B
UHgoeCwgVUtfU19BUkdfQ0FTVF9BQ1RVQUwsIF9fVkFfQVJHU19fKSk7IFwKIAl9CQkJCQkJCQlc
Ci0JcnR5cGUgbmFtZShVS19BUkdfTUFQeCh4LCBVS19TX0FSR19BQ1RVQUwsIF9fVkFfQVJHU19f
KSkKKwlzdGF0aWMgaW5saW5lIHJ0eXBlIF9fIyNlbmFtZShVS19BUkdfTUFQeCh4LAkJCVwKKwkJ
CQkJCSAgVUtfU19BUkdfQUNUVUFMLCBfX1ZBX0FSR1NfXykpCisjZGVmaW5lIF9VS19MTFNZU0NB
TExfREVGSU5FKC4uLikgX19VS19MTFNZU0NBTExfREVGSU5FKF9fVkFfQVJHU19fKQorI2RlZmlu
ZSBVS19MTFNZU0NBTExfREVGSU5FKHJ0eXBlLCBuYW1lLCAuLi4pCQkJCVwKKwlfVUtfTExTWVND
QUxMX0RFRklORShfX1VLX1NZU0NBTExfREVGX05BUkdTKF9fVkFfQVJHU19fKSwJXAorCQkJICAg
ICBydHlwZSwJCQkJCVwKKwkJCSAgICAgbmFtZSwJCQkJCVwKKwkJCSAgICAgX19VS19OQU1FMlND
QUxMRV9GTihuYW1lKSwJCQlcCisJCQkgICAgIF9fVUtfTkFNRTJTQ0FMTFJfRk4obmFtZSksCQkJ
XAorCQkJICAgICBfX1ZBX0FSR1NfXykKKworLyoKKyAqIFVLX1NZU0NBTExfREVGSU5FKCkKKyAq
IEJhc2VkIG9uIFVLX0xMU1lTQ0FMTF9ERUZJTkUgYW5kIHByb3ZpZGVzIGEgbGliYy1zdHlsZSB3
cmFwcGVyCisgKi8KKyNkZWZpbmUgX19VS19TWVNDQUxMX0RFRklORSh4LCBydHlwZSwgbmFtZSwg
ZW5hbWUsIHJuYW1lLCAuLi4pCQlcCisJbG9uZyBlbmFtZShVS19BUkdfTUFQeCh4LCBVS19TX0FS
R19MT05HLCBfX1ZBX0FSR1NfXykpOwkJXAorCXJ0eXBlIG5hbWUoVUtfQVJHX01BUHgoeCwgVUtf
U19BUkdfQUNUVUFMLCBfX1ZBX0FSR1NfXykpCVwKKwl7CQkJCQkJCQlcCisJCXJldHVybiAocnR5
cGUpIGVuYW1lKAkJCQkJXAorCQkJVUtfQVJHX01BUHgoeCwgVUtfU19BUkdfQ0FTVF9MT05HLCBf
X1ZBX0FSR1NfXykpOyBcCisJfQkJCQkJCQkJXAorCV9fVUtfTExTWVNDQUxMX0RFRklORSh4LCBy
dHlwZSwgbmFtZSwgZW5hbWUsIHJuYW1lLCBfX1ZBX0FSR1NfXykKICNkZWZpbmUgX1VLX1NZU0NB
TExfREVGSU5FKC4uLikgX19VS19TWVNDQUxMX0RFRklORShfX1ZBX0FSR1NfXykKLSNkZWZpbmUg
VUtfU1lTQ0FMTF9ERUZJTkUocnR5cGUsIG5hbWUsIC4uLikJCQkgICAgICAgXAotCV9VS19TWVND
QUxMX0RFRklORShfX1VLX1NZU0NBTExfREVGX05BUkdTKF9fVkFfQVJHU19fKSwJICAgICAgIFwK
LQkJCSAgIHJ0eXBlLAkJCQkgICAgICAgXAotCQkJICAgbmFtZSwJCQkJICAgICAgIFwKLQkJCSAg
IF9fVUtfTkFNRTJTQ0FMTEVfRk4obmFtZSksCQkgICAgICAgXAotCQkJICAgX19VS19OQU1FMlND
QUxMUl9GTihuYW1lKSwJCSAgICAgICBcCisjZGVmaW5lIFVLX1NZU0NBTExfREVGSU5FKHJ0eXBl
LCBuYW1lLCAuLi4pCQkJCVwKKwlfVUtfU1lTQ0FMTF9ERUZJTkUoX19VS19TWVNDQUxMX0RFRl9O
QVJHUyhfX1ZBX0FSR1NfXyksCQlcCisJCQkgICBydHlwZSwJCQkJCVwKKwkJCSAgIG5hbWUsCQkJ
CQlcCisJCQkgICBfX1VLX05BTUUyU0NBTExFX0ZOKG5hbWUpLAkJCVwKKwkJCSAgIF9fVUtfTkFN
RTJTQ0FMTFJfRk4obmFtZSksCQkJXAogCQkJICAgX19WQV9BUkdTX18pCiAKIC8qIFJhdyBzeXN0
ZW0gY2FsbCBpbXBsZW1lbnRhdGlvbiB0aGF0IGlzIHJldHVybmluZyBuZWdhdGl2ZSBjb2RlcyBv
biBlcnJvcnMgKi8KIC8qIFRPRE86IGB2b2lkYCBhcyByZXR1cm4gdHlwZSBpcyBjdXJyZW50bHkg
bm90IHN1cHBvcnRlZC4KICAqIE5PVEU6IFdvcmthcm91bmQgaXMgdG8gdXNlIGBpbnRgIGluc3Rl
YWQuCiAgKi8KLSNkZWZpbmUgX19VS19TWVNDQUxMX1JfREVGSU5FKHgsIHJ0eXBlLCBuYW1lLCBl
bmFtZSwgcm5hbWUsIC4uLikJXAorLyoKKyAqIFVLX0xMU1lTQ0FMTF9SX0RFRklORSgpCisgKiBM
b3ctbGV2ZWwgdmFyaWFudCwgZG9lcyBub3QgcHJvdmlkZSBhIGxpYmMtc3R5bGUgd3JhcHBlcgor
ICovCisjZGVmaW5lIF9fVUtfTExTWVNDQUxMX1JfREVGSU5FKHgsIHJ0eXBlLCBuYW1lLCBlbmFt
ZSwgcm5hbWUsIC4uLikJXAogCWxvbmcgcm5hbWUoVUtfQVJHX01BUHgoeCwgVUtfU19BUkdfTE9O
RywgX19WQV9BUkdTX18pKTsJCVwKLQlydHlwZSBuYW1lKFVLX0FSR19NQVB4KHgsIFVLX1NfQVJH
X0FDVFVBTCwgX19WQV9BUkdTX18pKQlcCisJbG9uZyBlbmFtZShVS19BUkdfTUFQeCh4LCBVS19T
X0FSR19MT05HLCBfX1ZBX0FSR1NfXykpCQlcCiAJewkJCQkJCQkJXAogCQlsb25nIHJldCA9IHJu
YW1lKAkJCQkJXAogCQkJVUtfQVJHX01BUHgoeCwgVUtfU19BUkdfQ0FTVF9MT05HLCBfX1ZBX0FS
R1NfXykpOyBcCiAJCWlmIChyZXQgPCAwKSB7CQkJCQkJXAogCQkJZXJybm8gPSAoaW50KSAtcmV0
OwkJCQlcCi0JCQlyZXR1cm4gKHJ0eXBlKSAtMTsJCQkJXAorCQkJcmV0dXJuIC0xOwkJCQkJXAog
CQl9CQkJCQkJCVwKLQkJcmV0dXJuIChydHlwZSkgcmV0OwkJCQkJXAotCX0JCQkJCQkJCVwKLQls
b25nIGVuYW1lKFVLX0FSR19NQVB4KHgsIFVLX1NfQVJHX0xPTkcsIF9fVkFfQVJHU19fKSkJCVwK
LQl7CQkJCQkJCQlcCi0JCXJldHVybiAobG9uZykgbmFtZSgJCQkJCVwKLQkJCVVLX0FSR19NQVB4
KHgsIFVLX1NfQVJHX0NBU1RfQUNUVUFMLCBfX1ZBX0FSR1NfXykpOyBcCisJCXJldHVybiByZXQ7
CQkJCQkJXAogCX0JCQkJCQkJCVwKIAlzdGF0aWMgaW5saW5lIGxvbmcgX18jI3JuYW1lKFVLX0FS
R19NQVB4KHgsIFVLX1NfQVJHX0FDVFVBTCwJXAogCQkJCQkJIF9fVkFfQVJHU19fKSk7CQlcCkBA
IC0xNTQsNiArMTgyLDI3IEBAIHR5cGVkZWYgbG9uZyB1a19zeXNjYWxsX2FyZ190OwogCX0JCQkJ
CQkJCVwKIAlzdGF0aWMgaW5saW5lIGxvbmcgX18jI3JuYW1lKFVLX0FSR19NQVB4KHgsIFVLX1Nf
QVJHX0FDVFVBTCwJXAogCQkJCQkJIF9fVkFfQVJHU19fKSkKKyNkZWZpbmUgX1VLX0xMU1lTQ0FM
TF9SX0RFRklORSguLi4pIF9fVUtfTExTWVNDQUxMX1JfREVGSU5FKF9fVkFfQVJHU19fKQorI2Rl
ZmluZSBVS19MTFNZU0NBTExfUl9ERUZJTkUocnR5cGUsIG5hbWUsIC4uLikJCQkJXAorCV9VS19M
TFNZU0NBTExfUl9ERUZJTkUoX19VS19TWVNDQUxMX0RFRl9OQVJHUyhfX1ZBX0FSR1NfXyksCVwK
KwkJCSAgICAgICBydHlwZSwJCQkJCVwKKwkJCSAgICAgICBuYW1lLAkJCQkJXAorCQkJICAgICAg
IF9fVUtfTkFNRTJTQ0FMTEVfRk4obmFtZSksCQlcCisJCQkgICAgICAgX19VS19OQU1FMlNDQUxM
Ul9GTihuYW1lKSwJCVwKKwkJCSAgICAgICBfX1ZBX0FSR1NfXykKKworLyoKKyAqIFVLX1NZU0NB
TExfUl9ERUZJTkUoKQorICogQmFzZWQgb24gVUtfTExTWVNDQUxMX1JfREVGSU5FIGFuZCBwcm92
aWRlcyBhIGxpYmMtc3R5bGUgd3JhcHBlcgorICovCisjZGVmaW5lIF9fVUtfU1lTQ0FMTF9SX0RF
RklORSh4LCBydHlwZSwgbmFtZSwgZW5hbWUsIHJuYW1lLCAuLi4pCVwKKwlsb25nIGVuYW1lKFVL
X0FSR19NQVB4KHgsIFVLX1NfQVJHX0xPTkcsIF9fVkFfQVJHU19fKSk7CQlcCisJcnR5cGUgbmFt
ZShVS19BUkdfTUFQeCh4LCBVS19TX0FSR19BQ1RVQUwsIF9fVkFfQVJHU19fKSkJXAorCXsJCQkJ
CQkJCVwKKwkJcmV0dXJuIChydHlwZSkgZW5hbWUoCQkJCQlcCisJCQlVS19BUkdfTUFQeCh4LCBV
S19TX0FSR19DQVNUX0xPTkcsIF9fVkFfQVJHU19fKSk7IFwKKwl9CQkJCQkJCQlcCisJX19VS19M
TFNZU0NBTExfUl9ERUZJTkUoeCwgcnR5cGUsIG5hbWUsIGVuYW1lLCBybmFtZSwgX19WQV9BUkdT
X18pCiAjZGVmaW5lIF9VS19TWVNDQUxMX1JfREVGSU5FKC4uLikgX19VS19TWVNDQUxMX1JfREVG
SU5FKF9fVkFfQVJHU19fKQogI2RlZmluZSBVS19TWVNDQUxMX1JfREVGSU5FKHJ0eXBlLCBuYW1l
LCAuLi4pCQkJCVwKIAlfVUtfU1lTQ0FMTF9SX0RFRklORShfX1VLX1NZU0NBTExfREVGX05BUkdT
KF9fVkFfQVJHU19fKSwJXAotLSAKMi4yMC4xCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2
ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWls
bWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Fri Apr 03 16:29:59 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 03 Apr 2020 16:29: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 1jKPCh-0000oE-Al; Fri, 03 Apr 2020 16:29:59 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=0rLu=5T=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1jKPCg-0000ny-90
 for minios-devel@lists.xen.org; Fri, 03 Apr 2020 16:29:58 +0000
X-Inumbo-ID: 599ce964-75c8-11ea-83d8-bc764e2007e4
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 599ce964-75c8-11ea-83d8-bc764e2007e4;
 Fri, 03 Apr 2020 16:29:55 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 58AF0F2023;
 Fri,  3 Apr 2020 18:29:54 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (atlas-b.office.hd)
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 2xZt2SUWjISg; Fri,  3 Apr 2020 18:29:54 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from puck.office.hd (puck.office.hd [192.168.24.91])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 2D7FBF201F
 for <minios-devel@lists.xen.org>; Fri,  3 Apr 2020 18:29:52 +0200 (CEST)
Received: from localhost (192.168.24.96) by puck.office.hd (192.168.24.91)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Fri, 3 Apr 2020
 18:29:49 +0200
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Fri, 3 Apr 2020 18:29:38 +0200
Message-ID: <20200403162939.31745-5-simon.kuenzer@neclab.eu>
X-Mailer: git-send-email 2.20.1
In-Reply-To: <20200403162939.31745-1-simon.kuenzer@neclab.eu>
References: <20200403162939.31745-1-simon.kuenzer@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [192.168.24.96]
X-ClientProxiedBy: puck.office.hd (192.168.24.91) To puck.office.hd
 (192.168.24.91)
Subject: [Minios-devel] [UNIKRAFT PATCH v2 4/5] lib/syscall_shim: Provide
 uk_vsyscall(), uk_vsyscall_r()
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>,
 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>

UHJvdmlkZSBhIHZhcmlhbnQgdG8gdGhlIGdlbmVyYWwgYW5kIHJhdyBzeXN0ZW0gY2FsbCBmdW5j
dGlvbgp1a19zeXNjYWxsKCkgYW5kIHVrX3N5c2NhbGxfcigpIHRoYXQgYWNjZXB0cyBhIHZhX2xp
c3QgYXJndW1lbnQgaW5zdGVhZDoKCiAgICBsb25nIHVrX3ZzeXNjYWxsKGxvbmcgbiwgdmFfbGlz
dCBhcmcpOwogICAgbG9uZyB1a192c3lzY2FsbF9yKGxvbmcgbiwgdmFfbGlzdCBhcmcpOwoKU2ln
bmVkLW9mZi1ieTogU2ltb24gS3VlbnplciA8c2ltb24ua3VlbnplckBuZWNsYWIuZXU+Ci0tLQog
bGliL3N5c2NhbGxfc2hpbS9pbmNsdWRlL3VrL3N5c2NhbGwuaCAgfCAgMyArKysKIGxpYi9zeXNj
YWxsX3NoaW0vdWtfc3lzY2FsbC5jLmluX2VuZCAgIHwgMTIgKysrKysrKysrKysrCiBsaWIvc3lz
Y2FsbF9zaGltL3VrX3N5c2NhbGxfci5jLmluX2VuZCB8IDEyICsrKysrKysrKysrKwogMyBmaWxl
cyBjaGFuZ2VkLCAyNyBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvbGliL3N5c2NhbGxfc2hp
bS9pbmNsdWRlL3VrL3N5c2NhbGwuaCBiL2xpYi9zeXNjYWxsX3NoaW0vaW5jbHVkZS91ay9zeXNj
YWxsLmgKaW5kZXggYWFmZTIwYTcuLmRjN2JjN2VmIDEwMDY0NAotLS0gYS9saWIvc3lzY2FsbF9z
aGltL2luY2x1ZGUvdWsvc3lzY2FsbC5oCisrKyBiL2xpYi9zeXNjYWxsX3NoaW0vaW5jbHVkZS91
ay9zeXNjYWxsLmgKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlIDx1ay9lc3NlbnRpYWxzLmg+
CiAjaW5jbHVkZSA8dWsvZXJycHRyLmg+CiAjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxz
dGRhcmcuaD4KICNpbmNsdWRlIDx1ay9wcmludC5oPgogCiAvKgpAQCAtMjg4LDYgKzI4OSw3IEBA
IHR5cGVkZWYgbG9uZyB1a19zeXNjYWxsX2FyZ190OwogCiAvKiBTeXN0ZW0gY2FsbCwgcmV0dXJu
cyAtMSBhbmQgc2V0cyBlcnJubyBvbiBlcnJvcnMgKi8KIGxvbmcgdWtfc3lzY2FsbChsb25nIG4s
IC4uLik7Citsb25nIHVrX3ZzeXNjYWxsKGxvbmcgbiwgdmFfbGlzdCBhcmcpOwogCiAvKgogICog
VXNlIHRoaXMgdmFyaWFudCBpbnN0ZWFkIG9mIGB1a19zeXNjYWxsKClgIHdoZW5ldmVyIHRoZSBz
eXN0ZW0gY2FsbCBudW1iZXIKQEAgLTI5OSw2ICszMDEsNyBAQCBsb25nIHVrX3N5c2NhbGwobG9u
ZyBuLCAuLi4pOwogCiAvKiBSYXcgc3lzdGVtIGNhbGwsIHJldHVybnMgbmVnYXRpdmUgY29kZXMg
b24gZXJyb3JzICovCiBsb25nIHVrX3N5c2NhbGxfcihsb25nIG4sIC4uLik7Citsb25nIHVrX3Zz
eXNjYWxsX3IobG9uZyBuLCB2YV9saXN0IGFyZyk7CiAKIC8qCiAgKiBVc2UgdGhpcyB2YXJpYW50
IGluc3RlYWQgb2YgYHVrX3N5c2NhbGxfcigpYCB3aGVuZXZlciB0aGUgc3lzdGVtIGNhbGwgbnVt
YmVyCmRpZmYgLS1naXQgYS9saWIvc3lzY2FsbF9zaGltL3VrX3N5c2NhbGwuYy5pbl9lbmQgYi9s
aWIvc3lzY2FsbF9zaGltL3VrX3N5c2NhbGwuYy5pbl9lbmQKaW5kZXggNzlhOGI3ZmQuLjhhNWY4
ZTBiIDEwMDY0NAotLS0gYS9saWIvc3lzY2FsbF9zaGltL3VrX3N5c2NhbGwuYy5pbl9lbmQKKysr
IGIvbGliL3N5c2NhbGxfc2hpbS91a19zeXNjYWxsLmMuaW5fZW5kCkBAIC0xMywzICsxMywxNSBA
QCBsb25nIHVrX3N5c2NhbGwobG9uZyBuLCAuLi4pCiAJdmFfZW5kKGFwKTsKIAlyZXR1cm4gX191
a19zeXNjYWxsKG4sYSxiLGMsZCxlLGYpOwogfQorCitsb25nIHVrX3ZzeXNjYWxsKGxvbmcgbiwg
dmFfbGlzdCBhcmcpCit7CisJbG9uZyBhLGIsYyxkLGUsZjsKKwlhPXZhX2FyZyhhcmcsIGxvbmcp
OworCWI9dmFfYXJnKGFyZywgbG9uZyk7CisJYz12YV9hcmcoYXJnLCBsb25nKTsKKwlkPXZhX2Fy
ZyhhcmcsIGxvbmcpOworCWU9dmFfYXJnKGFyZywgbG9uZyk7CisJZj12YV9hcmcoYXJnLCBsb25n
KTsKKwlyZXR1cm4gX191a19zeXNjYWxsKG4sYSxiLGMsZCxlLGYpOworfQpkaWZmIC0tZ2l0IGEv
bGliL3N5c2NhbGxfc2hpbS91a19zeXNjYWxsX3IuYy5pbl9lbmQgYi9saWIvc3lzY2FsbF9zaGlt
L3VrX3N5c2NhbGxfci5jLmluX2VuZAppbmRleCBlZThhNTY4OS4uYWU3NDcxNmUgMTAwNjQ0Ci0t
LSBhL2xpYi9zeXNjYWxsX3NoaW0vdWtfc3lzY2FsbF9yLmMuaW5fZW5kCisrKyBiL2xpYi9zeXNj
YWxsX3NoaW0vdWtfc3lzY2FsbF9yLmMuaW5fZW5kCkBAIC0xNCw2ICsxNCwxOCBAQCBsb25nIHVr
X3N5c2NhbGxfcihsb25nIG4sIC4uLikKIAlyZXR1cm4gX191a19zeXNjYWxsX3IobixhLGIsYyxk
LGUsZik7CiB9CiAKK2xvbmcgdWtfdnN5c2NhbGxfcihsb25nIG4sIHZhX2xpc3QgYXJnKQorewor
CWxvbmcgYSxiLGMsZCxlLGY7CisJYT12YV9hcmcoYXJnLCBsb25nKTsKKwliPXZhX2FyZyhhcmcs
IGxvbmcpOworCWM9dmFfYXJnKGFyZywgbG9uZyk7CisJZD12YV9hcmcoYXJnLCBsb25nKTsKKwll
PXZhX2FyZyhhcmcsIGxvbmcpOworCWY9dmFfYXJnKGFyZywgbG9uZyk7CisJcmV0dXJuIF9fdWtf
c3lzY2FsbF9yKG4sYSxiLGMsZCxlLGYpOworfQorCiAjaWYgQ09ORklHX0xJQlNZU0NBTExfU0hJ
TV9IQU5ETEVSCiAjaW5jbHVkZSA8dWsvcGxhdC9zeXNjYWxsLmg+CiAjaW5jbHVkZSA8dWsvYXNz
ZXJ0Lmg+Ci0tIAoyLjIwLjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54
ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGlu
Zm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Fri Apr 03 16:30:00 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 03 Apr 2020 16:30: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 1jKPCi-0000og-CE; Fri, 03 Apr 2020 16:30: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=0rLu=5T=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1jKPCh-0000o4-25
 for minios-devel@lists.xen.org; Fri, 03 Apr 2020 16:29:59 +0000
X-Inumbo-ID: 58647404-75c8-11ea-bd47-12813bfff9fa
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 58647404-75c8-11ea-bd47-12813bfff9fa;
 Fri, 03 Apr 2020 16:29:53 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 49868F2031;
 Fri,  3 Apr 2020 18:29:52 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (atlas-b.office.hd)
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 bagdFa3_Vnu2; Fri,  3 Apr 2020 18:29:52 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from puck.office.hd (puck.office.hd [192.168.24.91])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 1DCD2F201F
 for <minios-devel@lists.xen.org>; Fri,  3 Apr 2020 18:29:50 +0200 (CEST)
Received: from localhost (192.168.24.96) by puck.office.hd (192.168.24.91)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Fri, 3 Apr 2020
 18:29:48 +0200
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Fri, 3 Apr 2020 18:29:37 +0200
Message-ID: <20200403162939.31745-4-simon.kuenzer@neclab.eu>
X-Mailer: git-send-email 2.20.1
In-Reply-To: <20200403162939.31745-1-simon.kuenzer@neclab.eu>
References: <20200403162939.31745-1-simon.kuenzer@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [192.168.24.96]
X-ClientProxiedBy: titania.office.hd (192.168.24.89) To puck.office.hd
 (192.168.24.91)
Subject: [Minios-devel] [UNIKRAFT PATCH v2 3/5] lib/syscall_shim:
 `UK_(LL)SYSCALL_R_DEFINE()`: Use given return type
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>,
 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>

SW5zdGVhZCBvZiBkZWNsYXJpbmcgdGhlIHJldHVybiB0eXBlIGZvciBgVUtfKExMKVNZU0NBTExf
Ul9ERUZJTkUoKWAKZnVuY3Rpb25zIGFzIGBsb25nYCwgdGhlIHVzZXItZ2l2ZW4gcmV0dXJuIHR5
cGUgaXMgdXNlZC4gSW4gZ2VuZXJhbCwKdGhpcyBpcyBkb25lIGZvciBjb252ZW5pZW5jZS4gV2hl
bmV2ZXIgYSBzeXN0ZW0gY2FsbCBpbXBsZW1lbnRhdGlvbgp1c2VzIHBvaW50ZXJzIGFzIHJldHVy
biB0eXBlLCB0aGUgaGVscGVycyBkZWZpbmVkIGluIGA8dWsvZXJycHRyLmg+YApjYW4gYmUgdXNl
ZCB0byBlbmNhcHN1bGF0ZSBlcnJvciBjb2Rlcy4KClNpZ25lZC1vZmYtYnk6IFNpbW9uIEt1ZW56
ZXIgPHNpbW9uLmt1ZW56ZXJAbmVjbGFiLmV1PgotLS0KIGRvYy9ndWlkZXMvZGV2ZWxvcGVycy1h
cHAucnN0ICAgICAgICAgfCAxNSArKysrKysrLS0tLS0tLS0KIGxpYi9zeXNjYWxsX3NoaW0vaW5j
bHVkZS91ay9zeXNjYWxsLmggfCAxMSArKysrKystLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCAxMyBp
bnNlcnRpb25zKCspLCAxMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2MvZ3VpZGVzL2Rl
dmVsb3BlcnMtYXBwLnJzdCBiL2RvYy9ndWlkZXMvZGV2ZWxvcGVycy1hcHAucnN0CmluZGV4IGNl
MmYwMTUzLi5kNDEzYWFjZSAxMDA2NDQKLS0tIGEvZG9jL2d1aWRlcy9kZXZlbG9wZXJzLWFwcC5y
c3QKKysrIGIvZG9jL2d1aWRlcy9kZXZlbG9wZXJzLWFwcC5yc3QKQEAgLTQwMCwxOSArNDAwLDE4
IEBAIEV4YW1wbGU6CiAKICAgICBVS19TWVNDQUxMX1JfREVGSU5FKHNzaXplX3QsIHdyaXRlLCBp
bnQsIGZkLCBjb25zdCB2b2lkICosIGJ1Ziwgc2l6ZV90LCBjb3VudCkKICAgICB7Ci0gICAgICAg
IGxvbmcgcmV0OworICAgICAgICBzc2l6ZV90IHJldDsKIAotICAgICAgICByZXQgPSAobG9uZykg
dmZzX2RvX3dyaXRlKGZkLCBidWYsIGNvdW50KTsKKyAgICAgICAgcmV0ID0gdmZzX2RvX3dyaXRl
KGZkLCBidWYsIGNvdW50KTsKICAgICAgICAgaWYgKHJldCA8IDApIHsKICAgICAgICAgICAgIHJl
dHVybiAtRUZBVUxUOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiByZXQ7CiAgICAgfQogCi1Q
bGVhc2Ugbm90ZSB0aGF0IGluIHRoZSByYXcgY2FzZSAoYGBVS19TWVNDQUxMX1JfREVGSU5FYGAp
LCB0aGUgcmV0dXJuIHR5cGUKLXdpdGhpbiB5b3VyIGNvZGUgYmxvY2sgaXMgYWx3YXlzIGBgbG9u
Z2BgLiBUaGUgc3BlY2lmaWVkIHJldHVybiB0eXBlIGFzCi1wYXJhbWV0ZXIgdG8gdGhlIG1hY3Jv
IHdpbGwgYmUgdXNlZCBmb3IgdGhlIGxpYmMtc3R5bGUgd3JhcHBlci4gSG93ZXZlciwgdGhlCi1p
bnB1dCBwYXJhbWV0ZXJzIGFyZSBkZWZpbmVkIHdpdGggdGhlIGFjdHVhbCB0eXBlIGZvciB5b3Vy
IGNvZGUgYmxvY2suCitQbGVhc2Ugbm90ZSB0aGF0IGluIHRoZSByYXcgY2FzZSAoYGBVS19TWVND
QUxMX1JfREVGSU5FYGApLCBlcnJvcnMgYXJlIGFsd2F5cworcmV0dXJuZWQgYXMgbmVnYXRpdmUg
dmFsdWUuIFdoZW5ldmVyIHRoZSByZXR1cm4gdHlwZSBpcyBhIHBvaW50ZXIgdmFsdWUsIHRoZQor
aGVscGVycyBkZWZpbmVkIGluIGA8dWsvZXJycHRyLmg+YCBjYW4gYmUgdXNlZCB0byBmb3J3YXJk
IGVycm9yIGNvZGVzLgogCiBCb3RoIG1hY3JvcyBjcmVhdGUgdGhlIGZvbGxvd2luZyB0aHJlZSBz
eW1ib2xzOgogCkBAIC00NDEsOSArNDQwLDkgQEAgbGliYy1zdHlsZSB3cmFwcGVyIG9uIHRvcDoK
IAogICAgIFVLX0xMU1lTQ0FMTF9SX0RFRklORShzc2l6ZV90LCB3cml0ZSwgaW50LCBmZCwgY29u
c3Qgdm9pZCAqLCBidWYsIHNpemVfdCwgY291bnQpCiAgICAgewotICAgICAgICBsb25nIHJldDsK
KyAgICAgICAgc3NpemVfdCByZXQ7CiAKLSAgICAgICAgcmV0ID0gKGxvbmcpIHZmc19kb193cml0
ZShmZCwgYnVmLCBjb3VudCk7CisgICAgICAgIHJldCA9IHZmc19kb193cml0ZShmZCwgYnVmLCBj
b3VudCk7CiAgICAgICAgIGlmIChyZXQgPCAwKSB7CiAgICAgICAgICAgICByZXR1cm4gLUVGQVVM
VDsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvbGliL3N5c2NhbGxfc2hpbS9pbmNsdWRlL3VrL3N5
c2NhbGwuaCBiL2xpYi9zeXNjYWxsX3NoaW0vaW5jbHVkZS91ay9zeXNjYWxsLmgKaW5kZXggNmVl
MTM5ZmEuLmFhZmUyMGE3IDEwMDY0NAotLS0gYS9saWIvc3lzY2FsbF9zaGltL2luY2x1ZGUvdWsv
c3lzY2FsbC5oCisrKyBiL2xpYi9zeXNjYWxsX3NoaW0vaW5jbHVkZS91ay9zeXNjYWxsLmgKQEAg
LTM5LDYgKzM5LDcgQEAKIAogI2luY2x1ZGUgPHVrL2NvbmZpZy5oPgogI2luY2x1ZGUgPHVrL2Vz
c2VudGlhbHMuaD4KKyNpbmNsdWRlIDx1ay9lcnJwdHIuaD4KICNpbmNsdWRlIDxlcnJuby5oPgog
I2luY2x1ZGUgPHVrL3ByaW50Lmg+CiAKQEAgLTE5MiwyMCArMTkzLDIwIEBAIHR5cGVkZWYgbG9u
ZyB1a19zeXNjYWxsX2FyZ190OwogCXsJCQkJCQkJCVwKIAkJbG9uZyByZXQgPSBybmFtZSgJCQkJ
CVwKIAkJCVVLX0FSR19NQVB4KHgsIFVLX1NfQVJHX0NBU1RfTE9ORywgX19WQV9BUkdTX18pKTsg
XAotCQlpZiAocmV0IDwgMCkgewkJCQkJCVwKLQkJCWVycm5vID0gKGludCkgLXJldDsJCQkJXAor
CQlpZiAocmV0IDwgMCAmJiBQVFJJU0VSUihyZXQpKSB7CQkJCVwKKwkJCWVycm5vID0gKGludCkg
UFRSMkVSUihyZXQpOwkJCVwKIAkJCXJldHVybiAtMTsJCQkJCVwKIAkJfQkJCQkJCQlcCiAJCXJl
dHVybiByZXQ7CQkJCQkJXAogCX0JCQkJCQkJCVwKLQlzdGF0aWMgaW5saW5lIGxvbmcgX18jI3Ju
YW1lKFVLX0FSR19NQVB4KHgsIFVLX1NfQVJHX0FDVFVBTCwJXAorCXN0YXRpYyBpbmxpbmUgcnR5
cGUgX18jI3JuYW1lKFVLX0FSR19NQVB4KHgsIFVLX1NfQVJHX0FDVFVBTCwJXAogCQkJCQkJIF9f
VkFfQVJHU19fKSk7CQlcCiAJbG9uZyBybmFtZShVS19BUkdfTUFQeCh4LCBVS19TX0FSR19MT05H
LCBfX1ZBX0FSR1NfXykpCQlcCiAJewkJCQkJCQkJXAotCQlyZXR1cm4gX18jI3JuYW1lKAkJCQkJ
XAorCQlyZXR1cm4gKGxvbmcpIF9fIyNybmFtZSgJCQkJXAogCQkJVUtfQVJHX01BUHgoeCwgVUtf
U19BUkdfQ0FTVF9BQ1RVQUwsIF9fVkFfQVJHU19fKSk7IFwKIAl9CQkJCQkJCQlcCi0Jc3RhdGlj
IGlubGluZSBsb25nIF9fIyNybmFtZShVS19BUkdfTUFQeCh4LCBVS19TX0FSR19BQ1RVQUwsCVwK
KwlzdGF0aWMgaW5saW5lIHJ0eXBlIF9fIyNybmFtZShVS19BUkdfTUFQeCh4LCBVS19TX0FSR19B
Q1RVQUwsCVwKIAkJCQkJCSBfX1ZBX0FSR1NfXykpCiAjZGVmaW5lIF9VS19MTFNZU0NBTExfUl9E
RUZJTkUoLi4uKSBfX1VLX0xMU1lTQ0FMTF9SX0RFRklORShfX1ZBX0FSR1NfXykKICNkZWZpbmUg
VUtfTExTWVNDQUxMX1JfREVGSU5FKHJ0eXBlLCBuYW1lLCAuLi4pCQkJCVwKLS0gCjIuMjAuMQoK
Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1k
ZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBz
Oi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Fri Apr 03 16:30:05 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 03 Apr 2020 16:30: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 1jKPCn-0001Kq-Ep; Fri, 03 Apr 2020 16:30: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=0rLu=5T=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1jKPCm-00015c-1o
 for minios-devel@lists.xen.org; Fri, 03 Apr 2020 16:30:04 +0000
X-Inumbo-ID: 5a5d6c9c-75c8-11ea-bd47-12813bfff9fa
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 5a5d6c9c-75c8-11ea-bd47-12813bfff9fa;
 Fri, 03 Apr 2020 16:29:57 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 67D95F2023;
 Fri,  3 Apr 2020 18:29:56 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (atlas-b.office.hd)
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 sx5FeNRJ3a6o; Fri,  3 Apr 2020 18:29:56 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from puck.office.hd (puck.office.hd [192.168.24.91])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 3E0ABF201F
 for <minios-devel@lists.xen.org>; Fri,  3 Apr 2020 18:29:54 +0200 (CEST)
Received: from localhost (192.168.24.96) by puck.office.hd (192.168.24.91)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Fri, 3 Apr 2020
 18:29:51 +0200
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Fri, 3 Apr 2020 18:29:39 +0200
Message-ID: <20200403162939.31745-6-simon.kuenzer@neclab.eu>
X-Mailer: git-send-email 2.20.1
In-Reply-To: <20200403162939.31745-1-simon.kuenzer@neclab.eu>
References: <20200403162939.31745-1-simon.kuenzer@neclab.eu>
MIME-Version: 1.0
X-Originating-IP: [192.168.24.96]
X-ClientProxiedBy: oberon.office.hd (192.168.24.90) To puck.office.hd
 (192.168.24.91)
Subject: [Minios-devel] [UNIKRAFT PATCH v2 5/5] lib/syscall_shim: Option to
 generate libc-style stubs
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>,
 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>

SW50cm9kdWNlcyB0aGUgb3B0aW9uIHRvIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGUgbGliYy1zdHls
ZSBzeXN0ZW0gY2FsbApzdHVicyBmb3IgdW5hdmFpbGFibGUgc3lzdGVtIGNhbGxzLiBXaXRoIHRo
aXMgZnVuY3Rpb24sIGl0IGlzIHBvc3NpYmxlCnRvIHByb3ZpZGUgYWxsIGxpYmMtc3R5bGUgc3lz
dGVtIGNhbGwgc3ltYm9scyBhbHRob3VnaCBqdXN0IGEgc3Vic2V0Cm9mIHRoZSBmdWxsIEFQSSBp
cyBpbXBsZW1lbnRlZC4gVGhlIHN5bWJvbHMgYXJlIGRlZmluZWQgYXMgYHdlYWtgIGFuZApjYW4g
YmUgcmVwbGFjZWQgYnkgbm9uLXdlYWsgc3ltYm9sIGRlZmluaXRpb25zLgoKU2lnbmVkLW9mZi1i
eTogU2ltb24gS3VlbnplciA8c2ltb24ua3VlbnplckBuZWNsYWIuZXU+Ci0tLQogbGliL3N5c2Nh
bGxfc2hpbS9Db25maWcudWsgICAgICAgICAgfCAxNSArKysrKysrKysrKysrKysKIGxpYi9zeXNj
YWxsX3NoaW0vTWFrZWZpbGUudWsgICAgICAgIHwgIDggKysrKysrKysKIGxpYi9zeXNjYWxsX3No
aW0vZ2VuX2xpYmNfc3R1YnMuYXdrIHwgMTYgKysrKysrKysrKysrKysrKwogMyBmaWxlcyBjaGFu
Z2VkLCAzOSBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL3N5c2NhbGxfc2hp
bS9nZW5fbGliY19zdHVicy5hd2sKCmRpZmYgLS1naXQgYS9saWIvc3lzY2FsbF9zaGltL0NvbmZp
Zy51ayBiL2xpYi9zeXNjYWxsX3NoaW0vQ29uZmlnLnVrCmluZGV4IGMzMzY5NDYzLi45YzM5ZWQy
ZiAxMDA2NDQKLS0tIGEvbGliL3N5c2NhbGxfc2hpbS9Db25maWcudWsKKysrIGIvbGliL3N5c2Nh
bGxfc2hpbS9Db25maWcudWsKQEAgLTksNiArOSwyMSBAQCBpZiBMSUJTWVNDQUxMX1NISU0KIAli
b29sCiAJZGVmYXVsdCBuCiAKKwljb25maWcgTElCU1lTQ0FMTF9TSElNX0xJQkNTVFVCUworCWRl
cGVuZHMgb24gIUxJQlNZU0NBTExfU0hJTV9OT1dSQVBQRVIKKwlib29sICJQcm92aWRlIGxpYmMt
c3R5bGUgc3R1YnMiCisJZGVmYXVsdCBuCisJaGVscAorCQlBdXRvbWF0aWNhbGx5IGdlbmVyYXRl
IGxpYmMtc3R5bGUgc3R1YnMgZm9yIHVuYXZhaWxhYmxlCisJCXN5c3RlbSBjYWxscy4gVGhlIGFp
bSBpcyB0byBwcm92aWRlIGFsbCBsaWJjLXN0eWxlIHN5c3RlbQorCQljYWxsIHN5bWJvbHMgYWx0
aG91Z2gganVzdCBhIHN1YnNldCBvZiB0aGUgZnVsbCBBUEkgbWF5IGJlCisJCWltcGxlbXRlbnRl
ZC4gVGhlIHN5bWJvbHMgYXJlIGRlZmluZWQgYXMgYHdlYWtgLgorCQlQbGVhc2Ugbm90ZSB0aGF0
IGRlcGVuZGluZyBvbiB0aGUgdXNlZCBjb21waWxlciBhbmQgb3B0aW1pemF0aW9uCisJCW9wdGlv
bnMsIHRoaXMgZnVuY3Rpb25hbGl0eSBtYXkgc29tZXRpbWVzIGNhdXNlIGxpbmtpbmcgZmFpbHVy
ZXMKKwkJYmVjYXVzZSBvZiBkb3VibGUgZGVmaW5pdGlvbnMgb2Ygc3ltYm9scy4gVGhpcyBpcyB0
aGUgY2FzZSB3aGVuCisJCWFub3RoZXIgbGlicmFyeSBpcyBwcm92aWRpbmcgc29tZSBsaWJjLXN0
eWxlIHN5c3RlbSBjYWxscworCQl3aXRob3V0IHJlZ2lzdGVyaW5nIHRoZW0gdG8gbGlic3lzY2Fs
bF9zaGltLgorCiAJY29uZmlnIExJQlNZU0NBTExfU0hJTV9IQU5ETEVSCiAJCWJvb2wgIkJpbmFy
eSBzeXN0ZW0gY2FsbCBoYW5kbGVyIChMaW51eCBBQkkpIgogCQlkZWZhdWx0IG4KZGlmZiAtLWdp
dCBhL2xpYi9zeXNjYWxsX3NoaW0vTWFrZWZpbGUudWsgYi9saWIvc3lzY2FsbF9zaGltL01ha2Vm
aWxlLnVrCmluZGV4IGMwMWVlNDk0Li5kM2JmZTRmOCAxMDA2NDQKLS0tIGEvbGliL3N5c2NhbGxf
c2hpbS9NYWtlZmlsZS51aworKysgYi9saWIvc3lzY2FsbF9zaGltL01ha2VmaWxlLnVrCkBAIC0x
Miw2ICsxMiw3IEBAIExJQlNZU0NBTExfU0hJTV9HRU5fU1JDICs9ICQoTElCU1lTQ0FMTF9TSElN
X0JVSUxEKS91a19zeXNjYWxsLmMKIExJQlNZU0NBTExfU0hJTV9HRU5fU1JDICs9ICQoTElCU1lT
Q0FMTF9TSElNX0JVSUxEKS91a19zeXNjYWxsX3IuYwogTElCU1lTQ0FMTF9TSElNX0dFTl9TUkMg
Kz0gJChMSUJTWVNDQUxMX1NISU1fQlVJTEQpL3VrX3N5c2NhbGxfbmFtZS5jCiBMSUJTWVNDQUxM
X1NISU1fR0VOX1NSQyArPSAkKExJQlNZU0NBTExfU0hJTV9CVUlMRCkvdWtfc3lzY2FsbF9uYW1l
X3AuYworTElCU1lTQ0FMTF9TSElNX0dFTl9TUkMgKz0gJChMSUJTWVNDQUxMX1NISU1fQlVJTEQp
L2xpYmNfc3R1YnMuYwogCiBVS19QUkVQQVJFLSQoQ09ORklHX0xJQlNZU0NBTExfU0hJTSkgKz0g
JChMSUJTWVNDQUxMX1NISU1fUEhPTllfU1JDKSAkKExJQlNZU0NBTExfU0hJTV9HRU5fU1JDKQog
CkBAIC02NSw2ICs2NiwxMSBAQCAkKExJQlNZU0NBTExfU0hJTV9CVUlMRCkvdWtfc3lzY2FsbF9u
YW1lX3AuYzogJChMSUJTWVNDQUxMX1NISU1fQlVJTEQpL3Byb3ZpZGVkXwogCSQoY2FsbCBidWls
ZF9jbWQsR0VOLGxpYnN5c2NhbGxfc2hpbSwkKG5vdGRpciAkQCksIFwKIAkJJChBV0spIC1GICct
JyAtZiAkKExJQlNZU0NBTExfU0hJTV9CQVNFKS9nZW5fdWtfc3lzY2FsbF9uYW1lX3AuYXdrICQ8
ID4gJEApCiAKKyQoTElCU1lTQ0FMTF9TSElNX0JVSUxEKS9saWJjX3N0dWJzLmM6ICQoTElCU1lT
Q0FMTF9TSElNX0JBU0UpL2dlbl9saWJjX3N0dWJzLmF3ayAkKExJQlNZU0NBTExfU0hJTV9URU1Q
TCkKKwkkKGNhbGwgYnVpbGRfY21kLEdFTixsaWJzeXNjYWxsX3NoaW0sJChub3RkaXIgJEApLCBc
CisJCSQoQVdLKSAtZiAkKExJQlNZU0NBTExfU0hJTV9CQVNFKS9nZW5fbGliY19zdHVicy5hd2sg
XAorCQkkKExJQlNZU0NBTExfU0hJTV9URU1QTCkgPiAkQCkKKwogJChMSUJTWVNDQUxMX1NISU1f
QlVJTEQpL3Byb3ZpZGVkX3N5c2NhbGxzLmguaW4ubmV3OgogCSQoY2FsbCBidWlsZF9jbWQsR0VO
LGxpYnN5c2NhbGxfc2hpbSwkKG5vdGRpciAkQCksIFwKIAkJZWNobyAkKFVLX1BST1ZJREVEX1NZ
U0NBTExTLXkpIHwgdHIgJyAnICdcbicgPiAkQCkKQEAgLTg1LDUgKzkxLDcgQEAgTElCU1lTQ0FM
TF9TSElNX1NSQ1MteSArPSAkKExJQlNZU0NBTExfU0hJTV9CVUlMRCkvdWtfc3lzY2FsbC5jCiBM
SUJTWVNDQUxMX1NISU1fU1JDUy15ICs9ICQoTElCU1lTQ0FMTF9TSElNX0JVSUxEKS91a19zeXNj
YWxsX3IuYwogTElCU1lTQ0FMTF9TSElNX1NSQ1MteSArPSAkKExJQlNZU0NBTExfU0hJTV9CVUlM
RCkvdWtfc3lzY2FsbF9uYW1lLmMKIExJQlNZU0NBTExfU0hJTV9TUkNTLXkgKz0gJChMSUJTWVND
QUxMX1NISU1fQlVJTEQpL3VrX3N5c2NhbGxfbmFtZV9wLmMKK0xJQlNZU0NBTExfU0hJTV9TUkNT
LSQoQ09ORklHX0xJQlNZU0NBTExfU0hJTV9MSUJDU1RVQlMpICs9ICQoTElCU1lTQ0FMTF9TSElN
X0JVSUxEKS9saWJjX3N0dWJzLmMKK0xJQlNZU0NBTExfU0hJTV9MSUJDX1NUVUJTX0ZMQUdTKz0t
Zm5vLWJ1aWx0aW4gLVduby1idWlsdGluLWRlY2xhcmF0aW9uLW1pc21hdGNoCiAKIExJQlNZU0NB
TExfU0hJTV9DTEVBTiA9ICQoTElCU1lTQ0FMTF9TSElNX1BIT05ZX1NSQykgJChMSUJTWVNDQUxM
X1NISU1fUEhPTllfU1JDX05FVykgJChMSUJTWVNDQUxMX1NISU1fR0VOX1NSQykgJChMSUJTWVND
QUxMX1NISU1fR0VOX1NSQykKZGlmZiAtLWdpdCBhL2xpYi9zeXNjYWxsX3NoaW0vZ2VuX2xpYmNf
c3R1YnMuYXdrIGIvbGliL3N5c2NhbGxfc2hpbS9nZW5fbGliY19zdHVicy5hd2sKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLjI2NWM4ZmE5Ci0tLSAvZGV2L251bGwKKysrIGIv
bGliL3N5c2NhbGxfc2hpbS9nZW5fbGliY19zdHVicy5hd2sKQEAgLTAsMCArMSwxNiBAQAorQkVH
SU4geworCXByaW50ICIvKiBBdXRvIGdlbmVyYXRlZCBmaWxlLiBEbyBub3QgZWRpdCAqLyIKKwlw
cmludCAiXG4jaW5jbHVkZSA8ZXJybm8uaD4iCisJcHJpbnQgIlxuI2luY2x1ZGUgPHVrL3N5c2Nh
bGwuaD4iCisJcHJpbnQgIlxuI2luY2x1ZGUgPHVrL3ByaW50Lmg+IgorCXByaW50ICJcbiNpbmNs
dWRlIDx1ay9lc3NlbnRpYWxzLmg+IgorfQorLyNkZWZpbmUgX19OUl8vIHsKKwluYW1lID0gc3Vi
c3RyKCQyLDYpOworCXByaW50ZiAiXG4jaWZuZGVmIEhBVkVfdWtfc3lzY2FsbF8lcyIsIG5hbWU7
CisJcHJpbnRmICJcbmxvbmcgX193ZWFrICVzKHZvaWQpIiwgbmFtZTsKKwlwcmludGYgIlxueyI7
CisJcHJpbnRmICJcblx0cmV0dXJuIHVrX3N5c2NhbGxfZV9zdHViKFwiJXNcIik7IiwgbmFtZTsK
KwlwcmludGYgIlxufSI7CisJcHJpbnRmICJcbiNlbmRpZiAvKiAhSEFWRV91a19zeXNjYWxsXyVz
ICovXG4iLCBuYW1lOworfQotLSAKMi4yMC4xCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2
ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWls
bWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Sat Apr 04 18:03:49 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 04 Apr 2020 18:03: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 1jKn91-0004sQ-5s; Sat, 04 Apr 2020 18:03:47 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=F+v9=5U=gmail.com=murarugeorgec@srs-us1.protection.inumbo.net>)
 id 1jKn90-0004sL-8A
 for minios-devel@lists.xenproject.org; Sat, 04 Apr 2020 18:03:46 +0000
X-Inumbo-ID: a014591e-769e-11ea-b58d-bc764e2007e4
Received: from mail-wr1-x436.google.com (unknown [2a00:1450:4864:20::436])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id a014591e-769e-11ea-b58d-bc764e2007e4;
 Sat, 04 Apr 2020 18:03:45 +0000 (UTC)
Received: by mail-wr1-x436.google.com with SMTP id a25so12533605wrd.0
 for <minios-devel@lists.xenproject.org>; Sat, 04 Apr 2020 11:03:45 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=from:to:cc:subject:date:message-id;
 bh=nBe51F/Np0nXFOr9MAngpOjLG/josz2DKGoZruN2xOg=;
 b=kOswkm8wpi8Vuz7OUxjm/fE6LbgPRoq45esNnOjq3NElHtkBr/BBw7EZAYF06l9Drt
 qh96ISCmBnf3hb4PdPOqqxBi6P+7wagDkXhMVMMemlGkwFtIB7j7pFnvG93hrULRMyxz
 GM+19fl9fJFWveP6soaT0v699FGCMsjP+LX8DHRUS4Whr0RxPROWzxRxaEksiNuUoiI4
 R4/Jp6RnI4CUJDufoGThpJxm2I3ZfoDcns07/bFFcp7Ae33ghsEHACJd4AZqUHyDSzd5
 Pxu1kHAvFdpOgsOg29e/l9dRRMpREN5Zr/0JQHWhtFiO4NeaM+uwnCRJPvV5S0CAjd5n
 pR3A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:from:to:cc:subject:date:message-id;
 bh=nBe51F/Np0nXFOr9MAngpOjLG/josz2DKGoZruN2xOg=;
 b=DQ0J3SAgPZ2zqVhyw7im7XKy5a99jLCrHwTwixg/28a//EzKE2MH+Bshi/NDKBW5zG
 4X4kqktROm2M8Jf11YKtRZywhkxxSprVdMrfRNP/utO7EFmSA+IfIiwE4SlLharOlGxu
 uJ5coX58MVdCoTd+gs8DVg4xgv89FBXdrNMzQCNoNq3yI/z+E1KVT5sE9Bo4DNLWw83E
 3A6rafO96idBQE8TzCB55uktndmYpNZgBQBSF1FASPDzNNpbiul6rsOmnUra9IT2GMnt
 Jd+38q04EGiJ5sRJ1Imi+hZEbsCjg8gKJcZofMhrnsznpx4JIKfHS2yUSUxSDjiMNhd7
 rZiQ==
X-Gm-Message-State: AGi0PuaZ+XJVEPy/BEEcwLMiNYwfmY9VTYS3vgWELlSgLDH3+F1qya81
 BuHK5ieF37R39xBaSN0kmU6D40DGrZQ=
X-Google-Smtp-Source: APiQypK+8823GewgrNFe0jFxWncPrzEQo3M1NxgSHBfHDMYM15O8DYe/U3LHHRSNqQk/Px8QZYJHhQ==
X-Received: by 2002:adf:c506:: with SMTP id q6mr15492520wrf.142.1586023424457; 
 Sat, 04 Apr 2020 11:03:44 -0700 (PDT)
Received: from localhost.localdomain ([2a02:a58:8506:aa00:dddc:6bd7:71fd:c844])
 by smtp.googlemail.com with ESMTPSA id
 b187sm17928996wmc.14.2020.04.04.11.03.43
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Sat, 04 Apr 2020 11:03:43 -0700 (PDT)
From: George Muraru <murarugeorgec@gmail.com>
To: minios-devel@lists.xenproject.org
Date: Sat,  4 Apr 2020 21:03:35 +0300
Message-Id: <20200404180336.12842-1-murarugeorgec@gmail.com>
X-Mailer: git-send-email 2.17.1
Subject: [Minios-devel] [UNIKRAFT/EIGEN PATCH 0/1]
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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, George Muraru <murarugeorgec@gmail.com>
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>

QnVtcCB0aGUgdmVyc2lvbiBmb3IgdGhlIGVpZ2VuIGxpYnJhcnkKCkdlb3JnZSBNdXJhcnUgKDEp
OgogIFVwZGF0ZSBlaWdlbiB2ZXJzaW9uCgogQ09OVFJJQlVUSU5HLm1kIHwgIDIgKy0KIENvbmZp
Zy51ayAgICAgICB8ICA3ICsrKysrKysKIE1ha2VmaWxlLnVrICAgICB8IDIwICsrKysrKystLS0t
LS0tLS0tLS0tCiBleHBvcnRzeW1zLnVrICAgfCAgMSAtCiA0IGZpbGVzIGNoYW5nZWQsIDE1IGlu
c2VydGlvbnMoKyksIDE1IGRlbGV0aW9ucygtKQogZGVsZXRlIG1vZGUgMTAwNjQ0IGV4cG9ydHN5
bXMudWsKCi0tIAoyLjE3LjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54
ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGlu
Zm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Sat Apr 04 18:04:00 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 04 Apr 2020 18:04: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 1jKn9E-0004t5-85; Sat, 04 Apr 2020 18:04:00 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=F+v9=5U=gmail.com=murarugeorgec@srs-us1.protection.inumbo.net>)
 id 1jKn9D-0004sz-OZ
 for minios-devel@lists.xenproject.org; Sat, 04 Apr 2020 18:03:59 +0000
X-Inumbo-ID: a8289d7c-769e-11ea-9e09-bc764e2007e4
Received: from mail-wm1-x332.google.com (unknown [2a00:1450:4864:20::332])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id a8289d7c-769e-11ea-9e09-bc764e2007e4;
 Sat, 04 Apr 2020 18:03:59 +0000 (UTC)
Received: by mail-wm1-x332.google.com with SMTP id a81so11362570wmf.5
 for <minios-devel@lists.xenproject.org>; Sat, 04 Apr 2020 11:03:59 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=from:to:cc:subject:date:message-id:in-reply-to:references;
 bh=JWmJk4wn7yt7xEa2AhrK1LHHEPbMYlaC8qXz82flI7Y=;
 b=gBu8ea+PPW5v563FrPC1ejxuGoeOVn0buh0i+dMI5y1olTe+8NlbtNtT9TCKZoxHc+
 u07K0X267DrsTJRzM+mNNgQUXHArguDb9DFwyzk3mWrbycmbopbS7Uaz0cpnIAkgFXm2
 9m0zXdDU2O0SPrKEMUdMgy3vPtMBkeCC72Ud3ASzyyRKn3I3Y1dtzdWuf/zn3KivCXaV
 /cXqy6RxxSb0kNCbVzyNlSQmM1C7Xd5LdztAuAohAYiyoYpkGwKAq3teyK6MjnWqHbo2
 ftWsdVkjNQ6pOBo84/7y3Ar1z5e+NbJLx3w5Ys6c+DuEnn3Au4YSVO974907WQwg2QbU
 dy3g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to
 :references;
 bh=JWmJk4wn7yt7xEa2AhrK1LHHEPbMYlaC8qXz82flI7Y=;
 b=AfONE3XEh3DtWx0ibycRLiVYbc8zwE3xmuxc9n/pzWnMPCegymtuk+GYP62zK2vVUO
 807Qtc5rFkkXLSamlSyxt9xW30yqCy+a9VP386y76N2Yzu1UCDIeIa4O4N5+MtxMdUJZ
 eixq8DDf9WGcj8K5pvNJwFjf6X4H7jkCirze/RLW3W0VZVtoz6N3bTzDzJQW7vjgPOMd
 QoBRoa3sEoRcnK9Ul9z9LbLmOrfMbinOs2vzKwL+0nz0TrlRjVFHWPGyMaN61o4uIXq+
 EGb6SoxpL54EJjZZFGTO/BBM2PYcIkKg0OVv6l+jxhhLNin15LJ9gY5hmipqQjlHgYzu
 XgPg==
X-Gm-Message-State: AGi0PuajEBGLl9+MAEjvjBEAty/2WWNVNtPrv+vIAQ+vkFOURHa+EQF5
 7GbXV399EDVWbJrVWS7l+aXa/UB9mNU=
X-Google-Smtp-Source: APiQypIISN9cZgNgQupzZzRFSq0WOuDTnYXuHAZ9bIT4lyFg4oPPbNDOgp7uYFW8uvlLOKXk2jxLpQ==
X-Received: by 2002:a1c:e904:: with SMTP id q4mr14153512wmc.84.1586023437897; 
 Sat, 04 Apr 2020 11:03:57 -0700 (PDT)
Received: from localhost.localdomain ([2a02:a58:8506:aa00:dddc:6bd7:71fd:c844])
 by smtp.googlemail.com with ESMTPSA id
 b187sm17928996wmc.14.2020.04.04.11.03.56
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Sat, 04 Apr 2020 11:03:57 -0700 (PDT)
From: George Muraru <murarugeorgec@gmail.com>
To: minios-devel@lists.xenproject.org
Date: Sat,  4 Apr 2020 21:03:36 +0300
Message-Id: <20200404180336.12842-2-murarugeorgec@gmail.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20200404180336.12842-1-murarugeorgec@gmail.com>
References: <20200404180336.12842-1-murarugeorgec@gmail.com>
Subject: [Minios-devel] [UNIKRAFT/EIGEN PATCH 1/1] Update eigen version
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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, George Muraru <murarugeorgec@gmail.com>
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>

U2lnbmVkLW9mZi1ieTogR2VvcmdlIE11cmFydSA8bXVyYXJ1Z2VvcmdlY0BnbWFpbC5jb20+Ci0t
LQogQ09OVFJJQlVUSU5HLm1kIHwgIDIgKy0KIENvbmZpZy51ayAgICAgICB8ICA3ICsrKysrKysK
IE1ha2VmaWxlLnVrICAgICB8IDIwICsrKysrKystLS0tLS0tLS0tLS0tCiBleHBvcnRzeW1zLnVr
ICAgfCAgMSAtCiA0IGZpbGVzIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKyksIDE1IGRlbGV0aW9u
cygtKQogZGVsZXRlIG1vZGUgMTAwNjQ0IGV4cG9ydHN5bXMudWsKCmRpZmYgLS1naXQgYS9DT05U
UklCVVRJTkcubWQgYi9DT05UUklCVVRJTkcubWQKaW5kZXggNWY1NWVjYS4uMTRmNmFjNiAxMDA2
NDQKLS0tIGEvQ09OVFJJQlVUSU5HLm1kCisrKyBiL0NPTlRSSUJVVElORy5tZApAQCAtMSw0ICsx
LDQgQEAKIENvbnRyaWJ1dGluZyB0byBVbmlrcmFmdAotPT09PT09PT09PT09PT09PT09PT09PT0K
Kz09PT09PT09PT09PT09PT09PT09PT09PQogCiBQbGVhc2UgcmVmZXIgdG8gdGhlIGBDT05UUklC
VVRJTkcubWRgIGZpbGUgaW4gdGhlIG1haW4gVW5pa3JhZnQgcmVwb3NpdG9yeS4KZGlmZiAtLWdp
dCBhL0NvbmZpZy51ayBiL0NvbmZpZy51awppbmRleCBlNWIzNjQyLi5lMjI0YjY5IDEwMDY0NAot
LS0gYS9Db25maWcudWsKKysrIGIvQ29uZmlnLnVrCkBAIC0xLDQgKzEsMTEgQEAKIG1lbnVjb25m
aWcgTElCRUlHRU4KICAgICBib29sICJlaWdlbiAtIEMrKyB0ZW1wbGF0ZSBsaWJyYXJ5IGZvciBs
aW5lYXIgYWxnZWJyYSIKICAgICBzZWxlY3QgTElCQ1hYCisgICAgc2VsZWN0IExJQkNYWEFCSQor
ICAgIHNlbGVjdCBMSUJORVdMSUJDCisgICAgc2VsZWN0IExJQlVOV0lORAorICAgIHNlbGVjdCBM
SUJQT1NJWF9TWVNJTkZPCisgICAgc2VsZWN0IExJQkNPTVBJTEVSX1JUCisgICAgc2VsZWN0IExJ
QkNPTVBJTEVSX1JUX0FUT01JQworICAgIHNlbGVjdCBMSUJQVEhSRUFEX0VNQkVEREVECiAgICAg
ZGVmYXVsdCBuCmRpZmYgLS1naXQgYS9NYWtlZmlsZS51ayBiL01ha2VmaWxlLnVrCmluZGV4IDYx
ZmUzNjYuLjI0ZGM3NjQgMTAwNjQ0Ci0tLSBhL01ha2VmaWxlLnVrCisrKyBiL01ha2VmaWxlLnVr
CkBAIC0zNiwyNiArMzYsMjAgQEAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAkKGV2YWwgJChj
YWxsIGFkZGxpYl9zLGxpYmVpZ2VuLCQoQ09ORklHX0xJQkVJR0VOKSkpCiAKLWlmZXEgKCQoQ09O
RklHX0xJQkVJR0VOKSx5KQotaWZuZXEgKCQoQ09ORklHX0xJQkNYWCkseSkKLSQoZXJyb3IgUmVx
dWlyZSBsaWJjeHgpCi1lbmRpZgotZW5kaWYKLQotCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwog
IyBTb3VyY2VzCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotTElCRUlHRU5fVkVSU0lPTj0zLjMu
NwotTElCRUlHRU5fVVJMPWh0dHA6Ly9iaXRidWNrZXQub3JnL2VpZ2VuL2VpZ2VuL2dldC8zLjMu
Ny50YXIuZ3oKK0xJQkVJR0VOX0NPTU1JVD0wNDlhZjJmNTYzMzEKIExJQkVJR0VOX1BBVENIRElS
PSQoTElCRUlHRU5fQkFTRSkvcGF0Y2hlcworCitMSUJFSUdFTl9VUkw9aHR0cHM6Ly9iaXRidWNr
ZXQub3JnL2VpZ2VuL2VpZ2VuL2dldC8ke0xJQkVJR0VOX0NPTU1JVH0udGFyLmd6CiAkKGV2YWwg
JChjYWxsIGZldGNoLGxpYmVpZ2VuLCQoTElCRUlHRU5fVVJMKSkpCi0kKGV2YWwgJChjYWxsIHBh
dGNoLGxpYmVpZ2VuLCQoTElCRUlHRU5fUEFUQ0hESVIpLGVpZ2VuLWVpZ2VuLTMyM2MwNTJlMTcz
MSkpCiskKGV2YWwgJChjYWxsIHBhdGNoLGxpYmVpZ2VuLCQoTElCRUlHRU5fUEFUQ0hESVIpLGVp
Z2VuLWVpZ2VuLSQoTElCRUlHRU5fQ09NTUlUKSkpCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
CiAjIEhlbHBlcnMKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi1MSUJFSUdFTl9TVUJESVI9ZWln
ZW4tZWlnZW4tMzIzYzA1MmUxNzMxCitMSUJFSUdFTl9TVUJESVI9ZWlnZW4tZWlnZW4tJChMSUJF
SUdFTl9DT01NSVQpCiBMSUJFSUdFTl9TUkM9JChMSUJFSUdFTl9PUklHSU4pLyQoTElCRUlHRU5f
U1VCRElSKQogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpAQCAtNzksNSArNzMsNSBAQCBTVVBQ
UkVTU19GTEFHUyArPSAtV25vLXVudXNlZC1wYXJhbWV0ZXIgLVduby11bnVzZWQtdmFyaWFibGUg
LVduby1ub25udWxsCVwKIC1Xbm8tbWlzc2luZy1icmFjZXMgLVduby1lbmRpZi1sYWJlbHMgLVdu
by11bnVzZWQtYnV0LXNldC12YXJpYWJsZQkJXAogLVduby1pbXBsaWNpdC1mdW5jdGlvbi1kZWNs
YXJhdGlvbiAtV25vLXR5cGUtbGltaXRzIC1Xbm8tc2lnbi1jb21wYXJlCiAKLUxJQkVJR0VOX0NG
TEFHUy15ICAgICs9ICAkKFNVUFBSRVNTX0ZMQUdTKQotTElCRUlHRU5fQ1hYRkxBR1MteSAgICAr
PSAgJChTVVBQUkVTU19GTEFHUykKK0xJQkVJR0VOX0NGTEFHUy15ICs9ICQoU1VQUFJFU1NfRkxB
R1MpCitMSUJFSUdFTl9DWFhGTEFHUy15ICs9ICQoU1VQUFJFU1NfRkxBR1MpCmRpZmYgLS1naXQg
YS9leHBvcnRzeW1zLnVrIGIvZXhwb3J0c3ltcy51awpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNjIxZTk0Zi4uMDAwMDAwMAotLS0gYS9leHBvcnRzeW1zLnVrCisrKyAvZGV2L251bGwK
QEAgLTEgKzAsMCBAQAotbm9uZQotLSAKMi4xNy4xCgpfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1k
ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21h
aWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Sun Apr 05 11:57:00 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 05 Apr 2020 11:57: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 1jL3tb-0001Cx-7J; Sun, 05 Apr 2020 11:56: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=dZTb=5V=upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1jL3tZ-0001Cl-J3
 for minios-devel@lists.xen.org; Sun, 05 Apr 2020 11:56:57 +0000
X-Inumbo-ID: 8af78f92-7734-11ea-bf18-12813bfff9fa
Received: from mx.upb.ro (unknown [141.85.13.220])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 8af78f92-7734-11ea-bf18-12813bfff9fa;
 Sun, 05 Apr 2020 11:56:55 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id EC983B5623A2;
 Sun,  5 Apr 2020 14:56:53 +0300 (EEST)
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10032)
 with ESMTP id jTAuv1L4vQyX; Sun,  5 Apr 2020 14:56:51 +0300 (EEST)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id E78E8B56257F;
 Sun,  5 Apr 2020 14:56:50 +0300 (EEST)
DKIM-Filter: OpenDKIM Filter v2.10.3 mx.upb.ro E78E8B56257F
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=upb.ro;
 s=96342B8A-77E4-11E5-BA93-D93D0963A2DF; t=1586087810;
 bh=8u2kpfLOqsdfIlVaOuoGOBh6/OmnqiurpwrPaOYra4g=;
 h=From:To:Date:Message-Id:MIME-Version;
 b=fUSTrlSnFtQ04xzFaRYw00hsHeuxeNqm/X94lQMhe7Kyc5WSvrxlxmz5nB0P5J7or
 VCz1gG0w3FYQMTWF2p3OiHxR7JZKd38MB1bIMGLI0GafXTFRRWd2c6yEHSBAc4FofK
 DtfMLLriGGgl6bKZEJBka5TTKyI0K9WuziSWWxns=
X-Virus-Scanned: amavisd-new at upb.ro
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id AHJ6rNzQV1yk; Sun,  5 Apr 2020 14:56:50 +0300 (EEST)
Received: from localhost.localdomain (unknown [86.127.159.73])
 by mx.upb.ro (Postfix) with ESMTPSA id 8EA43B562566;
 Sun,  5 Apr 2020 14:56:50 +0300 (EEST)
From: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
To: minios-devel@lists.xen.org
Date: Sun,  5 Apr 2020 14:56:42 +0300
Message-Id: <20200405115643.4538-2-vlad_andrei.badoiu@upb.ro>
X-Mailer: git-send-email 2.20.1
In-Reply-To: <20200405115643.4538-1-vlad_andrei.badoiu@upb.ro>
References: <20200405115643.4538-1-vlad_andrei.badoiu@upb.ro>
MIME-Version: 1.0
Subject: [Minios-devel] [UNIKRAFT PATCH v2 1/2] lib/nolib: Add qsort
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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, Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>,
 =?UTF-8?q?Vlad-Andrei=20B=C4=82DOIU?= <vlad_andrei.badoiu@stud.acs.upb.ro>
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>

RnJvbTogVmxhZC1BbmRyZWkgQsSCRE9JVSA8dmxhZF9hbmRyZWkuYmFkb2l1QHN0dWQuYWNzLnVw
Yi5ybz4KClRoaXMgcXNvcnQgaW1wbGVtZW50YXRpb24gaXMgYW4gYWRhcHRlZCB2ZXJzaW9uIG9m
IGFuZHJvaWQgYmlvbmljJ3MKcXNvcnQuIEl0IGlzIHRoZSBRc29ydCByb3V0aW5lIGZyb20gQmVu
dGxleSAmIE1jSWxyb3kncyAiRW5naW5lZXJpbmcKYSBTb3J0IEZ1bmN0aW9uIi4KClNpZ25lZC1v
ZmYtYnk6IFZsYWQtQW5kcmVpIEJhZG9pdSA8dmxhZF9hbmRyZWkuYmFkb2l1QHVwYi5ybz4KLS0t
CiBsaWIvbm9saWJjL01ha2VmaWxlLnVrICAgICAgfCAgIDMgKwogbGliL25vbGliYy9leHBvcnRz
eW1zLnVrICAgIHwgICAxICsKIGxpYi9ub2xpYmMvaW5jbHVkZS9zdGRsaWIuaCB8ICAgMyArCiBs
aWIvbm9saWJjL3Fzb3J0LmMgICAgICAgICAgfCAxNTcgKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrCiA0IGZpbGVzIGNoYW5nZWQsIDE2NCBpbnNlcnRpb25zKCspCiBjcmVhdGUg
bW9kZSAxMDA2NDQgbGliL25vbGliYy9xc29ydC5jCgpkaWZmIC0tZ2l0IGEvbGliL25vbGliYy9N
YWtlZmlsZS51ayBiL2xpYi9ub2xpYmMvTWFrZWZpbGUudWsKaW5kZXggN2NiMmU3ZDEuLjlkNGE5
ZWMzIDEwMDY0NAotLS0gYS9saWIvbm9saWJjL01ha2VmaWxlLnVrCisrKyBiL2xpYi9ub2xpYmMv
TWFrZWZpbGUudWsKQEAgLTM1LDUgKzM1LDggQEAgTElCTk9MSUJDX1NSQ1MteSArPSAkKExJQk5P
TElCQ19CQVNFKS9zc2NhbmYuYwogTElCTk9MSUJDX1NSQ1MteSArPSAkKExJQk5PTElCQ19CQVNF
KS9hc3ByaW50Zi5jCiBMSUJOT0xJQkNfU1JDUy0kKENPTkZJR19MSUJVS0FMTE9DKSArPSAkKExJ
Qk5PTElCQ19CQVNFKS9tYWxsb2MuYwogCisKK0xJQk5PTElCQ19TUkNTLXkgKz0gJChMSUJOT0xJ
QkNfQkFTRSkvcXNvcnQuYworCiAjIExvY2FsaXplIGludGVybmFsIHN5bWJvbHMgKHN0YXJ0aW5n
IHdpdGggX18qKQogTElCTk9MSUJDX09CSkNGTEFHUy15ICs9IC13IC1MIF9fKgpkaWZmIC0tZ2l0
IGEvbGliL25vbGliYy9leHBvcnRzeW1zLnVrIGIvbGliL25vbGliYy9leHBvcnRzeW1zLnVrCmlu
ZGV4IGYyZDUwZjFmLi5mMjgzZDQ1OCAxMDA2NDQKLS0tIGEvbGliL25vbGliYy9leHBvcnRzeW1z
LnVrCisrKyBiL2xpYi9ub2xpYmMvZXhwb3J0c3ltcy51awpAQCAtNDUsNiArNDUsNyBAQCBzdHJ0
b3VsCiBzdHJ0b2xsCiBzdHJ0b3VsbAogYXRvaQorcXNvcnQKIAogIyBzdHJpbmcKIG1lbWNweQpk
aWZmIC0tZ2l0IGEvbGliL25vbGliYy9pbmNsdWRlL3N0ZGxpYi5oIGIvbGliL25vbGliYy9pbmNs
dWRlL3N0ZGxpYi5oCmluZGV4IGNkNjY1MWM0Li41MjJkYTgyNCAxMDA2NDQKLS0tIGEvbGliL25v
bGliYy9pbmNsdWRlL3N0ZGxpYi5oCisrKyBiL2xpYi9ub2xpYmMvaW5jbHVkZS9zdGRsaWIuaApA
QCAtODksNiArODksOSBAQCB2b2lkICptZW1hbGlnbihzaXplX3QgYWxpZ24sIHNpemVfdCBzaXpl
KTsKIAogdm9pZCBhYm9ydCh2b2lkKSBfX25vcmV0dXJuOwogCit2b2lkIHFzb3J0KHZvaWQgKmJh
c2UsIHNpemVfdCBubWVtYiwgc2l6ZV90IHNpemUsCisgICAgICAgICAgIGludCAoKmNvbXBhciko
Y29uc3Qgdm9pZCAqLCBjb25zdCB2b2lkICopKTsKKwogI2lmIENPTkZJR19MSUJQT1NJWF9QUk9D
RVNTCiBpbnQgc3lzdGVtKGNvbnN0IGNoYXIgKmNvbW1hbmQpOwogI2VuZGlmCmRpZmYgLS1naXQg
YS9saWIvbm9saWJjL3Fzb3J0LmMgYi9saWIvbm9saWJjL3Fzb3J0LmMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAuLmQ4YjNkZGM1Ci0tLSAvZGV2L251bGwKKysrIGIvbGliL25v
bGliYy9xc29ydC5jCkBAIC0wLDAgKzEsMTU3IEBACisvKgkkT3BlbkJTRDogcXNvcnQuYyx2IDEu
MTAgMjAwNS8wOC8wOCAwODowNTozNyBlc3BpZSBFeHAgJCAqLworLyotCisgKiBDb3B5cmlnaHQg
KGMpIDE5OTIsIDE5OTMKKyAqCVRoZSBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlm
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
RS4KKyAqLworI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorc3Rh
dGljIGlubGluZSBjaGFyCSptZWQzKGNoYXIgKiwgY2hhciAqLCBjaGFyICosIGludCAoKikKKwkJ
CQkoY29uc3Qgdm9pZCAqLCBjb25zdCB2b2lkICopKTsKK3N0YXRpYyBpbmxpbmUgdm9pZAkgc3dh
cGZ1bmMoY2hhciAqLCBjaGFyICosIGludCwgaW50KTsKKyNkZWZpbmUgbWluKGEsIGIpCSgoYSkg
PCAoYikgPyBhIDogYikKKy8qCisgKiBRc29ydCByb3V0aW5lIGZyb20gQmVudGxleSAmIE1jSWxy
b3kncyAiRW5naW5lZXJpbmcgYSBTb3J0IEZ1bmN0aW9uIi4KKyAqLworI2RlZmluZSBzd2FwY29k
ZShUWVBFLCBwYXJtaSwgcGFybWosIG4pIHsJCVwKKwlsb25nIGkgPSAobikgLyBzaXplb2YoVFlQ
RSk7CQkJXAorCVRZUEUgKnBpID0gKFRZUEUgKikgKHBhcm1pKTsJCQlcCisJVFlQRSAqcGogPSAo
VFlQRSAqKSAocGFybWopOwkJCVwKKwlkbyB7CQkJCQkJXAorCQlUWVBFCXQgPSAqcGk7CQkJXAor
CQkqcGkrKyA9ICpwajsJCQkJXAorCQkqcGorKyA9IHQ7CQkJCVwKKwl9IHdoaWxlICgtLWkgPiAw
KTsJCQkJXAorfQorI2RlZmluZSBTV0FQSU5JVChhLCBlcykgKHN3YXB0eXBlID0gKChjaGFyICop
YSAtIChjaGFyICopMCkgJSBzaXplb2YobG9uZykgfHwgXAorCWVzICUgc2l6ZW9mKGxvbmcpID8g
MiA6IGVzID09IHNpemVvZihsb25nKSA/IDAgOiAxKQorc3RhdGljIGlubGluZSB2b2lkCitzd2Fw
ZnVuYyhjaGFyICphLCBjaGFyICpiLCBpbnQgbiwgaW50IHN3YXB0eXBlKQoreworCWlmIChzd2Fw
dHlwZSA8PSAxKQorCQlzd2FwY29kZShsb25nLCBhLCBiLCBuKQorCWVsc2UKKwkJc3dhcGNvZGUo
Y2hhciwgYSwgYiwgbikKK30KKyNkZWZpbmUgc3dhcChhLCBiKQkJCQkJXAorCWRvIHsJCQkJCQlc
CisJCWlmIChzd2FwdHlwZSA9PSAwKSB7CQkJCVwKKwkJCWxvbmcgdCA9ICoobG9uZyAqKShhKTsJ
CQlcCisJCQkqKGxvbmcgKikoYSkgPSAqKGxvbmcgKikoYik7CQlcCisJCQkqKGxvbmcgKikoYikg
PSB0OwkJCVwKKwkJfSBlbHNlCQkJCQkJXAorCQkJc3dhcGZ1bmMoYSwgYiwgZXMsIHN3YXB0eXBl
KTsJCVwKKwl9IHdoaWxlICgwKQorCisjZGVmaW5lIHZlY3N3YXAoYSwgYiwgbikJCQkJCVwKKwlk
byB7CQkJCQkJCVwKKwkJaWYgKChuKSA+IDApCQkJCQlcCisJCQlzd2FwZnVuYyhhLCBiLCBuLCBz
d2FwdHlwZSk7CQlcCisJfSB3aGlsZSAoMCkKK3N0YXRpYyBpbmxpbmUgY2hhciAqCittZWQzKGNo
YXIgKmEsIGNoYXIgKmIsIGNoYXIgKmMsIGludCAoKmNtcCkoY29uc3Qgdm9pZCAqLCBjb25zdCB2
b2lkICopKQoreworCXJldHVybiBjbXAoYSwgYikgPCAwID8KKwkJKGNtcChiLCBjKSA8IDAgPyBi
IDogKGNtcChhLCBjKSA8IDAgPyBjIDogYSkpCisJCTogKGNtcChiLCBjKSA+IDAgPyBiIDogKGNt
cChhLCBjKSA8IDAgPyBhIDogYykpOworfQordm9pZAorcXNvcnQodm9pZCAqYWEsIHNpemVfdCBu
LCBzaXplX3QgZXMsIGludCAoKmNtcCkoY29uc3Qgdm9pZCAqLCBjb25zdCB2b2lkICopKQorewor
CWNoYXIgKnBhLCAqcGIsICpwYywgKnBkLCAqcGwsICpwbSwgKnBuOworCWludCBkLCByLCBzd2Fw
dHlwZSwgc3dhcF9jbnQ7CisJY2hhciAqYSA9IGFhOworbG9vcDoKKwlTV0FQSU5JVChhLCBlcyk7
CisJc3dhcF9jbnQgPSAwOworCWlmIChuIDwgNykgeworCQlmb3IgKHBtID0gKGNoYXIgKilhICsg
ZXM7IHBtIDwgKGNoYXIgKikgYSArIG4gKiBlczsgcG0gKz0gZXMpCisJCQlmb3IgKHBsID0gcG07
IHBsID4gKGNoYXIgKikgYSAmJiBjbXAocGwgLSBlcywgcGwpID4gMDsKKwkJCSAgICAgcGwgLT0g
ZXMpCisJCQkJc3dhcChwbCwgcGwgLSBlcyk7CisJCXJldHVybjsKKwl9CisJcG0gPSAoY2hhciAq
KWEgKyAobiAvIDIpICogZXM7CisJaWYgKG4gPiA3KSB7CisJCXBsID0gKGNoYXIgKilhOworCQlw
biA9IChjaGFyICopYSArIChuIC0gMSkgKiBlczsKKwkJaWYgKG4gPiA0MCkgeworCQkJZCA9IChu
IC8gOCkgKiBlczsKKwkJCXBsID0gbWVkMyhwbCwgcGwgKyBkLCBwbCArIDIgKiBkLCBjbXApOwor
CQkJcG0gPSBtZWQzKHBtIC0gZCwgcG0sIHBtICsgZCwgY21wKTsKKwkJCXBuID0gbWVkMyhwbiAt
IDIgKiBkLCBwbiAtIGQsIHBuLCBjbXApOworCQl9CisJCXBtID0gbWVkMyhwbCwgcG0sIHBuLCBj
bXApOworCX0KKwlzd2FwKGEsIHBtKTsKKwlwYSA9IHBiID0gKGNoYXIgKilhICsgZXM7CisKKwlw
YyA9IHBkID0gKGNoYXIgKilhICsgKG4gLSAxKSAqIGVzOworCWZvciAoOzspIHsKKwkJd2hpbGUg
KHBiIDw9IHBjICYmIChyID0gY21wKHBiLCBhKSkgPD0gMCkgeworCQkJaWYgKHIgPT0gMCkgewor
CQkJCXN3YXBfY250ID0gMTsKKwkJCQlzd2FwKHBhLCBwYik7CisJCQkJcGEgKz0gZXM7CisJCQl9
CisJCQlwYiArPSBlczsKKwkJfQorCQl3aGlsZSAocGIgPD0gcGMgJiYgKHIgPSBjbXAocGMsIGEp
KSA+PSAwKSB7CisJCQlpZiAociA9PSAwKSB7CisJCQkJc3dhcF9jbnQgPSAxOworCQkJCXN3YXAo
cGMsIHBkKTsKKwkJCQlwZCAtPSBlczsKKwkJCX0KKwkJCXBjIC09IGVzOworCQl9CisJCWlmIChw
YiA+IHBjKQorCQkJYnJlYWs7CisJCXN3YXAocGIsIHBjKTsKKwkJc3dhcF9jbnQgPSAxOworCQlw
YiArPSBlczsKKwkJcGMgLT0gZXM7CisJfQorCWlmIChzd2FwX2NudCA9PSAwKSB7ICAvKiBTd2l0
Y2ggdG8gaW5zZXJ0aW9uIHNvcnQgKi8KKwkJZm9yIChwbSA9IChjaGFyICopIGEgKyBlczsgcG0g
PCAoY2hhciAqKSBhICsgbiAqIGVzOyBwbSArPSBlcykKKwkJCWZvciAocGwgPSBwbTsgcGwgPiAo
Y2hhciAqKSBhICYmIGNtcChwbCAtIGVzLCBwbCkgPiAwOworCQkJICAgICBwbCAtPSBlcykKKwkJ
CQlzd2FwKHBsLCBwbCAtIGVzKTsKKwkJcmV0dXJuOworCX0KKwlwbiA9IChjaGFyICopYSArIG4g
KiBlczsKKwlyID0gbWluKHBhIC0gKGNoYXIgKilhLCBwYiAtIHBhKTsKKwl2ZWNzd2FwKGEsIHBi
IC0gciwgcik7CisJciA9IG1pbihwZCAtIHBjLCBwbiAtIHBkIC0gKGludCllcyk7CisJdmVjc3dh
cChwYiwgcG4gLSByLCByKTsKKwlpZiAoKHIgPSBwYiAtIHBhKSA+IChpbnQpZXMpCisJCXFzb3J0
KGEsIHIgLyBlcywgZXMsIGNtcCk7CisJaWYgKChyID0gcGQgLSBwYykgPiAoaW50KWVzKSB7CisJ
CS8qIEl0ZXJhdGUgcmF0aGVyIHRoYW4gcmVjdXJzZSB0byBzYXZlIHN0YWNrIHNwYWNlICovCisJ
CWEgPSBwbiAtIHI7CisJCW4gPSByIC8gZXM7CisJCWdvdG8gbG9vcDsKKwl9Cit9Ci0tIAoyLjIw
LjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5p
b3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpo
dHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Sun Apr 05 11:57:00 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 05 Apr 2020 11:57: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 1jL3ta-0001Cq-5k; Sun, 05 Apr 2020 11:56:58 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=dZTb=5V=upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1jL3tY-0001Cg-19
 for minios-devel@lists.xen.org; Sun, 05 Apr 2020 11:56:56 +0000
X-Inumbo-ID: 8a35a710-7734-11ea-b4f4-bc764e2007e4
Received: from mx.upb.ro (unknown [141.85.13.5])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 8a35a710-7734-11ea-b4f4-bc764e2007e4;
 Sun, 05 Apr 2020 11:56:53 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id 64539B562123;
 Sun,  5 Apr 2020 14:56:52 +0300 (EEST)
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10032)
 with ESMTP id c6cse4dfCQaG; Sun,  5 Apr 2020 14:56:50 +0300 (EEST)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id 958AAB562567;
 Sun,  5 Apr 2020 14:56:50 +0300 (EEST)
DKIM-Filter: OpenDKIM Filter v2.10.3 mx.upb.ro 958AAB562567
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=upb.ro;
 s=96342B8A-77E4-11E5-BA93-D93D0963A2DF; t=1586087810;
 bh=PGtSe7YfvxCpihXT3vPu3HVFT3j5xSakTo1kep6DAnk=;
 h=From:To:Date:Message-Id:MIME-Version;
 b=ADGeQMeNPeTurF9x36OW8fOtqHOZDuV7g2BFFk8uCTqpFU5sSqfHK6lWCZ7KDFgB3
 WwqxjjaY79EUxMspJlu5Y/JZWBGc5zMH+WuCtZK5xLFDsZhhiEJJuNOzQuYEG0n3J9
 DSxqrEG8o5IuopieLqrsjm5Z4m1epoIVeb0T+9ak=
X-Virus-Scanned: amavisd-new at upb.ro
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id eL5pSioO5754; Sun,  5 Apr 2020 14:56:50 +0300 (EEST)
Received: from localhost.localdomain (unknown [86.127.159.73])
 by mx.upb.ro (Postfix) with ESMTPSA id 4FAFAB56239E;
 Sun,  5 Apr 2020 14:56:50 +0300 (EEST)
From: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
To: minios-devel@lists.xen.org
Date: Sun,  5 Apr 2020 14:56:41 +0300
Message-Id: <20200405115643.4538-1-vlad_andrei.badoiu@upb.ro>
X-Mailer: git-send-email 2.20.1
MIME-Version: 1.0
Subject: [Minios-devel] [UNIKRAFT PATCH v2 0/2] lib/vfscore: Add scandir
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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, Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
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>

U2V2ZXJhbCBleHRlcm5hbCBsaWJyYXJpZXMgbmVlZCB0aGUgc2NhbmRpciBpbXBsZW1lbnRhdGlv
bihlLmcuIGxpYnV2KS4KV2UgYWRhcHQgYW4gZXhpc3RpbmcgaW1wbGVtZW50YXRpb24gZnJvbSBt
dXNsIG9uIFVuaWtyYWZ0LiBTaW5jZSBzY2FuZGlyCnVzZXMgcXNvcnQgZm9yIG9yZGVyaW5nLCB3
ZSBhZGQgYSBxc29ydCBpbXBsZW1lbnRhdGlvbiB0byBub2xpYi4KCkNoYW5nZXMgc2luY2UgdjE6
CiogUmViYXNlZCBvbiBzdGFnaW5nLCBwYXRjaGVzIG5vdyBhcHBseSB3aXRob3V0IGNvbmZsaWN0
cwoKVmxhZC1BbmRyZWkgQsSCRE9JVSAoMik6CiAgbGliL25vbGliOiBBZGQgcXNvcnQKICBsaWIv
dmZzY29yZTogQWRkIHNjYW5kaXIKCiBsaWIvbm9saWJjL01ha2VmaWxlLnVrICAgICAgfCAgIDMg
KwogbGliL25vbGliYy9leHBvcnRzeW1zLnVrICAgIHwgICAxICsKIGxpYi9ub2xpYmMvaW5jbHVk
ZS9zdGRsaWIuaCB8ICAgMyArCiBsaWIvbm9saWJjL3Fzb3J0LmMgICAgICAgICAgfCAxNTcgKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBsaWIvdmZzY29yZS9leHBvcnRzeW1z
LnVrICAgfCAgIDEgKwogbGliL3Zmc2NvcmUvbWFpbi5jICAgICAgICAgIHwgIDQ4ICsrKysrKysr
KysrCiA2IGZpbGVzIGNoYW5nZWQsIDIxMyBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2
NDQgbGliL25vbGliYy9xc29ydC5jCgotLSAKMi4yMC4xCgoKX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5p
b3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9y
Zy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Sun Apr 05 11:57:02 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 05 Apr 2020 11:57: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 1jL3te-0001DR-92; Sun, 05 Apr 2020 11:57:02 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=dZTb=5V=upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1jL3tc-0001DI-RB
 for minios-devel@lists.xen.org; Sun, 05 Apr 2020 11:57:00 +0000
X-Inumbo-ID: 8a995aee-7734-11ea-9e09-bc764e2007e4
Received: from mx.upb.ro (unknown [141.85.13.5])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 8a995aee-7734-11ea-9e09-bc764e2007e4;
 Sun, 05 Apr 2020 11:56:54 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id 5677BB562329;
 Sun,  5 Apr 2020 14:56:53 +0300 (EEST)
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10032)
 with ESMTP id qTyImwtiVZHL; Sun,  5 Apr 2020 14:56:51 +0300 (EEST)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id 37B37B562588;
 Sun,  5 Apr 2020 14:56:51 +0300 (EEST)
DKIM-Filter: OpenDKIM Filter v2.10.3 mx.upb.ro 37B37B562588
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=upb.ro;
 s=96342B8A-77E4-11E5-BA93-D93D0963A2DF; t=1586087811;
 bh=u42N8C2Y/en7sAotmCVAjyC5YKo8PMI+rREmwGOeRhY=;
 h=From:To:Date:Message-Id:MIME-Version;
 b=jwUUnk3BsKjulQSP6RBPxETIUZIFtT9hx3gWfM8Ijote74jeH8N19MCoIsXzTK+X/
 HEgz2X7ndkD5yVzCkYGZE6huhYuZJ+7hiwCXEq5lDmQPkY7gKATvXdi6AVMPNclqqq
 0RrILl2z2VzJ4GEzI+A05NHOHBdKU9oOj4b2Ob/s=
X-Virus-Scanned: amavisd-new at upb.ro
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id 8Sez9yd2neDq; Sun,  5 Apr 2020 14:56:51 +0300 (EEST)
Received: from localhost.localdomain (unknown [86.127.159.73])
 by mx.upb.ro (Postfix) with ESMTPSA id D9E03B562575;
 Sun,  5 Apr 2020 14:56:50 +0300 (EEST)
From: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
To: minios-devel@lists.xen.org
Date: Sun,  5 Apr 2020 14:56:43 +0300
Message-Id: <20200405115643.4538-3-vlad_andrei.badoiu@upb.ro>
X-Mailer: git-send-email 2.20.1
In-Reply-To: <20200405115643.4538-1-vlad_andrei.badoiu@upb.ro>
References: <20200405115643.4538-1-vlad_andrei.badoiu@upb.ro>
MIME-Version: 1.0
Subject: [Minios-devel] [UNIKRAFT PATCH v2 2/2] lib/vfscore: Add scandir
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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, Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>,
 =?UTF-8?q?Vlad-Andrei=20B=C4=82DOIU?= <vlad_andrei.badoiu@stud.acs.upb.ro>
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>

RnJvbTogVmxhZC1BbmRyZWkgQsSCRE9JVSA8dmxhZF9hbmRyZWkuYmFkb2l1QHN0dWQuYWNzLnVw
Yi5ybz4KCldlIGFkYXB0IHRoZSBzY2FuZGlyIGltcGxlbWVudGF0aW9uIGZvciBtdXNsIHRvIHdv
cmsKd2l0aCBvdXIgdmZzY29yZSBpbXBsZW1lbnRhdGlvbi4KClNpZ25lZC1vZmYtYnk6IFZsYWQt
QW5kcmVpIEJhZG9pdSA8dmxhZF9hbmRyZWkuYmFkb2l1QHVwYi5ybz4KLS0tCiBsaWIvdmZzY29y
ZS9leHBvcnRzeW1zLnVrIHwgIDEgKwogbGliL3Zmc2NvcmUvbWFpbi5jICAgICAgICB8IDQ4ICsr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMiBmaWxlcyBjaGFuZ2VkLCA0
OSBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvZXhwb3J0c3ltcy51ayBi
L2xpYi92ZnNjb3JlL2V4cG9ydHN5bXMudWsKaW5kZXggZTg2M2E1NDQuLjIyM2JiNzJiIDEwMDY0
NAotLS0gYS9saWIvdmZzY29yZS9leHBvcnRzeW1zLnVrCisrKyBiL2xpYi92ZnNjb3JlL2V4cG9y
dHN5bXMudWsKQEAgLTEzMSwzICsxMzEsNCBAQCBmdXRpbWVucwogdXRpbWVzCiBsdXRpbWVzCiBw
b3NpeF9mYWR2aXNlCitzY2FuZGlyCmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9tYWluLmMgYi9s
aWIvdmZzY29yZS9tYWluLmMKaW5kZXggOGM4MGVhNjEuLjg0NmUyZWZkIDEwMDY0NAotLS0gYS9s
aWIvdmZzY29yZS9tYWluLmMKKysrIGIvbGliL3Zmc2NvcmUvbWFpbi5jCkBAIC0zNiw2ICszNiw3
IEBACiAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KICNpbmNsdWRlIDxsaW1pdHMuaD4KICNpbmNsdWRl
IDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRlIDxlcnJuby5oPgogI2lu
Y2x1ZGUgPGZjbnRsLmg+CiAjaW5jbHVkZSA8dmZzY29yZS9wcmV4Lmg+CkBAIC03MDgsNiArNzA5
LDUzIEBAIGludCBjbG9zZWRpcihESVIgKmRpcikKIAlyZXR1cm4gMDsKIH0KIAoraW50IHNjYW5k
aXIoY29uc3QgY2hhciAqcGF0aCwgc3RydWN0IGRpcmVudCAqKipyZXMsCisJaW50ICgqc2VsKShj
b25zdCBzdHJ1Y3QgZGlyZW50ICopLAorCWludCAoKmNtcCkoY29uc3Qgc3RydWN0IGRpcmVudCAq
KiwgY29uc3Qgc3RydWN0IGRpcmVudCAqKikpCit7CisJRElSICpkID0gb3BlbmRpcihwYXRoKTsK
KwlzdHJ1Y3QgZGlyZW50ICpkZSwgKipuYW1lcz0wLCAqKnRtcDsKKwlzaXplX3QgY250PTAsIGxl
bj0wOworCWludCBvbGRfZXJybm8gPSBlcnJubzsKKworCWlmICghZCkKKwkJcmV0dXJuIC0xOwor
CisJd2hpbGUgKChlcnJubz0wKSwgKGRlID0gcmVhZGRpcihkKSkpIHsKKwkJaWYgKHNlbCAmJiAh
c2VsKGRlKSkKKwkJCWNvbnRpbnVlOworCQlpZiAoY250ID49IGxlbikgeworCQkJbGVuID0gMips
ZW4rMTsKKwkJCWlmIChsZW4gPiBTSVpFX01BWC9zaXplb2YoKm5hbWVzKSkKKwkJCQlicmVhazsK
KwkJCXRtcCA9IHJlYWxsb2MobmFtZXMsIGxlbiAqIHNpemVvZigqbmFtZXMpKTsKKwkJCWlmICgh
dG1wKQorCQkJCWJyZWFrOworCQkJbmFtZXMgPSB0bXA7CisJCX0KKwkJbmFtZXNbY250XSA9IG1h
bGxvYyhkZS0+ZF9yZWNsZW4pOworCQlpZiAoIW5hbWVzW2NudF0pCisJCQlicmVhazsKKwkJbWVt
Y3B5KG5hbWVzW2NudCsrXSwgZGUsIGRlLT5kX3JlY2xlbik7CisJfQorCisJY2xvc2VkaXIoZCk7
CisKKwlpZiAoZXJybm8pIHsKKwkJaWYgKG5hbWVzKQorCQkJd2hpbGUgKGNudC0tPjApCisJCQkJ
ZnJlZShuYW1lc1tjbnRdKTsKKwkJZnJlZShuYW1lcyk7CisJCXJldHVybiAtMTsKKwl9CisJZXJy
bm8gPSBvbGRfZXJybm87CisKKwlpZiAoY21wKQorCQlxc29ydChuYW1lcywgY250LCBzaXplb2Yg
Km5hbWVzLCAoaW50ICgqKShjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKikpY21wKTsKKwkqcmVz
ID0gbmFtZXM7CisJcmV0dXJuIGNudDsKK30KKwogc3RydWN0IGRpcmVudCAqcmVhZGRpcihESVIg
KmRpcikKIHsKIAlzdGF0aWMgX190aHJlYWQgc3RydWN0IGRpcmVudCBlbnRyeSwgKnJlc3VsdDsK
LS0gCjIuMjAuMQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2pl
Y3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5p
b3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Sun Apr 05 12:02:45 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 05 Apr 2020 12:02: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 1jL3zA-00023a-6C; Sun, 05 Apr 2020 12:02:44 +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=dZTb=5V=upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1jL3z8-00023V-Iu
 for minios-devel@lists.xen.org; Sun, 05 Apr 2020 12:02:42 +0000
X-Inumbo-ID: 59eb5112-7735-11ea-bf1b-12813bfff9fa
Received: from mx.upb.ro (unknown [141.85.13.200])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 59eb5112-7735-11ea-bf1b-12813bfff9fa;
 Sun, 05 Apr 2020 12:02:42 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id 06A89B56255F;
 Sun,  5 Apr 2020 15:02:41 +0300 (EEST)
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10032)
 with ESMTP id 21FT9_dFLTxC; Sun,  5 Apr 2020 15:02:39 +0300 (EEST)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id 2C88DB562567;
 Sun,  5 Apr 2020 15:02:39 +0300 (EEST)
DKIM-Filter: OpenDKIM Filter v2.10.3 mx.upb.ro 2C88DB562567
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=upb.ro;
 s=96342B8A-77E4-11E5-BA93-D93D0963A2DF; t=1586088159;
 bh=GVc4nbxgFlbLX7kXtPG+8pY9Al+Pyfc6vN3tp2DXS9c=;
 h=To:From:Message-ID:Date:MIME-Version;
 b=DzhyJPSbxAdIByCsWouqAV5FUcn3wkMnSQMuMeo73KfQv+YVPWvGpGBXCbujNvwF9
 TNV8OwqfFt5RcPFah2WymnngfotBMv7tunghz5f9tOPWqcLfnMLYQnagoP3NelLSPT
 f4tJi56yuN9BpuZUIcPOhyaAx5RF41zLeZgNUsrc=
X-Virus-Scanned: amavisd-new at upb.ro
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id vxspgZLdi9Cx; Sun,  5 Apr 2020 15:02:39 +0300 (EEST)
Received: from [192.168.0.131] (unknown [86.127.159.73])
 by mx.upb.ro (Postfix) with ESMTPSA id F2943B56239E;
 Sun,  5 Apr 2020 15:02:38 +0300 (EEST)
To: "minios-devel@lists.xen.org" <minios-devel@lists.xen.org>
From: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
Message-ID: <e4adc955-78c8-4924-357a-2f0f92ef1952@upb.ro>
Date: Sun, 5 Apr 2020 15:02:38 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101
 Thunderbird/68.4.1
MIME-Version: 1.0
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT/NNPACK PATCH] Update dependency name
 to LIBPOSIX_SYSINFO
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>
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>

SGkgRmVsaXBlLAoKVGhhbmtzIGZvciB0aGUgcGF0Y2guCgpSZXZpZXdlZC1ieTogVmxhZC1BbmRy
ZWkgQmFkb2l1IDx2bGFkX2FuZHJlaS5iYWRvaXVAdXBiLnJvPgoKT24gMDIuMDQuMjAyMCAxMjo0
NCwgRmVsaXBlIEh1aWNpIHdyb3RlOgo+IFRoZSBpbnRlcm5hbCBsaWJyYXJ5IFVLU1lTSU5GTyBo
YXMgYmVlbiByZW5hbWVkIHRvIExJQlBPU0lYX1NZU0lORk87Cj4gdGhpcyBwYXRjaCB1cGRhdGVz
IENvbmZpZy51ayB0byBtYXRjaCB0aGlzIGNoYW5nZS4KPgo+IFNpZ25lZC1vZmYtYnk6IEZlbGlw
ZSBIdWljaSA8ZmVsaXBlLmh1aWNpQG5lY2xhYi5ldT4KPiAtLS0KPiAgIENvbmZpZy51ayB8IDIg
Ky0KPiAgIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQo+Cj4g
ZGlmZiAtLWdpdCBhL0NvbmZpZy51ayBiL0NvbmZpZy51awo+IGluZGV4IGRhOGI2NzUuLmRkY2I3
MDMgMTAwNjQ0Cj4gLS0tIGEvQ29uZmlnLnVrCj4gKysrIGIvQ29uZmlnLnVrCj4gQEAgLTQsNyAr
NCw3IEBAIG1lbnVjb25maWcgTElCTk5QQUNLCj4gICAJc2VsZWN0IExJQlBUSFJFQURfRU1CRURE
RUQKPiAgIAlzZWxlY3QgQ1hYX1RIUkVBRFMKPiAgIAlzZWxlY3QgTElCUE9TSVhfVVNFUgo+IC0J
c2VsZWN0IFVLU1lTSU5GTwo+ICsJc2VsZWN0IExJQlBPU0lYX1NZU0lORk8KPiAgIAlzZWxlY3Qg
TElCSU5URUxfSU5UUklOU0lDUwo+ICAgCXNlbGVjdCBMSUJGUDE2Cj4gICAJc2VsZWN0IExJQkZY
RElWCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5p
b3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpo
dHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Sun Apr 05 12:08:36 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 05 Apr 2020 12:08: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 1jL44o-0002AR-MY; Sun, 05 Apr 2020 12:08:34 +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=dZTb=5V=upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1jL44n-0002AM-Ho
 for minios-devel@lists.xenproject.org; Sun, 05 Apr 2020 12:08:33 +0000
X-Inumbo-ID: 2a8c75b2-7736-11ea-bf1d-12813bfff9fa
Received: from mx.upb.ro (unknown [141.85.13.210])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 2a8c75b2-7736-11ea-bf1d-12813bfff9fa;
 Sun, 05 Apr 2020 12:08:32 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id 040A8B561FC2;
 Sun,  5 Apr 2020 15:08:31 +0300 (EEST)
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10032)
 with ESMTP id 9otWqfb48qL7; Sun,  5 Apr 2020 15:08:28 +0300 (EEST)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id AC726B562562;
 Sun,  5 Apr 2020 15:08:28 +0300 (EEST)
DKIM-Filter: OpenDKIM Filter v2.10.3 mx.upb.ro AC726B562562
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=upb.ro;
 s=96342B8A-77E4-11E5-BA93-D93D0963A2DF; t=1586088508;
 bh=RcY7VqEmirKaq33R6811zKpP3PIeA9AV9h575SlpVeM=;
 h=To:From:Message-ID:Date:MIME-Version;
 b=KDDwtQj+Thoy30TAsK8jVsPmWpGZSje5P0wb7tfAbNpfB7XWP9ZIILzEACPcestfc
 3VVZb2xTowYWkdE0b6ZsHYszCPzLaY7/bcphPW8/qjOKFnDRCcetXDJKVhCMSfftms
 NKv17xTMx7xwlHwcRSY1oSbV3OFNhj6MLHGgSHbY=
X-Virus-Scanned: amavisd-new at upb.ro
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id SWJHllFJwzkC; Sun,  5 Apr 2020 15:08:28 +0300 (EEST)
Received: from [192.168.0.131] (unknown [86.127.159.73])
 by mx.upb.ro (Postfix) with ESMTPSA id 7ADEFB562384;
 Sun,  5 Apr 2020 15:08:28 +0300 (EEST)
To: minios-devel@lists.xenproject.org
From: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
Message-ID: <f1c0144b-6c96-3605-e071-1b8cf113ee76@upb.ro>
Date: Sun, 5 Apr 2020 15:08:28 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101
 Thunderbird/68.4.1
MIME-Version: 1.0
Content-Language: en-US
Subject: Re: [Minios-devel] [UNIKRAFT/LIBPTHREADPOOL PATCH] Freeze the
 library against a particular commit hash.
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>
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>

VGhhbmsgeW91IQoKUmV2aWV3ZWQtYnk6IFZsYWQtQW5kcmVpIEJhZG9pdSA8dmxhZF9hbmRyZWku
YmFkb2l1QHVwYi5ybz4KCk9uIDAyLjA0LjIwMjAgMTI6NDMsIEZlbGlwZSBIdWljaSB3cm90ZToK
PiBDdXJyZW50bHkgcHRocmVhZHBvb2wgYnVpbGRzIGFnYWluc3QgbWFzdGVyLiBTaW5jZSBtYXN0
ZXIgY2hhbmdlcywKPiB0aGlzIG1ha2VzIHRoZSBidWlsZCBvZiB0aGlzIGxpYnJhcnkgYnJpdHRs
ZTsgaW4gdGhpcyBwYXRjaCB3ZSBmcmVlemUKPiBhZ2FpbnN0IG9uZSBvZiB0aGUgbGF0ZXN0IGNv
bW1pdHMuCj4KPiBTaWduZWQtb2ZmLWJ5OiBGZWxpcGUgSHVpY2kgPGZlbGlwZS5odWljaUBuZWNs
YWIuZXU+Cj4gLS0tCj4gICBNYWtlZmlsZS51ayB8IDYgKysrLS0tCj4gICAxIGZpbGUgY2hhbmdl
ZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBhL01ha2Vm
aWxlLnVrIGIvTWFrZWZpbGUudWsKPiBpbmRleCA2OTQ0Yzc0Li5kNjJmMzA1IDEwMDY0NAo+IC0t
LSBhL01ha2VmaWxlLnVrCj4gKysrIGIvTWFrZWZpbGUudWsKPiBAQCAtMzksMTUgKzM5LDE1IEBA
ICQoZXZhbCAkKGNhbGwgYWRkbGliX3MsbGlicHRocmVhZHBvb2wsJChDT05GSUdfTElCUFRIUkVB
RFBPT0wpKSkKPiAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCj4gICAjIFNvdXJjZXMKPiAgICMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjCj4gLUxJQlBUSFJFQURQT09MX1ZFUlNJT049bWFzdGVyCj4g
LUxJQlBUSFJFQURQT09MX1VSTD1odHRwczovL2dpdGh1Yi5jb20vTWFyYXR5c3pjemEvcHRocmVh
ZHBvb2wvYXJjaGl2ZS9tYXN0ZXIuemlwCj4gK0xJQlBUSFJFQURQT09MX1ZFUlNJT049NzYwNDIx
NTVhOGIxZTE4OWM4ZjE0MTQyOWZkNzIyMTk0NzJjMzJlMQo+ICtMSUJQVEhSRUFEUE9PTF9VUkw9
aHR0cHM6Ly9naXRodWIuY29tL01hcmF0eXN6Y3phL3B0aHJlYWRwb29sL2FyY2hpdmUvJChMSUJQ
VEhSRUFEUE9PTF9WRVJTSU9OKS56aXAKPiAgIExJQlBUSFJFQURQT09MX1BBVENIRElSPSQoTElC
UFRIUkVBRFBPT0xfQkFTRSkvcGF0Y2hlcwo+ICAgJChldmFsICQoY2FsbCBmZXRjaCxsaWJwdGhy
ZWFkcG9vbCwkKExJQlBUSFJFQURQT09MX1VSTCkpKQo+ICAgCj4gICAjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIwo+ICAgIyBIZWxwZXJzCj4gICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwo+IC1MSUJQ
VEhSRUFEUE9PTF9TVUJESVI9cHRocmVhZHBvb2wtbWFzdGVyCj4gK0xJQlBUSFJFQURQT09MX1NV
QkRJUj1wdGhyZWFkcG9vbC0kKExJQlBUSFJFQURQT09MX1ZFUlNJT04pCj4gICBMSUJQVEhSRUFE
UE9PTF9TUkM9JChMSUJQVEhSRUFEUE9PTF9PUklHSU4pLyQoTElCUFRIUkVBRFBPT0xfU1VCRElS
KQo+ICAgCj4gICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5p
b3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9y
Zy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Sun Apr 05 14:42:09 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 05 Apr 2020 14:42: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 1jL6TP-000674-5f; Sun, 05 Apr 2020 14:42:07 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=3ewc=5V=gmail.com=alicesuiu17@srs-us1.protection.inumbo.net>)
 id 1jL6TO-00066z-Fp
 for minios-devel@lists.xen.org; Sun, 05 Apr 2020 14:42:06 +0000
X-Inumbo-ID: 9e4aa3e2-774b-11ea-b58d-bc764e2007e4
Received: from mail-wm1-x331.google.com (unknown [2a00:1450:4864:20::331])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 9e4aa3e2-774b-11ea-b58d-bc764e2007e4;
 Sun, 05 Apr 2020 14:42:05 +0000 (UTC)
Received: by mail-wm1-x331.google.com with SMTP id x25so980060wmc.0
 for <minios-devel@lists.xen.org>; Sun, 05 Apr 2020 07:42:05 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=from:to:cc:subject:date:message-id;
 bh=auih03DfzDzqB69NmSYXwIVO5sSoYZPDP6kEE8Q+otM=;
 b=t8L0HAvs+kd7OAcBvma55Q9zyiWjfJngtxaFHF2VOjYW25s71RR5EJODxcDsjhcE5X
 3B4/zVMwg6+4oPW1YERQn+LXXYE7/NEt+EIxFugXzTUtBMPiWSaowmIzc0WL/uA4Lp6K
 dcIoh3qSQXJqBz3rzLh8zmSwbwl8X1l5wQU9NU+QEQhwVXSy0rdWSOsr9HLM2cT26PzU
 5IWWyhoa+AnFPpjSdgH40ssoFUZehWw9ytEFSPY2H+aRO61UuXT/u1haPSCc6J4rke7l
 GzQEg3whevldHtvnK8aMmihtCxjKNpONQgJPSok/ySAXwFHfhf3CZEOkKjTuiX5HWiCB
 yPpg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:from:to:cc:subject:date:message-id;
 bh=auih03DfzDzqB69NmSYXwIVO5sSoYZPDP6kEE8Q+otM=;
 b=VrsOAWDh0EDDBtYUfCIiLmYZgaDjXSlSliNeUWL0Y5ieK0skCu2BmDzoAGRAqafdE5
 53QaIHfsOfwMy4QtB4dO3Pw9mDPlrDaDREL/j7qemy7ygep4zuVyDsn6mG1Jh5NItxzf
 jjNhBlEl49ALjNN/HXus5d1WEm+RZu1uUBvonznEAzVLI/5Co1/4bhOdmIOeDDnNaDJe
 wxHLV15yKaDBBYuezqMZo7KZa94yTcyPwNOTCAOQV47lHdA6ZVj31No7usQBIe17hGpg
 DvhVekErYg/BmDl1DQr2jn4sT060rONJhcLy6Djpr4QS0c/4mFFt8uaxPLVWe7VZ+gE1
 lB0Q==
X-Gm-Message-State: AGi0PuaJIj83GJ8z7rgqDOTHMWR+7AJOen7e9ywghmAQeklodeSnqPjd
 bEm+HJ5LKF5bg73Z19rXYnG7ZC2sDlA=
X-Google-Smtp-Source: APiQypLEiKB+Glym1g6lmpjhF5WTMHbG8rxJkzlVIjf/WFBeZmosBKCGkQ8Lru7ynQQ8NrpywaSeJQ==
X-Received: by 2002:a05:600c:20c:: with SMTP id
 12mr7089030wmi.158.1586097724393; 
 Sun, 05 Apr 2020 07:42:04 -0700 (PDT)
Received: from localhost.localdomain ([86.120.241.47])
 by smtp.gmail.com with ESMTPSA id f3sm21321579wmj.24.2020.04.05.07.42.02
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Sun, 05 Apr 2020 07:42:03 -0700 (PDT)
From: Alice Suiu <alicesuiu17@gmail.com>
To: minios-devel@lists.xen.org
Date: Sun,  5 Apr 2020 17:41:42 +0300
Message-Id: <20200405144144.9331-1-alicesuiu17@gmail.com>
X-Mailer: git-send-email 2.17.1
Subject: [Minios-devel] [UNIKRAFT PATCH v2 1/3] build: Configure the
 compiler from command 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@neclab.eu, simon.kuenzer@neclab.eu,
 alicesuiu <alicesuiu17@gmail.com>, 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>

RnJvbTogYWxpY2VzdWl1IDxhbGljZXN1aXUxN0BnbWFpbC5jb20+CgpCeSBkZWZhdWx0LCB0aGUg
Y29tcGlsZXIgaXMgR0NDLiBVc2UgQ09NUElMRVI9Y2xhbmcgd2l0aCBtYWtlIHRvIGNvbmZpZ3Vy
ZSB0aGUgY29tcGlsZXIgYXMgQ0xBTkcuCgpTaWduZWQtb2ZmLWJ5OiBBbGljZSBTdWl1IDxhbGlj
ZXN1aXUxN0BnbWFpbC5jb20+Ci0tLQogTWFrZWZpbGUgICAgfCAxMiArKysrKysrKysrLS0KIE1h
a2VmaWxlLnVrIHwgIDIgKy0KIDIgZmlsZXMgY2hhbmdlZCwgMTEgaW5zZXJ0aW9ucygrKSwgMyBk
ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCmluZGV4IGIxZTgw
MzAuLmQ3MGIzZmMgMTAwNjQ0Ci0tLSBhL01ha2VmaWxlCisrKyBiL01ha2VmaWxlCkBAIC01MDEs
MTEgKzUwMSwxOSBAQCBpZm5lcSAoIiQob3JpZ2luIENST1NTX0NPTVBJTEUpIiwidW5kZWZpbmVk
IikKIENPTkZJR19DUk9TU19DT01QSUxFIDo9ICQoQ1JPU1NfQ09NUElMRToiJSI9JSkKIGVuZGlm
CiAKKyMgVXNlICdtYWtlIENPTVBJTEVSPWNsYW5nJyB0byBjb21waWxlIHdpdGggY2xhbmcKK2lm
ZXEgKCIkKG9yaWdpbiBDT01QSUxFUikiLCAiY29tbWFuZCBsaW5lIikKKyAgQ09ORklHX0NPTVBJ
TEVSIDo9ICQoQ09NUElMRVIpCitlbmRpZgoraWZuZGVmIENPTkZJR19DT01QSUxFUgorICBDT05G
SUdfQ09NUElMRVIgPSBnY2MKK2VuZGlmCisKICQoZXZhbCAkKGNhbGwgdmVyYm9zZV9pbmNsdWRl
LCQoQ09ORklHX1VLX0JBU0UpL2FyY2gvJChVS19GQU1JTFkpL0NvbXBpbGVyLnVrKSkKIAogIyBN
YWtlIHZhcmlhYmxlcyAoQ0MsIGV0Yy4uLikKLUxECQk6PSAkKENPTkZJR19DUk9TU19DT01QSUxF
KWdjYwotQ0MJCTo9ICQoQ09ORklHX0NST1NTX0NPTVBJTEUpZ2NjCitMRAkJOj0gJChDT05GSUdf
Q1JPU1NfQ09NUElMRSkkKENPTkZJR19DT01QSUxFUikKK0NDCQk6PSAkKENPTkZJR19DUk9TU19D
T01QSUxFKSQoQ09ORklHX0NPTVBJTEVSKQogQ1BQCQk6PSAkKENDKQogQ1hYCQk6PSAkKENQUCkK
IEdPQwkJOj0gJChDT05GSUdfQ1JPU1NfQ09NUElMRSlnY2Nnby03CmRpZmYgLS1naXQgYS9NYWtl
ZmlsZS51ayBiL01ha2VmaWxlLnVrCmluZGV4IGE3OGFmYzAuLmI1MTlhNDMgMTAwNjQ0Ci0tLSBh
L01ha2VmaWxlLnVrCisrKyBiL01ha2VmaWxlLnVrCkBAIC02LDcgKzYsNyBAQAogCiBDT01QRkxB
R1MgICAgKz0gLW5vc3RkaW5jIC1ub3N0ZGxpYgogQ09NUEZMQUdTICAgICs9IC1VIF9fbGludXhf
XyAtVSBfX0ZyZWVCU0RfXyAtVSBfX3N1bl9fCi1DT01QRkxBR1MgICAgKz0gLWZuby1zdGFjay1w
cm90ZWN0b3IgLWZuby1vbWl0LWZyYW1lLXBvaW50ZXIgLWZuby10cmVlLXNyYQorQ09NUEZMQUdT
ICAgICs9IC1mbm8tc3RhY2stcHJvdGVjdG9yIC1mbm8tb21pdC1mcmFtZS1wb2ludGVyCiBDT01Q
RkxBR1MgICAgKz0gLVdhbGwgLVdleHRyYQogCiAjIFRPRE86IFJlbW92ZSAtZm1zLWV4dGVuc2lv
bnMgaWYgbm90IG5lZWRlZCBmb3Igb3VyIGNvZGUgKGl0IHdhcyBtb3ZlZCBmcm9tIEFybTY0IGFy
Y2gpCi0tIAoyLjE3LjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5w
cm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8v
bWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Sun Apr 05 14:42:21 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 05 Apr 2020 14:42: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 1jL6Td-00068P-7u; Sun, 05 Apr 2020 14:42:21 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=3ewc=5V=gmail.com=alicesuiu17@srs-us1.protection.inumbo.net>)
 id 1jL6Tb-00068I-Rg
 for minios-devel@lists.xen.org; Sun, 05 Apr 2020 14:42:19 +0000
X-Inumbo-ID: a67b683a-774b-11ea-9e09-bc764e2007e4
Received: from mail-wr1-x432.google.com (unknown [2a00:1450:4864:20::432])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id a67b683a-774b-11ea-9e09-bc764e2007e4;
 Sun, 05 Apr 2020 14:42:19 +0000 (UTC)
Received: by mail-wr1-x432.google.com with SMTP id w10so14327581wrm.4
 for <minios-devel@lists.xen.org>; Sun, 05 Apr 2020 07:42:19 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=from:to:cc:subject:date:message-id:in-reply-to:references;
 bh=Hnm7LSiuxWHq6JNrf6FxF7u+CxY0bpsB9l2dwDGDxns=;
 b=BKH+icZmJ+DxvbDWauubyWsomyah5TDu5qSiCBqOApVJ1RMDwTUjl/cDhk7qZi0r5W
 CSwB3bIcJHWDTNayh5wPEZ15ECQ39Hg1D1rAdidHUW3J30ZnBih5yk3Sh9wQuDB/QDfR
 zs55Y/HNUvV/7AjimxrxYUK8wvaKRtWKq7tiEK0gbAX04jF5G17Dv8R65Ra7AG7J2bnN
 hBV0Ll878ZJB+abOJGeJwMJG98fzEtTWY14VRYBQVhFMwRmxdWAIns9wSKqa7/g65R5F
 nHirfxrcQ0Cs60huH+tm5TzXd1zssUdYG9MFRFP00OnONwk23xqwhduh9L6vLl0vLiFu
 YmZQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to
 :references;
 bh=Hnm7LSiuxWHq6JNrf6FxF7u+CxY0bpsB9l2dwDGDxns=;
 b=KTF9zIbSrwfseLl2ut4uURoPEQTq2IYvDZRsePvuOQ2qJRXy4qzK5WjH06G19e8pYU
 A9MFYgZjBNCn+bFaoV2aphCq+Wl7aQvOlTbZ2ZDdq8wBTwF08E6u9Z681z+qc6TSbtHu
 91zZN46BFvx3Iq5WKVT68E4rMygBJfI/pkd4NgDRqlt5qmdDw6l25dZct4aW4v7cF49A
 6VBf/5AroXEjkGl6W9uahHucVeZ/1wz5TgPqKgPgQTVlUTfMX7DVSQu3Br5mSJGfqPBZ
 McVpSHwxoHSRm6KhfYh2WusWiJFg9PW5w9rXGCURWIK16lq0RRyAHxzKmbVnC9V1SWtx
 6ePw==
X-Gm-Message-State: AGi0PuZP4gJ0YoefaFYwHkAIW7YSaHqo7TWTYLLn65DY3is5qACOMzYw
 UJpMzuLTWLaScLLx+npEc0rs63gr6H+E8Q==
X-Google-Smtp-Source: APiQypLENVvcXxbUnzYZLFqKC95n0Iftx3jeb2G/Qw65vmYqleJpI+gzFJWyL+vFC9Tzx7GfGAoiKA==
X-Received: by 2002:a5d:550c:: with SMTP id b12mr19252223wrv.304.1586097738102; 
 Sun, 05 Apr 2020 07:42:18 -0700 (PDT)
Received: from localhost.localdomain ([86.120.241.47])
 by smtp.gmail.com with ESMTPSA id f3sm21321579wmj.24.2020.04.05.07.42.17
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Sun, 05 Apr 2020 07:42:17 -0700 (PDT)
From: Alice Suiu <alicesuiu17@gmail.com>
To: minios-devel@lists.xen.org
Date: Sun,  5 Apr 2020 17:41:43 +0300
Message-Id: <20200405144144.9331-2-alicesuiu17@gmail.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20200405144144.9331-1-alicesuiu17@gmail.com>
References: <20200405144144.9331-1-alicesuiu17@gmail.com>
Subject: [Minios-devel] [UNIKRAFT PATCH v2 2/3] arch/*,
 build: Delete some flags for clang
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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,
 Alice Suiu <alicesuiu17@gmail.com>, 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>

SW4gb3JkZXIgdG8gcGVyZm9ybSB0aGUgY29tcGlsYXRpb24gYW5kIGxpbmtpbmcgd2l0aCBjbGFu
ZyB3aXRob3V0IHdhcm5pbmdzLCB0aGUgZm9sbG93aW5nIGZsYWdzIG11c3QgYmUgcmVtb3ZlZDoK
LWZuby10cmVlLXNyYSwgLWZtcy1leHRlbnNpb25zLCAtbm9zdGRpbmMsIC1mbm8tcmVvcmRlci1i
bG9ja3MsIC1tbm8tZnAtcmV0LWluLTM4Ny4KClNpZ25lZC1vZmYtYnk6IEFsaWNlIFN1aXUgPGFs
aWNlc3VpdTE3QGdtYWlsLmNvbT4KLS0tCiBNYWtlZmlsZS51ayAgICAgICAgICAgICAgICAgfCAx
MCArKysrKysrKystCiBhcmNoL3g4Ni94ODZfNjQvTWFrZWZpbGUudWsgfCAgNyArKysrKysrCiAy
IGZpbGVzIGNoYW5nZWQsIDE2IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1n
aXQgYS9NYWtlZmlsZS51ayBiL01ha2VmaWxlLnVrCmluZGV4IGI1MTlhNDMuLmRlZTlmMzUgMTAw
NjQ0Ci0tLSBhL01ha2VmaWxlLnVrCisrKyBiL01ha2VmaWxlLnVrCkBAIC02LDcgKzYsNyBAQAog
CiBDT01QRkxBR1MgICAgKz0gLW5vc3RkaW5jIC1ub3N0ZGxpYgogQ09NUEZMQUdTICAgICs9IC1V
IF9fbGludXhfXyAtVSBfX0ZyZWVCU0RfXyAtVSBfX3N1bl9fCi1DT01QRkxBR1MgICAgKz0gLWZu
by1zdGFjay1wcm90ZWN0b3IgLWZuby1vbWl0LWZyYW1lLXBvaW50ZXIKK0NPTVBGTEFHUyAgICAr
PSAtZm5vLXN0YWNrLXByb3RlY3RvciAtZm5vLW9taXQtZnJhbWUtcG9pbnRlciAtZm5vLXRyZWUt
c3JhCiBDT01QRkxBR1MgICAgKz0gLVdhbGwgLVdleHRyYQogCiAjIFRPRE86IFJlbW92ZSAtZm1z
LWV4dGVuc2lvbnMgaWYgbm90IG5lZWRlZCBmb3Igb3VyIGNvZGUgKGl0IHdhcyBtb3ZlZCBmcm9t
IEFybTY0IGFyY2gpCkBAIC01NSwzICs1NSwxMSBAQCBNNEZMQUdTICAgICAgKz0gLURVS19WRVJT
SU9OPSQoVUtfVkVSU0lPTikuJChVS19TVUJWRVJTSU9OKQogQ09NUEZMQUdTLSQoY2FsbCBnY2Nf
dmVyc2lvbl9nZSw2LDEpCSs9IC1uby1waWUKIExJQkxERkxBR1MtJChjYWxsIGdjY192ZXJzaW9u
X2dlLDYsMSkJKz0gLW5vLXBpZQogTERGTEFHUy0kKGNhbGwgZ2NjX3ZlcnNpb25fZ2UsNiwxKQkr
PSAtbm8tcGllCisKK2lmZXEgKCQoQ09ORklHX0NPTVBJTEVSKSwgY2xhbmcpCitDRkxBR1M6PSQo
ZmlsdGVyLW91dCAtZm1zLWV4dGVuc2lvbnMsJChDRkxBR1MpKQorQ09NUEZMQUdTOj0kKGZpbHRl
ci1vdXQgLWZuby10cmVlLXNyYSwkKENPTVBGTEFHUykpCitDT01QRkxBR1M6PSQoZmlsdGVyLW91
dCAtbm9zdGRpbmMsJChDT01QRkxBR1MpKQorTElCTERGTEFHUzo9JChmaWx0ZXItb3V0IC1ub3N0
ZGluYywkKExJQkxERkxBR1MpKQorTERGTEFHUzo9JChmaWx0ZXItb3V0IC1ub3N0ZGluYywkKExE
RkxBR1MpKQorZW5kaWYKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9h
cmNoL3g4Ni94ODZfNjQvTWFrZWZpbGUudWsgYi9hcmNoL3g4Ni94ODZfNjQvTWFrZWZpbGUudWsK
aW5kZXggM2QwYjM0ZC4uMWJiZTAyYyAxMDA2NDQKLS0tIGEvYXJjaC94ODYveDg2XzY0L01ha2Vm
aWxlLnVrCisrKyBiL2FyY2gveDg2L3g4Nl82NC9NYWtlZmlsZS51awpAQCAtNDEsMyArNDEsMTAg
QEAgQVJDSEZMQUdTLSQoQ09ORklHX01BUkNIX1g4Nl82NF9CVFZFUjEpICAgICAgICAgKz0gLW1h
cmNoPWJ0dmVyMQogSVNSX0FSQ0hGTEFHUy0kKENPTkZJR19NQVJDSF9YODZfNjRfQlRWRVIxKSAg
ICAgKz0gLW1hcmNoPWJ0dmVyMQogQVJDSEZMQUdTLSQoQ09ORklHX01BUkNIX1g4Nl82NF9CVFZF
UjIpICAgICAgICAgKz0gLW1hcmNoPWJ0dmVyMgogSVNSX0FSQ0hGTEFHUy0kKENPTkZJR19NQVJD
SF9YODZfNjRfQlRWRVIyKSAgICAgKz0gLW1hcmNoPWJ0dmVyMgorCisKK2lmZXEgKCQoQ09ORklH
X0NPTVBJTEVSKSwgY2xhbmcpCitBUkNIRkxBR1M6PSQoZmlsdGVyLW91dCAtZm5vLXJlb3JkZXIt
YmxvY2tzLCQoQVJDSEZMQUdTKSkKK0lTUl9BUkNIRkxBR1M6PSQoZmlsdGVyLW91dCAtZm5vLXJl
b3JkZXItYmxvY2tzLCQoSVNSX0FSQ0hGTEFHUykpCitJU1JfQVJDSEZMQUdTOj0kKGZpbHRlci1v
dXQgLW1uby1mcC1yZXQtaW4tMzg3LCQoSVNSX0FSQ0hGTEFHUykpCitlbmRpZgpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKLS0gCjIuMTcuMQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRl
dmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFp
bG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Sun Apr 05 14:42:33 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 05 Apr 2020 14:42: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 1jL6Tp-00069c-A2; Sun, 05 Apr 2020 14:42:33 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=3ewc=5V=gmail.com=alicesuiu17@srs-us1.protection.inumbo.net>)
 id 1jL6To-00069V-Lt
 for minios-devel@lists.xen.org; Sun, 05 Apr 2020 14:42:32 +0000
X-Inumbo-ID: ade6f4d6-774b-11ea-b4f4-bc764e2007e4
Received: from mail-wm1-x341.google.com (unknown [2a00:1450:4864:20::341])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id ade6f4d6-774b-11ea-b4f4-bc764e2007e4;
 Sun, 05 Apr 2020 14:42:31 +0000 (UTC)
Received: by mail-wm1-x341.google.com with SMTP id r16so12040320wmg.5
 for <minios-devel@lists.xen.org>; Sun, 05 Apr 2020 07:42:31 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=from:to:cc:subject:date:message-id:in-reply-to:references;
 bh=+Y1UHgcaKZM1gsPc2WTAlVRqB0vXgJdyyb+o5Yf4FCg=;
 b=rRbKdUz4Jgpvj5WGy4vUIJbSQqs0ZtDv1Skb0WfnG9tr7QXsBmr8hWp7H5nPQDc8Ne
 Uy+A+1jobkdErSrZ2u0GZriD5cQrdSua1kJZ3Ho9JD8uCHhbmPOHG1t8Dh0eyADjCtNk
 3b1DkqIKah/NJI9PFwgHTDe311ZbticGlNT71XCevbbQ9ilE8iiWaYg0ICehGKHJzOTH
 Y6tKAd0API9fH309wtqfK7kvFHPBHH+mOLDKvnxP3Eyx0i0QUcG/gGihcgTHhIrCRUi3
 A1FdQkcy724uYnhJWByQbawVg1jJ00jvNnf6duEBSmwjctkScqeod7C7Amjn2YxBpWA+
 OqCg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to
 :references;
 bh=+Y1UHgcaKZM1gsPc2WTAlVRqB0vXgJdyyb+o5Yf4FCg=;
 b=XViZsuCWpMlZOuil8jQ4LORg7xuiQ/pd1C+BaGHmBqO29xS61oJJDwTtY/P08Hzt+D
 X9NhT055+Dn6I4R7FoOF8VwrGBDclw8v09otDlPlvnC3Pl8eWe2WBY5UYVrFTi5wNohu
 j8O7EzENC/79VkBLy5+zcLzeJE18XpqvWAI+tvFR6DtiI1rExJDjwfBtJAiPIELqrhVH
 s4fYD2CSfezjFAYovbGbyUOz73O9ndfom3t3O2gCZb3s816Y5MLtBZ768GhVFEB3h4f3
 WmdKZSj2PAnRzjDwp1+RhES2JT4TlIIUCpKZB2ixTSHHXmz9qMm0oGAm+5CdWVHJGjMR
 g/zg==
X-Gm-Message-State: AGi0PuY6OXhAWr9/9au+Fddh96e8e/kofnuL/Pata8BvZCcRld9kPCwP
 6Bimoi5AOvyDPwwhoEv0d3ffRFCESoM+Fw==
X-Google-Smtp-Source: APiQypI77VPWSM7xuKCVO0fgDTG7DwvZ/hoCntJ3R81UByg9jvwxSHPB67Waw2f/+q7sj8t1KlSs3A==
X-Received: by 2002:a7b:c308:: with SMTP id k8mr18976445wmj.40.1586097750484; 
 Sun, 05 Apr 2020 07:42:30 -0700 (PDT)
Received: from localhost.localdomain ([86.120.241.47])
 by smtp.gmail.com with ESMTPSA id f3sm21321579wmj.24.2020.04.05.07.42.29
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Sun, 05 Apr 2020 07:42:30 -0700 (PDT)
From: Alice Suiu <alicesuiu17@gmail.com>
To: minios-devel@lists.xen.org
Date: Sun,  5 Apr 2020 17:41:44 +0300
Message-Id: <20200405144144.9331-3-alicesuiu17@gmail.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20200405144144.9331-1-alicesuiu17@gmail.com>
References: <20200405144144.9331-1-alicesuiu17@gmail.com>
Subject: [Minios-devel] [UNIKRAFT PATCH v2 3/3] arch/*,
 build: Add support for clang compilation
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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,
 Alice Suiu <alicesuiu17@gmail.com>, 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>

SW4gb3JkZXIgdG8gcGVyZm9ybSB0aGUgY29tcGlsYXRpb24gYW5kIGxpbmtpbmcgd2l0aCBjbGFu
ZyB3aXRob3V0IHdhcm5pbmdzLCB0aGUgZm9sbG93aW5nIGZsYWdzIG11c3QgYmUgcmVtb3ZlZDoK
LWZuby10cmVlLXNyYSwgLWZtcy1leHRlbnNpb25zLCAtbm9zdGRpbmMsIC1mbm8tcmVvcmRlci1i
bG9ja3MsIC1tbm8tZnAtcmV0LWluLTM4Ny4gRnVuY3Rpb25zIHN1Y2ggYXMgaGF2ZV9jbGFuZywK
aGF2ZV9nY2MsIGNsYW5nX3ZlcnNpb25fZ2UsIGVycm9yX2lmX2NsYW5nX3ZlcnNpb25fbHQgaGF2
ZSBiZWVuIGFkZGVkIHRvIHNvbHZlIHRoZSBwcm9ibGVtLgpXaXRoIGFsbCBvZiB0aGlzIHdlIGFy
ZSBhYmxlIHRvIHJlYXJyYW5nZSB0aGUgZmxhZ3MuClNvLCBpZiB0aGVyZSBhcmUgZmxhZ3MgdGhh
dCBmYWlsIHdpdGggY2xhbmcsIHdlIGNhbiBzZWxlY3QgdGhlbSBvbmx5IGZvciBHQ0MgY29tcGls
YXRpb24uCkFsc28sIHdlIGNhbiBpbnRyb2R1Y2Ugc3BlY2lmaWMgZmxhZ3MgZm9yIGNsYW5nLgoK
U2lnbmVkLW9mZi1ieTogQWxpY2UgU3VpdSA8YWxpY2VzdWl1MTdAZ21haWwuY29tPgotLS0KIE1h
a2VmaWxlICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogTWFrZWZpbGUudWsgICAgICAgICAg
ICAgICAgICB8IDI0ICsrKysrKysrKystLS0tLS0tLS0tLS0tLQogYXJjaC94ODYveDg2XzY0L01h
a2VmaWxlLnVrICB8IDIwICsrKysrKysrLS0tLS0tLS0tLS0tCiBzdXBwb3J0L2J1aWxkL01ha2Vm
aWxlLnJ1bGVzIHwgMjUgKysrKysrKysrKysrKysrKysrKysrKysrLQogNCBmaWxlcyBjaGFuZ2Vk
LCA0MyBpbnNlcnRpb25zKCspLCAyOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9NYWtlZmls
ZSBiL01ha2VmaWxlCmluZGV4IGQ3MGIzZmMuLmE5OGQzNGMgMTAwNjQ0Ci0tLSBhL01ha2VmaWxl
CisrKyBiL01ha2VmaWxlCkBAIC01MDYsNyArNTA2LDcgQEAgaWZlcSAoIiQob3JpZ2luIENPTVBJ
TEVSKSIsICJjb21tYW5kIGxpbmUiKQogICBDT05GSUdfQ09NUElMRVIgOj0gJChDT01QSUxFUikK
IGVuZGlmCiBpZm5kZWYgQ09ORklHX0NPTVBJTEVSCi0gIENPTkZJR19DT01QSUxFUiA9IGdjYwor
ICBDT05GSUdfQ09NUElMRVIgOj0gZ2NjCiBlbmRpZgogCiAkKGV2YWwgJChjYWxsIHZlcmJvc2Vf
aW5jbHVkZSwkKENPTkZJR19VS19CQVNFKS9hcmNoLyQoVUtfRkFNSUxZKS9Db21waWxlci51aykp
CmRpZmYgLS1naXQgYS9NYWtlZmlsZS51ayBiL01ha2VmaWxlLnVrCmluZGV4IGRlZTlmMzUuLmU0
NGYxZmEgMTAwNjQ0Ci0tLSBhL01ha2VmaWxlLnVrCisrKyBiL01ha2VmaWxlLnVrCkBAIC00LDE0
ICs0LDE2IEBACiAjCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCi1DT01QRkxBR1MgICAgKz0g
LW5vc3RkaW5jIC1ub3N0ZGxpYgorQ09NUEZMQUdTICAgICs9IC1ub3N0ZGxpYgorQ09NUEZMQUdT
LSQoY2FsbCBoYXZlX2djYykgKz0gLW5vc3RkaW5jCiBDT01QRkxBR1MgICAgKz0gLVUgX19saW51
eF9fIC1VIF9fRnJlZUJTRF9fIC1VIF9fc3VuX18KLUNPTVBGTEFHUyAgICArPSAtZm5vLXN0YWNr
LXByb3RlY3RvciAtZm5vLW9taXQtZnJhbWUtcG9pbnRlciAtZm5vLXRyZWUtc3JhCitDT01QRkxB
R1MgICAgKz0gLWZuby1zdGFjay1wcm90ZWN0b3IgLWZuby1vbWl0LWZyYW1lLXBvaW50ZXIKK0NP
TVBGTEFHUy0kKGNhbGwgaGF2ZV9nY2MpICs9IC1mbm8tdHJlZS1zcmEKIENPTVBGTEFHUyAgICAr
PSAtV2FsbCAtV2V4dHJhCiAKICMgVE9ETzogUmVtb3ZlIC1mbXMtZXh0ZW5zaW9ucyBpZiBub3Qg
bmVlZGVkIGZvciBvdXIgY29kZSAoaXQgd2FzIG1vdmVkIGZyb20gQXJtNjQgYXJjaCkKLUNGTEFH
UyAgICAgICArPSAtZm1zLWV4dGVuc2lvbnMKLUFTRkxBR1MgICAgICArPSAtRF9fQVNTRU1CTFlf
XworQ0ZMQUdTLSQoY2FsbCBoYXZlX2djYykJKz0gLWZtcy1leHRlbnNpb25zCitBU0ZMQUdTICAg
ICAgCQkJKz0gLURfX0FTU0VNQkxZX18KIAogQVNJTkNMVURFUyAgICs9IC1JJChDT05GSUdfVUtf
QkFTRSkvaW5jbHVkZQogQ0lOQ0xVREVTICAgICs9IC1JJChDT05GSUdfVUtfQkFTRSkvaW5jbHVk
ZQpAQCAtMjEsOCArMjMsMTAgQEAgR09DSU5DTFVERVMgICs9IC1JJChDT05GSUdfVUtfQkFTRSkv
aW5jbHVkZQogIyBTZXQgdGhlIHRleHQgYW5kIGRhdGEgc2VjdGlvbnMgdG8gYmUgcmVhZGFibGUg
YW5kIHdyaXRhYmxlLiBBbHNvLAogIyBkbyBub3QgcGFnZS1hbGlnbiB0aGUgZGF0YSBzZWdtZW50
LiBJZiB0aGUgb3V0cHV0IGZvcm1hdCBzdXBwb3J0cwogIyBVbml4IHN0eWxlIG1hZ2ljIG51bWJl
cnMsIG1hcmsgdGhlIG91dHB1dCBhcyBPTUFHSUMuCi1MSUJMREZMQUdTICArPSAtbm9zdGRpbmMg
LW5vc3RkbGliIC1XbCwtLW9tYWdpYyAtV2wsLXIgLVdsLC1kIC1XbCwtLWJ1aWxkLWlkPW5vbmUK
LUxERkxBR1MgICAgICs9IC1ub3N0ZGluYyAtbm9zdGRsaWIgLVdsLC0tb21hZ2ljIC1XbCwtLWJ1
aWxkLWlkPW5vbmUKK0xJQkxERkxBR1MgCQkJKz0gLW5vc3RkbGliIC1XbCwtLW9tYWdpYyAtV2ws
LXIgLVdsLC1kIC1XbCwtLWJ1aWxkLWlkPW5vbmUKK0xJQkxERkxBR1MtJChjYWxsIGhhdmVfZ2Nj
KSAJKz0gLW5vc3RkaW5jCitMREZMQUdTICAgICAJCQkrPSAtbm9zdGRsaWIgLVdsLC0tb21hZ2lj
IC1XbCwtLWJ1aWxkLWlkPW5vbmUKK0xERkxBR1MtJChjYWxsIGhhdmVfZ2NjKSAJKz0gLW5vc3Rk
aW5jCiAKIENPTVBGTEFHUy0kKENPTkZJR19PUFRJTUlaRV9OT05FKSAgICAgICAgICs9IC1PMCAt
Zm5vLW9wdGltaXplLXNpYmxpbmctY2FsbHMgLWZuby10cmVlLXZlY3Rvcml6ZQogQ09NUEZMQUdT
LSQoQ09ORklHX09QVElNSVpFX1NJWkUpICAgICAgICAgKz0gLU9zCkBAIC01NSwxMSArNTksMyBA
QCBNNEZMQUdTICAgICAgKz0gLURVS19WRVJTSU9OPSQoVUtfVkVSU0lPTikuJChVS19TVUJWRVJT
SU9OKQogQ09NUEZMQUdTLSQoY2FsbCBnY2NfdmVyc2lvbl9nZSw2LDEpCSs9IC1uby1waWUKIExJ
QkxERkxBR1MtJChjYWxsIGdjY192ZXJzaW9uX2dlLDYsMSkJKz0gLW5vLXBpZQogTERGTEFHUy0k
KGNhbGwgZ2NjX3ZlcnNpb25fZ2UsNiwxKQkrPSAtbm8tcGllCi0KLWlmZXEgKCQoQ09ORklHX0NP
TVBJTEVSKSwgY2xhbmcpCi1DRkxBR1M6PSQoZmlsdGVyLW91dCAtZm1zLWV4dGVuc2lvbnMsJChD
RkxBR1MpKQotQ09NUEZMQUdTOj0kKGZpbHRlci1vdXQgLWZuby10cmVlLXNyYSwkKENPTVBGTEFH
UykpCi1DT01QRkxBR1M6PSQoZmlsdGVyLW91dCAtbm9zdGRpbmMsJChDT01QRkxBR1MpKQotTElC
TERGTEFHUzo9JChmaWx0ZXItb3V0IC1ub3N0ZGluYywkKExJQkxERkxBR1MpKQotTERGTEFHUzo9
JChmaWx0ZXItb3V0IC1ub3N0ZGluYywkKExERkxBR1MpKQotZW5kaWYKXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni94ODZfNjQvTWFrZWZpbGUudWsgYi9h
cmNoL3g4Ni94ODZfNjQvTWFrZWZpbGUudWsKaW5kZXggMWJiZTAyYy4uZWExYzgxNyAxMDA2NDQK
LS0tIGEvYXJjaC94ODYveDg2XzY0L01ha2VmaWxlLnVrCisrKyBiL2FyY2gveDg2L3g4Nl82NC9N
YWtlZmlsZS51awpAQCAtMSw3ICsxLDkgQEAKLUFSQ0hGTEFHUyAgICAgKz0gLURfX1g4Nl82NF9f
Ci1BUkNIRkxBR1MgICAgICs9IC1tNjQgLW1uby1yZWQtem9uZSAtZm5vLXJlb3JkZXItYmxvY2tz
IC1mbm8tYXN5bmNocm9ub3VzLXVud2luZC10YWJsZXMKLUlTUl9BUkNIRkxBR1MgKz0gLURfX1g4
Nl82NF9fCi1JU1JfQVJDSEZMQUdTICs9IC1tNjQgLW1uby1yZWQtem9uZSAtZm5vLXJlb3JkZXIt
YmxvY2tzIC1mbm8tYXN5bmNocm9ub3VzLXVud2luZC10YWJsZXMKK0FSQ0hGTEFHUyAgICAgCQkJ
CQkrPSAtRF9fWDg2XzY0X18KK0FSQ0hGTEFHUyAgICAgCQkJCQkrPSAtbTY0IC1tbm8tcmVkLXpv
bmUgLWZuby1hc3luY2hyb25vdXMtdW53aW5kLXRhYmxlcworQVJDSEZMQUdTLSQoY2FsbCBoYXZl
X2djYykgCQkJKz0gLWZuby1yZW9yZGVyLWJsb2NrcworSVNSX0FSQ0hGTEFHUyAJCQkJCSs9IC1E
X19YODZfNjRfXworSVNSX0FSQ0hGTEFHUyAJCQkJCSs9IC1tNjQgLW1uby1yZWQtem9uZSAtZm5v
LWFzeW5jaHJvbm91cy11bndpbmQtdGFibGVzCitJU1JfQVJDSEZMQUdTLSQoY2FsbCBoYXZlX2dj
YykJCQkrPSAtZm5vLXJlb3JkZXItYmxvY2tzCiAKIENJTkNMVURFUyAgICs9IC1JJChDT05GSUdf
VUtfQkFTRSkvYXJjaC94ODYveDg2XzY0L2luY2x1ZGUKIEFTSU5DTFVERVMgICs9IC1JJChDT05G
SUdfVUtfQkFTRSkvYXJjaC94ODYveDg2XzY0L2luY2x1ZGUKQEAgLTksNyArMTEsOCBAQCBDWFhJ
TkNMVURFUyArPSAtSSQoQ09ORklHX1VLX0JBU0UpL2FyY2gveDg2L3g4Nl82NC9pbmNsdWRlCiAK
ICMgY29tcGlsZXIgZmxhZ3MgdG8gcHJldmVudCB1c2Ugb2YgZXh0ZW5kZWQgKEZQLCBTU0UsIEFW
WCkgcmVnaXN0ZXJzLgogIyBUaGlzIGlzIGZvciBmaWxlcyB0aGF0IGNvbnRhaW4gdHJhcC9leGNl
cHRpb24vaW50ZXJydXB0IGhhbmRsZXJzCi1JU1JfQVJDSEZMQUdTICs9IC1tbm8tODAzODcgLW1u
by1mcC1yZXQtaW4tMzg3IC1tbm8tbW14IC1tbm8tc3NlIC1tbm8tYXZ4IC1tZ2VuZXJhbC1yZWdz
LW9ubHkKK0lTUl9BUkNIRkxBR1MgCQkJCQkrPSAtbW5vLTgwMzg3IC1tbm8tbW14IC1tbm8tc3Nl
IC1tbm8tYXZ4IC1tZ2VuZXJhbC1yZWdzLW9ubHkKK0lTUl9BUkNIRkxBR1MtJChjYWxsIGhhdmVf
Z2NjKSAJCSs9IC1tbm8tZnAtcmV0LWluLTM4NwogCiBBUkNIRkxBR1MtJChDT05GSUdfTUFSQ0hf
WDg2XzY0X0dFTkVSSUMpICAgICAgICArPSAtbXR1bmU9Z2VuZXJpYwogSVNSX0FSQ0hGTEFHUy0k
KENPTkZJR19NQVJDSF9YODZfNjRfR0VORVJJQykgICAgKz0gLW10dW5lPWdlbmVyaWMKQEAgLTQx
LDEwICs0NCwzIEBAIEFSQ0hGTEFHUy0kKENPTkZJR19NQVJDSF9YODZfNjRfQlRWRVIxKSAgICAg
ICAgICs9IC1tYXJjaD1idHZlcjEKIElTUl9BUkNIRkxBR1MtJChDT05GSUdfTUFSQ0hfWDg2XzY0
X0JUVkVSMSkgICAgICs9IC1tYXJjaD1idHZlcjEKIEFSQ0hGTEFHUy0kKENPTkZJR19NQVJDSF9Y
ODZfNjRfQlRWRVIyKSAgICAgICAgICs9IC1tYXJjaD1idHZlcjIKIElTUl9BUkNIRkxBR1MtJChD
T05GSUdfTUFSQ0hfWDg2XzY0X0JUVkVSMikgICAgICs9IC1tYXJjaD1idHZlcjIKLQotCi1pZmVx
ICgkKENPTkZJR19DT01QSUxFUiksIGNsYW5nKQotQVJDSEZMQUdTOj0kKGZpbHRlci1vdXQgLWZu
by1yZW9yZGVyLWJsb2NrcywkKEFSQ0hGTEFHUykpCi1JU1JfQVJDSEZMQUdTOj0kKGZpbHRlci1v
dXQgLWZuby1yZW9yZGVyLWJsb2NrcywkKElTUl9BUkNIRkxBR1MpKQotSVNSX0FSQ0hGTEFHUzo9
JChmaWx0ZXItb3V0IC1tbm8tZnAtcmV0LWluLTM4NywkKElTUl9BUkNIRkxBR1MpKQotZW5kaWYK
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zdXBwb3J0L2J1aWxkL01h
a2VmaWxlLnJ1bGVzIGIvc3VwcG9ydC9idWlsZC9NYWtlZmlsZS5ydWxlcwppbmRleCBhZjA4Zjgz
Li4xMTdmZDVhIDEwMDY0NAotLS0gYS9zdXBwb3J0L2J1aWxkL01ha2VmaWxlLnJ1bGVzCisrKyBi
L3N1cHBvcnQvYnVpbGQvTWFrZWZpbGUucnVsZXMKQEAgLTI5LDEwICsyOSwyMCBAQCBsYyA9ICQo
c3Vic3QgQSxhLCQoc3Vic3QgQixiLCQoc3Vic3QgQyxjLCQoc3Vic3QgRCxkLCQoc3Vic3QgRSxl
LCQoc3Vic3QgRixmLCQocwogIyB1cHBlciBjYXNlCiB1YyA9ICQoc3Vic3QgYSxBLCQoc3Vic3Qg
YixCLCQoc3Vic3QgYyxDLCQoc3Vic3QgZCxELCQoc3Vic3QgZSxFLCQoc3Vic3QgZixGLCQoc3Vi
c3QgZyxHLCQoc3Vic3QgaCxILCQoc3Vic3QgaSxJLCQoc3Vic3QgaixKLCQoc3Vic3QgayxLLCQo
c3Vic3QgbCxMLCQoc3Vic3QgbSxNLCQoc3Vic3QgbixOLCQoc3Vic3QgbyxPLCQoc3Vic3QgcCxQ
LCQoc3Vic3QgcSxRLCQoc3Vic3QgcixSLCQoc3Vic3QgcyxTLCQoc3Vic3QgdCxULCQoc3Vic3Qg
dSxVLCQoc3Vic3QgdixWLCQoc3Vic3QgdyxXLCQoc3Vic3QgeCxYLCQoc3Vic3QgeSxZLCQoc3Vi
c3QgeixaLCQoMSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKQogCisjIHRlc3QgaWYgR0NDIGlz
IHNldCBhcyBhIGNvbXBpbGVyCitkZWZpbmUgaGF2ZV9nY2MgPQorJChzaGVsbCBpZiBbICQoQ0Mp
ID0gZ2NjIF0gOyB0aGVuIGVjaG8geSA7IGVsc2UgZWNobyBuIDsgZmkpCitlbmRlZgorCisjIHRl
c3QgaWYgQ0xBTkcgaXMgc2V0IGFzIGEgY29tcGlsZXIKK2RlZmluZSBoYXZlX2NsYW5nID0KKyQo
c2hlbGwgaWYgWyAkKENDKSA9PSBjbGFuZyBdIDsgdGhlbiBlY2hvIHkgOyBlbHNlIGVjaG8gbiA7
IGZpKQorZW5kZWYKKwogIyB0ZXN0IHdoZXRoZXIgR0NDIHZlcnNpb24gaXMgZ3JlYXRlciB0aGFu
IG9yIGVxdWFsIHRvIHRoZSBtaW5pbXVtIHJlcXVpcmVtZW50CiAjIGdjY192ZXJzaW9uX2dlICRn
Y2NfbWFqb3IsJGdjY19taW5vcgogZGVmaW5lIGdjY192ZXJzaW9uX2dlID0KLSQoc2hlbGwgaWYg
WyAkKENDX1ZFUl9NQUpPUikgLWd0ICQoMSkgXSB8fCAoWyAkKENDX1ZFUl9NQUpPUikgLWVxICQo
MSkgXSAmJiBbICQoQ0NfVkVSX01JTk9SKSAtZ2UgJCgyKSBdKSA7IHRoZW4gZWNobyB5IDsgZmkp
CiskKHNoZWxsIGlmIFsgJChjYWxsIGhhdmVfZ2NjKSA9IHkgXSA7IHRoZW4gaWYgWyAkKENDX1ZF
Ul9NQUpPUikgLWd0ICQoMSkgXSB8fCAoWyAkKENDX1ZFUl9NQUpPUikgLWVxICQoMSkgXSAmJiBb
ICQoQ0NfVkVSX01JTk9SKSAtZ2UgJCgyKSBdKSA7IHRoZW4gZWNobyB5IDsgZmkgOyBlbHNlIGVj
aG8gbiA7IGZpKQogZW5kZWYKIAogIyBwcmludCBlcnJvciBhbmQgc3RvcCBidWlsZCB3aGVuIEdD
QyB2ZXJzaW9uIGRvZXNuJ3QgbWVldCB0aGUgbWluaW11bSByZXF1aXJlbWVudApAQCAtNDIsNiAr
NTIsMTkgQEAgJChpZiAkKGNhbGwgZ2NjX3ZlcnNpb25fZ2UsJCgxKSwkKDIpKSwsXAogICAgICAk
KGVycm9yIFJlcXVpcmUgR0NDIHZlcnNpb24gPj0gJCgxKS4kKDIpIGZvdW5kICQoQ0NfVkVSX01B
Sk9SKS4kKENDX1ZFUl9NSU5PUikpKQogZW5kZWYKIAorIyB0ZXN0IHdoZXRoZXIgQ0xBTkcgIHZl
cnNpb24gaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSBtaW5pbXVtIHJlcXVpcmVtZW50
CisjIGNsYW5nX3ZlcnNpb25fZ2UgJGNsYW5nX21ham9yLCAkY2xhbmdfbWlub3IKK2RlZmluZSBj
bGFuZ192ZXJzaW9uX2dlID0KKyQoc2hlbGwgaWYgWyAkKGNhbGwgaGF2ZV9jbGFuZykgPSB5IF0g
OyB0aGVuIGlmIFsgJChDQ19WRVJfTUFKT1IpIC1ndCAkKDEpIF0gfHwgKFsgJChDQ19WRVJfTUFK
T1IpIC1lcSAkKDEpIF0gJiYgWyAkKENDX1ZFUl9NSU5PUikgLWdlICQoMikgXSkgOyB0aGVuIGVj
aG8geSA7IGZpIDsgZWxzZSBlY2hvIG4gOyBmaSkKK2VuZGVmCisKKyMgcHJpbnQgZXJyb3IgYW5k
IHN0b3AgYnVpbGQgd2hlbiBDTEFORyB2ZXJzaW9uIGRvZXNuJ3QgbWVldCB0aGUgbWluaW11bSBy
ZXF1aXJlbWVudAorIyBlcnJvcl9pZl9jbGFuZ192ZXJzaW9uX2x0ICRjbGFuZ19tYWpvciwkY2xh
bmdfbWlub3IuCitkZWZpbmUgZXJyb3JfaWZfY2xhbmdfdmVyc2lvbl9sdCA9CiskKGlmICQoY2Fs
bCBjbGFuZ192ZXJzaW9uX2dlLCQoMSksJCgyKSksLFwKKyAgICAgJChlcnJvciBSZXF1aXJlIENM
QU5HIHZlcnNpb24gPj0gJCgxKS4kKDIpIGZvdW5kICQoQ0NfVkVSX01BSk9SKS4kKENDX1ZFUl9N
SU5PUikpKQorZW5kZWYKKwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMKICMgUGF0aHMgYW5k
IEZpbGVuYW1lcwotLSAKMi4xNy4xCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlz
dHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xp
c3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Sun Apr 05 18:16:51 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 05 Apr 2020 18:16: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 1jL9pA-0006Ra-ON; Sun, 05 Apr 2020 18:16:48 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=3ewc=5V=gmail.com=alicesuiu17@srs-us1.protection.inumbo.net>)
 id 1jL9p9-0006RV-0Q
 for minios-devel@lists.xen.org; Sun, 05 Apr 2020 18:16:47 +0000
X-Inumbo-ID: 9be728e6-7769-11ea-b58d-bc764e2007e4
Received: from mail-vs1-xe44.google.com (unknown [2607:f8b0:4864:20::e44])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 9be728e6-7769-11ea-b58d-bc764e2007e4;
 Sun, 05 Apr 2020 18:16:46 +0000 (UTC)
Received: by mail-vs1-xe44.google.com with SMTP id y138so8368538vsy.0
 for <minios-devel@lists.xen.org>; Sun, 05 Apr 2020 11:16:45 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=mime-version:references:in-reply-to:from:date:message-id:subject:to
 :cc; bh=/CTKxaqP5ou1vOtzRwpwD20LWfZqs3ugEvF9bqCqcdQ=;
 b=Ruv2B/R9L2o2OSaQfqVTpQlhjaFoWUbzOm6yVEQefermNWX9yQFwbs8/3/vyLfOm2s
 2Q0FNx0gf/WdQEiVc/vUHyOR+ZhizzKGXP0BDA3sFtoe/K/vJhM6GTLYezVw1Cc0axNM
 GoRh2di7HJgcpEbr9P2RegzbwKciLf44+5aQQdv8Jopf1wkqGRX8BhMDMbtSSEWUka+/
 9a8XL47Cer6ps0zTxPgdkqXvyFM1xO+3eWiFyaE8IRNSPcJFOvSFPuQ2247V5lAOSfpW
 s2Oxa3NYaQWQx9+717MO8EXnLRCNC6QGcAdTN5FhnG27oPk5OGqS+xEzi9IkL05PlPEq
 b6TQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:mime-version:references:in-reply-to:from:date
 :message-id:subject:to:cc;
 bh=/CTKxaqP5ou1vOtzRwpwD20LWfZqs3ugEvF9bqCqcdQ=;
 b=c9Dq1UWnYiIgxlqrtt5QvIQirO0o6xKv1cM1GGXA9EYrqVt6zWTdLbmKq1TVLIV8jA
 3nvhgMpZFiptBTyEldnH4PrH6ir7IfcZJcwAPWWPeSU94Od0Kk6MVNS9ZXTSNbGULJox
 22p+mj2M30npouIDPHjKlu5wQC3VNmhovx7Cbb/2n9QsgQbyPvrOagbJELyf2uSeCSSY
 cv2bN72yZKwrgsE0i/rKBNYnAIBsMME+D9nLEjqoEH8jGgHk28TcmlMTT31tGVHyb7GA
 tLSFgSlH60mYrkEVCYFnnUgZgXaNRcb1+REj+pziZW897fLRw7nHWfpTfSsM+kyBnJ3C
 uM/A==
X-Gm-Message-State: AGi0PuaVnvRBnQnfnXsf30NST1KMxcGNSAbJU8ydfUDRnYV/3IEaLhkn
 rxaWhnlTfc35iPaS1IFkFnN1AtQwUqcTzAfkPcPzyhij724B7w==
X-Google-Smtp-Source: APiQypKDE+bXtzCaG80KhdV+iQuxlhrYwz6eLuwh3CLTQbZysdjuW/Gs3siBrSZUf6l5Pf/wIPzvkclAfWL7fjm/1kg=
X-Received: by 2002:a05:6102:236f:: with SMTP id
 o15mr12653587vsa.103.1586110605528; 
 Sun, 05 Apr 2020 11:16:45 -0700 (PDT)
MIME-Version: 1.0
References: <20200301191336.24672-1-alicesuiu17@gmail.com>
 <20200301191336.24672-2-alicesuiu17@gmail.com>
 <ca5ecb2f-8f76-9bf0-aac9-72bfa5bb2438@neclab.eu>
In-Reply-To: <ca5ecb2f-8f76-9bf0-aac9-72bfa5bb2438@neclab.eu>
From: Alice Suiu <alicesuiu17@gmail.com>
Date: Sun, 5 Apr 2020 21:16:34 +0300
Message-ID: <CAD2TrnC7Z9_bKk5gFx2U=PmyTJyaxfCsVSPY_AG+RsLLAGfLCg@mail.gmail.com>
To: Simon Kuenzer <simon.kuenzer@neclab.eu>
Subject: Re: [Minios-devel] [UNIKRAFT/NEWLIB PATCH] include/endian.h Define
 the __bswap16, __bswap32,
 __bswap64 builtin functions only if the compilation is done with gcc
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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, florian.schmidt@neclab.eu,
 minios-devel@lists.xen.org, costin.lupu@cs.pub.ro
Content-Type: multipart/mixed; boundary="===============7052072497959877869=="
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

--===============7052072497959877869==
Content-Type: multipart/alternative; boundary="00000000000037940c05a28f2774"

--00000000000037940c05a28f2774
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Hi Simon,

Yes, GCC doesn't have these builtin functions, but clang has them. When I
use nolibc + clang, I don't receive errors. But when I use newlib [1] +
clang [2], I receive errors because both have these builtin functions.

[1] https://github.com/unikraft/lib-newlib/blob/master/include/endian.h
[2] https://clang.llvm.org/docs/LanguageExtensions.html

Thanks,

Alice


=C3=8En joi, 2 apr. 2020 la 19:56, Simon Kuenzer <simon.kuenzer@neclab.eu> =
a
scris:

> Hi Alice,
>
> I have a question to this patch:
>
> On 01.03.20 20:13, alicesuiu wrote:
> > Signed-off-by: Alice Suiu <alicesuiu17@gmail.com>
> > ---
> >   include/endian.h | 2 ++
> >   1 file changed, 2 insertions(+)
> >
> > diff --git a/include/endian.h b/include/endian.h
> > index 3c8a752..63d3650 100644
> > --- a/include/endian.h
> > +++ b/include/endian.h
> > @@ -41,6 +41,7 @@
> >
> >   #include <stdint.h>
> >
> > +#ifndef __clang__
> >   static inline uint16_t __bswap16(uint16_t __x)
> >   {
> >       return __x<<8 | __x>>8;
> > @@ -55,6 +56,7 @@ static inline uint64_t __bswap64(uint64_t __x)
> >   {
> >       return (__bswap32(__x)+0ULL)<<32 | __bswap32(__x>>32);
> >   }
> > +#endif
>
> Doesn't GCC has a builtin for this and does clang has one, too? We also
> need to make sure that clang is not introducing libc replacements as
> default. On GCC that broke the printing with nolibc...
>
> >
> >   #if __BYTE_ORDER =3D=3D __LITTLE_ENDIAN
> >   #define htobe16(x) __bswap16(x)
> >
>
> Thanks,
>
> Simon
>

--00000000000037940c05a28f2774
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div>Hi Simon,</div><div><br></div><div>Yes, GCC doesn&#39=
;t have these builtin functions, but clang has them. When I use nolibc + cl=
ang, I don&#39;t receive errors. But when I use newlib [1] + clang [2], I r=
eceive errors because both have these builtin functions.</div><div><br></di=
v><div>[1] <a href=3D"https://github.com/unikraft/lib-newlib/blob/master/in=
clude/endian.h">https://github.com/unikraft/lib-newlib/blob/master/include/=
endian.h</a></div><div>[2] <a href=3D"https://clang.llvm.org/docs/LanguageE=
xtensions.html">https://clang.llvm.org/docs/LanguageExtensions.html</a></di=
v><div><br></div><div>Thanks,</div><div><br></div><div>Alice<br></div><div>=
<br></div></div><br><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gm=
ail_attr">=C3=8En joi, 2 apr. 2020 la 19:56, Simon Kuenzer &lt;<a href=3D"m=
ailto:simon.kuenzer@neclab.eu">simon.kuenzer@neclab.eu</a>&gt; a scris:<br>=
</div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;b=
order-left:1px solid rgb(204,204,204);padding-left:1ex">Hi Alice,<br>
<br>
I have a question to this patch:<br>
<br>
On 01.03.20 20:13, alicesuiu wrote:<br>
&gt; Signed-off-by: Alice Suiu &lt;<a href=3D"mailto:alicesuiu17@gmail.com"=
 target=3D"_blank">alicesuiu17@gmail.com</a>&gt;<br>
&gt; ---<br>
&gt;=C2=A0 =C2=A0include/endian.h | 2 ++<br>
&gt;=C2=A0 =C2=A01 file changed, 2 insertions(+)<br>
&gt; <br>
&gt; diff --git a/include/endian.h b/include/endian.h<br>
&gt; index 3c8a752..63d3650 100644<br>
&gt; --- a/include/endian.h<br>
&gt; +++ b/include/endian.h<br>
&gt; @@ -41,6 +41,7 @@<br>
&gt;=C2=A0 =C2=A0<br>
&gt;=C2=A0 =C2=A0#include &lt;stdint.h&gt;<br>
&gt;=C2=A0 =C2=A0<br>
&gt; +#ifndef __clang__<br>
&gt;=C2=A0 =C2=A0static inline uint16_t __bswap16(uint16_t __x)<br>
&gt;=C2=A0 =C2=A0{<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0return __x&lt;&lt;8 | __x&gt;&gt;8;<br>
&gt; @@ -55,6 +56,7 @@ static inline uint64_t __bswap64(uint64_t __x)<br>
&gt;=C2=A0 =C2=A0{<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0return (__bswap32(__x)+0ULL)&lt;&lt;32 | __b=
swap32(__x&gt;&gt;32);<br>
&gt;=C2=A0 =C2=A0}<br>
&gt; +#endif<br>
<br>
Doesn&#39;t GCC has a builtin for this and does clang has one, too? We also=
 <br>
need to make sure that clang is not introducing libc replacements as <br>
default. On GCC that broke the printing with nolibc...<br>
<br>
&gt;=C2=A0 =C2=A0<br>
&gt;=C2=A0 =C2=A0#if __BYTE_ORDER =3D=3D __LITTLE_ENDIAN<br>
&gt;=C2=A0 =C2=A0#define htobe16(x) __bswap16(x)<br>
&gt; <br>
<br>
Thanks,<br>
<br>
Simon<br>
</blockquote></div>

--00000000000037940c05a28f2774--


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

X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRl
dmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6
Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

--===============7052072497959877869==--


From minios-devel-bounces@lists.xenproject.org Sun Apr 05 19:25:37 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 05 Apr 2020 19:25: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 1jLAtj-0003aH-7c; Sun, 05 Apr 2020 19:25:35 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=3ewc=5V=gmail.com=alicesuiu17@srs-us1.protection.inumbo.net>)
 id 1jLAti-0003aC-Hp
 for minios-devel@lists.xen.org; Sun, 05 Apr 2020 19:25:34 +0000
X-Inumbo-ID: 37d3daca-7773-11ea-b4f4-bc764e2007e4
Received: from mail-vk1-xa44.google.com (unknown [2607:f8b0:4864:20::a44])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 37d3daca-7773-11ea-b4f4-bc764e2007e4;
 Sun, 05 Apr 2020 19:25:33 +0000 (UTC)
Received: by mail-vk1-xa44.google.com with SMTP id p123so3428897vkg.1
 for <minios-devel@lists.xen.org>; Sun, 05 Apr 2020 12:25:33 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=mime-version:references:in-reply-to:from:date:message-id:subject:to
 :cc; bh=nU3zypcmDdtB/y9dNL68Vur7ZR/7zRHTPSAXeRnwR3Y=;
 b=NG7ScTjpFri4EL9G6eTW9f8j4rACBMJD77Fkvu/UXfnc/iNjqZs174eLMsrB5MuPtU
 WGfv12MezLW7r3da1uKM8ESovnF0Sy76eFqVM2hXMg+urMiC64tV1gui3Q030VFOJgvE
 B7ISv83bBtW0CD+du1tYD3wxnve69/yojK/c34B+73jRx+hdUpTgg22CznMHHIn5Wqz1
 Nufybj4zSAT/W+hYnA3njAvPcMbvlOtN90SC6AUdS20cW6zc+cX+y0SpnBgmVstF+yR+
 +g7hTx670KJtJKh5zvyBrCqaqmV2UWHb24mx7mx6i7I3C5+OqYT6UVSTChv1PT2dm6f/
 P+TA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:mime-version:references:in-reply-to:from:date
 :message-id:subject:to:cc;
 bh=nU3zypcmDdtB/y9dNL68Vur7ZR/7zRHTPSAXeRnwR3Y=;
 b=edzX4Sjtzrv8ZfWMitvFGLxsLXtJO6b7YQNYzGt405G0wlNpBVSODM4CJQ7ZsVx62L
 XjVTZLGJuAd3joP0PyOs5r984TzA/0KYIY1FigrSufvS4nCje+K9UxGSBUV816zIWQZH
 gkx/gS+9yn0zgfXsmLTB1RGibLuNqCQ37r2jNNhJUQtT6L6TqaCqzANJr3+ozF6hwiKn
 lzpKJpC5jv3sXbSXiJ6ikQWmSRTWFgzsp0eOAKeuu+uUcgB10hERABllMJk1pIjXMuGs
 dF1WA4FGUmcqZZqkeIDYmCxyrekMsFxfZLoc6NVmn4TaEqlmpfgBvPRz5YXQjf042P+l
 BTqQ==
X-Gm-Message-State: AGi0PuZXAqEkANXKZiTBTUj/WBnQ9A3Jglv9Inh/3FZbPoCoz0VZV2E3
 oULqW0ZKCG7ZYulkMBjDWZvrxbni9iizQBc70sv6al0WulVWQQ==
X-Google-Smtp-Source: APiQypI1Z61jzvuoarcGqHIDTgDmmYJypT4Xq1Eo1/TrD1VV7NvOxYQhtVlkGMu9QMCRmigKbMeymmUyY+vlxDQ7UD8=
X-Received: by 2002:a1f:bd93:: with SMTP id n141mr12564651vkf.64.1586114732472; 
 Sun, 05 Apr 2020 12:25:32 -0700 (PDT)
MIME-Version: 1.0
References: <20200301191336.24672-1-alicesuiu17@gmail.com>
 <49fcbbd4-c74a-36f1-d346-f837778b1d10@neclab.eu>
In-Reply-To: <49fcbbd4-c74a-36f1-d346-f837778b1d10@neclab.eu>
From: Alice Suiu <alicesuiu17@gmail.com>
Date: Sun, 5 Apr 2020 22:25:21 +0300
Message-ID: <CAD2TrnDFkHFd_qcHzbq0UGVVJO-c=yuqGLXUSZVLLpyEqnwCUg@mail.gmail.com>
To: Simon Kuenzer <simon.kuenzer@neclab.eu>
Subject: Re: [Minios-devel] [UNIKRAFT PATCH] Add support for clang
 compilation
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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, florian.schmidt@neclab.eu,
 minios-devel@lists.xen.org, costin.lupu@cs.pub.ro
Content-Type: multipart/mixed; boundary="===============4949129647340375811=="
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

--===============4949129647340375811==
Content-Type: multipart/alternative; boundary="00000000000033beee05a2901da2"

--00000000000033beee05a2901da2
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Hi Simon,

Sounds good to me. Thank you very much for advices, I took them into
account and implemented them.

Thanks,
Alice

=C3=8En joi, 2 apr. 2020 la 19:54, Simon Kuenzer <simon.kuenzer@neclab.eu> =
a
scris:

> Hi Alice,
>
> thanks a lot for this work! It will (unfortunately) need a some rtework
> because we had recently changes on how build flags are propagated.
>
> On 01.03.20 20:13, alicesuiu wrote:
> > Remove some flags (-fno-tree-sra, -mno-fp-ret-in-387,
> -fno-reorder-blocks) to add support for clang compilation.
> > Add the CONFIG_COMPILER variable to define the compiler to be used (gcc
> or clang). By default the variable is set to gcc.
> > Use 'make COMPILER=3Dclang' to compile with clang.
> >
> > Signed-off-by: Alice Suiu <alicesuiu17@gmail.com>
> > ---
> >   Makefile                    | 12 ++++++++++--
> >   Makefile.uk                 |  6 +++---
> >   arch/x86/x86_64/Makefile.uk |  6 +++---
> >   3 files changed, 16 insertions(+), 8 deletions(-)
> >
> > diff --git a/Makefile b/Makefile
> > index 84adb16..5828891 100644
> > --- a/Makefile
> > +++ b/Makefile
> > @@ -481,11 +481,19 @@ ifneq ("$(origin CROSS_COMPILE)","undefined")
> >   CONFIG_CROSS_COMPILE :=3D $(CROSS_COMPILE:"%"=3D%)
> >   endif
> >
> > +# Use 'make COMPILER=3Dclang' to compile with clang
> > +ifeq ("$(origin COMPILER)", "command line")
> > +  CONFIG_COMPILER :=3D $(COMPILER)
> > +endif
> > +ifndef CONFIG_COMPILER
> > +  CONFIG_COMPILER =3D gcc
> > +endif
> > +
> >   include $(CONFIG_UK_BASE)/arch/$(UK_FAMILY)/Compiler.uk
> >
> >   # Make variables (CC, etc...)
> > -LD           :=3D $(CONFIG_CROSS_COMPILE)gcc
> > -CC           :=3D $(CONFIG_CROSS_COMPILE)gcc
> > +LD           :=3D $(CONFIG_CROSS_COMPILE)$(CONFIG_COMPILER)
> > +CC           :=3D $(CONFIG_CROSS_COMPILE)$(CONFIG_COMPILER)
> >   CPP         :=3D $(CC)
> >   CXX         :=3D $(CPP)
> >   GOC         :=3D $(CONFIG_CROSS_COMPILE)gccgo-7
>
> I guess Go can also compiled with clang? It is fine to add support
> later, I am asking out of curiosity.
>
> > diff --git a/Makefile.uk b/Makefile.uk
> > index 3f01a25..3890d62 100644
> > --- a/Makefile.uk
> > +++ b/Makefile.uk
> > @@ -8,17 +8,17 @@ ASFLAGS     +=3D -U __linux__ -U __FreeBSD__ -U __sun=
__
> -D__ASSEMBLY__
> >   ASINCLUDES  +=3D -nostdinc -nostdlib -I$(CONFIG_UK_BASE)/include
> >
> >   CFLAGS      +=3D -U __linux__ -U __FreeBSD__ -U __sun__
> > -CFLAGS      +=3D -fno-stack-protector -fno-omit-frame-pointer
> -fno-tree-sra
> > +CFLAGS      +=3D -fno-stack-protector -fno-omit-frame-pointer
> >   CFLAGS      +=3D -Wall -Wextra
> >   CINCLUDES   +=3D -nostdinc -nostdlib -I$(CONFIG_UK_BASE)/include
> >
> >   CXXFLAGS    +=3D -U __linux__ -U __FreeBSD__ -U __sun__
> > -CXXFLAGS    +=3D -fno-stack-protector -fno-omit-frame-pointer
> -fno-tree-sra
> > +CXXFLAGS    +=3D -fno-stack-protector -fno-omit-frame-pointer
> >   CXXFLAGS    +=3D -Wall -Wextra
> >   CXXINCLUDES +=3D -nostdinc -nostdlib -I$(CONFIG_UK_BASE)/include
> >
> >   GOCFLAGS    +=3D -U __linux__ -U __FreeBSD__ -U __sun__
> > -GOCFLAGS    +=3D -fno-stack-protector -fno-omit-frame-pointer
> -fno-tree-sra
> > +GOCFLAGS    +=3D -fno-stack-protector -fno-omit-frame-pointer
> >   GOCFLAGS    +=3D -fno-split-stack -Wall -Wextra
> >   GOCINCLUDES +=3D -nostdinc -nostdlib -I$(CONFIG_UK_BASE)/include
>
> Please note that all language-independent flags moved to:
> ARCHFLAGS, ISR_ARCHFLAGS, COMPFLAGS
>
> >
> > diff --git a/arch/x86/x86_64/Makefile.uk b/arch/x86/x86_64/Makefile.uk
> > index 8ec7d6b..285a4e9 100644
> > --- a/arch/x86/x86_64/Makefile.uk
> > +++ b/arch/x86/x86_64/Makefile.uk
> > @@ -1,9 +1,9 @@
> >   ASFLAGS  +=3D -D__X86_64__
> >   ASFLAGS  +=3D -m64
> >   CFLAGS   +=3D -D__X86_64__
> > -CFLAGS   +=3D -m64 -mno-red-zone -fno-reorder-blocks
> -fno-asynchronous-unwind-tables
> > +CFLAGS   +=3D -m64 -mno-red-zone -fno-asynchronous-unwind-tables
> >   CXXFLAGS +=3D -D__X86_64__
> > -CXXFLAGS +=3D -m64 -mno-red-zone -fno-reorder-blocks
> -fno-asynchronous-unwind-tables
> > +CXXFLAGS +=3D -m64 -mno-red-zone -fno-asynchronous-unwind-tables
> >
>
> Also those, while we still have the language-specific flags (ASFLAGS,
> CFLAGS, etc.). We separate them now.
>
> >   CINCLUDES   +=3D -I$(CONFIG_UK_BASE)/arch/x86/x86_64/include
> >   ASINCLUDES  +=3D -I$(CONFIG_UK_BASE)/arch/x86/x86_64/include
> > @@ -11,7 +11,7 @@ CXXINCLUDES +=3D
> -I$(CONFIG_UK_BASE)/arch/x86/x86_64/include
> >
> >   # compiler flags to prevent use of extended (FP, SSE, AVX) registers.
> >   # This is for files that contain trap/exception/interrupt handlers
> > -NO_X86_EXTREGS_FLAGS :=3D -mno-80387 -mno-fp-ret-in-387 -mno-mmx -mno-=
sse
> -mno-avx
> > +NO_X86_EXTREGS_FLAGS :=3D -mno-80387 -mno-mmx -mno-sse -mno-avx
> >
> >   ASFLAGS-$(CONFIG_MARCH_X86_64_GENERIC)     +=3D -mtune=3Dgeneric
> >   CFLAGS-$(CONFIG_MARCH_X86_64_GENERIC)      +=3D -mtune=3Dgeneric
> >
>
> I think we should add and modify the compiler-related Makefile rules
> within `support/build/Makefile.rules`. We have there so far:
>
>    gcc_version_ge    returns 'y' if current GCC version is >=3D 'y',
>                      otherwise 'n'
>    gcc_version_lt    returns 'y' if current GCC version is < 'y',
>                      otherwise 'n'
>
> These two are used to populate flags according to the current used GCC
> version. For instance:
>    COMPFLAGS-$(call gcc_version_ge,7,0) +=3D -flag_supported_with_gcc70
>
>    error_if_gcc_version_lt  Will output an error that a newer GCC
>                             is needed
>
> I think I would add two functions that return 'y' and 'n' when clang and
> GCC is detected:
>
>     have_clang
>     have_gcc
>
> Using those, it probably makes sense to update the three existing
> functions so that the first two return 'n' and the last one never fails
> when have_gcc returned 'n' (when clang is used). Additionally, I would
> add the same set of functions for clang:
>
>     clang_version_ge
>     clang_version_le
>     error_if_clang_version_lt
>
> They behave equivalently to the gcc functions so that nothing breaks
> when GCC is used instead of clang (have_clang).
>
> With all of this you are able to re-coordinate the flags. All flags that
> fail with clang, you would keep for GCC with
>
>     COMPFLAGS-$(call have_gcc) +=3D -gcc_only_flag
>
> With this you can also introduce clang specific flags and it can be
> applied to all flag variables, including the language specific ones and
> the ones concerning linking.
>
> What do you think?
>
> Thanks,
>
> Simon
>

--00000000000033beee05a2901da2
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div>Hi Simon,</div><div><br></div><div>Sounds good to me.=
 <span class=3D"gmail-tlid-translation gmail-translation" lang=3D"en"><span=
 title=3D"" class=3D"gmail-">Thank you very much for advices, I took them i=
nto account and implemented them.</span></span></div><div><span class=3D"gm=
ail-tlid-translation gmail-translation" lang=3D"en"><span title=3D"" class=
=3D"gmail-"><br></span></span></div><div><span class=3D"gmail-tlid-translat=
ion gmail-translation" lang=3D"en"><span title=3D"" class=3D"gmail-">Thanks=
,</span></span></div><div><span class=3D"gmail-tlid-translation gmail-trans=
lation" lang=3D"en"><span title=3D"" class=3D"gmail-">Alice<br></span></spa=
n></div></div><br><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmai=
l_attr">=C3=8En joi, 2 apr. 2020 la 19:54, Simon Kuenzer &lt;<a href=3D"mai=
lto:simon.kuenzer@neclab.eu">simon.kuenzer@neclab.eu</a>&gt; a scris:<br></=
div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;bor=
der-left:1px solid rgb(204,204,204);padding-left:1ex">Hi Alice,<br>
<br>
thanks a lot for this work! It will (unfortunately) need a some rtework <br=
>
because we had recently changes on how build flags are propagated.<br>
<br>
On 01.03.20 20:13, alicesuiu wrote:<br>
&gt; Remove some flags (-fno-tree-sra, -mno-fp-ret-in-387, -fno-reorder-blo=
cks) to add support for clang compilation.<br>
&gt; Add the CONFIG_COMPILER variable to define the compiler to be used (gc=
c or clang). By default the variable is set to gcc.<br>
&gt; Use &#39;make COMPILER=3Dclang&#39; to compile with clang.<br>
&gt; <br>
&gt; Signed-off-by: Alice Suiu &lt;<a href=3D"mailto:alicesuiu17@gmail.com"=
 target=3D"_blank">alicesuiu17@gmail.com</a>&gt;<br>
&gt; ---<br>
&gt;=C2=A0 =C2=A0Makefile=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 | 12 ++++++++++--<br>
&gt;=C2=A0 =C2=A0Makefile.uk=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0|=C2=A0 6 +++---<br>
&gt;=C2=A0 =C2=A0arch/x86/x86_64/Makefile.uk |=C2=A0 6 +++---<br>
&gt;=C2=A0 =C2=A03 files changed, 16 insertions(+), 8 deletions(-)<br>
&gt; <br>
&gt; diff --git a/Makefile b/Makefile<br>
&gt; index 84adb16..5828891 100644<br>
&gt; --- a/Makefile<br>
&gt; +++ b/Makefile<br>
&gt; @@ -481,11 +481,19 @@ ifneq (&quot;$(origin CROSS_COMPILE)&quot;,&quot=
;undefined&quot;)<br>
&gt;=C2=A0 =C2=A0CONFIG_CROSS_COMPILE :=3D $(CROSS_COMPILE:&quot;%&quot;=3D=
%)<br>
&gt;=C2=A0 =C2=A0endif<br>
&gt;=C2=A0 =C2=A0<br>
&gt; +# Use &#39;make COMPILER=3Dclang&#39; to compile with clang<br>
&gt; +ifeq (&quot;$(origin COMPILER)&quot;, &quot;command line&quot;)<br>
&gt; +=C2=A0 CONFIG_COMPILER :=3D $(COMPILER)<br>
&gt; +endif<br>
&gt; +ifndef CONFIG_COMPILER<br>
&gt; +=C2=A0 CONFIG_COMPILER =3D gcc<br>
&gt; +endif<br>
&gt; +<br>
&gt;=C2=A0 =C2=A0include $(CONFIG_UK_BASE)/arch/$(UK_FAMILY)/Compiler.uk<br=
>
&gt;=C2=A0 =C2=A0<br>
&gt;=C2=A0 =C2=A0# Make variables (CC, etc...)<br>
&gt; -LD=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0:=3D $(CONFIG_CROSS_COMPIL=
E)gcc<br>
&gt; -CC=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0:=3D $(CONFIG_CROSS_COMPIL=
E)gcc<br>
&gt; +LD=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0:=3D $(CONFIG_CROSS_COMPIL=
E)$(CONFIG_COMPILER)<br>
&gt; +CC=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0:=3D $(CONFIG_CROSS_COMPIL=
E)$(CONFIG_COMPILER)<br>
&gt;=C2=A0 =C2=A0CPP=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0:=3D $(CC)<br>
&gt;=C2=A0 =C2=A0CXX=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0:=3D $(CPP)<br>
&gt;=C2=A0 =C2=A0GOC=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0:=3D $(CONFIG_CROSS_C=
OMPILE)gccgo-7<br>
<br>
I guess Go can also compiled with clang? It is fine to add support <br>
later, I am asking out of curiosity.<br>
<br>
&gt; diff --git a/Makefile.uk b/Makefile.uk<br>
&gt; index 3f01a25..3890d62 100644<br>
&gt; --- a/Makefile.uk<br>
&gt; +++ b/Makefile.uk<br>
&gt; @@ -8,17 +8,17 @@ ASFLAGS=C2=A0 =C2=A0 =C2=A0+=3D -U __linux__ -U __Fr=
eeBSD__ -U __sun__ -D__ASSEMBLY__<br>
&gt;=C2=A0 =C2=A0ASINCLUDES=C2=A0 +=3D -nostdinc -nostdlib -I$(CONFIG_UK_BA=
SE)/include<br>
&gt;=C2=A0 =C2=A0<br>
&gt;=C2=A0 =C2=A0CFLAGS=C2=A0 =C2=A0 =C2=A0 +=3D -U __linux__ -U __FreeBSD_=
_ -U __sun__<br>
&gt; -CFLAGS=C2=A0 =C2=A0 =C2=A0 +=3D -fno-stack-protector -fno-omit-frame-=
pointer -fno-tree-sra<br>
&gt; +CFLAGS=C2=A0 =C2=A0 =C2=A0 +=3D -fno-stack-protector -fno-omit-frame-=
pointer<br>
&gt;=C2=A0 =C2=A0CFLAGS=C2=A0 =C2=A0 =C2=A0 +=3D -Wall -Wextra<br>
&gt;=C2=A0 =C2=A0CINCLUDES=C2=A0 =C2=A0+=3D -nostdinc -nostdlib -I$(CONFIG_=
UK_BASE)/include<br>
&gt;=C2=A0 =C2=A0<br>
&gt;=C2=A0 =C2=A0CXXFLAGS=C2=A0 =C2=A0 +=3D -U __linux__ -U __FreeBSD__ -U =
__sun__<br>
&gt; -CXXFLAGS=C2=A0 =C2=A0 +=3D -fno-stack-protector -fno-omit-frame-point=
er -fno-tree-sra<br>
&gt; +CXXFLAGS=C2=A0 =C2=A0 +=3D -fno-stack-protector -fno-omit-frame-point=
er<br>
&gt;=C2=A0 =C2=A0CXXFLAGS=C2=A0 =C2=A0 +=3D -Wall -Wextra<br>
&gt;=C2=A0 =C2=A0CXXINCLUDES +=3D -nostdinc -nostdlib -I$(CONFIG_UK_BASE)/i=
nclude<br>
&gt;=C2=A0 =C2=A0<br>
&gt;=C2=A0 =C2=A0GOCFLAGS=C2=A0 =C2=A0 +=3D -U __linux__ -U __FreeBSD__ -U =
__sun__<br>
&gt; -GOCFLAGS=C2=A0 =C2=A0 +=3D -fno-stack-protector -fno-omit-frame-point=
er -fno-tree-sra<br>
&gt; +GOCFLAGS=C2=A0 =C2=A0 +=3D -fno-stack-protector -fno-omit-frame-point=
er<br>
&gt;=C2=A0 =C2=A0GOCFLAGS=C2=A0 =C2=A0 +=3D -fno-split-stack -Wall -Wextra<=
br>
&gt;=C2=A0 =C2=A0GOCINCLUDES +=3D -nostdinc -nostdlib -I$(CONFIG_UK_BASE)/i=
nclude<br>
<br>
Please note that all language-independent flags moved to:<br>
ARCHFLAGS, ISR_ARCHFLAGS, COMPFLAGS<br>
<br>
&gt;=C2=A0 =C2=A0<br>
&gt; diff --git a/arch/x86/x86_64/Makefile.uk b/arch/x86/x86_64/Makefile.uk=
<br>
&gt; index 8ec7d6b..285a4e9 100644<br>
&gt; --- a/arch/x86/x86_64/Makefile.uk<br>
&gt; +++ b/arch/x86/x86_64/Makefile.uk<br>
&gt; @@ -1,9 +1,9 @@<br>
&gt;=C2=A0 =C2=A0ASFLAGS=C2=A0 +=3D -D__X86_64__<br>
&gt;=C2=A0 =C2=A0ASFLAGS=C2=A0 +=3D -m64<br>
&gt;=C2=A0 =C2=A0CFLAGS=C2=A0 =C2=A0+=3D -D__X86_64__<br>
&gt; -CFLAGS=C2=A0 =C2=A0+=3D -m64 -mno-red-zone -fno-reorder-blocks -fno-a=
synchronous-unwind-tables<br>
&gt; +CFLAGS=C2=A0 =C2=A0+=3D -m64 -mno-red-zone -fno-asynchronous-unwind-t=
ables<br>
&gt;=C2=A0 =C2=A0CXXFLAGS +=3D -D__X86_64__<br>
&gt; -CXXFLAGS +=3D -m64 -mno-red-zone -fno-reorder-blocks -fno-asynchronou=
s-unwind-tables<br>
&gt; +CXXFLAGS +=3D -m64 -mno-red-zone -fno-asynchronous-unwind-tables<br>
&gt;=C2=A0 =C2=A0<br>
<br>
Also those, while we still have the language-specific flags (ASFLAGS, <br>
CFLAGS, etc.). We separate them now.<br>
<br>
&gt;=C2=A0 =C2=A0CINCLUDES=C2=A0 =C2=A0+=3D -I$(CONFIG_UK_BASE)/arch/x86/x8=
6_64/include<br>
&gt;=C2=A0 =C2=A0ASINCLUDES=C2=A0 +=3D -I$(CONFIG_UK_BASE)/arch/x86/x86_64/=
include<br>
&gt; @@ -11,7 +11,7 @@ CXXINCLUDES +=3D -I$(CONFIG_UK_BASE)/arch/x86/x86_64=
/include<br>
&gt;=C2=A0 =C2=A0<br>
&gt;=C2=A0 =C2=A0# compiler flags to prevent use of extended (FP, SSE, AVX)=
 registers.<br>
&gt;=C2=A0 =C2=A0# This is for files that contain trap/exception/interrupt =
handlers<br>
&gt; -NO_X86_EXTREGS_FLAGS :=3D -mno-80387 -mno-fp-ret-in-387 -mno-mmx -mno=
-sse -mno-avx<br>
&gt; +NO_X86_EXTREGS_FLAGS :=3D -mno-80387 -mno-mmx -mno-sse -mno-avx<br>
&gt;=C2=A0 =C2=A0<br>
&gt;=C2=A0 =C2=A0ASFLAGS-$(CONFIG_MARCH_X86_64_GENERIC)=C2=A0 =C2=A0 =C2=A0=
+=3D -mtune=3Dgeneric<br>
&gt;=C2=A0 =C2=A0CFLAGS-$(CONFIG_MARCH_X86_64_GENERIC)=C2=A0 =C2=A0 =C2=A0 =
+=3D -mtune=3Dgeneric<br>
&gt; <br>
<br>
I think we should add and modify the compiler-related Makefile rules <br>
within `support/build/Makefile.rules`. We have there so far:<br>
<br>
=C2=A0 =C2=A0gcc_version_ge=C2=A0 =C2=A0 returns &#39;y&#39; if current GCC=
 version is &gt;=3D &#39;y&#39;,<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0otherwise &#39;n&#39;<br>
=C2=A0 =C2=A0gcc_version_lt=C2=A0 =C2=A0 returns &#39;y&#39; if current GCC=
 version is &lt; &#39;y&#39;,<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0otherwise &#39;n&#39;<br>
<br>
These two are used to populate flags according to the current used GCC <br>
version. For instance:<br>
=C2=A0 =C2=A0COMPFLAGS-$(call gcc_version_ge,7,0) +=3D -flag_supported_with=
_gcc70<br>
<br>
=C2=A0 =C2=A0error_if_gcc_version_lt=C2=A0 Will output an error that a newe=
r GCC<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 is needed<br>
<br>
I think I would add two functions that return &#39;y&#39; and &#39;n&#39; w=
hen clang and <br>
GCC is detected:<br>
<br>
=C2=A0 =C2=A0 have_clang<br>
=C2=A0 =C2=A0 have_gcc<br>
<br>
Using those, it probably makes sense to update the three existing <br>
functions so that the first two return &#39;n&#39; and the last one never f=
ails <br>
when have_gcc returned &#39;n&#39; (when clang is used). Additionally, I wo=
uld <br>
add the same set of functions for clang:<br>
<br>
=C2=A0 =C2=A0 clang_version_ge<br>
=C2=A0 =C2=A0 clang_version_le<br>
=C2=A0 =C2=A0 error_if_clang_version_lt<br>
<br>
They behave equivalently to the gcc functions so that nothing breaks <br>
when GCC is used instead of clang (have_clang).<br>
<br>
With all of this you are able to re-coordinate the flags. All flags that <b=
r>
fail with clang, you would keep for GCC with<br>
<br>
=C2=A0 =C2=A0 COMPFLAGS-$(call have_gcc) +=3D -gcc_only_flag<br>
<br>
With this you can also introduce clang specific flags and it can be <br>
applied to all flag variables, including the language specific ones and <br=
>
the ones concerning linking.<br>
<br>
What do you think?<br>
<br>
Thanks,<br>
<br>
Simon<br>
</blockquote></div>

--00000000000033beee05a2901da2--


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

X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRl
dmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6
Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

--===============4949129647340375811==--


From minios-devel-bounces@lists.xenproject.org Sun Apr 05 19:42:09 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 05 Apr 2020 19:42: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 1jLB9j-000563-HS; Sun, 05 Apr 2020 19:42:07 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=dNb/=5V=gmail.com=felipehuici@srs-us1.protection.inumbo.net>)
 id 1jLB9i-00055y-SL
 for minios-devel@lists.xen.org; Sun, 05 Apr 2020 19:42:06 +0000
X-Inumbo-ID: 878a052e-7775-11ea-83d8-bc764e2007e4
Received: from mail-vk1-xa42.google.com (unknown [2607:f8b0:4864:20::a42])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 878a052e-7775-11ea-83d8-bc764e2007e4;
 Sun, 05 Apr 2020 19:42:05 +0000 (UTC)
Received: by mail-vk1-xa42.google.com with SMTP id r129so3435726vkr.6
 for <minios-devel@lists.xen.org>; Sun, 05 Apr 2020 12:42:05 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=mime-version:references:in-reply-to:from:date:message-id:subject:to
 :cc:content-transfer-encoding;
 bh=dbEssIF74d3vBO/H2j3EnsXfuTvcNEGENL7ScpCLHKw=;
 b=kl4Jrw2jAwcdp0BvSeEOIoI1qC9EvmAiB7X5/mSzwP2ALMqSSrGlppc82eP/K1P4i/
 YNP8Ash0B27ogvrQ9DlkTcIptLyclXGNMayaBirGxhCtyFPAcbuT+j32UzpPyJJqcbHn
 1qp50jVhTGKtMD6XgTdzFb1MrunMa7Tko/m4qKR7p86IAsVfHsSM1W2G8RJKPvWCf+/K
 OK8uhJZjn00JCqLGjjU/YJv4kUUK4qjqDgwLYI5ROqrOPPmgku1LLrOyZAeJXph1pnCz
 Z2iqkDYikgJ7ydt2DWnhRdIgBO0IFGGFgevGYXdaK+JAAeWR53G0eisk3/mYsrMC0msG
 mQNw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:mime-version:references:in-reply-to:from:date
 :message-id:subject:to:cc:content-transfer-encoding;
 bh=dbEssIF74d3vBO/H2j3EnsXfuTvcNEGENL7ScpCLHKw=;
 b=YG0FyH/TuI5E3BE2RMX1GoPAZGDDq+aE5EFIVa3Q1s3DjrngHX5N5X160ZUYye6rCS
 C8CXpY9RqXkWCDpVKA4cm7Iw462jbtTM6EiQBjohcL8/tdcqR4zCbg7MBnMQb7jhsOIm
 u5Ptyty6ZKyqpN9esmrSQ0gc5xOXypNm9PjJnkeeXxAFwGaQAQAIXPG1DSubrvm+dASH
 II4DHN+7aMAaraGIejykqC0F2dLDhTWSFoLVKkZ3FpuIJ5bShyeX4LO5pfBS4cprj6F2
 waIt1ckBNv1gqjXO1/v0TJznmd7PJv4DetANVe19uG/w5QaL448PAIG/pvVQ2pN0f9cG
 O6Xg==
X-Gm-Message-State: AGi0PuaIEUXgl8sviwoihT/EA8HqugKxH5ee0gAkq9J77kVusEMrHtZB
 DyyRqW/uGNH0WZfDnE3Q2/qER2vncrlBxgfV5q4=
X-Google-Smtp-Source: APiQypKoYUVy421VG3m3oEPAt75t2OU3HK3DMGRUV1SS9yf7vATGMnS1I1l7qnp3D6qlsdvWaMRCdtSylwXhW9bTKPY=
X-Received: by 2002:a1f:728a:: with SMTP id n132mr12203592vkc.1.1586115725276; 
 Sun, 05 Apr 2020 12:42:05 -0700 (PDT)
MIME-Version: 1.0
References: <20200405115643.4538-1-vlad_andrei.badoiu@upb.ro>
 <20200405115643.4538-2-vlad_andrei.badoiu@upb.ro>
In-Reply-To: <20200405115643.4538-2-vlad_andrei.badoiu@upb.ro>
From: "felipehuici ." <felipehuici@gmail.com>
Date: Sun, 5 Apr 2020 21:41:54 +0200
Message-ID: <CAEX4t-MWYRMz9QN7utTxJkKcD3dP1fQ+dMYm+WsbXoTmtv-qdA@mail.gmail.com>
To: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2 1/2] lib/nolib: Add qsort
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>,
 =?UTF-8?Q?Vlad=2DAndrei_B=C4=82DOIU?= <vlad_andrei.badoiu@stud.acs.upb.ro>,
 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>

SGkgVmxhZCwgdGhpcyBwYXRjaCBsb29rcyBnb29kLCB0aGFua3MuCgpSZXZpZXdlZC1ieTogRmVs
aXBlIEh1aWNpIDxmZWxpcGUuaHVpY2lAbmVjbGFiLmV1PgoKT24gU3VuLCBBcHIgNSwgMjAyMCBh
dCAxOjU3IFBNIFZsYWQtQW5kcmVpIEJhZG9pdQo8dmxhZF9hbmRyZWkuYmFkb2l1QHVwYi5ybz4g
d3JvdGU6Cj4KPiBGcm9tOiBWbGFkLUFuZHJlaSBCxIJET0lVIDx2bGFkX2FuZHJlaS5iYWRvaXVA
c3R1ZC5hY3MudXBiLnJvPgo+Cj4gVGhpcyBxc29ydCBpbXBsZW1lbnRhdGlvbiBpcyBhbiBhZGFw
dGVkIHZlcnNpb24gb2YgYW5kcm9pZCBiaW9uaWMncwo+IHFzb3J0LiBJdCBpcyB0aGUgUXNvcnQg
cm91dGluZSBmcm9tIEJlbnRsZXkgJiBNY0lscm95J3MgIkVuZ2luZWVyaW5nCj4gYSBTb3J0IEZ1
bmN0aW9uIi4KPgo+IFNpZ25lZC1vZmYtYnk6IFZsYWQtQW5kcmVpIEJhZG9pdSA8dmxhZF9hbmRy
ZWkuYmFkb2l1QHVwYi5ybz4KPiAtLS0KPiAgbGliL25vbGliYy9NYWtlZmlsZS51ayAgICAgIHwg
ICAzICsKPiAgbGliL25vbGliYy9leHBvcnRzeW1zLnVrICAgIHwgICAxICsKPiAgbGliL25vbGli
Yy9pbmNsdWRlL3N0ZGxpYi5oIHwgICAzICsKPiAgbGliL25vbGliYy9xc29ydC5jICAgICAgICAg
IHwgMTU3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICA0IGZpbGVzIGNo
YW5nZWQsIDE2NCBpbnNlcnRpb25zKCspCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvbm9saWJj
L3Fzb3J0LmMKPgo+IGRpZmYgLS1naXQgYS9saWIvbm9saWJjL01ha2VmaWxlLnVrIGIvbGliL25v
bGliYy9NYWtlZmlsZS51awo+IGluZGV4IDdjYjJlN2QxLi45ZDRhOWVjMyAxMDA2NDQKPiAtLS0g
YS9saWIvbm9saWJjL01ha2VmaWxlLnVrCj4gKysrIGIvbGliL25vbGliYy9NYWtlZmlsZS51awo+
IEBAIC0zNSw1ICszNSw4IEBAIExJQk5PTElCQ19TUkNTLXkgKz0gJChMSUJOT0xJQkNfQkFTRSkv
c3NjYW5mLmMKPiAgTElCTk9MSUJDX1NSQ1MteSArPSAkKExJQk5PTElCQ19CQVNFKS9hc3ByaW50
Zi5jCj4gIExJQk5PTElCQ19TUkNTLSQoQ09ORklHX0xJQlVLQUxMT0MpICs9ICQoTElCTk9MSUJD
X0JBU0UpL21hbGxvYy5jCj4KPiArCj4gK0xJQk5PTElCQ19TUkNTLXkgKz0gJChMSUJOT0xJQkNf
QkFTRSkvcXNvcnQuYwo+ICsKPiAgIyBMb2NhbGl6ZSBpbnRlcm5hbCBzeW1ib2xzIChzdGFydGlu
ZyB3aXRoIF9fKikKPiAgTElCTk9MSUJDX09CSkNGTEFHUy15ICs9IC13IC1MIF9fKgo+IGRpZmYg
LS1naXQgYS9saWIvbm9saWJjL2V4cG9ydHN5bXMudWsgYi9saWIvbm9saWJjL2V4cG9ydHN5bXMu
dWsKPiBpbmRleCBmMmQ1MGYxZi4uZjI4M2Q0NTggMTAwNjQ0Cj4gLS0tIGEvbGliL25vbGliYy9l
eHBvcnRzeW1zLnVrCj4gKysrIGIvbGliL25vbGliYy9leHBvcnRzeW1zLnVrCj4gQEAgLTQ1LDYg
KzQ1LDcgQEAgc3RydG91bAo+ICBzdHJ0b2xsCj4gIHN0cnRvdWxsCj4gIGF0b2kKPiArcXNvcnQK
Pgo+ICAjIHN0cmluZwo+ICBtZW1jcHkKPiBkaWZmIC0tZ2l0IGEvbGliL25vbGliYy9pbmNsdWRl
L3N0ZGxpYi5oIGIvbGliL25vbGliYy9pbmNsdWRlL3N0ZGxpYi5oCj4gaW5kZXggY2Q2NjUxYzQu
LjUyMmRhODI0IDEwMDY0NAo+IC0tLSBhL2xpYi9ub2xpYmMvaW5jbHVkZS9zdGRsaWIuaAo+ICsr
KyBiL2xpYi9ub2xpYmMvaW5jbHVkZS9zdGRsaWIuaAo+IEBAIC04OSw2ICs4OSw5IEBAIHZvaWQg
Km1lbWFsaWduKHNpemVfdCBhbGlnbiwgc2l6ZV90IHNpemUpOwo+Cj4gIHZvaWQgYWJvcnQodm9p
ZCkgX19ub3JldHVybjsKPgo+ICt2b2lkIHFzb3J0KHZvaWQgKmJhc2UsIHNpemVfdCBubWVtYiwg
c2l6ZV90IHNpemUsCj4gKyAgICAgICAgICAgaW50ICgqY29tcGFyKShjb25zdCB2b2lkICosIGNv
bnN0IHZvaWQgKikpOwo+ICsKPiAgI2lmIENPTkZJR19MSUJQT1NJWF9QUk9DRVNTCj4gIGludCBz
eXN0ZW0oY29uc3QgY2hhciAqY29tbWFuZCk7Cj4gICNlbmRpZgo+IGRpZmYgLS1naXQgYS9saWIv
bm9saWJjL3Fzb3J0LmMgYi9saWIvbm9saWJjL3Fzb3J0LmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0
NAo+IGluZGV4IDAwMDAwMDAwLi5kOGIzZGRjNQo+IC0tLSAvZGV2L251bGwKPiArKysgYi9saWIv
bm9saWJjL3Fzb3J0LmMKPiBAQCAtMCwwICsxLDE1NyBAQAo+ICsvKiAgICAgJE9wZW5CU0Q6IHFz
b3J0LmMsdiAxLjEwIDIwMDUvMDgvMDggMDg6MDU6MzcgZXNwaWUgRXhwICQgKi8KPiArLyotCj4g
KyAqIENvcHlyaWdodCAoYykgMTk5MiwgMTk5Mwo+ICsgKiAgICAgVGhlIFJlZ2VudHMgb2YgdGhl
IFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCj4gKyAqCj4g
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAo+ICsgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKPiArICogYXJlIG1ldDoKPiArICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKPiArICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgo+ICsgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAo+ICsgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCj4g
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCj4gKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIFVuaXZl
cnNpdHkgbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCj4gKyAqICAgIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0
d2FyZQo+ICsgKiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
PiArICoKPiArICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgUkVHRU5UUyBBTkQg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKPiArICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCj4gKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFCj4gKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IFJFR0VOVFMgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQo+ICsgKiBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TAo+ICsgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUwo+ICsgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKPiArICogSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QKPiArICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQo+ICsgKiBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCj4gKyAq
IFNVQ0ggREFNQUdFLgo+ICsgKi8KPiArI2luY2x1ZGUgPHN5cy90eXBlcy5oPgo+ICsjaW5jbHVk
ZSA8c3RkbGliLmg+Cj4gK3N0YXRpYyBpbmxpbmUgY2hhciAgICAgKm1lZDMoY2hhciAqLCBjaGFy
ICosIGNoYXIgKiwgaW50ICgqKQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNv
bnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqKSk7Cj4gK3N0YXRpYyBpbmxpbmUgdm9pZCAgICAgIHN3
YXBmdW5jKGNoYXIgKiwgY2hhciAqLCBpbnQsIGludCk7Cj4gKyNkZWZpbmUgbWluKGEsIGIpICAg
ICAgKChhKSA8IChiKSA/IGEgOiBiKQo+ICsvKgo+ICsgKiBRc29ydCByb3V0aW5lIGZyb20gQmVu
dGxleSAmIE1jSWxyb3kncyAiRW5naW5lZXJpbmcgYSBTb3J0IEZ1bmN0aW9uIi4KPiArICovCj4g
KyNkZWZpbmUgc3dhcGNvZGUoVFlQRSwgcGFybWksIHBhcm1qLCBuKSB7ICAgICAgICAgICAgICBc
Cj4gKyAgICAgICBsb25nIGkgPSAobikgLyBzaXplb2YoVFlQRSk7ICAgICAgICAgICAgICAgICAg
ICBcCj4gKyAgICAgICBUWVBFICpwaSA9IChUWVBFICopIChwYXJtaSk7ICAgICAgICAgICAgICAg
ICAgICBcCj4gKyAgICAgICBUWVBFICpwaiA9IChUWVBFICopIChwYXJtaik7ICAgICAgICAgICAg
ICAgICAgICBcCj4gKyAgICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCj4gKyAgICAgICAgICAgICAgIFRZUEUgICAgdCA9ICpwaTsgICAgICAgICAg
ICAgICAgICAgICAgICBcCj4gKyAgICAgICAgICAgICAgICpwaSsrID0gKnBqOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAgICAgICAgICpwaisrID0gdDsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICB9IHdoaWxlICgtLWkgPiAwKTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCj4gK30KPiArI2RlZmluZSBTV0FQSU5JVChhLCBlcykg
KHN3YXB0eXBlID0gKChjaGFyICopYSAtIChjaGFyICopMCkgJSBzaXplb2YobG9uZykgfHwgXAo+
ICsgICAgICAgZXMgJSBzaXplb2YobG9uZykgPyAyIDogZXMgPT0gc2l6ZW9mKGxvbmcpID8gMCA6
IDEpCj4gK3N0YXRpYyBpbmxpbmUgdm9pZAo+ICtzd2FwZnVuYyhjaGFyICphLCBjaGFyICpiLCBp
bnQgbiwgaW50IHN3YXB0eXBlKQo+ICt7Cj4gKyAgICAgICBpZiAoc3dhcHR5cGUgPD0gMSkKPiAr
ICAgICAgICAgICAgICAgc3dhcGNvZGUobG9uZywgYSwgYiwgbikKPiArICAgICAgIGVsc2UKPiAr
ICAgICAgICAgICAgICAgc3dhcGNvZGUoY2hhciwgYSwgYiwgbikKPiArfQo+ICsjZGVmaW5lIHN3
YXAoYSwgYikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAg
ZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAg
ICAgICAgICAgICBpZiAoc3dhcHR5cGUgPT0gMCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCj4gKyAgICAgICAgICAgICAgICAgICAgICAgbG9uZyB0ID0gKihsb25nICopKGEpOyAgICAg
ICAgICAgICAgICAgIFwKPiArICAgICAgICAgICAgICAgICAgICAgICAqKGxvbmcgKikoYSkgPSAq
KGxvbmcgKikoYik7ICAgICAgICAgICAgXAo+ICsgICAgICAgICAgICAgICAgICAgICAgICoobG9u
ZyAqKShiKSA9IHQ7ICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAgICAgICAgIH0g
ZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAg
ICAgICAgICAgICAgICAgICBzd2FwZnVuYyhhLCBiLCBlcywgc3dhcHR5cGUpOyAgICAgICAgICAg
XAo+ICsgICAgICAgfSB3aGlsZSAoMCkKPiArCj4gKyNkZWZpbmUgdmVjc3dhcChhLCBiLCBuKSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgIGRvIHsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAg
ICAgICAgICAgICBpZiAoKG4pID4gMCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCj4gKyAgICAgICAgICAgICAgICAgICAgICAgc3dhcGZ1bmMoYSwgYiwgbiwgc3dhcHR5cGUp
OyAgICAgICAgICAgIFwKPiArICAgICAgIH0gd2hpbGUgKDApCj4gK3N0YXRpYyBpbmxpbmUgY2hh
ciAqCj4gK21lZDMoY2hhciAqYSwgY2hhciAqYiwgY2hhciAqYywgaW50ICgqY21wKShjb25zdCB2
b2lkICosIGNvbnN0IHZvaWQgKikpCj4gK3sKPiArICAgICAgIHJldHVybiBjbXAoYSwgYikgPCAw
ID8KPiArICAgICAgICAgICAgICAgKGNtcChiLCBjKSA8IDAgPyBiIDogKGNtcChhLCBjKSA8IDAg
PyBjIDogYSkpCj4gKyAgICAgICAgICAgICAgIDogKGNtcChiLCBjKSA+IDAgPyBiIDogKGNtcChh
LCBjKSA8IDAgPyBhIDogYykpOwo+ICt9Cj4gK3ZvaWQKPiArcXNvcnQodm9pZCAqYWEsIHNpemVf
dCBuLCBzaXplX3QgZXMsIGludCAoKmNtcCkoY29uc3Qgdm9pZCAqLCBjb25zdCB2b2lkICopKQo+
ICt7Cj4gKyAgICAgICBjaGFyICpwYSwgKnBiLCAqcGMsICpwZCwgKnBsLCAqcG0sICpwbjsKPiAr
ICAgICAgIGludCBkLCByLCBzd2FwdHlwZSwgc3dhcF9jbnQ7Cj4gKyAgICAgICBjaGFyICphID0g
YWE7Cj4gK2xvb3A6Cj4gKyAgICAgICBTV0FQSU5JVChhLCBlcyk7Cj4gKyAgICAgICBzd2FwX2Nu
dCA9IDA7Cj4gKyAgICAgICBpZiAobiA8IDcpIHsKPiArICAgICAgICAgICAgICAgZm9yIChwbSA9
IChjaGFyICopYSArIGVzOyBwbSA8IChjaGFyICopIGEgKyBuICogZXM7IHBtICs9IGVzKQo+ICsg
ICAgICAgICAgICAgICAgICAgICAgIGZvciAocGwgPSBwbTsgcGwgPiAoY2hhciAqKSBhICYmIGNt
cChwbCAtIGVzLCBwbCkgPiAwOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGwgLT0g
ZXMpCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2FwKHBsLCBwbCAtIGVzKTsK
PiArICAgICAgICAgICAgICAgcmV0dXJuOwo+ICsgICAgICAgfQo+ICsgICAgICAgcG0gPSAoY2hh
ciAqKWEgKyAobiAvIDIpICogZXM7Cj4gKyAgICAgICBpZiAobiA+IDcpIHsKPiArICAgICAgICAg
ICAgICAgcGwgPSAoY2hhciAqKWE7Cj4gKyAgICAgICAgICAgICAgIHBuID0gKGNoYXIgKilhICsg
KG4gLSAxKSAqIGVzOwo+ICsgICAgICAgICAgICAgICBpZiAobiA+IDQwKSB7Cj4gKyAgICAgICAg
ICAgICAgICAgICAgICAgZCA9IChuIC8gOCkgKiBlczsKPiArICAgICAgICAgICAgICAgICAgICAg
ICBwbCA9IG1lZDMocGwsIHBsICsgZCwgcGwgKyAyICogZCwgY21wKTsKPiArICAgICAgICAgICAg
ICAgICAgICAgICBwbSA9IG1lZDMocG0gLSBkLCBwbSwgcG0gKyBkLCBjbXApOwo+ICsgICAgICAg
ICAgICAgICAgICAgICAgIHBuID0gbWVkMyhwbiAtIDIgKiBkLCBwbiAtIGQsIHBuLCBjbXApOwo+
ICsgICAgICAgICAgICAgICB9Cj4gKyAgICAgICAgICAgICAgIHBtID0gbWVkMyhwbCwgcG0sIHBu
LCBjbXApOwo+ICsgICAgICAgfQo+ICsgICAgICAgc3dhcChhLCBwbSk7Cj4gKyAgICAgICBwYSA9
IHBiID0gKGNoYXIgKilhICsgZXM7Cj4gKwo+ICsgICAgICAgcGMgPSBwZCA9IChjaGFyICopYSAr
IChuIC0gMSkgKiBlczsKPiArICAgICAgIGZvciAoOzspIHsKPiArICAgICAgICAgICAgICAgd2hp
bGUgKHBiIDw9IHBjICYmIChyID0gY21wKHBiLCBhKSkgPD0gMCkgewo+ICsgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChyID09IDApIHsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN3YXBfY250ID0gMTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3YXAocGEs
IHBiKTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhICs9IGVzOwo+ICsgICAg
ICAgICAgICAgICAgICAgICAgIH0KPiArICAgICAgICAgICAgICAgICAgICAgICBwYiArPSBlczsK
PiArICAgICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICAgICB3aGlsZSAocGIgPD0gcGMgJiYg
KHIgPSBjbXAocGMsIGEpKSA+PSAwKSB7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIg
PT0gMCkgewo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dhcF9jbnQgPSAxOwo+
ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dhcChwYywgcGQpOwo+ICsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcGQgLT0gZXM7Cj4gKyAgICAgICAgICAgICAgICAgICAg
ICAgfQo+ICsgICAgICAgICAgICAgICAgICAgICAgIHBjIC09IGVzOwo+ICsgICAgICAgICAgICAg
ICB9Cj4gKyAgICAgICAgICAgICAgIGlmIChwYiA+IHBjKQo+ICsgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwo+ICsgICAgICAgICAgICAgICBzd2FwKHBiLCBwYyk7Cj4gKyAgICAgICAgICAg
ICAgIHN3YXBfY250ID0gMTsKPiArICAgICAgICAgICAgICAgcGIgKz0gZXM7Cj4gKyAgICAgICAg
ICAgICAgIHBjIC09IGVzOwo+ICsgICAgICAgfQo+ICsgICAgICAgaWYgKHN3YXBfY250ID09IDAp
IHsgIC8qIFN3aXRjaCB0byBpbnNlcnRpb24gc29ydCAqLwo+ICsgICAgICAgICAgICAgICBmb3Ig
KHBtID0gKGNoYXIgKikgYSArIGVzOyBwbSA8IChjaGFyICopIGEgKyBuICogZXM7IHBtICs9IGVz
KQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGZvciAocGwgPSBwbTsgcGwgPiAoY2hhciAqKSBh
ICYmIGNtcChwbCAtIGVzLCBwbCkgPiAwOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cGwgLT0gZXMpCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2FwKHBsLCBwbCAt
IGVzKTsKPiArICAgICAgICAgICAgICAgcmV0dXJuOwo+ICsgICAgICAgfQo+ICsgICAgICAgcG4g
PSAoY2hhciAqKWEgKyBuICogZXM7Cj4gKyAgICAgICByID0gbWluKHBhIC0gKGNoYXIgKilhLCBw
YiAtIHBhKTsKPiArICAgICAgIHZlY3N3YXAoYSwgcGIgLSByLCByKTsKPiArICAgICAgIHIgPSBt
aW4ocGQgLSBwYywgcG4gLSBwZCAtIChpbnQpZXMpOwo+ICsgICAgICAgdmVjc3dhcChwYiwgcG4g
LSByLCByKTsKPiArICAgICAgIGlmICgociA9IHBiIC0gcGEpID4gKGludCllcykKPiArICAgICAg
ICAgICAgICAgcXNvcnQoYSwgciAvIGVzLCBlcywgY21wKTsKPiArICAgICAgIGlmICgociA9IHBk
IC0gcGMpID4gKGludCllcykgewo+ICsgICAgICAgICAgICAgICAvKiBJdGVyYXRlIHJhdGhlciB0
aGFuIHJlY3Vyc2UgdG8gc2F2ZSBzdGFjayBzcGFjZSAqLwo+ICsgICAgICAgICAgICAgICBhID0g
cG4gLSByOwo+ICsgICAgICAgICAgICAgICBuID0gciAvIGVzOwo+ICsgICAgICAgICAgICAgICBn
b3RvIGxvb3A7Cj4gKyAgICAgICB9Cj4gK30KPiAtLQo+IDIuMjAuMQo+Cj4KPiBfX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IE1pbmlvcy1kZXZlbCBtYWls
aW5nIGxpc3QKPiBNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKPiBodHRwczovL2xp
c3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVsCgpfX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFp
bGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3Rz
LnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Sun Apr 05 19:43:41 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 05 Apr 2020 19:43: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 1jLBBE-00058e-Ng; Sun, 05 Apr 2020 19:43:40 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=dNb/=5V=gmail.com=felipehuici@srs-us1.protection.inumbo.net>)
 id 1jLBBD-00058Z-SA
 for minios-devel@lists.xen.org; Sun, 05 Apr 2020 19:43:39 +0000
X-Inumbo-ID: bf44fc80-7775-11ea-83d8-bc764e2007e4
Received: from mail-ua1-x943.google.com (unknown [2607:f8b0:4864:20::943])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id bf44fc80-7775-11ea-83d8-bc764e2007e4;
 Sun, 05 Apr 2020 19:43:39 +0000 (UTC)
Received: by mail-ua1-x943.google.com with SMTP id l18so4727296uak.4
 for <minios-devel@lists.xen.org>; Sun, 05 Apr 2020 12:43:39 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=mime-version:references:in-reply-to:from:date:message-id:subject:to
 :cc:content-transfer-encoding;
 bh=0Bh1Hn/5Wzgbd32m7RxupHSPAU59gG3bmv83wqsmRSA=;
 b=teR2gSFrxj6hAwBpAg5m9h61BDpZRRi9w1MaXv5gCYOGsDyofLgPfaG5L407WGraCq
 3AU0ukcW2MoxE6KprJMpfK4SG69yrlgMBpFnMyifb9lcV2oW4j/IT6YfRI7yocvfJMNs
 LZpdUf7xts7K4yZbgujy9YFbljLskvNjxoq7R7UXgOJL3Upahuoi5g6BsCEEdfsylK7R
 9u7uhb/oNUcxSip6UHddakawCosY98sxjT0MFLw5udbxSLhAd20lwdrf+72p28uxpk+h
 bGmmOX4t9UKIRVY1uQjk6x5GCFlWq7hZuJ1g0+AFwtzBGq8E9AldjqlQaFO0oG1gehE1
 pJSw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:mime-version:references:in-reply-to:from:date
 :message-id:subject:to:cc:content-transfer-encoding;
 bh=0Bh1Hn/5Wzgbd32m7RxupHSPAU59gG3bmv83wqsmRSA=;
 b=cuu/G8HkWwxaYTUDCn+NmvCgkJ7oLqItjTS4Meb8OgGAKqLb51bg2MjLWR3E1onhd0
 Bdm9WbRBpRstrjIUH92V8/1A+EvW05GZhv4mR2TPwlUtn0Lv5ziy9Qb9709CanGDxHqX
 L9uQCuWkzCnEl2UvjsVcbXHAFNuEbOfLEfD4BMyy7TggJkPcYfBZWi5WyV+9rU40DrBC
 cNOzzsTyyDCHm2rqDqdLHnVn4kvM3u+zaCvw8REii6DdbXLmgcmEs/Vx4D1XJMX/6PTb
 V2E6o/3DwfeTkO71XlpwBVXwHUqIgpnBjZu9xX+mg1fdI7bcZ2VpuMPGJzM/D3IxMvik
 dZzw==
X-Gm-Message-State: AGi0PubcP/Mg05rMNHDqaE8jlTanLX9GxWe1Y6B4a48BsrbXp58fo7JN
 4mtaK4wommG4g8MHRG+IgC8cyj5ztPJmaYUkCAI=
X-Google-Smtp-Source: APiQypJiOIxJlplITj7z8MRfkfovEICVHRwTib5JJpg4qSKVWev4nAhmfzth3Kg9FDLrfwpSFfBjpNR5LvkbHufai8M=
X-Received: by 2002:a9f:2664:: with SMTP id 91mr1221739uag.32.1586115818863;
 Sun, 05 Apr 2020 12:43:38 -0700 (PDT)
MIME-Version: 1.0
References: <20200405115643.4538-1-vlad_andrei.badoiu@upb.ro>
 <20200405115643.4538-3-vlad_andrei.badoiu@upb.ro>
In-Reply-To: <20200405115643.4538-3-vlad_andrei.badoiu@upb.ro>
From: "felipehuici ." <felipehuici@gmail.com>
Date: Sun, 5 Apr 2020 21:43:28 +0200
Message-ID: <CAEX4t-ONNDKdh9HZsMaHt9Sv5063kuA20=kaq7eCUHVL-zj=-Q@mail.gmail.com>
To: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2 2/2] lib/vfscore: Add scandir
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>,
 =?UTF-8?Q?Vlad=2DAndrei_B=C4=82DOIU?= <vlad_andrei.badoiu@stud.acs.upb.ro>,
 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>

UmV2aWV3ZWQtYnk6IEZlbGlwZSBIdWljaSA8ZmVsaXBlLmh1aWNpQG5lY2xhYi5ldT4KCk9uIFN1
biwgQXByIDUsIDIwMjAgYXQgMTo1NyBQTSBWbGFkLUFuZHJlaSBCYWRvaXUKPHZsYWRfYW5kcmVp
LmJhZG9pdUB1cGIucm8+IHdyb3RlOgo+Cj4gRnJvbTogVmxhZC1BbmRyZWkgQsSCRE9JVSA8dmxh
ZF9hbmRyZWkuYmFkb2l1QHN0dWQuYWNzLnVwYi5ybz4KPgo+IFdlIGFkYXB0IHRoZSBzY2FuZGly
IGltcGxlbWVudGF0aW9uIGZvciBtdXNsIHRvIHdvcmsKPiB3aXRoIG91ciB2ZnNjb3JlIGltcGxl
bWVudGF0aW9uLgo+Cj4gU2lnbmVkLW9mZi1ieTogVmxhZC1BbmRyZWkgQmFkb2l1IDx2bGFkX2Fu
ZHJlaS5iYWRvaXVAdXBiLnJvPgo+IC0tLQo+ICBsaWIvdmZzY29yZS9leHBvcnRzeW1zLnVrIHwg
IDEgKwo+ICBsaWIvdmZzY29yZS9tYWluLmMgICAgICAgIHwgNDggKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrCj4gIDIgZmlsZXMgY2hhbmdlZCwgNDkgaW5zZXJ0aW9ucygr
KQo+Cj4gZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2V4cG9ydHN5bXMudWsgYi9saWIvdmZzY29y
ZS9leHBvcnRzeW1zLnVrCj4gaW5kZXggZTg2M2E1NDQuLjIyM2JiNzJiIDEwMDY0NAo+IC0tLSBh
L2xpYi92ZnNjb3JlL2V4cG9ydHN5bXMudWsKPiArKysgYi9saWIvdmZzY29yZS9leHBvcnRzeW1z
LnVrCj4gQEAgLTEzMSwzICsxMzEsNCBAQCBmdXRpbWVucwo+ICB1dGltZXMKPiAgbHV0aW1lcwo+
ICBwb3NpeF9mYWR2aXNlCj4gK3NjYW5kaXIKPiBkaWZmIC0tZ2l0IGEvbGliL3Zmc2NvcmUvbWFp
bi5jIGIvbGliL3Zmc2NvcmUvbWFpbi5jCj4gaW5kZXggOGM4MGVhNjEuLjg0NmUyZWZkIDEwMDY0
NAo+IC0tLSBhL2xpYi92ZnNjb3JlL21haW4uYwo+ICsrKyBiL2xpYi92ZnNjb3JlL21haW4uYwo+
IEBAIC0zNiw2ICszNiw3IEBACj4gICNpbmNsdWRlIDxzeXMvc3RhdC5oPgo+ICAjaW5jbHVkZSA8
bGltaXRzLmg+Cj4gICNpbmNsdWRlIDxzdHJpbmcuaD4KPiArI2luY2x1ZGUgPHN0ZGxpYi5oPgo+
ICAjaW5jbHVkZSA8ZXJybm8uaD4KPiAgI2luY2x1ZGUgPGZjbnRsLmg+Cj4gICNpbmNsdWRlIDx2
ZnNjb3JlL3ByZXguaD4KPiBAQCAtNzA4LDYgKzcwOSw1MyBAQCBpbnQgY2xvc2VkaXIoRElSICpk
aXIpCj4gICAgICAgICByZXR1cm4gMDsKPiAgfQo+Cj4gK2ludCBzY2FuZGlyKGNvbnN0IGNoYXIg
KnBhdGgsIHN0cnVjdCBkaXJlbnQgKioqcmVzLAo+ICsgICAgICAgaW50ICgqc2VsKShjb25zdCBz
dHJ1Y3QgZGlyZW50ICopLAo+ICsgICAgICAgaW50ICgqY21wKShjb25zdCBzdHJ1Y3QgZGlyZW50
ICoqLCBjb25zdCBzdHJ1Y3QgZGlyZW50ICoqKSkKPiArewo+ICsgICAgICAgRElSICpkID0gb3Bl
bmRpcihwYXRoKTsKPiArICAgICAgIHN0cnVjdCBkaXJlbnQgKmRlLCAqKm5hbWVzPTAsICoqdG1w
Owo+ICsgICAgICAgc2l6ZV90IGNudD0wLCBsZW49MDsKPiArICAgICAgIGludCBvbGRfZXJybm8g
PSBlcnJubzsKPiArCj4gKyAgICAgICBpZiAoIWQpCj4gKyAgICAgICAgICAgICAgIHJldHVybiAt
MTsKPiArCj4gKyAgICAgICB3aGlsZSAoKGVycm5vPTApLCAoZGUgPSByZWFkZGlyKGQpKSkgewo+
ICsgICAgICAgICAgICAgICBpZiAoc2VsICYmICFzZWwoZGUpKQo+ICsgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwo+ICsgICAgICAgICAgICAgICBpZiAoY250ID49IGxlbikgewo+ICsg
ICAgICAgICAgICAgICAgICAgICAgIGxlbiA9IDIqbGVuKzE7Cj4gKyAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKGxlbiA+IFNJWkVfTUFYL3NpemVvZigqbmFtZXMpKQo+ICsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgdG1wID0g
cmVhbGxvYyhuYW1lcywgbGVuICogc2l6ZW9mKCpuYW1lcykpOwo+ICsgICAgICAgICAgICAgICAg
ICAgICAgIGlmICghdG1wKQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgbmFtZXMgPSB0bXA7Cj4gKyAgICAgICAgICAgICAg
IH0KPiArICAgICAgICAgICAgICAgbmFtZXNbY250XSA9IG1hbGxvYyhkZS0+ZF9yZWNsZW4pOwo+
ICsgICAgICAgICAgICAgICBpZiAoIW5hbWVzW2NudF0pCj4gKyAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Cj4gKyAgICAgICAgICAgICAgIG1lbWNweShuYW1lc1tjbnQrK10sIGRlLCBkZS0+
ZF9yZWNsZW4pOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIGNsb3NlZGlyKGQpOwo+ICsKPiAr
ICAgICAgIGlmIChlcnJubykgewo+ICsgICAgICAgICAgICAgICBpZiAobmFtZXMpCj4gKyAgICAg
ICAgICAgICAgICAgICAgICAgd2hpbGUgKGNudC0tPjApCj4gKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmcmVlKG5hbWVzW2NudF0pOwo+ICsgICAgICAgICAgICAgICBmcmVlKG5hbWVz
KTsKPiArICAgICAgICAgICAgICAgcmV0dXJuIC0xOwo+ICsgICAgICAgfQo+ICsgICAgICAgZXJy
bm8gPSBvbGRfZXJybm87Cj4gKwo+ICsgICAgICAgaWYgKGNtcCkKPiArICAgICAgICAgICAgICAg
cXNvcnQobmFtZXMsIGNudCwgc2l6ZW9mICpuYW1lcywgKGludCAoKikoY29uc3Qgdm9pZCAqLCBj
b25zdCB2b2lkICopKWNtcCk7Cj4gKyAgICAgICAqcmVzID0gbmFtZXM7Cj4gKyAgICAgICByZXR1
cm4gY250Owo+ICt9Cj4gKwo+ICBzdHJ1Y3QgZGlyZW50ICpyZWFkZGlyKERJUiAqZGlyKQo+ICB7
Cj4gICAgICAgICBzdGF0aWMgX190aHJlYWQgc3RydWN0IGRpcmVudCBlbnRyeSwgKnJlc3VsdDsK
PiAtLQo+IDIuMjAuMQo+Cj4KPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXwo+IE1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKPiBNaW5pb3MtZGV2ZWxAbGlz
dHMueGVucHJvamVjdC5vcmcKPiBodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4v
bGlzdGluZm8vbWluaW9zLWRldmVsCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0
cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlz
dGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Sun Apr 05 19:53:32 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 05 Apr 2020 19: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 1jLBKk-0005vg-D3; Sun, 05 Apr 2020 19:53:30 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=dNb/=5V=gmail.com=felipehuici@srs-us1.protection.inumbo.net>)
 id 1jLBKj-0005vb-LJ
 for minios-devel@lists.xenproject.org; Sun, 05 Apr 2020 19:53:29 +0000
X-Inumbo-ID: 1e71e212-7777-11ea-b4f4-bc764e2007e4
Received: from mail-vk1-xa43.google.com (unknown [2607:f8b0:4864:20::a43])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 1e71e212-7777-11ea-b4f4-bc764e2007e4;
 Sun, 05 Apr 2020 19:53:28 +0000 (UTC)
Received: by mail-vk1-xa43.google.com with SMTP id v129so3427707vkf.10
 for <minios-devel@lists.xenproject.org>; Sun, 05 Apr 2020 12:53:28 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=mime-version:references:in-reply-to:from:date:message-id:subject:to
 :cc; bh=ey9XhiQ5yjqprbvX1wvRMBJNlj48+ZeT0dQq34Z3H9c=;
 b=GuNjMLmoRyJI0Fw52L7xb8rajMfUBc5i9/vEKKjQqvJDVQmWKlzshzeVxINp8azgmf
 41ubZ6DKZcvFNfxEXdCPu99ZDQzOwjk45L65xSzeXc1ISP0a3kn/unvLUnd8DSixlR1J
 ZCzFEdBZL8anFLxdOjKWdHavh6cDPyUN/clA03pzzdx8RVap2lcAD/w1Uz30dIF+KoOB
 kCUl4RY4UzZzyAdAGwgrMZ1v0Yp+lkunKQsoMgkh1TiQIWz39xgszh3/+ETA35k4PSj4
 6DiHxulHTIw1d+wSXtuutzm1YFCVBlehKBNdxzAYhJGEjzmTKk/GEklnzexLMh96mK0r
 UODw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:mime-version:references:in-reply-to:from:date
 :message-id:subject:to:cc;
 bh=ey9XhiQ5yjqprbvX1wvRMBJNlj48+ZeT0dQq34Z3H9c=;
 b=WjXy7bBHnW0r3PbIe7BB68GsUrLizYwsR0GLucknidc/MHjO88JAUfVfzKqnm0/WHs
 NvFY8b0yX+XEh887yBAVEKs67nNeh62AFn4S4Q2dFK3ovtLjrI4s+1VP4JNmZ7j/v2si
 O0JJIm3UzdJoLS/DhdTsRR+0qAhtCJ2wXRtaeW07vc8tAdaWCQVEq0UmOo+B4bjibD2E
 0FqAiyk7psCRGz8pXpwhAxuoz9QA9M6bQfWGSJpGaypFz0VOT4nhMdLpYQLkWV1+AdiE
 0RB1iKmYGky4VzvZCg75tfg0lIq/jmY5aZPtMHp+2n5tqANC+TK7Wm8PsRyvPKG20VQo
 U3jw==
X-Gm-Message-State: AGi0Pua92T1PbJL/9wdydlFR1sRIX3D9rik1zCK3OEIRbxAKSV6r0H8n
 8Zkm8haG/QVbYYVFFtQC5AIxmlzRjYHJqQZw+xQ=
X-Google-Smtp-Source: APiQypIXtn12+UqHaXjOdfJYIW4Au1wUEQvRtY4tsT4Si4V9sONLV/XxuczlBcV4YDhQaALDaUj3boVxhzf8C6zvz2M=
X-Received: by 2002:a1f:6182:: with SMTP id v124mr12093289vkb.48.1586116407967; 
 Sun, 05 Apr 2020 12:53:27 -0700 (PDT)
MIME-Version: 1.0
References: <20200404180336.12842-1-murarugeorgec@gmail.com>
 <20200404180336.12842-2-murarugeorgec@gmail.com>
In-Reply-To: <20200404180336.12842-2-murarugeorgec@gmail.com>
From: "felipehuici ." <felipehuici@gmail.com>
Date: Sun, 5 Apr 2020 21:53:16 +0200
Message-ID: <CAEX4t-NZKhgvs-Ba9VWE6Gvvv9ASbDyQVJO5MSUCC7HeRQ2KNw@mail.gmail.com>
To: George Muraru <murarugeorgec@gmail.com>
Subject: Re: [Minios-devel] [UNIKRAFT/EIGEN PATCH 1/1] Update eigen version
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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.xenproject.org, Felipe Huici <Felipe.Huici@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>

SGkgR2VvcmdlLCBsb29rcyBnb29kIHRvIG1lLCB0aGFua3MhCgpSZXZpZXdlZC1ieTogRmVsaXBl
IEh1aWNpIDxmZWxpcGUuaHVpY2lAbmVjbGFiLmV1PgoKT24gU2F0LCBBcHIgNCwgMjAyMCBhdCA4
OjA0IFBNIEdlb3JnZSBNdXJhcnUgPG11cmFydWdlb3JnZWNAZ21haWwuY29tPiB3cm90ZToKPgo+
IFNpZ25lZC1vZmYtYnk6IEdlb3JnZSBNdXJhcnUgPG11cmFydWdlb3JnZWNAZ21haWwuY29tPgo+
IC0tLQo+ICBDT05UUklCVVRJTkcubWQgfCAgMiArLQo+ICBDb25maWcudWsgICAgICAgfCAgNyAr
KysrKysrCj4gIE1ha2VmaWxlLnVrICAgICB8IDIwICsrKysrKystLS0tLS0tLS0tLS0tCj4gIGV4
cG9ydHN5bXMudWsgICB8ICAxIC0KPiAgNCBmaWxlcyBjaGFuZ2VkLCAxNSBpbnNlcnRpb25zKCsp
LCAxNSBkZWxldGlvbnMoLSkKPiAgZGVsZXRlIG1vZGUgMTAwNjQ0IGV4cG9ydHN5bXMudWsKPgo+
IGRpZmYgLS1naXQgYS9DT05UUklCVVRJTkcubWQgYi9DT05UUklCVVRJTkcubWQKPiBpbmRleCA1
ZjU1ZWNhLi4xNGY2YWM2IDEwMDY0NAo+IC0tLSBhL0NPTlRSSUJVVElORy5tZAo+ICsrKyBiL0NP
TlRSSUJVVElORy5tZAo+IEBAIC0xLDQgKzEsNCBAQAo+ICBDb250cmlidXRpbmcgdG8gVW5pa3Jh
ZnQKPiAtPT09PT09PT09PT09PT09PT09PT09PT0KPiArPT09PT09PT09PT09PT09PT09PT09PT09
Cj4KPiAgUGxlYXNlIHJlZmVyIHRvIHRoZSBgQ09OVFJJQlVUSU5HLm1kYCBmaWxlIGluIHRoZSBt
YWluIFVuaWtyYWZ0IHJlcG9zaXRvcnkuCj4gZGlmZiAtLWdpdCBhL0NvbmZpZy51ayBiL0NvbmZp
Zy51awo+IGluZGV4IGU1YjM2NDIuLmUyMjRiNjkgMTAwNjQ0Cj4gLS0tIGEvQ29uZmlnLnVrCj4g
KysrIGIvQ29uZmlnLnVrCj4gQEAgLTEsNCArMSwxMSBAQAo+ICBtZW51Y29uZmlnIExJQkVJR0VO
Cj4gICAgICBib29sICJlaWdlbiAtIEMrKyB0ZW1wbGF0ZSBsaWJyYXJ5IGZvciBsaW5lYXIgYWxn
ZWJyYSIKPiAgICAgIHNlbGVjdCBMSUJDWFgKPiArICAgIHNlbGVjdCBMSUJDWFhBQkkKPiArICAg
IHNlbGVjdCBMSUJORVdMSUJDCj4gKyAgICBzZWxlY3QgTElCVU5XSU5ECj4gKyAgICBzZWxlY3Qg
TElCUE9TSVhfU1lTSU5GTwo+ICsgICAgc2VsZWN0IExJQkNPTVBJTEVSX1JUCj4gKyAgICBzZWxl
Y3QgTElCQ09NUElMRVJfUlRfQVRPTUlDCj4gKyAgICBzZWxlY3QgTElCUFRIUkVBRF9FTUJFRERF
RAo+ICAgICAgZGVmYXVsdCBuCj4gZGlmZiAtLWdpdCBhL01ha2VmaWxlLnVrIGIvTWFrZWZpbGUu
dWsKPiBpbmRleCA2MWZlMzY2Li4yNGRjNzY0IDEwMDY0NAo+IC0tLSBhL01ha2VmaWxlLnVrCj4g
KysrIGIvTWFrZWZpbGUudWsKPiBAQCAtMzYsMjYgKzM2LDIwIEBACj4gICMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjCj4gICQoZXZhbCAkKGNhbGwgYWRkbGliX3MsbGliZWlnZW4sJChDT05GSUdfTElC
RUlHRU4pKSkKPgo+IC1pZmVxICgkKENPTkZJR19MSUJFSUdFTikseSkKPiAtaWZuZXEgKCQoQ09O
RklHX0xJQkNYWCkseSkKPiAtJChlcnJvciBSZXF1aXJlIGxpYmN4eCkKPiAtZW5kaWYKPiAtZW5k
aWYKPiAtCj4gLQo+ICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwo+ICAjIFNvdXJjZXMKPiAgIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMKPiAtTElCRUlHRU5fVkVSU0lPTj0zLjMuNwo+IC1MSUJFSUdF
Tl9VUkw9aHR0cDovL2JpdGJ1Y2tldC5vcmcvZWlnZW4vZWlnZW4vZ2V0LzMuMy43LnRhci5nego+
ICtMSUJFSUdFTl9DT01NSVQ9MDQ5YWYyZjU2MzMxCj4gIExJQkVJR0VOX1BBVENIRElSPSQoTElC
RUlHRU5fQkFTRSkvcGF0Y2hlcwo+ICsKPiArTElCRUlHRU5fVVJMPWh0dHBzOi8vYml0YnVja2V0
Lm9yZy9laWdlbi9laWdlbi9nZXQvJHtMSUJFSUdFTl9DT01NSVR9LnRhci5nego+ICAkKGV2YWwg
JChjYWxsIGZldGNoLGxpYmVpZ2VuLCQoTElCRUlHRU5fVVJMKSkpCj4gLSQoZXZhbCAkKGNhbGwg
cGF0Y2gsbGliZWlnZW4sJChMSUJFSUdFTl9QQVRDSERJUiksZWlnZW4tZWlnZW4tMzIzYzA1MmUx
NzMxKSkKPiArJChldmFsICQoY2FsbCBwYXRjaCxsaWJlaWdlbiwkKExJQkVJR0VOX1BBVENIRElS
KSxlaWdlbi1laWdlbi0kKExJQkVJR0VOX0NPTU1JVCkpKQo+Cj4gICMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjCj4gICMgSGVscGVycwo+ICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwo+IC1MSUJFSUdF
Tl9TVUJESVI9ZWlnZW4tZWlnZW4tMzIzYzA1MmUxNzMxCj4gK0xJQkVJR0VOX1NVQkRJUj1laWdl
bi1laWdlbi0kKExJQkVJR0VOX0NPTU1JVCkKPiAgTElCRUlHRU5fU1JDPSQoTElCRUlHRU5fT1JJ
R0lOKS8kKExJQkVJR0VOX1NVQkRJUikKPgo+ICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwo+IEBA
IC03OSw1ICs3Myw1IEBAIFNVUFBSRVNTX0ZMQUdTICs9IC1Xbm8tdW51c2VkLXBhcmFtZXRlciAt
V25vLXVudXNlZC12YXJpYWJsZSAtV25vLW5vbm51bGwgICAgIFwKPiAgLVduby1taXNzaW5nLWJy
YWNlcyAtV25vLWVuZGlmLWxhYmVscyAtV25vLXVudXNlZC1idXQtc2V0LXZhcmlhYmxlICAgICAg
ICAgICAgIFwKPiAgLVduby1pbXBsaWNpdC1mdW5jdGlvbi1kZWNsYXJhdGlvbiAtV25vLXR5cGUt
bGltaXRzIC1Xbm8tc2lnbi1jb21wYXJlCj4KPiAtTElCRUlHRU5fQ0ZMQUdTLXkgICAgKz0gICQo
U1VQUFJFU1NfRkxBR1MpCj4gLUxJQkVJR0VOX0NYWEZMQUdTLXkgICAgKz0gICQoU1VQUFJFU1Nf
RkxBR1MpCj4gK0xJQkVJR0VOX0NGTEFHUy15ICs9ICQoU1VQUFJFU1NfRkxBR1MpCj4gK0xJQkVJ
R0VOX0NYWEZMQUdTLXkgKz0gJChTVVBQUkVTU19GTEFHUykKPiBkaWZmIC0tZ2l0IGEvZXhwb3J0
c3ltcy51ayBiL2V4cG9ydHN5bXMudWsKPiBkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRl
eCA2MjFlOTRmLi4wMDAwMDAwCj4gLS0tIGEvZXhwb3J0c3ltcy51awo+ICsrKyAvZGV2L251bGwK
PiBAQCAtMSArMCwwIEBACj4gLW5vbmUKPiAtLQo+IDIuMTcuMQo+Cj4gX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBNaW5pb3MtZGV2ZWwgbWFpbGluZyBs
aXN0Cj4gTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCj4gaHR0cHM6Ly9saXN0cy54
ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbAoKX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcg
bGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5w
cm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Sun Apr 05 20:03:53 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 05 Apr 2020 20:03: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 1jLBUm-0006nW-68; Sun, 05 Apr 2020 20:03:52 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=dNb/=5V=gmail.com=felipehuici@srs-us1.protection.inumbo.net>)
 id 1jLBUl-0006nR-Dy
 for minios-devel@lists.xen.org; Sun, 05 Apr 2020 20:03:51 +0000
X-Inumbo-ID: 913c9a8e-7778-11ea-b4f4-bc764e2007e4
Received: from mail-ua1-x943.google.com (unknown [2607:f8b0:4864:20::943])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 913c9a8e-7778-11ea-b4f4-bc764e2007e4;
 Sun, 05 Apr 2020 20:03:50 +0000 (UTC)
Received: by mail-ua1-x943.google.com with SMTP id l18so4740752uak.4
 for <minios-devel@lists.xen.org>; Sun, 05 Apr 2020 13:03:50 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=mime-version:references:in-reply-to:from:date:message-id:subject:to
 :cc:content-transfer-encoding;
 bh=mEn+zHBAVvkDVbN2+k+uoOmIkbxXrCib1Tt6V+2DwmI=;
 b=OX9uAnvr7vxS0MKQDjiPkiGtkdAAEzh7WwAUFKeabFXwIqQnO8km+CCeAtx9RWNZ1Z
 YcoOgWyUnr1OF0yhqQajzey9n2Xg2HT6zfg8LYMFwdKQHQdBo8HLa9dTll4nLD7MhFjQ
 KiCc492kzdlsxd+vbt08hG2OAvVzq0/eSGaWi4loS4JfhZVk8Lbqb4rD3qGIEMy3Fsh5
 fs6dmyOfAE3p6pfzrFW6fDCHJqaGyvoiukk1Jelw/jjvDQmgs3rgSsyiecL9g2zhLcyP
 Xf51LjvjDYwC5fGhRrWMxEZMAKdgFdeH3sw/sA+0SCSwSRho36wkiO3BWRt4aNOV7fHq
 kxOg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:mime-version:references:in-reply-to:from:date
 :message-id:subject:to:cc:content-transfer-encoding;
 bh=mEn+zHBAVvkDVbN2+k+uoOmIkbxXrCib1Tt6V+2DwmI=;
 b=PO0P7P30l6kbVA1wpK9YAwF4hpKz0iTTz33TamB2KBwjRvOEgfoK6U8SPq1zNFdZWq
 tkvU7+v8ihzvYUKe/kRPO84Id1v3Jz7lURnM2UgjNbOqJR0TrZ19WFecVEomBKbSSOnL
 cd8qfFananWT8wMBlm+xsc6y5dkH+V531E2FJXi2B+88BvYyqQsw2id2/jyeM8nOxmmB
 kw1QEbcsMOq18g50nWaUWwW3WsJVIl+0UppEmDzm9701w+BJrMgYJBp8noDtdJigTFwu
 7xJFNCRsR2H9jDPq/ylV+u6OXMkUHtZrj4wKwJbRoIabgamV1EnnekQDMqYL90zqvsqC
 lNZA==
X-Gm-Message-State: AGi0PubCBrZonX7WuWya2qrYepMyV9OaOS+GBzxHudNDsPs4jPM7SWTK
 LJ/XltYjdOtmNYkxpsDPPkAsvy9/4ONXcp0ddtHlzbqK
X-Google-Smtp-Source: APiQypJ0X3rEr4erOiiKQidTvxojSm/Kgfjk8AhZQKDjyWBtp5Kcfh5DAonhppjSMkakSSEi7OJb4QiliyKe5RiLLrc=
X-Received: by 2002:ab0:45d3:: with SMTP id u77mr13051328uau.27.1586117030117; 
 Sun, 05 Apr 2020 13:03:50 -0700 (PDT)
MIME-Version: 1.0
References: <20200331170518.16141-1-vlad_andrei.badoiu@stud.acs.upb.ro>
 <20200331170518.16141-2-vlad_andrei.badoiu@stud.acs.upb.ro>
In-Reply-To: <20200331170518.16141-2-vlad_andrei.badoiu@stud.acs.upb.ro>
From: "felipehuici ." <felipehuici@gmail.com>
Date: Sun, 5 Apr 2020 22:03:39 +0200
Message-ID: <CAEX4t-PvE2WXkTT4dkq+uU1uRaKtZnzKKph=AZySt0BxhkoLdQ@mail.gmail.com>
To: =?UTF-8?Q?Vlad=2DAndrei_B=C4=82DOIU?= <vlad_andrei.badoiu@stud.acs.upb.ro>
Subject: Re: [Minios-devel] [UNIKRAFT/LIBUV PATCH 1/2] Introduce library
 skeleton
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>, 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>

SGkgVmxhZCwKClRoYW5rcyBmb3IgdGhlIHBhdGNoLCBJIGhhdmUgYSBmZXcgY29tbWVudHMgaW5s
aW5lLgoKLS0gRmVsaXBlCgpPbiBUdWUsIE1hciAzMSwgMjAyMCBhdCA3OjA2IFBNIFZsYWQtQW5k
cmVpIELEgkRPSVUKPHZsYWRfYW5kcmVpLmJhZG9pdUBzdHVkLmFjcy51cGIucm8+IHdyb3RlOgo+
Cj4gV2UgdXNlIHRoZSBCU0QtMy1DbGF1c2UgbGljZW5zZSBmb3IgdGhpcyBsaWJyYXJ5IGdsdWUg
Y29kZS4KPgo+IFNpZ25lZC1vZmYtYnk6IFZsYWQtQW5kcmVpIELEgkRPSVUgPHZsYWRfYW5kcmVp
LmJhZG9pdUBzdHVkLmFjcy51cGIucm8+Cj4gLS0tCj4gIC5naXRpZ25vcmUgICAgICB8IDI3ICsr
KysrKysrKysrKysrKysrKysrKysrKysrKwo+ICBDT0RJTkdfU1RZTEUubWQgfCAgNCArKysrCj4g
IENPTlRSSUJVVElORy5tZCB8ICA0ICsrKysKPiAgQ09QWUlORy5tZCAgICAgIHwgMzkgKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gIENvbmZpZy51ayAgICAgICB8IDEw
ICsrKysrKysrKysKPiAgTUFJTlRBSU5FUlMubWQgIHwgMTEgKysrKysrKysrKysKPiAgUkVBRE1F
Lm1kICAgICAgIHwgMTIgKysrKysrKysrKysrCj4gIDcgZmlsZXMgY2hhbmdlZCwgMTA3IGluc2Vy
dGlvbnMoKykKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IC5naXRpZ25vcmUKPiAgY3JlYXRlIG1vZGUg
MTAwNjQ0IENPRElOR19TVFlMRS5tZAo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgQ09OVFJJQlVUSU5H
Lm1kCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBDT1BZSU5HLm1kCj4gIGNyZWF0ZSBtb2RlIDEwMDY0
NCBDb25maWcudWsKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IE1BSU5UQUlORVJTLm1kCj4gIGNyZWF0
ZSBtb2RlIDEwMDY0NCBSRUFETUUubWQKPgo+IGRpZmYgLS1naXQgYS8uZ2l0aWdub3JlIGIvLmdp
dGlnbm9yZQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uNzVkMmZkMwo+
IC0tLSAvZGV2L251bGwKPiArKysgYi8uZ2l0aWdub3JlCj4gQEAgLTAsMCArMSwyNyBAQAo+ICsq
LmRlcGVuZAo+ICsqLm8KPiArKi5hCj4gKyouZAo+ICsqLnNvCj4gKyoub3JpZwo+ICsqLnJlago+
ICsqLmJhawo+ICsqLnN3cAo+ICsqfgo+ICssKgo+ICtcIypcIwo+ICsuXCMqCj4gK1wjXypcIwo+
ICsuXCNfKgo+ICshLmdpdGlnbm9yZQo+ICsuKgo+ICsKPiArIyBnbnUgZ2xvYmFsIGZpbGVzCj4g
K0dQQVRICj4gK0dSVEFHUwo+ICtHU1lNUwo+ICtHVEFHUwo+ICsKPiArIyBjc2NvcGUgZmlsZXMK
PiArY3Njb3BlLioKPiArbmNzY29wZS4qCj4gZGlmZiAtLWdpdCBhL0NPRElOR19TVFlMRS5tZCBi
L0NPRElOR19TVFlMRS5tZAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4u
NTczMDA0MQo+IC0tLSAvZGV2L251bGwKPiArKysgYi9DT0RJTkdfU1RZTEUubWQKPiBAQCAtMCww
ICsxLDQgQEAKPiArQ29kaW5nIFN0eWxlCj4gKz09PT09PT09PT09PQo+ICsKPiArUGxlYXNlIHJl
ZmVyIHRvIHRoZSBgQ09ESU5HX1NUWUxFLm1kYCBmaWxlIGluIHRoZSBtYWluIFVuaWtyYWZ0IHJl
cG9zaXRvcnkuCj4gZGlmZiAtLWdpdCBhL0NPTlRSSUJVVElORy5tZCBiL0NPTlRSSUJVVElORy5t
ZAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uNWY1NWVjYQo+IC0tLSAv
ZGV2L251bGwKPiArKysgYi9DT05UUklCVVRJTkcubWQKPiBAQCAtMCwwICsxLDQgQEAKPiArQ29u
dHJpYnV0aW5nIHRvIFVuaWtyYWZ0Cj4gKz09PT09PT09PT09PT09PT09PT09PT09Cj4gKwo+ICtQ
bGVhc2UgcmVmZXIgdG8gdGhlIGBDT05UUklCVVRJTkcubWRgIGZpbGUgaW4gdGhlIG1haW4gVW5p
a3JhZnQgcmVwb3NpdG9yeS4KPiBkaWZmIC0tZ2l0IGEvQ09QWUlORy5tZCBiL0NPUFlJTkcubWQK
PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLjU5ZGExMTYKPiAtLS0gL2Rl
di9udWxsCj4gKysrIGIvQ09QWUlORy5tZAo+IEBAIC0wLDAgKzEsMzkgQEAKPiArTGljZW5zZQo+
ICs9PT09PT09Cj4gKwo+ICtVbmlrcmFmdCBsaWJ1diB3cmFwcGVycwo+ICstLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KPiArCj4gK1RoaXMgcmVwb3NpdG9yeSBjb250YWlucyB3cmFwcGVyIGNvZGUg
dG8gYnVpbGQgbGlidXYgd2l0aCBVbmlrcmFmdC4KPiArRWFjaCBDIGNvZGUgZmlsZSBpbiB0aGlz
IHJlcG9zaXRvcnkgc2hvdWxkIGRlY2xhcmUgd2hvIGlzIHRoZQo+ICtjb3B5cmlnaHQgb3duZXIg
YW5kIHVuZGVyIHdoaWNoIHRlcm1zIGFuZCBjb25kaXRpb25zIHRoZSBjb2RlIGlzCj4gK2xpY2Vu
c2VkLiBJZiBzdWNoIGEgbGljZW5jZSBub3RlIGlzIG1pc3NpbmcsIHRoZSBmb2xsb3dpbmcgY29w
eXJpZ2h0Cj4gK25vdGljZSB3aWxsIGFwcGx5Ogo+ICsKPiArICAgICAgIENvcHlyaWdodCAoYykg
MjAyMCwgVW5pdmVyc2l0eSBQb2xpdGVobmljYSBvZiBCdWNoYXJlc3QuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCj4gKwo+ICsgICAgICAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cj4gKyAgICAgICBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKPiArICAg
ICAgIGFyZSBtZXQ6Cj4gKwo+ICsgICAgICAgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKPiArICAgICAgICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KPiAr
ICAgICAgIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Cj4gKyAgICAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCj4gKyAgICAgICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgo+ICsgICAgICAgMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgY29weXJpZ2h0
IGhvbGRlciBub3IgdGhlIG5hbWVzIG9mIGl0cwo+ICsgICAgICAgICAgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KPiAr
ICAgICAgICAgIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCj4gKwo+ICsgICAgICAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiCj4gKyAgICAgICBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCj4gKyAgICAgICBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQo+ICsgICAgICAgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRS
SUJVVE9SUyBCRQo+ICsgICAgICAgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgo+ICsgICAgICAgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKPiAr
ICAgICAgIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwo+ICsgICAgICAgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KPiArICAgICAg
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCj4gKyAgICAgICBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQo+ICsgICAgICAgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCj4gKwo+IGRpZmYgLS1naXQgYS9Db25maWcudWsgYi9D
b25maWcudWsKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLmY1YmJkYjEK
PiAtLS0gL2Rldi9udWxsCj4gKysrIGIvQ29uZmlnLnVrCj4gQEAgLTAsMCArMSwxMCBAQAo+ICtt
ZW51Y29uZmlnIExJQlVWCj4gKyAgICAgICBib29sICJsaWJ1diAtIGFzeW5jaHJvbm91cyBJL08i
Cj4gKyAgICAgICBzZWxlY3QgTElCTFdJUAo+ICsgICAgICAgc2VsZWN0IExXSVBfSUdNUAo+ICsg
ICAgICAgc2VsZWN0IExXSVBfSVBWNgo+ICsgICAgICAgc2VsZWN0IExXSVBfU09DS0VUCj4gKyAg
ICAgICBzZWxlY3QgTElCTk9MSUJDIGlmICFIQVZFX0xJQkMKClRoaXMgbGluZSBpcyBpbmNvcnJl
Y3QsIGxpYnV2IGRvZXNuJ3QgYnVpbGQgYWdhaW5zdCBub2xpYmMsIHNvIGl0CnNob3VsZCByZWFk
IFNFTEVDVCBMSUJORVdMSUJDCgo+ICsgICAgICAgc2VsZWN0IExJQlBPU0lYX1NZU0lORk8KPiAr
ICAgICAgIHNlbGVjdCBMSUJQT1NJWF9MSUJETAoKWW91J3JlIG1pc3NpbmcgUFRIUkVBRF9FTUJF
RERFRCBmcm9tIHRoaXMgbGlzdC4KCj4gKyAgICAgICBkZWZhdWx0IG4KPiBkaWZmIC0tZ2l0IGEv
TUFJTlRBSU5FUlMubWQgYi9NQUlOVEFJTkVSUy5tZAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4g
aW5kZXggMDAwMDAwMC4uMmJkZmViOAo+IC0tLSAvZGV2L251bGwKPiArKysgYi9NQUlOVEFJTkVS
Uy5tZAo+IEBAIC0wLDAgKzEsMTEgQEAKPiArTWFpbnRhaW5lcnMgTGlzdAo+ICs9PT09PT09PT09
PT09PT09Cj4gKwo+ICtGb3Igbm90ZXMgb24gaG93IHRvIHJlYWQgdGhpcyBpbmZvcm1hdGlvbiwg
cGxlYXNlIHJlZmVyIHRvIGBNQUlOVEFJTkVSUy5tZGAgaW4KPiArdGhlIG1haW4gVW5pa3JhZnQg
cmVwb3NpdG9yeS4KPiArCj4gKyAgICAgICBMSUJVVi1VTklLUkFGVAo+ICsgICAgICAgTTogICAg
ICBGZWxpcGUgSHVpY2kgPGZlbGlwZS5odWljaUBuZWNsYWIuZXU+Cj4gKyAgICAgICBNOiAgICAg
IFZsYWQtQW5kcmVpIEJhZG9pdSA8dmxhZF9hbmRyZWkuYmFkb2l1QHN0dWQuYWNzLnVwYi5ybz4K
PiArICAgICAgIEw6ICAgICAgbWluaW9zLWRldmVsQGxpc3RzLnhlbi5vcmcKPiArICAgICAgIEY6
ICoKPiBkaWZmIC0tZ2l0IGEvUkVBRE1FLm1kIGIvUkVBRE1FLm1kCj4gbmV3IGZpbGUgbW9kZSAx
MDA2NDQKPiBpbmRleCAwMDAwMDAwLi5hYmRmMjVmCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL1JF
QURNRS5tZAo+IEBAIC0wLDAgKzEsMTIgQEAKPiArbGlidXYgZm9yIFVuaWtyYWZ0Cj4gKz09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Cj4gKwo+ICtUaGlzIGlzIHRoZSBwb3J0IG9mIGxpYnV2
IGFzIGEgVW5pa3JhZnQgZXh0ZXJuYWwgbGlicmFyeS4gSXQKPiArZGVwZW5kcyBvbiB0aGUgZm9s
bG93aW5nIGxpYnJhcmllcyB0aGF0IG5lZWQgdG8gYmUgYWRkZWQgdG8gYE1ha2VmaWxlYAo+ICtp
biB0aGlzIG9yZGVyOgo+ICsKPiArKiBgbGliY2AsIGUuZy4gYG5ld2xpYmAKPiArKiBgbHdpcCcK
CllvdSdyZSBtaXNzaW5nIHB0aHJlYWQtZW1iZWRkZWQgZnJvbSB0aGlzIGxpc3QuCgo+ICsKPiAr
UGxlYXNlIHJlZmVyIHRvIHRoZSBgUkVBRE1FLm1kYCBhcyB3ZWxsIGFzIHRoZSBkb2N1bWVudGF0
aW9uIGluIHRoZSBgZG9jL2AKPiArc3ViZGlyZWN0b3J5IG9mIHRoZSBtYWluIHVuaWtyYWZ0IHJl
cG9zaXRvcnkuCj4gLS0KPiAyLjIwLjEKPgo+Cj4gX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX18KPiBNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Cj4gTWluaW9z
LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCj4gaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9y
Zy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbAoKX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3Mt
ZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9t
YWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Sun Apr 05 20:05:52 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 05 Apr 2020 20:05: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 1jLBWi-0006q0-CW; Sun, 05 Apr 2020 20:05:52 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=dNb/=5V=gmail.com=felipehuici@srs-us1.protection.inumbo.net>)
 id 1jLBWh-0006pv-83
 for minios-devel@lists.xen.org; Sun, 05 Apr 2020 20:05:51 +0000
X-Inumbo-ID: d8a866a0-7778-11ea-83d8-bc764e2007e4
Received: from mail-ua1-x942.google.com (unknown [2607:f8b0:4864:20::942])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id d8a866a0-7778-11ea-83d8-bc764e2007e4;
 Sun, 05 Apr 2020 20:05:50 +0000 (UTC)
Received: by mail-ua1-x942.google.com with SMTP id g24so4741328uan.10
 for <minios-devel@lists.xen.org>; Sun, 05 Apr 2020 13:05:50 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=mime-version:references:in-reply-to:from:date:message-id:subject:to
 :cc:content-transfer-encoding;
 bh=PiLOLT06d0+IAroqeejg2wAxCJK7lSsLzFnPVhFO2Pw=;
 b=HikNGTaaxW0v11gs/l9lDyljuYSZTtL6pdhRbuhR0oQiu9OchYouzp6P28AJuMglVq
 qqRKOqkKWJF3JcJCfHVWiMFNhHvthyd5/n6TRsJC1vKkszO0DLQw/JcmYNdmd4kUjczY
 A+Z98Fy5jmlY4Z4WKN9AvVI5KNE5FPNYCokqhdKTcsvZcBQWTds63W0z/1++OrS07kji
 3a0hqK6PNGUtvSrkdQm9NO3K3mDqdbD+v5vIXrndoGSpM4LPekhDuiMvlxFAfUI8UHuQ
 K5WAKAAzyYVNW2HNE9k+4cDAj2UXhdlZ2YYszrkSbte/zY9nmiOsqtgMNYBh9u21aDMK
 NhIA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:mime-version:references:in-reply-to:from:date
 :message-id:subject:to:cc:content-transfer-encoding;
 bh=PiLOLT06d0+IAroqeejg2wAxCJK7lSsLzFnPVhFO2Pw=;
 b=FD6KMMJIDTEQuAgY1N8dj8nWc1JDSTH9Ja+kznZP9LtS14xOD/TOzMg34ZasaVT/EH
 L9mMn2TICy0/qdRQDfkRfftsJJvGcGDAi63PplUfXGzI7wDEePEgaOCc9fVLrHqMoL+2
 GEpDgzOUpHGU5WtOzoD0WsXrVy6QuJxMpInRBECrwqnBV9pZJQrNAmtHlaElurZMrPrD
 M/Bks9CTPFlKkKqFZQIKWwVyR8RXB/ih/DIkn00YJV63+hMH3BzwzuL5QGGdS0yRTyuz
 Kk4c9n8AKb0bK8IGDCnWkHw13NCBIjDaXpnqBosiEd/YDwAiBqBbOdYrDsd/xSoLzbax
 gSMg==
X-Gm-Message-State: AGi0PuYlgRna5jhmS6Jnd9FHoa+GzMvTvGrdCbAcJLHIb0cI7Xmrl0rt
 tgBEKrerBzDSelLg/ig7XbNCjPetn35BqDE4/+QLfyVRaMA=
X-Google-Smtp-Source: APiQypK/ZZT4Jef1S+p+76wTHfX+IX4Ltp2Ao8PE3mfaYD7G7iz+s+n1HUSneV9mgvRqZx+sY2o30mili3K/aPe96vg=
X-Received: by 2002:ab0:704d:: with SMTP id v13mr3570584ual.132.1586117149923; 
 Sun, 05 Apr 2020 13:05:49 -0700 (PDT)
MIME-Version: 1.0
References: <20200331170518.16141-1-vlad_andrei.badoiu@stud.acs.upb.ro>
 <20200331170518.16141-3-vlad_andrei.badoiu@stud.acs.upb.ro>
In-Reply-To: <20200331170518.16141-3-vlad_andrei.badoiu@stud.acs.upb.ro>
From: "felipehuici ." <felipehuici@gmail.com>
Date: Sun, 5 Apr 2020 22:05:39 +0200
Message-ID: <CAEX4t-N_E6tiNas9XNjiZ=a_7+xCrpajz3FxFtT7Dnp8Pc=HWg@mail.gmail.com>
To: =?UTF-8?Q?Vlad=2DAndrei_B=C4=82DOIU?= <vlad_andrei.badoiu@stud.acs.upb.ro>
Subject: Re: [Minios-devel] [UNIKRAFT/LIBUV PATCH 2/2] Add 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>, 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>

SGkgVmxhZCwKCkkgZ2V0IGEgbGFyZ2UgbnVtYmVyIG9mIHJlZGVmaW5pdGlvbiB3YXJuaW5ncyAo
IkFSUkFZX1NJWkUiCnJlZGVmaW5lZCkuIFdoaWxlIG5vdCBjcml0aWNhbCwgd2UncmUgdHJ5aW5n
IHRvIGtlZXAgVW5pa3JhZnQgYnVpbGQgYXMKY2xlYW4gYXMgcG9zc2libGUgc28gdGhhdCB3ZSBk
b24ndCBtaXNzLCBvdGhlciwgcGVyaGFwcyBtb3JlCmltcG9ydGFudCwgd2FybmluZ3MuIENvdWxk
IHlvdSBwbGVhc2UgZml4IHRoaXM/CgpUaGFua3MsCgotLSBGZWxpcGUKCk9uIFR1ZSwgTWFyIDMx
LCAyMDIwIGF0IDc6MDUgUE0gVmxhZC1BbmRyZWkgQsSCRE9JVQo8dmxhZF9hbmRyZWkuYmFkb2l1
QHN0dWQuYWNzLnVwYi5ybz4gd3JvdGU6Cj4KPiBBZGQgbGlidXYgcG9ydCBNYWtlZmlsZS51awo+
Cj4gU2lnbmVkLW9mZi1ieTogVmxhZC1BbmRyZWkgQsSCRE9JVSA8dmxhZF9hbmRyZWkuYmFkb2l1
QHN0dWQuYWNzLnVwYi5ybz4KPiAtLS0KPiAgTWFrZWZpbGUudWsgfCAxMTkgKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICAxIGZpbGUgY2hhbmdl
ZCwgMTE5IGluc2VydGlvbnMoKykKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IE1ha2VmaWxlLnVrCj4K
PiBkaWZmIC0tZ2l0IGEvTWFrZWZpbGUudWsgYi9NYWtlZmlsZS51awo+IG5ldyBmaWxlIG1vZGUg
MTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uYWMxMDM0Zgo+IC0tLSAvZGV2L251bGwKPiArKysgYi9N
YWtlZmlsZS51awo+IEBAIC0wLDAgKzEsMTE5IEBACj4gKyMgIGxpYnV2MTEgY29uZmlnIGZpbGUK
PiArIwo+ICsjICBBdXRob3JzOiBWbGFkLUFuZHJlaSBCYWRvaXUgPHZsYWRfYW5kcmVpLmJhZG9p
dUBzdHVkLmFjcy51cGIucm8+Cj4gKyMKPiArIyAgQ29weXJpZ2h0IChjKSAyMDIwLCBVbml2ZXJz
aXR5IFBvbGl0ZWhuaWNhIG9mIEJ1Y2hhcmVzdC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KPiArIwo+
ICsjICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKPiArIyAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCj4gKyMgIGFyZSBtZXQ6Cj4gKyMKPiArIyAg
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKPiArIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgo+ICsjICAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAo+ICsjICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCj4gKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCj4gKyMgIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhl
IGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMKPiArIyAgICAgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KPiArIyAgICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KPiArIwo+ICsjICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKPiArIyAgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQo+ICsjICBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQo+ICsjICBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFCj4g
KyMgIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKPiArIyAgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKPiArIyAgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCj4g
KyMgIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCj4gKyMgIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCj4gKyMgIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFCj4gKyMgIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgo+ICsjCj4gKyMgIFRISVMg
SEVBREVSIE1BWSBOT1QgQkUgRVhUUkFDVEVEIE9SIE1PRElGSUVEIElOIEFOWSBXQVkuCj4gKwo+
ICsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwo+ICsjIExpYnJhcnkgcmVnaXN0cmF0aW9uCj4gKyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjCj4gKyQoZXZhbCAkKGNhbGwgYWRkbGliX3MsbGlidXYsJChD
T05GSUdfTElCVVYpKSkKPiArCj4gKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCj4gKyMgU291cmNl
cwo+ICsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwo+ICtMSUJVVl9WRVJTSU9OPTEuMzUuMAo+ICtM
SUJVVl9VUkw9aHR0cHM6Ly9naXRodWIuY29tL2xpYnV2L2xpYnV2L2FyY2hpdmUvdiQoTElCVVZf
VkVSU0lPTikudGFyLmd6Cj4gK0xJQlVWX1BBVENIRElSPSQoTElCVVZfQkFTRSkvcGF0Y2hlcwo+
ICskKGV2YWwgJChjYWxsIGZldGNoLGxpYnV2LCQoTElCVVZfVVJMKSkpCj4gKwo+ICsjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIwo+ICsjIEhlbHBlcnMKPiArIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK
PiArTElCVVZfU1VCRElSPWxpYnV2LSQoTElCVVZfVkVSU0lPTikKPiArTElCVVZfU1JDPSQoTElC
VVZfT1JJR0lOKS8kKExJQlVWX1NVQkRJUikKPiArCj4gKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
Cj4gKyMgTGlicmFyeSBpbmNsdWRlcwo+ICsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwo+ICtDSU5D
TFVERVMtJChDT05GSUdfTElCVVYpICs9IC1JJChMSUJVVl9TUkMpL2luY2x1ZGUKPiArQ0lOQ0xV
REVTLSQoQ09ORklHX0xJQlVWKSArPSAtSSQoTElCVVZfU1JDKS9zcmMKPiArQ1hYSU5DTFVERVMt
JChDT05GSUdfTElCVVYpICs9IC1JJChMSUJVVl9TUkMpL2luY2x1ZGUKPiArQ1hYSU5DTFVERVMt
JChDT05GSUdfTElCVVYpICs9IC1JJChMSUJVVl9TUkMpL3NyYwo+ICsKPiArIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMKPiArIyBHbG9iYWwgZmxhZ3MKPiArIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK
PiArIyBTdXBwcmVzcyBzb21lIHdhcm5pbmdzIHRvIG1ha2UgdGhlIGJ1aWxkIHByb2Nlc3MgbG9v
ayBuZWF0ZXIKPiArU1VQUFJFU1NfRkxBR1MgKz0gLVduby11bnVzZWQtcGFyYW1ldGVyIC1Xbm8t
dW51c2VkLXZhcmlhYmxlIC1Xbm8tbm9ubnVsbCAgICAgIFwKPiArLVduby11bnVzZWQtYnV0LXNl
dC12YXJpYWJsZSAtV25vLXVudXNlZC1sYWJlbCAtV25vLWNoYXItc3Vic2NyaXB0cyAgICAgICAg
ICAgIFwKPiArLVduby11bnVzZWQtZnVuY3Rpb24gLVduby1taXNzaW5nLWZpZWxkLWluaXRpYWxp
emVycyAtV25vLXVuaW5pdGlhbGl6ZWQgICAgICAgICAgICAgICAgXAo+ICstV25vLWFycmF5LWJv
dW5kcyAtV25vLW1heWJlLXVuaW5pdGlhbGl6ZWQgLVduby1wb2ludGVyLXNpZ24gLVduby11bnVz
ZWQtdmFsdWUgXAo+ICstV25vLXVudXNlZC1tYWNyb3MgLVduby1wYXJlbnRoZXNlcyAtV25vLWlt
cGxpY2l0LWZ1bmN0aW9uLWRlY2xhcmF0aW9uICAgICAgICAgXAo+ICstV25vLW1pc3NpbmctYnJh
Y2VzIC1Xbm8tZW5kaWYtbGFiZWxzIC1Xbm8tdW51c2VkLWJ1dC1zZXQtdmFyaWFibGUgICAgICAg
ICAgICAgXAo+ICstV25vLWltcGxpY2l0LWZ1bmN0aW9uLWRlY2xhcmF0aW9uIC1Xbm8tdHlwZS1s
aW1pdHMgLVduby1zaWduLWNvbXBhcmUKPiArCj4gK0xJQlVWX0NGTEFHUy15ICAgICs9ICAkKFNV
UFBSRVNTX0ZMQUdTKSAtRF9QT1NJWF9SRUFERVJfV1JJVEVSX0xPQ0tTIC1EX1BPU0lYX1RIUkVB
RFMgLVVfX2xpbnV4X18gLURfX0dOVV9fCj4gK0xJQlVWX0NYWEZMQUdTLXkgICAgKz0gICQoU1VQ
UFJFU1NfRkxBR1MpIC1EX1BPU0lYX1JFQURFUl9XUklURVJfTE9DS1MgLURfUE9TSVhfVEhSRUFE
UyAtVV9fbGludXhfXyAtRF9fR05VX18KPiArCj4gKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCj4g
KyMgTGlicmFyeSBzb3VyY2VzCj4gKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCj4gK0xJQlVWX1NS
Q1MteSArPSAkKExJQlVWX1NSQykvc3JjL3VuaXgvc3lzaW5mby1tZW1vcnkuYwo+ICtMSUJVVl9T
UkNTLXkgKz0gJChMSUJVVl9TUkMpL3NyYy91bml4L25vLWZzZXZlbnRzLmMKPiArTElCVVZfU1JD
Uy15ICs9ICQoTElCVVZfU1JDKS9zcmMvdW5peC9nZXRuYW1laW5mby5jCj4gK0xJQlVWX1NSQ1Mt
eSArPSAkKExJQlVWX1NSQykvc3JjL3VuaXgvcHJvY2ZzLWV4ZXBhdGguYwo+ICtMSUJVVl9TUkNT
LXkgKz0gJChMSUJVVl9TUkMpL3NyYy91bml4L3JhbmRvbS1nZXRlbnRyb3B5LmMKPiArTElCVVZf
U1JDUy15ICs9ICQoTElCVVZfU1JDKS9zcmMvdW5peC9zeXNpbmZvLWxvYWRhdmcuYwo+ICtMSUJV
Vl9TUkNTLXkgKz0gJChMSUJVVl9TUkMpL3NyYy91bml4L3JhbmRvbS1kZXZ1cmFuZG9tLmMKPiAr
TElCVVZfU1JDUy15ICs9ICQoTElCVVZfU1JDKS9zcmMvdW5peC9kbC5jCj4gK0xJQlVWX1NSQ1Mt
eSArPSAkKExJQlVWX1NSQykvc3JjL3VuaXgvcmFuZG9tLWdldHJhbmRvbS5jCj4gK0xJQlVWX1NS
Q1MteSArPSAkKExJQlVWX1NSQykvc3JjL3VuaXgvY29yZS5jCj4gK0xJQlVWX1NSQ1MteSArPSAk
KExJQlVWX1NSQykvc3JjL3VuaXgvcG9zaXgtaHJ0aW1lLmMKPiArTElCVVZfU1JDUy15ICs9ICQo
TElCVVZfU1JDKS9zcmMvdW5peC9uby1wcm9jdGl0bGUuYwo+ICtMSUJVVl9TUkNTLXkgKz0gJChM
SUJVVl9TUkMpL3NyYy91bml4L3BpcGUuYwo+ICtMSUJVVl9TUkNTLXkgKz0gJChMSUJVVl9TUkMp
L3NyYy91bml4L2FzeW5jLmMKPiArTElCVVZfU1JDUy15ICs9ICQoTElCVVZfU1JDKS9zcmMvdW5p
eC9wdGhyZWFkLWZpeGVzLmMKPiArTElCVVZfU1JDUy15ICs9ICQoTElCVVZfU1JDKS9zcmMvdW5p
eC9nZXRhZGRyaW5mby5jCj4gK0xJQlVWX1NSQ1MteSArPSAkKExJQlVWX1NSQykvc3JjL3VuaXgv
dWRwLmMKPiArTElCVVZfU1JDUy15ICs9ICQoTElCVVZfU1JDKS9zcmMvdW5peC9zdHJlYW0uYwo+
ICtMSUJVVl9TUkNTLXkgKz0gJChMSUJVVl9TUkMpL3NyYy91bml4L2ZzZXZlbnRzLmMKPiArTElC
VVZfU1JDUy15ICs9ICQoTElCVVZfU1JDKS9zcmMvdW5peC90Y3AuYwo+ICtMSUJVVl9TUkNTLXkg
Kz0gJChMSUJVVl9TUkMpL3NyYy91bml4L2xvb3Atd2F0Y2hlci5jCj4gK0xJQlVWX1NSQ1MteSAr
PSAkKExJQlVWX1NSQykvc3JjL3VuaXgvcG9zaXgtcG9sbC5jCj4gK0xJQlVWX1NSQ1MteSArPSAk
KExJQlVWX1NSQykvc3JjL3VuaXgvcmFuZG9tLXN5c2N0bC1saW51eC5jCj4gK0xJQlVWX1NSQ1Mt
eSArPSAkKExJQlVWX1NSQykvc3JjL3VuaXgvbG9vcC5jCj4gK0xJQlVWX1NSQ1MteSArPSAkKExJ
QlVWX1NSQykvc3JjL3VuaXgvZnMuYwo+ICtMSUJVVl9TUkNTLXkgKz0gJChMSUJVVl9TUkMpL3Ny
Yy91bml4L3BvbGwuYwo+ICtMSUJVVl9TUkNTLXkgKz0gJChMSUJVVl9TUkMpL3NyYy91bml4L3By
b2Nlc3MuYwo+ICtMSUJVVl9TUkNTLXkgKz0gJChMSUJVVl9TUkMpL3NyYy91bml4L3R0eS5jCj4g
K0xJQlVWX1NSQ1MteSArPSAkKExJQlVWX1NSQykvc3JjL3VuaXgvbGludXgtc3lzY2FsbHMuYwo+
ICtMSUJVVl9TUkNTLXkgKz0gJChMSUJVVl9TUkMpL3NyYy91bml4L3NpZ25hbC5jCj4gK0xJQlVW
X1NSQ1MteSArPSAkKExJQlVWX1NSQykvc3JjL3VuaXgvdGhyZWFkLmMKPiArTElCVVZfU1JDUy15
ICs9ICQoTElCVVZfU1JDKS9zcmMvdXYtZGF0YS1nZXR0ZXItc2V0dGVycy5jCj4gK0xJQlVWX1NS
Q1MteSArPSAkKExJQlVWX1NSQykvc3JjL2luZXQuYwo+ICtMSUJVVl9TUkNTLXkgKz0gJChMSUJV
Vl9TUkMpL3NyYy90aHJlYWRwb29sLmMKPiArTElCVVZfU1JDUy15ICs9ICQoTElCVVZfU1JDKS9z
cmMvcmFuZG9tLmMKPiArTElCVVZfU1JDUy15ICs9ICQoTElCVVZfU1JDKS9zcmMvdXYtY29tbW9u
LmMKPiArTElCVVZfU1JDUy15ICs9ICQoTElCVVZfU1JDKS9zcmMvaWRuYS5jCj4gK0xJQlVWX1NS
Q1MteSArPSAkKExJQlVWX1NSQykvc3JjL2ZzLXBvbGwuYwo+ICtMSUJVVl9TUkNTLXkgKz0gJChM
SUJVVl9TUkMpL3NyYy9zdHJzY3B5LmMKPiArTElCVVZfU1JDUy15ICs9ICQoTElCVVZfU1JDKS9z
cmMvdGltZXIuYwo+ICtMSUJVVl9TUkNTLXkgKz0gJChMSUJVVl9TUkMpL3NyYy92ZXJzaW9uLmMK
PiAtLQo+IDIuMjAuMQo+Cj4KPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXwo+IE1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKPiBNaW5pb3MtZGV2ZWxAbGlz
dHMueGVucHJvamVjdC5vcmcKPiBodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4v
bGlzdGluZm8vbWluaW9zLWRldmVsCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0
cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlz
dGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Mon Apr 06 07:49:23 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 06 Apr 2020 07:49: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 1jLMVV-0007Tp-8e; Mon, 06 Apr 2020 07:49:21 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=61O2=5W=gmail.com=murarugeorgec@srs-us1.protection.inumbo.net>)
 id 1jLMVT-0007Ti-PH
 for minios-devel@lists.xenproject.org; Mon, 06 Apr 2020 07:49:19 +0000
X-Inumbo-ID: 1ed8e62e-77db-11ea-83d8-bc764e2007e4
Received: from mail-wm1-x332.google.com (unknown [2a00:1450:4864:20::332])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 1ed8e62e-77db-11ea-83d8-bc764e2007e4;
 Mon, 06 Apr 2020 07:49:19 +0000 (UTC)
Received: by mail-wm1-x332.google.com with SMTP id i19so14715579wmb.0
 for <minios-devel@lists.xenproject.org>; Mon, 06 Apr 2020 00:49:19 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=from:to:cc:subject:date:message-id;
 bh=awGZWUGaU3zo4kWkgzCjePABhWWI28uFT5R1v9IItK4=;
 b=A9gE03FBKy35wwCSfN222d1kt69RfLLABLy1kShqQpc644RYgR6S3BXGTyQS6WFa8C
 QyG3oxqCI+yumwpNJQ09TUz6mA2B/wyT2j9ZkzeCk4mzkocFvuz8cKTWiiodZp8q7Hxg
 B2J9nY8cAqU8pC354uijv1tEGR/pQ+dpCb2fevoGAr6nApiDNYms8iprLrAZxbHpAqSw
 72QpfAodx3ilu1HI89vcUqWQW8AWPEMoRO9ZRZ7CIlSHem5//fWdUZUjZnAnXlm+wJda
 s8M7fSnu/BgBYJM+ZRCzCUN0cmVjh193yHQwKnY+DPhG86l2aeQ/6ySoaP7CaQq1XJ1X
 TqVw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:from:to:cc:subject:date:message-id;
 bh=awGZWUGaU3zo4kWkgzCjePABhWWI28uFT5R1v9IItK4=;
 b=K4TN7V8TVvA4Bvcen1KC6jjkaohsPVGG9qGUft54tj+CmxKgn97nWxMkAzHIgs8InB
 E6aUAHRILuGuwxa9n/3wGQJOpjQ8eppYxHUA4ogfl8uZPOqAEq8cv4r/rrYgeuz+Ui7W
 zuRerU46GP+3P1yyoLH/9X0YZC1Zw/VqRbazOfoNPYh7BA90C7go7nuMyzMikihYSOMJ
 ksxz8R+PgstRjO4rYrk5MITz7ysT0T8c8QE247YNxPQqFeMGX6zaCrl8CdSLFVxNmH6i
 xRjYA6bH+zBYPEBX5FB0+O5Zsln9aClyQcgP1JR29hk8S3cPm3u99OFip3I4J/zLzOz9
 yVLg==
X-Gm-Message-State: AGi0PuafJblme5b50AP73MKRidAnRghlSoAwocTmJMApPpfQVC94JPR8
 WdxlQAS61sew0UVLgIhxHg2h6R8y2+4=
X-Google-Smtp-Source: APiQypLOUR5SawhhcghcGhqQwgHYS5Tw/5mEAXoWFlYWWzilwj+jF56kkA5UhWTz/v6ODMDjykwS2g==
X-Received: by 2002:a1c:408b:: with SMTP id
 n133mr20124317wma.182.1586159358125; 
 Mon, 06 Apr 2020 00:49:18 -0700 (PDT)
Received: from localhost.localdomain ([2a02:a58:8506:aa00:80ae:4128:ddcb:9306])
 by smtp.googlemail.com with ESMTPSA id a13sm25538290wrt.64.2020.04.06.00.49.16
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 06 Apr 2020 00:49:17 -0700 (PDT)
From: George Muraru <murarugeorgec@gmail.com>
To: minios-devel@lists.xenproject.org
Date: Mon,  6 Apr 2020 10:49:08 +0300
Message-Id: <20200406074910.18138-1-murarugeorgec@gmail.com>
X-Mailer: git-send-email 2.17.1
Subject: [Minios-devel] [UNIKRAFT/LIBFFT2D PATCH 0/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: Felipe.Huici@neclab.eu, George Muraru <murarugeorgec@gmail.com>
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>

VGhpcyBpcyB0aGUgaW5pdGlhbCBwb3J0IG9mIGZmdDJkIG9uIFVuaWtyYWZ0LgoKR2VvcmdlIE11
cmFydSAoMik6CiAgSW50cm9kdWNlIGxpYnJhcnkgc2tlbGV0b24KICBJbml0aWFsIHBvcnQgb2Yg
ZmZ0MmQgb24gVW5pa3JhZnQKCi0tIAoyLjE3LjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1k
ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21h
aWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Mon Apr 06 07:49:26 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 06 Apr 2020 07:49: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 1jLMVa-0007UI-AC; Mon, 06 Apr 2020 07:49:26 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=61O2=5W=gmail.com=murarugeorgec@srs-us1.protection.inumbo.net>)
 id 1jLMVY-0007U6-Ni
 for minios-devel@lists.xenproject.org; Mon, 06 Apr 2020 07:49:24 +0000
X-Inumbo-ID: 2088a694-77db-11ea-b4f4-bc764e2007e4
Received: from mail-wm1-x329.google.com (unknown [2a00:1450:4864:20::329])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 2088a694-77db-11ea-b4f4-bc764e2007e4;
 Mon, 06 Apr 2020 07:49:22 +0000 (UTC)
Received: by mail-wm1-x329.google.com with SMTP id z7so13579683wmk.1
 for <minios-devel@lists.xenproject.org>; Mon, 06 Apr 2020 00:49:22 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=from:to:cc:subject:date:message-id:in-reply-to:references;
 bh=mnYwg0GEzuBrNbWfzb6IglGLyZQEypv+AXlJJsgt/rE=;
 b=M2fMyZfY+SWjRFwtuUsCIW1KariLZFJ9QH0BujAWe3x5D/IMkaMDATKs/dMjbSfTmV
 wT4LoVzDfIUo5rAjEyytqByN2NxDWu42b2s9+YFqaD/RUYd1NZiq0F74h8puj+1WVH9J
 /6WlmNLMjKf0YMyJyOeet19Yg3JKb0toHEPI3oarluM4W0DQjT2N5suTYo7UumnIlKkQ
 N7QgQkitF+VU/cWclkVILCizvnbKGl2ntwYLTBb6HM9L18moT15LK4qwaBSb1g6i1rsS
 zX242WHmJs8/JB75efJQtz4cLQzuMX/SY+1yZgYs6DbK5eLFwdmTw7uK4jOYePftnSvw
 BOlw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to
 :references;
 bh=mnYwg0GEzuBrNbWfzb6IglGLyZQEypv+AXlJJsgt/rE=;
 b=RZROVl+4VP8bV8D+C1IbZMSLhVivOUi2BIOxVfk3GYOMk4YQttZCXfoXv559u94vBp
 hB4/xLXj/ib5YclgwnmafWKXNqkHkyz5PzWhoond4ixFaT83RRT5gOhryR0HvpwUVZbC
 38cPGqr9edZBsdlyrdQM7lSvDNSjlVXMzPYQAx0kbLwx4AKqkBsx+S3zEGN82keawiC1
 RV46OceCKw2PMiQcJJElihXxBfBX1omc6EB+xK576cf0KF3Qiuso7uUmo3TQ+Ntep45L
 iK0wJAYP6o/N1hI9TJ2rRhFQNM1JAHYCCMYcmjQbzUHiDKv4f7Rv7BESUIflus/kVn3w
 /u3g==
X-Gm-Message-State: AGi0PuYaM4vzER1PDHN0bwSx0LTAuZQDj84HCSPNyl7UWnnFAIVXn6dU
 iUa0YAaB5OHD2duXkkWHyDNLsbmGYt0=
X-Google-Smtp-Source: APiQypJmVcywgN1cCvs7Y6okRHsgJ3OHvwz/4RL8UcbnghBujYX0svG0qPona2LnuObo+QmIOfuN2Q==
X-Received: by 2002:a1c:7405:: with SMTP id p5mr297125wmc.20.1586159360883;
 Mon, 06 Apr 2020 00:49:20 -0700 (PDT)
Received: from localhost.localdomain ([2a02:a58:8506:aa00:80ae:4128:ddcb:9306])
 by smtp.googlemail.com with ESMTPSA id a13sm25538290wrt.64.2020.04.06.00.49.19
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 06 Apr 2020 00:49:20 -0700 (PDT)
From: George Muraru <murarugeorgec@gmail.com>
To: minios-devel@lists.xenproject.org
Date: Mon,  6 Apr 2020 10:49:09 +0300
Message-Id: <20200406074910.18138-2-murarugeorgec@gmail.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20200406074910.18138-1-murarugeorgec@gmail.com>
References: <20200406074910.18138-1-murarugeorgec@gmail.com>
Subject: [Minios-devel] [UNIKRAFT/LIBFFT2D PATCH 1/2] Introduce library
 skeleton
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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, George Muraru <murarugeorgec@gmail.com>
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>

U2lnbmVkLW9mZi1ieTogR2VvcmdlIE11cmFydSA8bXVyYXJ1Z2VvcmdlY0BnbWFpbC5jb20+Ci0t
LQogQ09ESU5HX1NUWUxFLm1kIHwgIDQgKysrKwogQ09OVFJJQlVUSU5HLm1kIHwgIDQgKysrKwog
Q09QWUlORy5tZCAgICAgIHwgMzggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysKIE1BSU5UQUlORVJTLm1kICB8IDEwICsrKysrKysrKysKIFJFQURNRS5tZCAgICAgICB8ICA1
ICsrKysrCiA1IGZpbGVzIGNoYW5nZWQsIDYxIGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEw
MDY0NCBDT0RJTkdfU1RZTEUubWQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBDT05UUklCVVRJTkcubWQK
IGNyZWF0ZSBtb2RlIDEwMDY0NCBDT1BZSU5HLm1kCiBjcmVhdGUgbW9kZSAxMDA2NDQgTUFJTlRB
SU5FUlMubWQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBSRUFETUUubWQKCmRpZmYgLS1naXQgYS9DT0RJ
TkdfU1RZTEUubWQgYi9DT0RJTkdfU1RZTEUubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uNTczMDA0MQotLS0gL2Rldi9udWxsCisrKyBiL0NPRElOR19TVFlMRS5tZApAQCAt
MCwwICsxLDQgQEAKK0NvZGluZyBTdHlsZQorPT09PT09PT09PT09CisKK1BsZWFzZSByZWZlciB0
byB0aGUgYENPRElOR19TVFlMRS5tZGAgZmlsZSBpbiB0aGUgbWFpbiBVbmlrcmFmdCByZXBvc2l0
b3J5LgpkaWZmIC0tZ2l0IGEvQ09OVFJJQlVUSU5HLm1kIGIvQ09OVFJJQlVUSU5HLm1kCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0ZjZhYzYKLS0tIC9kZXYvbnVsbAorKysg
Yi9DT05UUklCVVRJTkcubWQKQEAgLTAsMCArMSw0IEBACitDb250cmlidXRpbmcgdG8gVW5pa3Jh
ZnQKKz09PT09PT09PT09PT09PT09PT09PT09PQorCitQbGVhc2UgcmVmZXIgdG8gdGhlIGBDT05U
UklCVVRJTkcubWRgIGZpbGUgaW4gdGhlIG1haW4gVW5pa3JhZnQgcmVwb3NpdG9yeS4KZGlmZiAt
LWdpdCBhL0NPUFlJTkcubWQgYi9DT1BZSU5HLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmRkMTZhNjEKLS0tIC9kZXYvbnVsbAorKysgYi9DT1BZSU5HLm1kCkBAIC0wLDAg
KzEsMzggQEAKK0xpY2Vuc2UKKz09PT09PT0KKworVW5pa3JhZnQgZmZ0MmQgd3JhcHBlcnMKKy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhpcyByZXBvc2l0b3J5IGNvbnRh
aW5zIHdyYXBwZXIgY29kZSB0byBidWlsZCBmZnQyZCB3aXRoIFVuaWtyYWZ0LgorRWFjaCBDIGNv
ZGUgZmlsZSBpbiB0aGlzIHJlcG9zaXRvcnkgc2hvdWxkIGRlY2xhcmUgd2hvIGlzIHRoZQorY29w
eXJpZ2h0IG93bmVyIGFuZCB1bmRlciB3aGljaCB0ZXJtcyBhbmQgY29uZGl0aW9ucyB0aGUgY29k
ZSBpcworbGljZW5zZWQuIElmIHN1Y2ggYSBsaWNlbmNlIG5vdGUgaXMgbWlzc2luZywgdGhlIGZv
bGxvd2luZyBjb3B5cmlnaHQKK25vdGljZSB3aWxsIGFwcGx5OgorCisJQ29weXJpZ2h0IChjKSBZ
ZWFyLCBJbnN0aXR1dGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKworCVJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorCW1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworCWFyZSBtZXQ6CisKKwkxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorCSAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKwkyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
CSAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKwkgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorCTMuIE5laXRoZXIgdGhlIG5hbWUgb2Yg
dGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMKKwkgICBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorCSAgIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisKKwlUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKKwlBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisJSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UKKwlBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFCisJTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorCUNPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisJU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisJSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKwlDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorCUFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFCisJUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCmRpZmYgLS1naXQg
YS9NQUlOVEFJTkVSUy5tZCBiL01BSU5UQUlORVJTLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjc3ZDc5YjQKLS0tIC9kZXYvbnVsbAorKysgYi9NQUlOVEFJTkVSUy5tZApA
QCAtMCwwICsxLDEwIEBACitNYWludGFpbmVycyBMaXN0Cis9PT09PT09PT09PT09PT09CisKK0Zv
ciBub3RlcyBvbiBob3cgdG8gcmVhZCB0aGlzIGluZm9ybWF0aW9uLCBwbGVhc2UgcmVmZXIgdG8g
YE1BSU5UQUlORVJTLm1kYCBpbgordGhlIG1haW4gVW5pa3JhZnQgcmVwb3NpdG9yeS4KKworCUxJ
QkVJR0VOLVVOSUtSQUZUCisJTToJR2VvcmdlIE11cmFydSA8bXVyYXJ1Z2VvcmdlY0BnbWFpbC5j
b20+CisJTDoJbWluaW9zLWRldmVsQGxpc3RzLnhlbi5vcmcKKwlGOiAqCmRpZmYgLS1naXQgYS9S
RUFETUUubWQgYi9SRUFETUUubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
MjcxMTdkOAotLS0gL2Rldi9udWxsCisrKyBiL1JFQURNRS5tZApAQCAtMCwwICsxLDUgQEAKK2xp
YmZsYXRidWZmZXJzIGZvciBVbmlrcmFmdAorPT09PT09PT09PT09PT09PT09PQorCitQbGVhc2Ug
cmVmZXIgdG8gdGhlIGBSRUFETUUubWRgIGFzIHdlbGwgYXMgdGhlIGRvY3VtZW50YXRpb24gaW4g
dGhlIGBkb2MvYAorc3ViZGlyZWN0b3J5IG9mIHRoZSBtYWluIHVuaWtyYWZ0IHJlcG9zaXRvcnku
Ci0tIAoyLjE3LjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9q
ZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWlu
aW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Mon Apr 06 07:49:31 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 06 Apr 2020 07:49: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 1jLMVf-0007V1-CC; Mon, 06 Apr 2020 07:49:31 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=61O2=5W=gmail.com=murarugeorgec@srs-us1.protection.inumbo.net>)
 id 1jLMVd-0007Uo-O1
 for minios-devel@lists.xenproject.org; Mon, 06 Apr 2020 07:49:29 +0000
X-Inumbo-ID: 21e86894-77db-11ea-b58d-bc764e2007e4
Received: from mail-wm1-x344.google.com (unknown [2a00:1450:4864:20::344])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 21e86894-77db-11ea-b58d-bc764e2007e4;
 Mon, 06 Apr 2020 07:49:24 +0000 (UTC)
Received: by mail-wm1-x344.google.com with SMTP id r16so13614963wmg.5
 for <minios-devel@lists.xenproject.org>; Mon, 06 Apr 2020 00:49:24 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=from:to:cc:subject:date:message-id:in-reply-to:references;
 bh=To3OYsHu780aahyO4/CV7s5Ossb5qDnkgcgjMPBvFs4=;
 b=lQEQKFWq7dy/DoRAHzeuVqkIPVH3D2LrlMDZQ1HZDBXVIrCM4EV3k4e+VTCq5cwVQq
 tjrRwkjb/yAHmTzBBsXD5/OYpd8zP2F+jfRc/iaXL2bwjTlf9bebkZ532l2LPKZk+Cpy
 xEjnMYRuuE7BemnZ4HrWVrp+m/F1XnKstE2k20o/c4MF/JmCXuBYan7EKfDDJejP89/h
 JUU16qN/I5+LmjJWyrk0fhYIp+yIDBEf/ycH0C0nuPnz6EKI5mnqY0Ekq0ObTO97/w5F
 IY3XWkPFxTMWXbzoVKdTiBkBHUEtuYayST9aUL1mIiuXXzghyQc3cONled93u8jTl6gC
 usHA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to
 :references;
 bh=To3OYsHu780aahyO4/CV7s5Ossb5qDnkgcgjMPBvFs4=;
 b=C8zW0FCDG0ktj86V8tbc8nNGqZzOxL0gbcyTbAVEzUTUqiWEwlJIkuA7WQ6BbHjpwx
 8iYrd/76Tpoq56rseApDSNvEbXOT1BQXkOK+AMRCdxys3o0HgoGgzF95x6bj7oZLBBug
 2ARDFEGvk4PHO4VIgnbcWv/OsDdsn6J7FLCkIuO5Kvb59dsFJA/6wC0yjbLTG8TxkvNK
 bn5x+miFPEt2ZLN2vjuK/vDHv0bf3fZcs1bReSBqRCNZE3NsUgWKVLiNFkyonuZMc/Qx
 VhJFNJIratmkv/KKtTXpRLadAwlrpgKJYrrC0dOaRU+zJQxMtK9T6ja12bHP5w1e6g8v
 XIyQ==
X-Gm-Message-State: AGi0PuZ9XvYWm8kIX0hwMvuX4tQR01sLOOBS6cnjyuD2X5ZTUHi6LNl+
 /xR0mAF+L16ZDA2VFnsnm+csZQ8vEUw=
X-Google-Smtp-Source: APiQypIS+dwom1IGqUKnFLuh05k9NO8Ir4MCto4HuHXaeulY1/gQs8Nx2ZU3lHuTPQfXg8BeWvverA==
X-Received: by 2002:a05:600c:2314:: with SMTP id
 20mr9887190wmo.35.1586159363019; 
 Mon, 06 Apr 2020 00:49:23 -0700 (PDT)
Received: from localhost.localdomain ([2a02:a58:8506:aa00:80ae:4128:ddcb:9306])
 by smtp.googlemail.com with ESMTPSA id a13sm25538290wrt.64.2020.04.06.00.49.22
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 06 Apr 2020 00:49:22 -0700 (PDT)
From: George Muraru <murarugeorgec@gmail.com>
To: minios-devel@lists.xenproject.org
Date: Mon,  6 Apr 2020 10:49:10 +0300
Message-Id: <20200406074910.18138-3-murarugeorgec@gmail.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20200406074910.18138-1-murarugeorgec@gmail.com>
References: <20200406074910.18138-1-murarugeorgec@gmail.com>
Subject: [Minios-devel] [UNIKRAFT/LIBFFT2D PATCH 2/2] Initial port of fft2d
 on 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, George Muraru <murarugeorgec@gmail.com>
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>

U2lnbmVkLW9mZi1ieTogR2VvcmdlIE11cmFydSA8bXVyYXJ1Z2VvcmdlY0BnbWFpbC5jb20+Ci0t
LQogQ29uZmlnLnVrICAgfCAyMiArKysrKysrKysrKysrKysrKwogTWFrZWZpbGUudWsgfCA3MCAr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMiBm
aWxlcyBjaGFuZ2VkLCA5MiBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgQ29uZmln
LnVrCiBjcmVhdGUgbW9kZSAxMDA2NDQgTWFrZWZpbGUudWsKCmRpZmYgLS1naXQgYS9Db25maWcu
dWsgYi9Db25maWcudWsKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzNmNmIy
ZQotLS0gL2Rldi9udWxsCisrKyBiL0NvbmZpZy51awpAQCAtMCwwICsxLDIyIEBACittZW51Y29u
ZmlnIExJQkZGVDJECisgICAgYm9vbCAiRmFzdCBGb3VyaWVyIFRyYW5zZm9ybSBsaWJyYXJ5Igor
ICAgIHNlbGVjdCBMSUJVTldJTkQKKyAgICBzZWxlY3QgTElCQ09NUElMRVItUlQKKyAgICBzZWxl
Y3QgTElCQ1hYCisgICAgc2VsZWN0IExJQkNYWEFCSQorICAgIHNlbGVjdCBMSUJORVdMSUJDCisg
ICAgc2VsZWN0IExJQlBPU0lYX1NZU0lORk8KKyAgICBkZWZhdWx0IG4KKworaWYgTElCRkZUMkQK
KyAgICBjaG9pY2UgRElNRU5TSU9OCisgICAgICAgIHByb21wdCAiRElNRU5TSU9OIgorCisgICAg
ICAgIGNvbmZpZyBMSUJGRlQyRF8xRAorICAgICAgICAgICAgYm9vbCAiMSIKKyAgICAgICAgY29u
ZmlnIExJQkZGVDJEXzJECisgICAgICAgICAgICBib29sICIyIgorICAgICAgICBjb25maWcgTElC
RkZUMkRfM0QKKyAgICAgICAgICAgIGJvb2wgIjMiCisgICAgZW5kY2hvaWNlCitlbmRpZgpkaWZm
IC0tZ2l0IGEvTWFrZWZpbGUudWsgYi9NYWtlZmlsZS51awpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi4zYTAwMDcxCi0tLSAvZGV2L251bGwKKysrIGIvTWFrZWZpbGUudWsKQEAg
LTAsMCArMSw3MCBAQAorIyAgbGliZmZ0MmQgTWFrZWZpbGUudWsKKyMKKyMgIEF1dGhvcnM6IEdl
b3JnZSBNdXJhcnUgPG11cmFydWdlb3JnZWNAZ21haWwuY29tPgorIworIyAgQ29weXJpZ2h0IChj
KSAyMDIwLCBQb2xpdGVobmljYSBVbml2ZXJzaXR5IG9mIEJ1Y2hhcmVzdC4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyMKKyMgIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjICBhcmUgbWV0OgorIwor
IyAgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorIyAgMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgY29weXJp
Z2h0IGhvbGRlciBub3IgdGhlIG5hbWVzIG9mIGl0cworIyAgICAgY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgICAg
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisjCisjICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKKyMgIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyMgIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFCisjICBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFCisjICBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjICBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorIyAgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjICBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyAgQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyMgIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCisjICBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyMKKyMgIFRISVMgSEVBREVSIE1BWSBOT1QgQkUgRVhUUkFDVEVEIE9SIE1PRElGSUVE
IElOIEFOWSBXQVkuCisjCisKKyQoZXZhbCAkKGNhbGwgYWRkbGliX3MsbGliZmZ0MmQsJChDT05G
SUdfTElCRkZUMkQpKSkKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgU291cmNlcworIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMKK0xJQkZGVDJEX1VSTD1odHRwczovL3N0b3JhZ2UuZ29vZ2xl
YXBpcy5jb20vbWlycm9yLnRlbnNvcmZsb3cub3JnL3d3dy5rdXJpbXMua3lvdG8tdS5hYy5qcC9+
b291cmEvZmZ0MmQudGd6CiskKGV2YWwgJChjYWxsIGZldGNoLGxpYmZmdDJkLCQoTElCRkZUMkRf
VVJMKSkpCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIEhlbHBlcnMKKyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjCitMSUJGRlQyRF9TVUJESVI9ZmZ0MmQKK0xJQkZGVDJEX1NSQz0kKExJQkZG
VDJEX09SSUdJTikvJChMSUJGRlQyRF9TVUJESVIpCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
CisjIExpYnJhcnkgaW5jbHVkZXMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitDWFhJTkNMVURF
Uy0kKENPTkZJR19MSUJGRlQyRCkgKz0gLUkkKExJQkZGVDJEX1NSQykvCisKK0NJTkNMVURFUy0k
KENPTkZJR19MSUJGRlQyRCkgKz0gLUkkKExJQkZGVDJEX1NSQykvCisKKyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjCisjIExpYnJhcnkgc291cmNlcworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK0xJ
QkZGVDJEX1NSQ1MteSArPSAkKExJQkZGVDJEX1NSQykvc2hydGRjdC5jCitMSUJGRlQyRF9TUkNT
LXkgKz0gJChMSUJGRlQyRF9TUkMpL2FsbG9jLmMKKworTElCRkZUMkRfU1JDUy15ICs9ICQoTElC
RkZUMkRfU1JDKS9mZnRzZy5jCisKK2lmZGVmIENPTkZJR19MSUJGRlQyRF8yRAorTElCRkZUMkRf
U1JDUy15ICs9ICQoTElCRkZUMkRfU1JDKS9mZnRzZzJkLmMKK2VuZGlmCisKK2lmZGVmIENPTkZJ
R19MSUJGRlQyRF8zRAorTElCRkZUMkRfU1JDUy15ICs9ICQoTElCRkZUMkRfU1JDKS9mZnRzZzNk
LmMKK2VuZGlmCi0tIAoyLjE3LjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0
cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlz
dGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Mon Apr 06 08:23:30 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 06 Apr 2020 08:23: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 1jLN2X-0002wj-Dk; Mon, 06 Apr 2020 08:23:29 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=QBeI=5W=gmail.com=felipehuici@srs-us1.protection.inumbo.net>)
 id 1jLN2W-0002we-Ne
 for minios-devel@lists.xenproject.org; Mon, 06 Apr 2020 08:23:28 +0000
X-Inumbo-ID: e43b349a-77df-11ea-b4f4-bc764e2007e4
Received: from mail-vs1-xe43.google.com (unknown [2607:f8b0:4864:20::e43])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id e43b349a-77df-11ea-b4f4-bc764e2007e4;
 Mon, 06 Apr 2020 08:23:27 +0000 (UTC)
Received: by mail-vs1-xe43.google.com with SMTP id e138so9222429vsc.11
 for <minios-devel@lists.xenproject.org>; Mon, 06 Apr 2020 01:23:27 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=mime-version:references:in-reply-to:from:date:message-id:subject:to
 :cc; bh=M3HCTrnqzEMtrCxwTGiH2yAmsipy9IJ2EU6dguquY5w=;
 b=AzrAoHdOq1VpgTF83T7/7LLC52vFx5TV+mh/PBET7PbHlp0NXfzRapcszX948ClA+s
 11wWzTSZsK9VQfuEpL8knrY0Q27OeNKoxXoPGjusCbdKKEN5ycBR6IxckomM+Ag8nlrb
 D46IwWPtGytrkkLKINK8LjjtsMKyfwNMVVZeI4/rdpo30fiLIFlml51SmNrxg1BdW5aW
 0LpMMKb6gN9HPMmFOSDqc0VwNZZE6FHNmv+OpXLzmkkGK1RnIExl2xZ/I5BZkOZBE2WB
 WdUZiNlOTQynJdSLaIWh70dK+QGCiJ893nUpJiNCfD75dUCHR6k+jINi1bNN1i3m8KvZ
 ePnA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:mime-version:references:in-reply-to:from:date
 :message-id:subject:to:cc;
 bh=M3HCTrnqzEMtrCxwTGiH2yAmsipy9IJ2EU6dguquY5w=;
 b=NU74U+ZYcTo8bdj+OZud8pkuXDIBAohpRI8reVF2ev5R3J/9qdF4M6X3mt2icNA8YZ
 Y/nIpNXjIGmuaBpF44FxmjJh41puYiMtWjuU2xjblOiWrFLpUsbumF6drFf58gmkQEaE
 kY75Jt1G52EnANJGoQcO7ydAcjieOvY4qPRfxusAI6wagnxi0GbXzY4FVsGM6fAHFucd
 DOUYBS59PQPF/wDCwqSRAIf+cYNKm4XhqJeAl7CA+UUk0rTQckFVa27ANo+jfxSQsce9
 sP9PUGPt/DZOHklUnJcZfBzc3SFe4WmXJJCRUme9gM6W+u7RX87Kx1ZV8VwhvOPhH76R
 dLtw==
X-Gm-Message-State: AGi0PuaKZxaaNmSpvcjKCo622Vj0hHMdf2gLa7uG+2WpO4w2oXrcDUj4
 Zb9tPqJrlEru9UMB4j3YW8z9hKuy2UyO92W3C8E=
X-Google-Smtp-Source: APiQypJBn3jbTN3Kh5Oialjd3PQ4KI6zXJNvyTl3e/ipRHfuskhTlq85/1H1ZrNk88Pnwxza6SZIOfxqEpqJdwnSwR8=
X-Received: by 2002:a67:b01:: with SMTP id 1mr14895840vsl.181.1586161407482;
 Mon, 06 Apr 2020 01:23:27 -0700 (PDT)
MIME-Version: 1.0
References: <20200406074910.18138-1-murarugeorgec@gmail.com>
 <20200406074910.18138-2-murarugeorgec@gmail.com>
In-Reply-To: <20200406074910.18138-2-murarugeorgec@gmail.com>
From: "felipehuici ." <felipehuici@gmail.com>
Date: Mon, 6 Apr 2020 10:23:15 +0200
Message-ID: <CAEX4t-OMY6PyzNgumMmfbpndO50s0ssqctvV1La7WJcN5KVeAw@mail.gmail.com>
To: George Muraru <murarugeorgec@gmail.com>
Subject: Re: [Minios-devel] [UNIKRAFT/LIBFFT2D PATCH 1/2] Introduce library
 skeleton
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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.xenproject.org, Felipe Huici <Felipe.Huici@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>

SGkgR2VvcmdlLCB0aGFua3MgZm9yIHRoaXMsIGl0IGxvb2tzIGdvb2QsIEkgaGF2ZSBvbmUgbWlu
b3IgY29tbWVudAppbmxpbmUgdGhhdCBJJ2xsIGZpeCBvbiB1cHN0cmVhbWluZy4KClJldmlld2Vk
LWJ5OiBGZWxpcGUgSHVpY2kgPGZlbGlwZS5odWljaUBuZWNsYWIuZXU+CgpPbiBNb24sIEFwciA2
LCAyMDIwIGF0IDk6NDkgQU0gR2VvcmdlIE11cmFydSA8bXVyYXJ1Z2VvcmdlY0BnbWFpbC5jb20+
IHdyb3RlOgo+Cj4gU2lnbmVkLW9mZi1ieTogR2VvcmdlIE11cmFydSA8bXVyYXJ1Z2VvcmdlY0Bn
bWFpbC5jb20+Cj4gLS0tCj4gIENPRElOR19TVFlMRS5tZCB8ICA0ICsrKysKPiAgQ09OVFJJQlVU
SU5HLm1kIHwgIDQgKysrKwo+ICBDT1BZSU5HLm1kICAgICAgfCAzOCArKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKwo+ICBNQUlOVEFJTkVSUy5tZCAgfCAxMCArKysrKysrKysr
Cj4gIFJFQURNRS5tZCAgICAgICB8ICA1ICsrKysrCj4gIDUgZmlsZXMgY2hhbmdlZCwgNjEgaW5z
ZXJ0aW9ucygrKQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgQ09ESU5HX1NUWUxFLm1kCj4gIGNyZWF0
ZSBtb2RlIDEwMDY0NCBDT05UUklCVVRJTkcubWQKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IENPUFlJ
TkcubWQKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IE1BSU5UQUlORVJTLm1kCj4gIGNyZWF0ZSBtb2Rl
IDEwMDY0NCBSRUFETUUubWQKPgo+IGRpZmYgLS1naXQgYS9DT0RJTkdfU1RZTEUubWQgYi9DT0RJ
TkdfU1RZTEUubWQKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLjU3MzAw
NDEKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvQ09ESU5HX1NUWUxFLm1kCj4gQEAgLTAsMCArMSw0
IEBACj4gK0NvZGluZyBTdHlsZQo+ICs9PT09PT09PT09PT0KPiArCj4gK1BsZWFzZSByZWZlciB0
byB0aGUgYENPRElOR19TVFlMRS5tZGAgZmlsZSBpbiB0aGUgbWFpbiBVbmlrcmFmdCByZXBvc2l0
b3J5Lgo+IGRpZmYgLS1naXQgYS9DT05UUklCVVRJTkcubWQgYi9DT05UUklCVVRJTkcubWQKPiBu
ZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLjE0ZjZhYzYKPiAtLS0gL2Rldi9u
dWxsCj4gKysrIGIvQ09OVFJJQlVUSU5HLm1kCj4gQEAgLTAsMCArMSw0IEBACj4gK0NvbnRyaWJ1
dGluZyB0byBVbmlrcmFmdAo+ICs9PT09PT09PT09PT09PT09PT09PT09PT0KPiArCj4gK1BsZWFz
ZSByZWZlciB0byB0aGUgYENPTlRSSUJVVElORy5tZGAgZmlsZSBpbiB0aGUgbWFpbiBVbmlrcmFm
dCByZXBvc2l0b3J5Lgo+IGRpZmYgLS1naXQgYS9DT1BZSU5HLm1kIGIvQ09QWUlORy5tZAo+IG5l
dyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uZGQxNmE2MQo+IC0tLSAvZGV2L251
bGwKPiArKysgYi9DT1BZSU5HLm1kCj4gQEAgLTAsMCArMSwzOCBAQAo+ICtMaWNlbnNlCj4gKz09
PT09PT0KPiArCj4gK1VuaWtyYWZ0IGZmdDJkIHdyYXBwZXJzCj4gKy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KPiArCj4gK1RoaXMgcmVwb3NpdG9yeSBjb250YWlucyB3cmFwcGVy
IGNvZGUgdG8gYnVpbGQgZmZ0MmQgd2l0aCBVbmlrcmFmdC4KPiArRWFjaCBDIGNvZGUgZmlsZSBp
biB0aGlzIHJlcG9zaXRvcnkgc2hvdWxkIGRlY2xhcmUgd2hvIGlzIHRoZQo+ICtjb3B5cmlnaHQg
b3duZXIgYW5kIHVuZGVyIHdoaWNoIHRlcm1zIGFuZCBjb25kaXRpb25zIHRoZSBjb2RlIGlzCj4g
K2xpY2Vuc2VkLiBJZiBzdWNoIGEgbGljZW5jZSBub3RlIGlzIG1pc3NpbmcsIHRoZSBmb2xsb3dp
bmcgY29weXJpZ2h0Cj4gK25vdGljZSB3aWxsIGFwcGx5Ogo+ICsKPiArICAgICAgIENvcHlyaWdo
dCAoYykgWWVhciwgSW5zdGl0dXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCj4gKwo+ICsgICAg
ICAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Cj4gKyAgICAgICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKPiArICAgICAgIGFyZSBtZXQ6Cj4gKwo+
ICsgICAgICAgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKPiArICAgICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KPiArICAgICAgIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Cj4gKyAgICAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCj4gKyAgICAgICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgo+ICsgICAg
ICAgMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgY29weXJpZ2h0IGhvbGRlciBub3IgdGhlIG5h
bWVzIG9mIGl0cwo+ICsgICAgICAgICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KPiArICAgICAgICAgIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCj4gKwo+ICsg
ICAgICAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiCj4gKyAgICAgICBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCj4gKyAg
ICAgICBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQo+ICsgICAgICAgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRQo+ICsgICAg
ICAgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgo+ICsgICAgICAgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKPiArICAgICAgIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwo+ICsgICAgICAgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KPiArICAgICAgIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCj4g
KyAgICAgICBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQo+ICsgICAgICAgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCj4gZGlmZiAtLWdpdCBhL01BSU5UQUlORVJTLm1kIGIvTUFJTlRBSU5FUlMubWQKPiBu
ZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLjc3ZDc5YjQKPiAtLS0gL2Rldi9u
dWxsCj4gKysrIGIvTUFJTlRBSU5FUlMubWQKPiBAQCAtMCwwICsxLDEwIEBACj4gK01haW50YWlu
ZXJzIExpc3QKPiArPT09PT09PT09PT09PT09PQo+ICsKPiArRm9yIG5vdGVzIG9uIGhvdyB0byBy
ZWFkIHRoaXMgaW5mb3JtYXRpb24sIHBsZWFzZSByZWZlciB0byBgTUFJTlRBSU5FUlMubWRgIGlu
Cj4gK3RoZSBtYWluIFVuaWtyYWZ0IHJlcG9zaXRvcnkuCj4gKwo+ICsgICAgICAgTElCRUlHRU4t
VU5JS1JBRlQKPiArICAgICAgIE06ICAgICAgR2VvcmdlIE11cmFydSA8bXVyYXJ1Z2VvcmdlY0Bn
bWFpbC5jb20+Cj4gKyAgICAgICBMOiAgICAgIG1pbmlvcy1kZXZlbEBsaXN0cy54ZW4ub3JnCj4g
KyAgICAgICBGOiAqCj4gZGlmZiAtLWdpdCBhL1JFQURNRS5tZCBiL1JFQURNRS5tZAo+IG5ldyBm
aWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uMjcxMTdkOAo+IC0tLSAvZGV2L251bGwK
PiArKysgYi9SRUFETUUubWQKPiBAQCAtMCwwICsxLDUgQEAKPiArbGliZmxhdGJ1ZmZlcnMgZm9y
IFVuaWtyYWZ0Cj4gKz09PT09PT09PT09PT09PT09PT0KClRoaXMgc2hvdWxkIGJlIGxpYmZmdDJk
LgoKPiArCj4gK1BsZWFzZSByZWZlciB0byB0aGUgYFJFQURNRS5tZGAgYXMgd2VsbCBhcyB0aGUg
ZG9jdW1lbnRhdGlvbiBpbiB0aGUgYGRvYy9gCj4gK3N1YmRpcmVjdG9yeSBvZiB0aGUgbWFpbiB1
bmlrcmFmdCByZXBvc2l0b3J5Lgo+IC0tCj4gMi4xNy4xCj4KPgo+IF9fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gTWluaW9zLWRldmVsIG1haWxpbmcgbGlz
dAo+IE1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwo+IGh0dHBzOi8vbGlzdHMueGVu
cHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWwKCl9fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxp
c3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJv
amVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Mon Apr 06 08:27:11 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 06 Apr 2020 08:27: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 1jLN66-00032D-VT; Mon, 06 Apr 2020 08:27:10 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=QBeI=5W=gmail.com=felipehuici@srs-us1.protection.inumbo.net>)
 id 1jLN65-00031x-Lh
 for minios-devel@lists.xenproject.org; Mon, 06 Apr 2020 08:27:09 +0000
X-Inumbo-ID: 6801bc90-77e0-11ea-9e09-bc764e2007e4
Received: from mail-ua1-x943.google.com (unknown [2607:f8b0:4864:20::943])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 6801bc90-77e0-11ea-9e09-bc764e2007e4;
 Mon, 06 Apr 2020 08:27:09 +0000 (UTC)
Received: by mail-ua1-x943.google.com with SMTP id 9so5161588uav.12
 for <minios-devel@lists.xenproject.org>; Mon, 06 Apr 2020 01:27:09 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=mime-version:references:in-reply-to:from:date:message-id:subject:to
 :cc; bh=kFpnyfNm3jtTy/eFI/S2mErFm/cp+g72Iz9EmLzbD4A=;
 b=hrHbHQMErF9v4DYxaLFho4+8HayGijUwuushFvybRm5xdfJDXKbbh1QG4pPH+gmDS5
 F78/EZRyb/i7s1JHYsIPduLtLQxGMWu0uqduK+PzmzE3uXdOvkuJEma3jW9zVgmE1hHP
 U4hUmr2nn+G7apQfb0MgO6mjifSb91KZZHcZYl8d4yUdYqvaqW27N0BO0V4/qbhtDKaO
 1Yh8eERmTLdF+HJyiUy8q1wh4+drG8cdqv/WNIJ9OeOhbklpsRkeRhaxZUuXSrnmfaXi
 lhh6CJdm6dZLBq01IZB5HFXNtFdNrSr+cYMf9NUDln0xnpJulNmo1joWoV6AFizLA/Iq
 0bHA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:mime-version:references:in-reply-to:from:date
 :message-id:subject:to:cc;
 bh=kFpnyfNm3jtTy/eFI/S2mErFm/cp+g72Iz9EmLzbD4A=;
 b=TG7aaMEcAUUl3Nx9LCqXqjJTZ78Kc11whAulZOWZCx88zMV6U28Xa4Vsx5jhCjhwuI
 Il8ajKGOkvTBWUfDxn+0b9bN382a+eVrS/r0fTH3bFy5d9c8dRPXC5HzKCBBPxFPsE1g
 g2LNuY/C/L0zpj0WR+CeiJi76jxYx3dVH3yfkg37vDfEcarcwgGSdJ4BO61oDLaBw1Di
 VugfgQoBFY7Eb0TMPP8RYCtIzYulZFqQuWrbjXoBerMSGa0g3CAMg5JPVtyk6fHnadSz
 lh6PM4mpibV0DV8m/IMYcxdjRKe5qZQjacuYvflRbsgeHkTSscEYyDcLeokI3S/ORe5y
 cBAA==
X-Gm-Message-State: AGi0PuYQSx6/7vadQlt7reP5b/NC52CC31fP7uEp7yZVKv97D57Fgf1J
 eKvfSjzk7w3Z4PCUWdHubD5KmbZLes0a1kixNG0=
X-Google-Smtp-Source: APiQypJlhUwrMqbYEQy5OgG7YEIPW9d+5sRwyPnBgiC4dVT+GIKvuNwuwM/UeBZnIJrM/+MBfp83lNPJD0W0E/yYQQs=
X-Received: by 2002:ab0:704d:: with SMTP id v13mr4808166ual.132.1586161628354; 
 Mon, 06 Apr 2020 01:27:08 -0700 (PDT)
MIME-Version: 1.0
References: <20200406074910.18138-1-murarugeorgec@gmail.com>
 <20200406074910.18138-3-murarugeorgec@gmail.com>
In-Reply-To: <20200406074910.18138-3-murarugeorgec@gmail.com>
From: "felipehuici ." <felipehuici@gmail.com>
Date: Mon, 6 Apr 2020 10:26:57 +0200
Message-ID: <CAEX4t-PWxfXV1tEYsCyHCSQu5uFEWSh2OxaEcHcS_3Hx2kWogQ@mail.gmail.com>
To: George Muraru <murarugeorgec@gmail.com>
Subject: Re: [Minios-devel] [UNIKRAFT/LIBFFT2D PATCH 2/2] Initial port of
 fft2d on 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.xenproject.org, Felipe Huici <Felipe.Huici@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>

UmV2aWV3ZWQtYnk6IEZlbGlwZSBIdWljaSA8ZmVsaXBlLmh1aWNpQG5lY2xhYi5ldT4KCk9uIE1v
biwgQXByIDYsIDIwMjAgYXQgOTo0OSBBTSBHZW9yZ2UgTXVyYXJ1IDxtdXJhcnVnZW9yZ2VjQGdt
YWlsLmNvbT4gd3JvdGU6Cj4KPiBTaWduZWQtb2ZmLWJ5OiBHZW9yZ2UgTXVyYXJ1IDxtdXJhcnVn
ZW9yZ2VjQGdtYWlsLmNvbT4KPiAtLS0KPiAgQ29uZmlnLnVrICAgfCAyMiArKysrKysrKysrKysr
KysrKwo+ICBNYWtlZmlsZS51ayB8IDcwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrCj4gIDIgZmlsZXMgY2hhbmdlZCwgOTIgaW5zZXJ0aW9ucygr
KQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgQ29uZmlnLnVrCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBN
YWtlZmlsZS51awo+Cj4gZGlmZiAtLWdpdCBhL0NvbmZpZy51ayBiL0NvbmZpZy51awo+IG5ldyBm
aWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uNzNmNmIyZQo+IC0tLSAvZGV2L251bGwK
PiArKysgYi9Db25maWcudWsKPiBAQCAtMCwwICsxLDIyIEBACj4gK21lbnVjb25maWcgTElCRkZU
MkQKPiArICAgIGJvb2wgIkZhc3QgRm91cmllciBUcmFuc2Zvcm0gbGlicmFyeSIKPiArICAgIHNl
bGVjdCBMSUJVTldJTkQKPiArICAgIHNlbGVjdCBMSUJDT01QSUxFUi1SVAo+ICsgICAgc2VsZWN0
IExJQkNYWAo+ICsgICAgc2VsZWN0IExJQkNYWEFCSQo+ICsgICAgc2VsZWN0IExJQk5FV0xJQkMK
PiArICAgIHNlbGVjdCBMSUJQT1NJWF9TWVNJTkZPCj4gKyAgICBkZWZhdWx0IG4KPiArCj4gK2lm
IExJQkZGVDJECj4gKyAgICBjaG9pY2UgRElNRU5TSU9OCj4gKyAgICAgICAgcHJvbXB0ICJESU1F
TlNJT04iCj4gKwo+ICsgICAgICAgIGNvbmZpZyBMSUJGRlQyRF8xRAo+ICsgICAgICAgICAgICBi
b29sICIxIgo+ICsgICAgICAgIGNvbmZpZyBMSUJGRlQyRF8yRAo+ICsgICAgICAgICAgICBib29s
ICIyIgo+ICsgICAgICAgIGNvbmZpZyBMSUJGRlQyRF8zRAo+ICsgICAgICAgICAgICBib29sICIz
Igo+ICsgICAgZW5kY2hvaWNlCj4gK2VuZGlmCj4gZGlmZiAtLWdpdCBhL01ha2VmaWxlLnVrIGIv
TWFrZWZpbGUudWsKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLjNhMDAw
NzEKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvTWFrZWZpbGUudWsKPiBAQCAtMCwwICsxLDcwIEBA
Cj4gKyMgIGxpYmZmdDJkIE1ha2VmaWxlLnVrCj4gKyMKPiArIyAgQXV0aG9yczogR2VvcmdlIE11
cmFydSA8bXVyYXJ1Z2VvcmdlY0BnbWFpbC5jb20+Cj4gKyMKPiArIyAgQ29weXJpZ2h0IChjKSAy
MDIwLCBQb2xpdGVobmljYSBVbml2ZXJzaXR5IG9mIEJ1Y2hhcmVzdC4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KPiArIwo+ICsjICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKPiArIyAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCj4gKyMgIGFyZSBtZXQ6
Cj4gKyMKPiArIyAgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKPiArIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgo+ICsjICAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAo+ICsj
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCj4gKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCj4gKyMgIDMuIE5laXRoZXIgdGhl
IG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMKPiArIyAg
ICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KPiArIyAgICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KPiArIwo+ICsjICBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKPiAr
IyAgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQo+ICsjICBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQo+ICsjICBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJ
QlVUT1JTIEJFCj4gKyMgIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKPiArIyAgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKPiArIyAgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCj4gKyMgIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCj4gKyMgIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCj4gKyMg
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFCj4gKyMgIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgo+ICsj
Cj4gKyMgIFRISVMgSEVBREVSIE1BWSBOT1QgQkUgRVhUUkFDVEVEIE9SIE1PRElGSUVEIElOIEFO
WSBXQVkuCj4gKyMKPiArCj4gKyQoZXZhbCAkKGNhbGwgYWRkbGliX3MsbGliZmZ0MmQsJChDT05G
SUdfTElCRkZUMkQpKSkKPiArCj4gKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCj4gKyMgU291cmNl
cwo+ICsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwo+ICtMSUJGRlQyRF9VUkw9aHR0cHM6Ly9zdG9y
YWdlLmdvb2dsZWFwaXMuY29tL21pcnJvci50ZW5zb3JmbG93Lm9yZy93d3cua3VyaW1zLmt5b3Rv
LXUuYWMuanAvfm9vdXJhL2ZmdDJkLnRnego+ICskKGV2YWwgJChjYWxsIGZldGNoLGxpYmZmdDJk
LCQoTElCRkZUMkRfVVJMKSkpCj4gKwo+ICsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwo+ICsjIEhl
bHBlcnMKPiArIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKPiArTElCRkZUMkRfU1VCRElSPWZmdDJk
Cj4gK0xJQkZGVDJEX1NSQz0kKExJQkZGVDJEX09SSUdJTikvJChMSUJGRlQyRF9TVUJESVIpCj4g
Kwo+ICsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwo+ICsjIExpYnJhcnkgaW5jbHVkZXMKPiArIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMKPiArQ1hYSU5DTFVERVMtJChDT05GSUdfTElCRkZUMkQpICs9
IC1JJChMSUJGRlQyRF9TUkMpLwo+ICsKPiArQ0lOQ0xVREVTLSQoQ09ORklHX0xJQkZGVDJEKSAr
PSAtSSQoTElCRkZUMkRfU1JDKS8KPiArCj4gKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCj4gKyMg
TGlicmFyeSBzb3VyY2VzCj4gKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCj4gK0xJQkZGVDJEX1NS
Q1MteSArPSAkKExJQkZGVDJEX1NSQykvc2hydGRjdC5jCj4gK0xJQkZGVDJEX1NSQ1MteSArPSAk
KExJQkZGVDJEX1NSQykvYWxsb2MuYwo+ICsKPiArTElCRkZUMkRfU1JDUy15ICs9ICQoTElCRkZU
MkRfU1JDKS9mZnRzZy5jCj4gKwo+ICtpZmRlZiBDT05GSUdfTElCRkZUMkRfMkQKPiArTElCRkZU
MkRfU1JDUy15ICs9ICQoTElCRkZUMkRfU1JDKS9mZnRzZzJkLmMKPiArZW5kaWYKPiArCj4gK2lm
ZGVmIENPTkZJR19MSUJGRlQyRF8zRAo+ICtMSUJGRlQyRF9TUkNTLXkgKz0gJChMSUJGRlQyRF9T
UkMpL2ZmdHNnM2QuYwo+ICtlbmRpZgo+IC0tCj4gMi4xNy4xCj4KPgo+IF9fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gTWluaW9zLWRldmVsIG1haWxpbmcg
bGlzdAo+IE1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwo+IGh0dHBzOi8vbGlzdHMu
eGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWwKCl9fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5n
IGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVu
cHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Mon Apr 06 08:54:07 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 06 Apr 2020 08:54: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 1jLNW9-0005wY-JZ; Mon, 06 Apr 2020 08:54: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=W85B=5W=neclab.eu=hugo.lefeuvre@srs-us1.protection.inumbo.net>)
 id 1jLNW8-0005wP-Hb
 for minios-devel@lists.xen.org; Mon, 06 Apr 2020 08:54:04 +0000
X-Inumbo-ID: 28d4c3b0-77e4-11ea-bfdb-12813bfff9fa
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 28d4c3b0-77e4-11ea-bfdb-12813bfff9fa;
 Mon, 06 Apr 2020 08:54:01 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 7ACD8F200F;
 Mon,  6 Apr 2020 10:54:00 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (atlas-b.office.hd)
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 TSnfEehe0U_K; Mon,  6 Apr 2020 10:54:00 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from titania.office.hd (titania.office.hd [192.168.24.89])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 438C8F200E
 for <minios-devel@lists.xen.org>; Mon,  6 Apr 2020 10:53:58 +0200 (CEST)
Received: from N-1237.office.hd (192.168.24.96) by titania.office.hd
 (192.168.24.89) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Mon, 6 Apr 2020
 10:53:57 +0200
From: Hugo Lefeuvre <hugo.lefeuvre@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Mon, 6 Apr 2020 10:53:51 +0200
Message-ID: <8800642dd4d5d1987caee18407df137d86dac472.1586158082.git.hugo.lefeuvre@neclab.eu>
X-Mailer: git-send-email 2.7.4
MIME-Version: 1.0
X-Originating-IP: [192.168.24.96]
X-ClientProxiedBy: puck.office.hd (192.168.24.91) To titania.office.hd
 (192.168.24.89)
Subject: [Minios-devel] [UNIKRAFT PATCH v2] lib/ukalloc: fix memory wastage
 in uk_posix_memalign_ifpages
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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: Hugo Lefeuvre <hugo.lefeuvre@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>

SWYgYWxpZ24gPT0gX19QQUdFX1NJWkUsIHdlIGFsd2F5cyBhbGxvY2F0ZSB0d28gcGFnZXMgbW9y
ZSB0aGFuIHRoZQpyZXF1ZXN0ZWQgc2l6ZS4gVGhpcyBpcyBub3QgbmVjZXNzYXJ5LCBiZWNhdXNl
IHdlIGtub3cgdGhhdCB0aGUgcG9pbnRlcgpyZXR1cm5lZCB0byB0aGUgdXNlciB3aWxsIGFsd2F5
cyBiZSBpbnRwdHIgKyBwYWdlIHNpemUuCgpTaWduZWQtb2ZmLWJ5OiBIdWdvIExlZmV1dnJlIDxo
dWdvLmxlZmV1dnJlQG5lY2xhYi5ldT4KLS0tCkNoYW5nZWQgc2luY2UgdjE6CiArIENoYW5nZSB0
aGUgZmlyc3QgY29uZGl0aW9uIGZyb20gPj0gX19QQUdFX1NJWkUgdG8gPT0gX19QQUdFX1NJWkUg
dG8gbWFrZQogICB0aGUgbmV3IGVsc2UgaWYgYmxvY2sgcmVhY2hhYmxlLgoKZGlmZiAtLWdpdCBh
L2xpYi91a2FsbG9jL2FsbG9jLmMgYi9saWIvdWthbGxvYy9hbGxvYy5jCmluZGV4IDJkMTYwNTcu
LjJlOTFmZmQgMTAwNjQ0Ci0tLSBhL2xpYi91a2FsbG9jL2FsbG9jLmMKKysrIGIvbGliL3VrYWxs
b2MvYWxsb2MuYwpAQCAtMjUyLDE0ICsyNTIsMjEgQEAgaW50IHVrX3Bvc2l4X21lbWFsaWduX2lm
cGFnZXMoc3RydWN0IHVrX2FsbG9jICphLAogCSAqIHByZWNlZGluZyB0aGUgbWVtb3J5IGJsb2Nr
LCBidXQgaW5zdGVhZCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBwYWdlCiAJICogcHJlY2VkaW5n
IHRoZSBtZW1vcnkgcmV0dXJuZWQgYnkgdGhpcyBmdW5jdGlvbi4KIAkgKgotCSAqIGFsaWduIDwg
c2l6ZW9mKCptZXRhZGF0YSkgaW1wbGllcyB0aGF0IG1ldGFkYXRhIGFyZSB0b28gbGFyZ2UgdG8g
YmUKLQkgKiBzdG9yZWQgcHJlY2VkaW5nIHRoZSBmaXJzdCBtZW1vcnkgYmxvY2sgYXQgZ2l2ZW4g
YWxpZ25tZW50LiBJbiB0aGlzCi0JICogY2FzZSwgc2V0IGFsaWduIHRvIHRoZSBuZXh0IHBvd2Vy
IG9mIHR3byA+PSBzaXplb2YoKm1ldGFkYXRhKS4gU2luY2UKLQkgKiBpdCBpcyBhIHBvd2VyIG9m
IHR3bywgdGhlIHJldHVybmVkIHBvaW50ZXIgd2lsbCBzdGlsbCBiZSBhbGlnbmVkIGF0Ci0JICog
dGhlIHJlcXVlc3RlZCBhbGlnbm1lbnQuCisJICogYWxpZ24gPCBNRVRBREFUQV9JRlBBR0VTX1NJ
WkVfUE9XMiBpbXBsaWVzIHRoYXQgbWV0YWRhdGEgYXJlIHRvbworCSAqIGxhcmdlIHRvIGJlIHN0
b3JlZCBwcmVjZWRpbmcgdGhlIGZpcnN0IG1lbW9yeSBibG9jayBhdCBnaXZlbgorCSAqIGFsaWdu
bWVudC4gSW4gdGhpcyBjYXNlLCBzZXQgYWxpZ24gdG8gTUVUQURBVEFfSUZQQUdFU19TSVpFX1BP
VzIsCisJICogdGhlIG5leHQgcG93ZXIgb2YgdHdvID49IHNpemVvZigqbWV0YWRhdGEpLiBTaW5j
ZSBpdCBpcyBhIHBvd2VyIG9mCisJICogdHdvLCB0aGUgcmV0dXJuZWQgcG9pbnRlciB3aWxsIHN0
aWxsIGJlIGFsaWduZWQgYXQgdGhlIHJlcXVlc3RlZAorCSAqIGFsaWdubWVudC4KIAkgKi8KLQlp
ZiAoYWxpZ24gPj0gX19QQUdFX1NJWkUpIHsKKwlpZiAoYWxpZ24gPiBfX1BBR0VfU0laRSkgewog
CQlwYWRkaW5nID0gX19QQUdFX1NJWkU7CisJfSBlbHNlIGlmIChhbGlnbiA9PSBfX1BBR0VfU0la
RSkgeworCQkvKiBObyBwYWRkaW5nIG5lZWRlZDogaW4gdGhpcyBjYXNlIHdlIGFscmVhZHkga25v
dyB0aGF0IHRoZSBuZXh0CisJCSAqIGFsaWduZWQgcG9pbnRlciB3aWxsIGJlIGludHB0ciAoYXMg
aGFuZGVkIHRvIGJ5IHBhbGxvYykgKworCQkgKiBfX1BBR0VfU0laRS4KKwkJICovCisJCXBhZGRp
bmcgPSAwOwogCX0gZWxzZSBpZiAoYWxpZ24gPCBNRVRBREFUQV9JRlBBR0VTX1NJWkVfUE9XMikg
ewogCQlhbGlnbiA9IE1FVEFEQVRBX0lGUEFHRVNfU0laRV9QT1cyOwogCQlwYWRkaW5nID0gMDsK
LS0gCjIuNy40CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVj
dC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlv
cy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Apr 06 09:04:40 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 06 Apr 2020 09:04: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 1jLNgN-0006tw-I6; Mon, 06 Apr 2020 09:04: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=FTjb=5W=neclab.eu=sharan.santhanam@srs-us1.protection.inumbo.net>)
 id 1jLNgN-0006tp-55
 for minios-devel@lists.xenproject.org; Mon, 06 Apr 2020 09:04:39 +0000
X-Inumbo-ID: a3f40f6e-77e5-11ea-bfdb-12813bfff9fa
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id a3f40f6e-77e5-11ea-bfdb-12813bfff9fa;
 Mon, 06 Apr 2020 09:04:37 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id A26FA103ABB;
 Mon,  6 Apr 2020 11:04:36 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (atlas-a.office.hd)
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 Myg0yObKNKZm; Mon,  6 Apr 2020 11:04:36 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from puck.office.hd (puck.office.hd [192.168.24.91])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 7CAF5103A06;
 Mon,  6 Apr 2020 11:04:36 +0200 (CEST)
Received: from [10.7.0.82] (192.168.24.96) by puck.office.hd (192.168.24.91)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Mon, 6 Apr 2020
 11:04:35 +0200
To: Jia He <justin.he@arm.com>, <minios-devel@lists.xenproject.org>, Simon
 Kuenzer <simon.kuenzer@neclab.eu>, Felipe Huici <felipe.huici@neclab.eu>
References: <20200402041833.141738-1-justin.he@arm.com>
 <20200402041833.141738-2-justin.he@arm.com>
From: Sharan Santhanam <sharan.santhanam@neclab.eu>
Message-ID: <476ef239-b015-b880-916c-7a88ce0ae077@neclab.eu>
Date: Mon, 6 Apr 2020 11:04:10 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.9.0
MIME-Version: 1.0
In-Reply-To: <20200402041833.141738-2-justin.he@arm.com>
Content-Language: en-US
X-Originating-IP: [192.168.24.96]
X-ClientProxiedBy: titania.office.hd (192.168.24.89) To puck.office.hd
 (192.168.24.91)
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v3 1/7] plat: build: Add a
 config option to enable fp on 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: Kaly Xin <Kaly.Xin@arm.com>, nd@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>

SGVsbG8gSnVzdGluLAoKcGxlYXNlIGZpbmQgdGhlIGNvbW1lbnRzIGlubGluZToKClRoYW5rcyAm
IFJlZ2FyZHMKClNoYXJhbgoKT24gNC8yLzIwIDY6MTggQU0sIEppYSBIZSB3cm90ZToKPiBUaGlz
IGNvbmZpZyBpcyB0byBlbmFibGUgdGhlIHN1cHBvcnQgZm9yIGFybTY0IGZwIGZlYXR1cmUuIEZw
IGlzIGZvcgo+IGFwcGxpY2F0aW9uIG9ubHksIG5ldmVyIGZvciBVbmtyYWZ0IGtlcm5lbCBpdHNl
bGYuCj4KPiBUaGlzIGNvbmZpZyBpcyAnbicgYnkgZGVmYXVsdCBzaW5jZSB0aGVyZSBpcyBzb21l
IG92ZXJoZWFkIGR1cmluZyBjb250ZXh0Cj4gc3dpdGNoLgo+Cj4gU2lnbmVkLW9mZi1ieTogSmlh
IEhlIDxqdXN0aW4uaGVAYXJtLmNvbT4KPiAtLS0KPiAgIHBsYXQvQ29uZmlnLnVrIHwgNyArKysr
KysrCj4gICAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspCj4KPiBkaWZmIC0tZ2l0IGEv
cGxhdC9Db25maWcudWsgYi9wbGF0L0NvbmZpZy51awo+IGluZGV4IDBlYjVhMTAuLmY1NTVmMTcg
MTAwNjQ0Cj4gLS0tIGEvcGxhdC9Db25maWcudWsKPiArKysgYi9wbGF0L0NvbmZpZy51awo+IEBA
IC0yMSwzICsyMSwxMCBAQCBjb25maWcgSFoKPiAgIAloZWxwCj4gICAJCUNvbmZpZ3VyZSB0aGUg
dGltZXIgaW50ZXJydXB0IGZyZXF1ZW5jeS4KPiAgIAkJT25seSBjaGFuZ2UgdGhpcyBpZiB5b3Ug
a25vdyB3aGF0IHlvdSdyZSBkb2luZy4KPiArCj4gK2NvbmZpZyBGTE9BVF9QT0lOVAo+ICsJYm9v
bCAiYXJtNjQgZmxvYXRpbmcgcG9pbnQgc3VwcG9ydCBpbiBhcHBsaWNhdGlvbiIKSSB3b3VsZCBy
ZW1vdmUgdGhlIGFybTY0IGFuZCBrZWVwIGl0ICJmbG9hdGluZyBwb2ludCBzdXBwb3J0IGluIAph
cHBsaWNhdGlvbiBhcyB0aGlzIG9wdGlvbiBpcyBvbmx5IHZpc2libGUgd2hlbiBhcm02NCBidWls
ZCBhcmUgZW5hYmxlZC4KPiArCWRlZmF1bHQgbgo+ICsJZGVwZW5kcyBvbiBBUkNIX0FSTV82NAo+
ICsJaGVscAo+ICsJCUVuYWJsZSBzdXBwb3J0IEZQVSB1c2FnZSBpbiBhcHBsaWNhdGlvbgoKX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVs
IG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9s
aXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Apr 06 09:34:14 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 06 Apr 2020 09:34: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 1jLO8y-0001Cs-RY; Mon, 06 Apr 2020 09:34: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=FTjb=5W=neclab.eu=sharan.santhanam@srs-us1.protection.inumbo.net>)
 id 1jLO8w-0001Cn-UB
 for minios-devel@lists.xenproject.org; Mon, 06 Apr 2020 09:34:10 +0000
X-Inumbo-ID: c3a798a4-77e9-11ea-bfdb-12813bfff9fa
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id c3a798a4-77e9-11ea-bfdb-12813bfff9fa;
 Mon, 06 Apr 2020 09:34:08 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id C08D3103ABB;
 Mon,  6 Apr 2020 11:34:07 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (atlas-a.office.hd)
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 7jgjTDS0q7Qr; Mon,  6 Apr 2020 11:34:07 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from puck.office.hd (puck.office.hd [192.168.24.91])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 9B02D103A06;
 Mon,  6 Apr 2020 11:34:07 +0200 (CEST)
Received: from [10.7.0.82] (192.168.24.96) by puck.office.hd (192.168.24.91)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Mon, 6 Apr 2020
 11:34:06 +0200
To: Jia He <justin.he@arm.com>, <minios-devel@lists.xenproject.org>, Simon
 Kuenzer <simon.kuenzer@neclab.eu>, Felipe Huici <felipe.huici@neclab.eu>
References: <20200402041833.141738-1-justin.he@arm.com>
 <20200402041833.141738-3-justin.he@arm.com>
From: Sharan Santhanam <sharan.santhanam@neclab.eu>
Message-ID: <7e345035-6e56-e5cf-87a5-0e41c1924806@neclab.eu>
Date: Mon, 6 Apr 2020 11:34:05 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.9.0
MIME-Version: 1.0
In-Reply-To: <20200402041833.141738-3-justin.he@arm.com>
Content-Language: en-US
X-Originating-IP: [192.168.24.96]
X-ClientProxiedBy: puck.office.hd (192.168.24.91) To puck.office.hd
 (192.168.24.91)
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v3 2/7] build: Link libgcc at
 the end of the link options list
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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: Kaly Xin <Kaly.Xin@arm.com>, nd@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>

SGVsbG8gSnVzdGluLAoKUGxlYXNlIGZpbmQgdGhlIGNvbW1lbnQgaW5saW5lLgoKVGhhbmtzICYg
UmVnYXJkcwoKU2hhcmFuCgpPbiA0LzIvMjAgNjoxOCBBTSwgSmlhIEhlIHdyb3RlOgo+IFRvIHVz
ZSBuZXdsaWIgb24gYXJtNjQgcGxhdCBrdm0sIGxpYmdjYyBzaG91bGQgYmUgbGlua2VkIGF0IHRo
ZSBlbmQgb2YKPiB0aGUgb3B0aW9ucyBsaXN0LCBvdGhlcndpc2UgaXQgd2lsbCBiZSBpZ25vcmVk
IGR1ZSB0byAtc3RkbGliLgo+Cj4gV2l0aG91dCB0aGlzIHBhdGNoLCB0aGVyZSB3aWxsIGJlIGEg
bGlua2luZyBlcnJvciBvbiBhcm0ga3ZtIHBsYXQ6Cj4gc3lzbG9nLmM6KC50ZXh0KzB4N2Q1Y2Mp
OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBfX2Zsb2F0c2l0ZicKPiBzeXNsb2cuYzooLnRleHQr
MHg3ZDVjYyk6IHJlbG9jYXRpb24gdHJ1bmNhdGVkIHRvIGZpdDogUl9BQVJDSDY0X0NBTEwyNiBh
Z2FpbnN0IHVuZGVmaW5lZCBzeW1ib2wgYF9fZmxvYXRzaXRmJwo+IC9yb290L2hqL1VLL3VuaWty
YWZ0X3Vwc3RyZWFtL2FwcHMvaGVsbG93b3JsZC9idWlsZC9oZWxsb3dvcmxkX2t2bS1hcm02NC5v
OiBJbiBmdW5jdGlvbiBgX19pZWVlNzU0X2h5cG90bCc6Cj4gc3lzbG9nLmM6KC50ZXh0KzB4OTk0
MzQpOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBfX211bHRmMycKPiBzeXNsb2cuYzooLnRleHQr
MHg5OTQzNCk6IHJlbG9jYXRpb24gdHJ1bmNhdGVkIHRvIGZpdDogUl9BQVJDSDY0X0NBTEwyNiBh
Z2FpbnN0IHVuZGVmaW5lZCBzeW1ib2wgYF9fbXVsdGYzJwo+IHN5c2xvZy5jOigudGV4dCsweDk5
NDQ0KTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgX19tdWx0ZjMnCj4gc3lzbG9nLmM6KC50ZXh0
KzB4OTk0NDQpOiBhZGRpdGlvbmFsIHJlbG9jYXRpb24gb3ZlcmZsb3dzIG9taXR0ZWQgZnJvbSB0
aGUgb3V0cHV0Cj4gc3lzbG9nLmM6KC50ZXh0KzB4OTk0NTApOiB1bmRlZmluZWQgcmVmZXJlbmNl
IHRvIGBfX2FkZHRmMycKPiAvcm9vdC9oai9VSy91bmlrcmFmdF91cHN0cmVhbS9hcHBzL2hlbGxv
d29ybGQvYnVpbGQvaGVsbG93b3JsZF9rdm0tYXJtNjQubzogSW4gZnVuY3Rpb24gYHNxcnRsJzoK
PiBzeXNsb2cuYzooLnRleHQrMHhiMTJjMCk6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYF9fdHJ1
bmN0ZmRmMicKPiBzeXNsb2cuYzooLnRleHQrMHhiMTJjOCk6IHVuZGVmaW5lZCByZWZlcmVuY2Ug
dG8gYF9fZXh0ZW5kZGZ0ZjInCj4KPiBBYm92ZSB1bmRlZmluZWQgc3ltYm9scyBhcmUgYXQgbGli
Z2NjLmEKPgo+IFNpZ25lZC1vZmYtYnk6IEppYSBIZSA8anVzdGluLmhlQGFybS5jb20+Cj4gLS0t
Cj4gICBwbGF0L2t2bS9MaW5rZXIudWsgfCAyICsrCj4gICAxIGZpbGUgY2hhbmdlZCwgMiBpbnNl
cnRpb25zKCspCj4KPiBkaWZmIC0tZ2l0IGEvcGxhdC9rdm0vTGlua2VyLnVrIGIvcGxhdC9rdm0v
TGlua2VyLnVrCj4gaW5kZXggNWU0MjE5My4uNjVhNWY4ZSAxMDA2NDQKPiAtLS0gYS9wbGF0L2t2
bS9MaW5rZXIudWsKPiArKysgYi9wbGF0L2t2bS9MaW5rZXIudWsKPiBAQCAtMiw2ICsyLDcgQEAg
aWZlcSAoeDg2XzY0LCQoQ09ORklHX1VLX0FSQ0gpKQo+ICAgS1ZNX0xERkxBR1MteSArPSAtV2ws
LW0sZWxmX3g4Nl82NAo+ICAgZWxzZSBpZmVxIChhcm02NCwkKENPTkZJR19VS19BUkNIKSkKPiAg
IEtWTV9MREZMQUdTLXkJICs9IC1XbCwtbSxhYXJjaDY0ZWxmCj4gK0tWTV9MSU5LX0xJQkdDQ19G
TEFHCTo9IC1sZ2NjCj4gICBlbmRpZgo+ICAgCj4gICAKPiBAQCAtMjYsNiArMjcsNyBAQCAkKEtW
TV9ERUJVR19JTUFHRSk6ICQoS1ZNX0FMSUJTKSAkKEtWTV9BTElCUy15KSAkKEtWTV9PTElCUykg
JChLVk1fT0xJQlMteSkgXAo+ICAgCQkJLVdsJChjb21tYSktLXN0YXJ0LWdyb3VwIFwKPiAgIAkJ
CSQoS1ZNX0FMSUJTKSAkKEtWTV9BTElCUy15KSBcCj4gICAJCQkkKFVLX0FMSUJTKSAkKFVLX0FM
SUJTLXkpIFwKPiArCQkJJChLVk1fTElOS19MSUJHQ0NfRkxBRykgXApJIHRoaW5rIGl0IGlzIGZp
bmUgaWYgd2UgY291bGQgZGlyZWN0bHkgaW5jbHVkZSB0aGUgbGliZ2NjLmEgaW50byBvdXIgCnN0
YXRpY2FsbHkgYnVpbHQgYmluYXJ5IGFzIHRoaXMgY29tZSBHUEwgdjMuIERvIHlvdSBrbm93IGlm
IHRoaXMgaGFzIGFuIAppbXBhY3Qgb24gdGhlIEJTRCBsaWNlbnNlPwo+ICAgCQkJLVdsJChjb21t
YSktLWVuZC1ncm91cCBcCj4gICAJCQktbyAkKEtWTV9JTUFHRSkubGQubykKPiAgIAkkKGNhbGwg
YnVpbGRfY21kLE9CSkNPUFksLCQoS1ZNX0lNQUdFKS5vLFwKCl9fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWlu
aW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5v
cmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Mon Apr 06 09:37:41 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 06 Apr 2020 09:37: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 1jLOCL-0001HM-5e; Mon, 06 Apr 2020 09:37: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=FTjb=5W=neclab.eu=sharan.santhanam@srs-us1.protection.inumbo.net>)
 id 1jLOCK-0001HH-5S
 for minios-devel@lists.xenproject.org; Mon, 06 Apr 2020 09:37:40 +0000
X-Inumbo-ID: 402a6d2b-77ea-11ea-bfdb-12813bfff9fa
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 402a6d2b-77ea-11ea-bfdb-12813bfff9fa;
 Mon, 06 Apr 2020 09:37:38 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id BCD71103ABB;
 Mon,  6 Apr 2020 11:37:37 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (atlas-a.office.hd)
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 Olxa6GO_T39t; Mon,  6 Apr 2020 11:37:37 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from puck.office.hd (puck.office.hd [192.168.24.91])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 96626103A06;
 Mon,  6 Apr 2020 11:37:37 +0200 (CEST)
Received: from [10.7.0.82] (192.168.24.96) by puck.office.hd (192.168.24.91)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Mon, 6 Apr 2020
 11:37:36 +0200
To: Jia He <justin.he@arm.com>, <minios-devel@lists.xenproject.org>, Simon
 Kuenzer <simon.kuenzer@neclab.eu>, Felipe Huici <felipe.huici@neclab.eu>
References: <20200402041833.141738-1-justin.he@arm.com>
 <20200402041833.141738-4-justin.he@arm.com>
From: Sharan Santhanam <sharan.santhanam@neclab.eu>
Message-ID: <d0ddfa4b-e8b1-e8c2-7be6-6b969f3e303e@neclab.eu>
Date: Mon, 6 Apr 2020 11:37:35 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.9.0
MIME-Version: 1.0
In-Reply-To: <20200402041833.141738-4-justin.he@arm.com>
Content-Language: en-US
X-Originating-IP: [192.168.24.96]
X-ClientProxiedBy: oberon.office.hd (192.168.24.90) To puck.office.hd
 (192.168.24.91)
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v3 3/7] plat/kvm: arm64: Enable
 the fp/simd at the starting point
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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: Kaly Xin <Kaly.Xin@arm.com>, nd@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>

Ck9uIDQvMi8yMCA2OjE4IEFNLCBKaWEgSGUgd3JvdGU6Cj4gV3JpdGUgdGhlIHN5cyByZWcgdG8g
ZW5hYmxlIHRoZSBmcC9zaW1kIGZlYXR1cmUsIG90aGVyd2lzZSBpdCB3aWxsCj4gY2F1c2UgZmxv
YXRpbmcgcG9pbnQvc2ltZCBleGNlcHRpb24gd2hlbiB0b3VjaGluZyBxMC1xMzEuCj4KPiBTaWdu
ZWQtb2ZmLWJ5OiBKaWEgSGUgPGp1c3Rpbi5oZUBhcm0uY29tPgo+IC0tLQo+ICAgcGxhdC9rdm0v
YXJtL2VudHJ5NjQuUyB8IDggKysrKysrKysKPiAgIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlv
bnMoKykKPgo+IGRpZmYgLS1naXQgYS9wbGF0L2t2bS9hcm0vZW50cnk2NC5TIGIvcGxhdC9rdm0v
YXJtL2VudHJ5NjQuUwo+IGluZGV4IDM1OWEzMTAuLjFlMzIyNjggMTAwNjQ0Cj4gLS0tIGEvcGxh
dC9rdm0vYXJtL2VudHJ5NjQuUwo+ICsrKyBiL3BsYXQva3ZtL2FybS9lbnRyeTY0LlMKPiBAQCAt
MzYsNiArMzYsNyBAQAo+ICAgI2luY2x1ZGUgPGt2bS1hcm0vbW0uaD4KPiAgICNpbmNsdWRlIDxh
cm0vY3B1X2RlZnMuaD4KPiAgICNpbmNsdWRlIDx1ay9wbGF0L2NvbW1vbi9zZWN0aW9ucy5oPgo+
ICsjaW5jbHVkZSA8dWsvY29uZmlnLmg+Cj4gICAKPiAgIC5nbG9iYWwgcGFnZV90YWJsZV9zaXpl
Cj4gICAuZGF0YQo+IEBAIC00OSw2ICs1MCwxMyBAQCBwYWdlX3RhYmxlX3NpemU6Cj4gICAKPiAg
IC50ZXh0Cj4gICBFTlRSWShfbGlia3ZtcGxhdF9lbnRyeSkKPiArI2lmZGVmIENPTkZJR19GTE9B
VF9QT0lOVAo+ICsJLyogRW5hYmxlIGZwL3NpbWQgc3VwcG9ydCAqLwo+ICsJbGRyICAgICAgICB4
MCwgPSgzIDw8IDIwKQo+ICsJbXNyICAgICAgICBjcGFjcl9lbDEsIHgwCj4gKwlpc2IKPiArI2Vu
ZGlmCgpEbyB3ZSBuZWVkIHRvIGVuYWJsZSB0aGUgZmxvYXRpbmcgcG9pbnQgdXBvbiBlbnRyeT8K
Ckl0IG1pZ2h0IGJlIGJldHRlciB0byBkbyBpdCBhdCB0aGUgc2V0dXAgcGhhc2UgaW4gYHNldHVw
LmNgIGFuZCAKaW1wbGVtZW50IHRoaXMgYXMgaW5saW5lIGFzc2VtYmx5ClNpbmNlIGl0IGlzIGEg
Y3B1IGZlYXR1cmUsIGl0IG1pZ2h0IGJlIGJldHRlciB0byBwcm92aWRlIGZ1bmN0aW9ucyB0byAK
ZW5hYmxlIGFuZCBkaXNhYmxlIGl0LgoKPiArCj4gICAJLyogQ2FsY3VsYXRlIHRoZSBpbWFnZSBz
aXplICovCj4gICAJbGRyIHgyNSwgPV9kdGIKPiAgIAlsZHIgeDI2LCA9X2VuZAoKX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxp
bmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54
ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Apr 06 09:41:40 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 06 Apr 2020 09:41: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 1jLOGB-0001xj-Gy; Mon, 06 Apr 2020 09:41: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=FTjb=5W=neclab.eu=sharan.santhanam@srs-us1.protection.inumbo.net>)
 id 1jLOGA-0001xe-KR
 for minios-devel@lists.xenproject.org; Mon, 06 Apr 2020 09:41:38 +0000
X-Inumbo-ID: ce224ed6-77ea-11ea-bfdb-12813bfff9fa
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id ce224ed6-77ea-11ea-bfdb-12813bfff9fa;
 Mon, 06 Apr 2020 09:41:35 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id D3978F200F;
 Mon,  6 Apr 2020 11:41:34 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (atlas-b.office.hd)
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 eVJy8TDuxXSp; Mon,  6 Apr 2020 11:41:34 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from puck.office.hd (puck.office.hd [192.168.24.91])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 9600CF200E;
 Mon,  6 Apr 2020 11:41:26 +0200 (CEST)
Received: from [10.7.0.82] (192.168.24.96) by puck.office.hd (192.168.24.91)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Mon, 6 Apr 2020
 11:41:25 +0200
To: Jia He <justin.he@arm.com>, <minios-devel@lists.xenproject.org>, Simon
 Kuenzer <simon.kuenzer@neclab.eu>, Felipe Huici <felipe.huici@neclab.eu>
References: <20200402041833.141738-1-justin.he@arm.com>
 <20200402041833.141738-5-justin.he@arm.com>
From: Sharan Santhanam <sharan.santhanam@neclab.eu>
Message-ID: <60212693-21f8-79ac-c55a-e0432d22d552@neclab.eu>
Date: Mon, 6 Apr 2020 11:41:24 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.9.0
MIME-Version: 1.0
In-Reply-To: <20200402041833.141738-5-justin.he@arm.com>
Content-Language: en-US
X-Originating-IP: [192.168.24.96]
X-ClientProxiedBy: titania.office.hd (192.168.24.89) To puck.office.hd
 (192.168.24.91)
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v3 4/7] plat/arm: Support
 fp/simd save/restore during context switch
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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: Kaly Xin <Kaly.Xin@arm.com>, nd@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>

SGVsbG8gSnVzdGluLAoKUGxlYXNlIGZpbmQgdGhlIGNvbW1lbnQgaW5saW5lLgoKVGhhbmtzICYg
UmVnYXJkcwpTaGFyYW4KCk9uIDQvMi8yMCA2OjE4IEFNLCBKaWEgSGUgd3JvdGU6Cj4gRmxvYXRp
bmcgcG9pbnQgZmVhdHVyZSBpcyB1c2VmdWwgZm9yIHNvbWUgYXBwbGljYXRpb25zLiBXZSBzaG91
bGQKPiBzYXZlL3Jlc3RvcmUgZnAgcmVnaXN0ZXJzIGR1cmluZyBjb250ZXh0IHN3aXRjaC4KPgo+
IFNpZ25lZC1vZmYtYnk6IEppYSBIZSA8anVzdGluLmhlQGFybS5jb20+Cj4gLS0tCj4gICBwbGF0
L2NvbW1vbi9hcm0vdGhyZWFkX3N0YXJ0NjQuUyAgICB8IDcyICsrKysrKysrKysrKysrKysrKysr
KysrKysrKysrCj4gICBwbGF0L2NvbW1vbi9pbmNsdWRlL2FybS9hcm02NC9jcHUuaCB8IDQ2ICsr
KysrKysrKysrKysrKysrLQo+ICAgMiBmaWxlcyBjaGFuZ2VkLCAxMTYgaW5zZXJ0aW9ucygrKSwg
MiBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS9wbGF0L2NvbW1vbi9hcm0vdGhyZWFkX3N0
YXJ0NjQuUyBiL3BsYXQvY29tbW9uL2FybS90aHJlYWRfc3RhcnQ2NC5TCj4gaW5kZXggOWE4MGY2
Mi4uNDk1MDQwYyAxMDA2NDQKPiAtLS0gYS9wbGF0L2NvbW1vbi9hcm0vdGhyZWFkX3N0YXJ0NjQu
Uwo+ICsrKyBiL3BsYXQvY29tbW9uL2FybS90aHJlYWRfc3RhcnQ2NC5TCj4gQEAgLTM0LDYgKzM0
LDcgQEAKPiAgICNpbmNsdWRlIDx1ay9wbGF0L2NvbW1vbi9zd19jdHguaD4KPiAgICNpbmNsdWRl
IDx1ay9hcmNoL2xjcHUuaD4KPiAgICNpbmNsdWRlIDx1ay9hc20uaD4KPiArI2luY2x1ZGUgPHVr
L2NvbmZpZy5oPgo+ICAgCj4gICAvKgo+ICAgICogVGhyZWFkIHN0YWNrIG1lbW9yeSBsYXlvdXQ6
Cj4gQEAgLTEyMSwzICsxMjIsNzQgQEAgcmVzdG9yZV9wb2ludDoKPiAgIAlhZGQgc3AsIHgyLCAj
X19DQUxMRUVfU0FWRURfU0laRQo+ICAgCXJldAo+ICAgRU5EUFJPQyhhc21fc3dfY3R4X3N3aXRj
aCkKPiArCj4gKyNpZmRlZiBDT05GSUdfRkxPQVRfUE9JTlQKVGhpcyBjb2RlIGFwcGVhcnMgdG8g
ZnJvbSB0aGUgTGludXgga2VybmVsLiBTbyBpIHRoaW5rIHdlIG1heSBub3QgYmUgCmFibGUgdXNl
IHRoZW0gZGlyZWN0bHkuCj4gKy8qCj4gKyAqIFNhdmUgdGhlIEZQIHJlZ2lzdGVycy4KPiArICoK
PiArICogeDAgLSBwb2ludGVyIHRvIHN0cnVjdCBmcHNpbWRfc3RhdGUKPiArICovCj4gK0VOVFJZ
KGZwc2ltZF9zYXZlX3N0YXRlKQo+ICsJc3RwCXEwLCBxMSwgW3gwLCAjMTYgKiAwXQo+ICsJc3Rw
CXEyLCBxMywgW3gwLCAjMTYgKiAyXQo+ICsJc3RwCXE0LCBxNSwgW3gwLCAjMTYgKiA0XQo+ICsJ
c3RwCXE2LCBxNywgW3gwLCAjMTYgKiA2XQo+ICsJc3RwCXE4LCBxOSwgW3gwLCAjMTYgKiA4XQo+
ICsJc3RwCXExMCwgcTExLCBbeDAsICMxNiAqIDEwXQo+ICsJc3RwCXExMiwgcTEzLCBbeDAsICMx
NiAqIDEyXQo+ICsJc3RwCXExNCwgcTE1LCBbeDAsICMxNiAqIDE0XQo+ICsJc3RwCXExNiwgcTE3
LCBbeDAsICMxNiAqIDE2XQo+ICsJc3RwCXExOCwgcTE5LCBbeDAsICMxNiAqIDE4XQo+ICsJc3Rw
CXEyMCwgcTIxLCBbeDAsICMxNiAqIDIwXQo+ICsJc3RwCXEyMiwgcTIzLCBbeDAsICMxNiAqIDIy
XQo+ICsJc3RwCXEyNCwgcTI1LCBbeDAsICMxNiAqIDI0XQo+ICsJc3RwCXEyNiwgcTI3LCBbeDAs
ICMxNiAqIDI2XQo+ICsJc3RwCXEyOCwgcTI5LCBbeDAsICMxNiAqIDI4XQo+ICsJc3RwCXEzMCwg
cTMxLCBbeDAsICMxNiAqIDMwXSEKSXMgdGhlcmUgYW55IHJlYXNvbiB0byB1cGRhdGUgdGhpcyBy
ZWdpc3RlciAneDAnIGluc3RlYWQgb2YgdXNpbmcgdGhlIApvZmZzZXQgZGlyZWN0bHkuIEkgdGhp
bmsgaXQgaXMgbW9yZSByZWFkYWJsZSB3aXRoIG9mZnNldHMKPiArCW1ycwl4OCwgZnBzcgo+ICsJ
c3RyCXc4LCBbeDAsICMxNiAqIDJdCj4gKwltcnMJeDgsIGZwY3IKPiArCXN0cgl3OCwgW3gwLCAj
MTYgKiAyICsgNF0KPiArCj4gKwlyZXQKPiArRU5EUFJPQyhmcHNpbWRfc2F2ZV9zdGF0ZSkKPiAr
Cj4gKy8qCj4gKyAqIExvYWQgdGhlIEZQIHJlZ2lzdGVycy4KPiArICoKPiArICogeDAgLSBwb2lu
dGVyIHRvIHN0cnVjdCBmcHNpbWRfc3RhdGUKPiArICovCj4gK0VOVFJZKGZwc2ltZF9yZXN0b3Jl
X3N0YXRlKQo+ICsJbGRwCXEwLCBxMSwgW3gwLCAjMTYgKiAwXQo+ICsJbGRwCXEyLCBxMywgW3gw
LCAjMTYgKiAyXQo+ICsJbGRwCXE0LCBxNSwgW3gwLCAjMTYgKiA0XQo+ICsJbGRwCXE2LCBxNywg
W3gwLCAjMTYgKiA2XQo+ICsJbGRwCXE4LCBxOSwgW3gwLCAjMTYgKiA4XQo+ICsJbGRwCXExMCwg
cTExLCBbeDAsICMxNiAqIDEwXQo+ICsJbGRwCXExMiwgcTEzLCBbeDAsICMxNiAqIDEyXQo+ICsJ
bGRwCXExNCwgcTE1LCBbeDAsICMxNiAqIDE0XQo+ICsJbGRwCXExNiwgcTE3LCBbeDAsICMxNiAq
IDE2XQo+ICsJbGRwCXExOCwgcTE5LCBbeDAsICMxNiAqIDE4XQo+ICsJbGRwCXEyMCwgcTIxLCBb
eDAsICMxNiAqIDIwXQo+ICsJbGRwCXEyMiwgcTIzLCBbeDAsICMxNiAqIDIyXQo+ICsJbGRwCXEy
NCwgcTI1LCBbeDAsICMxNiAqIDI0XQo+ICsJbGRwCXEyNiwgcTI3LCBbeDAsICMxNiAqIDI2XQo+
ICsJbGRwCXEyOCwgcTI5LCBbeDAsICMxNiAqIDI4XQo+ICsJbGRwCXEzMCwgcTMxLCBbeDAsICMx
NiAqIDMwXSEKPiArCWxkcgl3OCwgW3gwLCAjMTYgKiAyXQo+ICsJbXNyCWZwc3IsIHg4Cj4gKwls
ZHIJdzgsIFt4MCwgIzE2ICogMiArIDRdCj4gKwo+ICsJLyoKPiArCSAqIFdyaXRlcyB0byBmcGNy
IG1heSBiZSBzZWxmLXN5bmNocm9uaXNpbmcsIHNvIGF2b2lkIHJlc3RvcmluZwo+ICsJICogdGhl
IHJlZ2lzdGVyIGlmIGl0IGhhc24ndCBjaGFuZ2VkLgo+ICsJICovCj4gKwltcnMJeDAsIGZwY3IK
PiArCWNtcAl4MCwgeDgKPiArCWIuZXEJOTk5OWYKPiArCW1zcglmcGNyLCB4OAo+ICsKPiArOTk5
OToKPiArCXJldAo+ICtFTkRQUk9DKGZwc2ltZF9yZXN0b3JlX3N0YXRlKQo+ICsjZW5kaWYgLyog
Q09ORklHX0ZMT0FUX1BPSU5UKSAqLwo+IGRpZmYgLS1naXQgYS9wbGF0L2NvbW1vbi9pbmNsdWRl
L2FybS9hcm02NC9jcHUuaCBiL3BsYXQvY29tbW9uL2luY2x1ZGUvYXJtL2FybTY0L2NwdS5oCj4g
aW5kZXggMTIyNzI3YS4uNzEwOTBiMiAxMDA2NDQKPiAtLS0gYS9wbGF0L2NvbW1vbi9pbmNsdWRl
L2FybS9hcm02NC9jcHUuaAo+ICsrKyBiL3BsYXQvY29tbW9uL2luY2x1ZGUvYXJtL2FybTY0L2Nw
dS5oCj4gQEAgLTExNiw2ICsxMTYsNDcgQEAgdm9pZCBoYWx0KHZvaWQpOwo+ICAgdm9pZCByZXNl
dCh2b2lkKTsKPiAgIHZvaWQgc3lzdGVtX29mZih2b2lkKTsKPiAgIAo+ICsjaWZkZWYgQ09ORklH
X0ZMT0FUX1BPSU5UCj4gK3N0cnVjdCB1c2VyX2Zwc2ltZF9zdGF0ZSB7Cj4gKwlfX3U2NAkJdnJl
Z3NbMzIgKiAyXTsKPiArCV9fdTMyCQlmcHNyOwo+ICsJX191MzIJCWZwY3I7Cj4gKwlfX3UzMgkJ
X19yZXNlcnZlZFsyXTsKPiArfTsKPiArCj4gK2V4dGVybiB2b2lkIGZwc2ltZF9zYXZlX3N0YXRl
KHVpbnRwdHJfdCBwdHIpOwo+ICtleHRlcm4gdm9pZCBmcHNpbWRfcmVzdG9yZV9zdGF0ZSh1aW50
cHRyX3QgcHRyKTsKPiArCj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBzYXZlX2V4dHJlZ3Moc3RydWN0
IHN3X2N0eCAqY3R4KQo+ICt7Cj4gKwlmcHNpbWRfc2F2ZV9zdGF0ZShjdHgtPmV4dHJlZ3MpOwo+
ICt9Cj4gKwo+ICtzdGF0aWMgaW5saW5lIHZvaWQgcmVzdG9yZV9leHRyZWdzKHN0cnVjdCBzd19j
dHggKmN0eCkKPiArewo+ICsJZnBzaW1kX3Jlc3RvcmVfc3RhdGUoY3R4LT5leHRyZWdzKTsKPiAr
fQo+ICsKPiArc3RhdGljIGlubGluZSBzdHJ1Y3Qgc3dfY3R4ICphcmNoX2FsbG9jX3N3X2N0eChz
dHJ1Y3QgdWtfYWxsb2MgKmFsbG9jYXRvcikKPiArewo+ICsJc3RydWN0IHN3X2N0eCAqY3R4Owo+
ICsKPiArCWN0eCA9IChzdHJ1Y3Qgc3dfY3R4ICopdWtfbWFsbG9jKGFsbG9jYXRvciwgc2l6ZW9m
KHN0cnVjdCBzd19jdHgpKTsKPiArCWlmIChjdHgpCj4gKwkJY3R4LT5leHRyZWdzID0gKHVpbnRw
dHJfdCl1a19tYWxsb2MoYWxsb2NhdG9yLAo+ICsJCQkJCXNpemVvZihzdHJ1Y3QgdXNlcl9mcHNp
bWRfc3RhdGUpKTsKQ2FuJ3Qgd2UgbWVyZ2UgdGhlIG1hbGxvYyBjYWxsIGludG8gYSBzaW5nbGUg
Y2FsbCBhbmQgYWRqdXN0IHRoZSBwb2ludGVyIApvZiB0aGUgY3R4LT5leHRyZWdzIHRvIHBvaW50
IHRvIGxvY2F0aW9uIGluIGFsbG9jYXRlZCBtZW1vcnkuCj4gKwo+ICsJdWtfcHJfZGVidWcoIkFs
bG9jYXRpbmcgJWx1IGJ5dGVzIGZvciBzdyBjdHggYXQgJXAsIGV4dHJlZ3MgYXQgJXBcbiIsCj4g
KwkJCXNpemVvZihzdHJ1Y3Qgc3dfY3R4KSwgY3R4LCAodm9pZCAqKWN0eC0+ZXh0cmVncyk7Cj4g
Kwo+ICsJcmV0dXJuIGN0eDsKPiArfQo+ICsKPiArc3RhdGljIGlubGluZSB2b2lkIGFyY2hfaW5p
dF9leHRyZWdzKHN0cnVjdCBzd19jdHggKmN0eCBfX3VudXNlZCkKPiArewo+ICt9Cj4gKwo+ICsj
ZWxzZSAvKiAhQ09ORklHX0ZMT0FUX1BPSU5UICovCj4gICBzdGF0aWMgaW5saW5lIHZvaWQgc2F2
ZV9leHRyZWdzKHN0cnVjdCBzd19jdHggKmN0eCBfX3VudXNlZCkKPiAgIHsKPiAgIH0KPiBAQCAt
MTI4LDkgKzE2OSw5IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IHN3X2N0eCAqYXJjaF9hbGxvY19z
d19jdHgoc3RydWN0IHVrX2FsbG9jICphbGxvY2F0b3IpCj4gICB7Cj4gICAJc3RydWN0IHN3X2N0
eCAqY3R4Owo+ICAgCj4gLQljdHggPSB1a19tYWxsb2MoYWxsb2NhdG9yLCBzaXplb2Yoc3RydWN0
IHN3X2N0eCkpOwo+ICsJY3R4ID0gKHN0cnVjdCBzd19jdHggKil1a19tYWxsb2MoYWxsb2NhdG9y
LCBzaXplb2Yoc3RydWN0IHN3X2N0eCkpOwo+ICAgCXVrX3ByX2RlYnVnKCJBbGxvY2F0aW5nICVs
dSBieXRlcyBmb3Igc3cgY3R4IGF0ICVwXG4iLAo+IC0JCSAgIHNpemVvZihzdHJ1Y3Qgc3dfY3R4
KSwgY3R4KTsKPiArCQlzaXplb2Yoc3RydWN0IHN3X2N0eCksIGN0eCk7Cj4gICAKPiAgIAlyZXR1
cm4gY3R4Owo+ICAgfQo+IEBAIC0xNDAsNCArMTgxLDUgQEAgc3RhdGljIGlubGluZSB2b2lkIGFy
Y2hfaW5pdF9leHRyZWdzKHN0cnVjdCBzd19jdHggKmN0eCkKPiAgIAljdHgtPmV4dHJlZ3MgPSAo
dWludHB0cl90KWN0eCArIHNpemVvZihzdHJ1Y3Qgc3dfY3R4KTsKPiAgIH0KPiAgIAo+ICsjZW5k
aWYgLyogQ09ORklHX0ZMT0FUX1BPSU5UICovCj4gICAjZW5kaWYgLyogX19QTEFUX0NPTU1PTl9B
Uk02NF9DUFVfSF9fICovCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5w
cm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8v
bWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Mon Apr 06 09:43:09 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 06 Apr 2020 09:43: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 1jLOHc-000219-Lu; Mon, 06 Apr 2020 09:43: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=FTjb=5W=neclab.eu=sharan.santhanam@srs-us1.protection.inumbo.net>)
 id 1jLOHb-000214-Rk
 for minios-devel@lists.xenproject.org; Mon, 06 Apr 2020 09:43:07 +0000
X-Inumbo-ID: 049c9d68-77eb-11ea-bfdb-12813bfff9fa
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 049c9d68-77eb-11ea-bfdb-12813bfff9fa;
 Mon, 06 Apr 2020 09:43:07 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 6301B103ABB;
 Mon,  6 Apr 2020 11:43:06 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (atlas-a.office.hd)
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 mutRcv4Hafa2; Mon,  6 Apr 2020 11:43:06 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from puck.office.hd (puck.office.hd [192.168.24.91])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 3D423103A06;
 Mon,  6 Apr 2020 11:43:06 +0200 (CEST)
Received: from [10.7.0.82] (192.168.24.96) by puck.office.hd (192.168.24.91)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Mon, 6 Apr 2020
 11:43:05 +0200
To: Jia He <justin.he@arm.com>, <minios-devel@lists.xenproject.org>, Simon
 Kuenzer <simon.kuenzer@neclab.eu>, Felipe Huici <felipe.huici@neclab.eu>
References: <20200402041833.141738-1-justin.he@arm.com>
 <20200402041833.141738-6-justin.he@arm.com>
From: Sharan Santhanam <sharan.santhanam@neclab.eu>
Message-ID: <4e243857-545b-e33c-498b-3be012e67bf3@neclab.eu>
Date: Mon, 6 Apr 2020 11:43:04 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.9.0
MIME-Version: 1.0
In-Reply-To: <20200402041833.141738-6-justin.he@arm.com>
Content-Language: en-US
X-Originating-IP: [192.168.24.96]
X-ClientProxiedBy: puck.office.hd (192.168.24.91) To puck.office.hd
 (192.168.24.91)
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v3 5/7] arch/arm64: Don't pass
 -mgeneral-regs-only when CONFIG_FLOAT_POINT is y
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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: Kaly Xin <Kaly.Xin@arm.com>, nd@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>

SGVsbG8gSnVzdGluLAoKVGhpcyBwYXRjaCBpcyBmaW5lLgoKVGhhbmtzICYgUmVnYXJkcwoKU2hh
cmFuCgpSZXZpZXdlZC1ieTogU2hhcmFuIFNhbnRoYW5hbSA8c2hhcmFuLnNhbnRoYW5hbUBuZWNs
YWIuZXU+CgpPbiA0LzIvMjAgNjoxOCBBTSwgSmlhIEhlIHdyb3RlOgo+IFN1cHBvcnQgQ09ORklH
X0ZMT0FUX1BPSU5UIGluIFVuaWtyYWZ0IGFwcCB3aWxsIHRha2Ugc29tZSBvdmVyaGVhZCBkdXJp
bmcKPiBjb250ZXh0IHN3aXRjaC4gSGVuY2Ugc3RpbGwgdXNlIC1tZ2VuZXJhbC1yZWdzLW9ubHkg
d2hlbgo+IENPTkZJR19GTE9BVF9QT0lOVCBpcyAnbicKPgo+IFNpZ25lZC1vZmYtYnk6IEppYSBI
ZSA8anVzdGluLmhlQGFybS5jb20+Cj4gLS0tCj4gICBhcmNoL2FybS9hcm02NC9NYWtlZmlsZS51
ayB8IDUgKysrKysKPiAgIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKykKPgo+IGRpZmYg
LS1naXQgYS9hcmNoL2FybS9hcm02NC9NYWtlZmlsZS51ayBiL2FyY2gvYXJtL2FybTY0L01ha2Vm
aWxlLnVrCj4gaW5kZXggNzdlNTIwNC4uYWY2NDMyYyAxMDA2NDQKPiAtLS0gYS9hcmNoL2FybS9h
cm02NC9NYWtlZmlsZS51awo+ICsrKyBiL2FyY2gvYXJtL2FybTY0L01ha2VmaWxlLnVrCj4gQEAg
LTMsNyArMywxMiBAQAo+ICAgIyB3ZSBzaG91bGQgbm90IGVuYWJsZSB0aGUgRlAgJiBTSU1EIGFj
Y2VzcyBmb3Iga2VybmVsLiBBcyBHQ0Mgd2lsbAo+ICAgIyB0aGUgRlAgJiBTSU1EIHJlZ2lzdGVy
cyB0byBwYXNzIHBhcmFtZXRlcnMsIHdlIHVzZSAtbWdlbmVyYWwtcmVncy1vbmx5Cj4gICAjIGZs
YWcgdG8gZm9yY2UgR0NDIHRvIHVzZSBnZW5lcmljIHJlZ2lzdGVycwo+ICtpZmVxICgkKENPTkZJ
R19GTE9BVF9QT0lOVCkseSkKPiArQVJDSEZMQUdTICAgICArPSAtRF9fQVJNXzY0X18KPiArZWxz
ZQo+ICAgQVJDSEZMQUdTICAgICArPSAtRF9fQVJNXzY0X18gLW1nZW5lcmFsLXJlZ3Mtb25seQo+
ICtlbmRpZgo+ICsKPiAgIElTUl9BUkNIRkxBR1MgKz0gLURfX0FSTV82NF9fIC1tZ2VuZXJhbC1y
ZWdzLW9ubHkKPiAgIAo+ICAgIyBEaXNhYmxlIEZQVSBmb3IgdHJhcC9leGNlcHRpb24vaW50ZXJy
dXB0IGhhbmRsZXJzCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9q
ZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWlu
aW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Mon Apr 06 09:46:45 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 06 Apr 2020 09:46: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 1jLOL5-00025C-Ux; Mon, 06 Apr 2020 09:46:43 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=FTjb=5W=neclab.eu=sharan.santhanam@srs-us1.protection.inumbo.net>)
 id 1jLOL4-00024S-V1
 for minios-devel@lists.xenproject.org; Mon, 06 Apr 2020 09:46:42 +0000
X-Inumbo-ID: 83eaea20-77eb-11ea-b4f4-bc764e2007e4
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 83eaea20-77eb-11ea-b4f4-bc764e2007e4;
 Mon, 06 Apr 2020 09:46:40 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id D7EC1F200F;
 Mon,  6 Apr 2020 11:46:39 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (atlas-b.office.hd)
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 atAwEgpsI_5J; Mon,  6 Apr 2020 11:46:39 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from puck.office.hd (puck.office.hd [192.168.24.91])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 99B27F200E;
 Mon,  6 Apr 2020 11:46:31 +0200 (CEST)
Received: from [10.7.0.82] (192.168.24.96) by puck.office.hd (192.168.24.91)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Mon, 6 Apr 2020
 11:46:30 +0200
To: Jia He <justin.he@arm.com>, <minios-devel@lists.xenproject.org>, Simon
 Kuenzer <simon.kuenzer@neclab.eu>, Felipe Huici <felipe.huici@neclab.eu>
References: <20200402041833.141738-1-justin.he@arm.com>
 <20200402041833.141738-7-justin.he@arm.com>
From: Sharan Santhanam <sharan.santhanam@neclab.eu>
Message-ID: <5c3eaa73-1748-7890-fce9-052ce4998689@neclab.eu>
Date: Mon, 6 Apr 2020 11:46:29 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.9.0
MIME-Version: 1.0
In-Reply-To: <20200402041833.141738-7-justin.he@arm.com>
Content-Language: en-US
X-Originating-IP: [192.168.24.96]
X-ClientProxiedBy: oberon.office.hd (192.168.24.90) To puck.office.hd
 (192.168.24.91)
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v3 6/7] arch/arm64: Fix
 -mfpu=none when not supporting fpsimd
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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: Kaly Xin <Kaly.Xin@arm.com>, nd@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>

SGVsbG8gSnVzdGluLAoKVGhpcyBwYXRjaCBzZWVtIGZpbmUuCgpUaGFua3MgJiBSZWdhcmRzClNo
YXJhbgoKUmV2aWV3ZWQtYnk6IFNoYXJhbiBTYW50aGFuYW0gPHNoYXJhbi5zYW50aGFuYW1AbmVj
bGFiLmV1PgoKT24gNC8yLzIwIDY6MTggQU0sIEppYSBIZSB3cm90ZToKPiBUaGVyZSBpcyBubyAt
bWZwdT1ub25lIGNvbXBpbGF0aW9uIGZsYWcgZm9yIGdjYyBvbiBhcm0uIFR5cGljYWxseSB3ZQo+
IGRvbid0IGRpc2FibGUgaHcgc3VwcG9ydCBmb3IgZnAsIG1lcmVseSB1c2luZyAtbWdlbmVyYWwt
cmVncy1vbmx5IHRvCj4gY2hlY2sgaXQgZHVyaW5nIGNvbXBpbGF0aW9uLgo+Cj4gU2lnbmVkLW9m
Zi1ieTogSmlhIEhlIDxqdXN0aW4uaGVAYXJtLmNvbT4KPiAtLS0KPiAgIGFyY2gvYXJtL2FybTY0
L01ha2VmaWxlLnVrIHwgNCArLS0tCj4gICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyks
IDMgZGVsZXRpb25zKC0pCj4KPiBkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vYXJtNjQvTWFrZWZpbGUu
dWsgYi9hcmNoL2FybS9hcm02NC9NYWtlZmlsZS51awo+IGluZGV4IGFmNjQzMmMuLmY3N2I2ZGYg
MTAwNjQ0Cj4gLS0tIGEvYXJjaC9hcm0vYXJtNjQvTWFrZWZpbGUudWsKPiArKysgYi9hcmNoL2Fy
bS9hcm02NC9NYWtlZmlsZS51awo+IEBAIC05LDEwICs5LDggQEAgZWxzZQo+ICAgQVJDSEZMQUdT
ICAgICArPSAtRF9fQVJNXzY0X18gLW1nZW5lcmFsLXJlZ3Mtb25seQo+ICAgZW5kaWYKPiAgIAo+
IC1JU1JfQVJDSEZMQUdTICs9IC1EX19BUk1fNjRfXyAtbWdlbmVyYWwtcmVncy1vbmx5Cj4gLQo+
ICAgIyBEaXNhYmxlIEZQVSBmb3IgdHJhcC9leGNlcHRpb24vaW50ZXJydXB0IGhhbmRsZXJzCj4g
LUlTUl9BUkNIRkxBR1MgKz0gLW1mcHU9bm9uZQo+ICtJU1JfQVJDSEZMQUdTICs9IC1EX19BUk1f
NjRfXyAtbWdlbmVyYWwtcmVncy1vbmx5Cj4gICAKPiAgIENJTkNMVURFUyAgICs9IC1JJChDT05G
SUdfVUtfQkFTRSkvYXJjaC9hcm0vYXJtNjQvaW5jbHVkZQo+ICAgQVNJTkNMVURFUyAgKz0gLUkk
KENPTkZJR19VS19CQVNFKS9hcmNoL2FybS9hcm02NC9pbmNsdWRlCgpfX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0
Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2pl
Y3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Mon Apr 06 09:47:52 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 06 Apr 2020 09:47: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 1jLOMC-00027o-2m; Mon, 06 Apr 2020 09:47: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=FTjb=5W=neclab.eu=sharan.santhanam@srs-us1.protection.inumbo.net>)
 id 1jLOMB-00027j-Fs
 for minios-devel@lists.xenproject.org; Mon, 06 Apr 2020 09:47:51 +0000
X-Inumbo-ID: ad0a062a-77eb-11ea-bfdb-12813bfff9fa
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id ad0a062a-77eb-11ea-bfdb-12813bfff9fa;
 Mon, 06 Apr 2020 09:47:49 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 023F2103ABB;
 Mon,  6 Apr 2020 11:47:49 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (atlas-a.office.hd)
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 NNNbJnVLMaMY; Mon,  6 Apr 2020 11:47:48 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from puck.office.hd (puck.office.hd [192.168.24.91])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id D067E103A06;
 Mon,  6 Apr 2020 11:47:48 +0200 (CEST)
Received: from [10.7.0.82] (192.168.24.96) by puck.office.hd (192.168.24.91)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Mon, 6 Apr 2020
 11:47:48 +0200
To: Jia He <justin.he@arm.com>, <minios-devel@lists.xenproject.org>, Simon
 Kuenzer <simon.kuenzer@neclab.eu>, Felipe Huici <felipe.huici@neclab.eu>
References: <20200402041833.141738-1-justin.he@arm.com>
 <20200402041833.141738-8-justin.he@arm.com>
From: Sharan Santhanam <sharan.santhanam@neclab.eu>
Message-ID: <47043f96-ba30-2680-8523-92c2c76e53be@neclab.eu>
Date: Mon, 6 Apr 2020 11:47:46 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.9.0
MIME-Version: 1.0
In-Reply-To: <20200402041833.141738-8-justin.he@arm.com>
Content-Language: en-US
X-Originating-IP: [192.168.24.96]
X-ClientProxiedBy: titania.office.hd (192.168.24.89) To puck.office.hd
 (192.168.24.91)
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v3 7/7] build: Add 'isr' variant
 for arm64 kvm plat source files called within irq context
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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: Kaly Xin <Kaly.Xin@arm.com>, nd@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>

SGVsbG8gSnVzdGluLAoKVGhpcyBwYXRjaCBpcyBmaW5lLgoKVGhhbmtzICYgUmVnYXJkcwoKU2hh
cmFuCgpSZXZpZXdlZC1ieTogU2hhcmFuIFNhbnRoYW5hbSA8c2hhcmFuLnNhbnRoYW5hbUBuZWNs
YWIuZXU+CgpPbiA0LzIvMjAgNjoxOCBBTSwgSmlhIEhlIHdyb3RlOgo+ICdpc3InIHZhcmlhbnQg
aXMgdG8gYmUgY2FsbGVkIHdpdGhpbiBpbnRlcnJ1cHQgc2FmZSBjb250ZXh0LiBUeXBpY2FsbHks
Cj4gdHJhcHMvZXhjZXB0aW9uL2NvbnRleHQtc3dpdGNoIG5lZWQgdG8gYmUgYWRkZWQgdGhpcyB2
YXJpYW50Lgo+IE9uIGFybSwgLW1nZW5lcmFsLXJlZ3Mtb25seSBpcyBwYXNzZWQgdG8gZm9yYmlk
IHRoZSBjb21waWxlciB0byB1c2UgZW5oYW5jZWQKPiBDUFUgZnVuY3Rpb25zIHRoYXQgYXJlIG5v
dCBzYXZlZCB3aXRoaW4gaW50ZXJydXB0IGNvbnRleHQgKGUuZy4sIGZsb2F0aW5nCj4gcG9pbnQg
dW5pdHMsIHZlY3RvciB1bml0cykuCj4KPiBTaWduZWQtb2ZmLWJ5OiBKaWEgSGUgPGp1c3Rpbi5o
ZUBhcm0uY29tPgo+IC0tLQo+ICAgcGxhdC9rdm0vTWFrZWZpbGUudWsgfCAxMCArKysrKy0tLS0t
Cj4gICAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQo+Cj4g
ZGlmZiAtLWdpdCBhL3BsYXQva3ZtL01ha2VmaWxlLnVrIGIvcGxhdC9rdm0vTWFrZWZpbGUudWsK
PiBpbmRleCBhNmQ2ZjVlLi4yNjA5NDBhIDEwMDY0NAo+IC0tLSBhL3BsYXQva3ZtL01ha2VmaWxl
LnVrCj4gKysrIGIvcGxhdC9rdm0vTWFrZWZpbGUudWsKPiBAQCAtODIsMTYgKzgyLDE2IEBAIExJ
QktWTVBMQVRfU1JDUy0kKENPTkZJR19BUkNIX0FSTV82NCkgKz0gJChVS19QTEFUX0NPTU1PTl9C
QVNFKS9hcm0vY2FjaGU2NC5TfGNvCj4gICBMSUJLVk1QTEFUX1NSQ1MtJChDT05GSUdfQVJDSF9B
Uk1fNjQpICs9ICQoVUtfUExBVF9DT01NT05fQkFTRSkvYXJtL3BzY2lfYXJtNjQuU3xjb21tb24K
PiAgIExJQktWTVBMQVRfU1JDUy0kKENPTkZJR19BUkNIX0FSTV82NCkgKz0gJChVS19QTEFUX0NP
TU1PTl9CQVNFKS9hcm0vdGltZS5jfGNvbW1vbgo+ICAgTElCS1ZNUExBVF9TUkNTLSQoQ09ORklH
X0FSQ0hfQVJNXzY0KSArPSAkKFVLX1BMQVRfQ09NTU9OX0JBU0UpL2FybS9nZW5lcmljX3RpbWVy
LmN8Y29tbW9uCj4gLUxJQktWTVBMQVRfU1JDUy0kKENPTkZJR19BUkNIX0FSTV82NCkgKz0gJChV
S19QTEFUX0NPTU1PTl9CQVNFKS9hcm0vdHJhcHMuY3xjb21tb24KPiArTElCS1ZNUExBVF9TUkNT
LSQoQ09ORklHX0FSQ0hfQVJNXzY0KSArPSAkKFVLX1BMQVRfQ09NTU9OX0JBU0UpL2FybS90cmFw
cy5jfGlzcgo+ICAgaWZlcSAoJChDT05GSUdfSEFWRV9TQ0hFRCkseSkKPiAtTElCS1ZNUExBVF9T
UkNTLSQoQ09ORklHX0FSQ0hfQVJNXzY0KSArPSAkKFVLX1BMQVRfQ09NTU9OX0JBU0UpL2FybS90
aHJlYWRfc3RhcnQ2NC5TfGNvbW1vbgo+ICtMSUJLVk1QTEFUX1NSQ1MtJChDT05GSUdfQVJDSF9B
Uk1fNjQpICs9ICQoVUtfUExBVF9DT01NT05fQkFTRSkvYXJtL3RocmVhZF9zdGFydDY0LlN8aXNy
Cj4gICBMSUJLVk1QTEFUX1NSQ1MtJChDT05GSUdfQVJDSF9BUk1fNjQpICs9ICQoVUtfUExBVF9D
T01NT05fQkFTRSkvdGhyZWFkLmN8Y29tbW9uCj4gICBMSUJLVk1QTEFUX1NSQ1MtJChDT05GSUdf
QVJDSF9BUk1fNjQpICs9ICQoVUtfUExBVF9DT01NT05fQkFTRSkvc3dfY3R4LmN8Y29tbW9uCj4g
ICBlbmRpZgo+ICAgTElCS1ZNUExBVF9TUkNTLSQoQ09ORklHX0FSQ0hfQVJNXzY0KSArPSAkKExJ
QktWTVBMQVRfQkFTRSkvYXJtL21lbW9yeS5jfGFybQo+IC1MSUJLVk1QTEFUX1NSQ1MtJChDT05G
SUdfQVJDSF9BUk1fNjQpICs9ICQoTElCS1ZNUExBVF9CQVNFKS9hcm0vZW50cnk2NC5TCj4gLUxJ
QktWTVBMQVRfU1JDUy0kKENPTkZJR19BUkNIX0FSTV82NCkgKz0gJChMSUJLVk1QTEFUX0JBU0Up
L2FybS9leGNlcHRpb25zLlMKPiAtTElCS1ZNUExBVF9TUkNTLSQoQ09ORklHX0FSQ0hfQVJNXzY0
KSArPSAkKExJQktWTVBMQVRfQkFTRSkvYXJtL3BhZ2V0YWJsZTY0LlMKPiArTElCS1ZNUExBVF9T
UkNTLSQoQ09ORklHX0FSQ0hfQVJNXzY0KSArPSAkKExJQktWTVBMQVRfQkFTRSkvYXJtL2VudHJ5
NjQuU3xpc3IKPiArTElCS1ZNUExBVF9TUkNTLSQoQ09ORklHX0FSQ0hfQVJNXzY0KSArPSAkKExJ
QktWTVBMQVRfQkFTRSkvYXJtL2V4Y2VwdGlvbnMuU3xpc3IKPiArTElCS1ZNUExBVF9TUkNTLSQo
Q09ORklHX0FSQ0hfQVJNXzY0KSArPSAkKExJQktWTVBMQVRfQkFTRSkvYXJtL3BhZ2V0YWJsZTY0
LlN8aXNyCj4gICBMSUJLVk1QTEFUX1NSQ1MtJChDT05GSUdfQVJDSF9BUk1fNjQpICs9ICQoTElC
S1ZNUExBVF9CQVNFKS9hcm0vc2V0dXAuYwo+ICAgTElCS1ZNUExBVF9TUkNTLSQoQ09ORklHX0FS
Q0hfQVJNXzY0KSArPSAkKExJQktWTVBMQVRfQkFTRSkvYXJtL2xjcHUuYwo+ICAgTElCS1ZNUExB
VF9TUkNTLSQoQ09ORklHX0FSQ0hfQVJNXzY0KSArPSAkKExJQktWTVBMQVRfQkFTRSkvYXJtL2lu
dGN0cmwuYwoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
TWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5v
cmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1k
ZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Apr 06 13:04:18 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 06 Apr 2020 13:04: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 1jLRQG-0003Ah-9x; Mon, 06 Apr 2020 13:04: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=W85B=5W=neclab.eu=hugo.lefeuvre@srs-us1.protection.inumbo.net>)
 id 1jLRQF-0003Ac-6l
 for minios-devel@lists.xen.org; Mon, 06 Apr 2020 13:04:15 +0000
X-Inumbo-ID: 1c2accf4-7807-11ea-bfec-12813bfff9fa
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 1c2accf4-7807-11ea-bfec-12813bfff9fa;
 Mon, 06 Apr 2020 13:04:12 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id A50FBFFDDC;
 Mon,  6 Apr 2020 15:04:11 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (atlas-a.office.hd)
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 ZlU66ildAWHq; Mon,  6 Apr 2020 15:04:11 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from titania.office.hd (titania.office.hd [192.168.24.89])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 7A004FFD26
 for <minios-devel@lists.xen.org>; Mon,  6 Apr 2020 15:04:11 +0200 (CEST)
Received: from N-1237.office.hd (192.168.24.96) by titania.office.hd
 (192.168.24.89) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Mon, 6 Apr 2020
 15:04:11 +0200
From: Hugo Lefeuvre <hugo.lefeuvre@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Mon, 6 Apr 2020 15:04:05 +0200
Message-ID: <e47afa284a6c2f43157ae03695bc16d5597481ec.1586177892.git.hugo.lefeuvre@neclab.eu>
X-Mailer: git-send-email 2.7.4
MIME-Version: 1.0
X-Originating-IP: [192.168.24.96]
X-ClientProxiedBy: oberon.office.hd (192.168.24.90) To titania.office.hd
 (192.168.24.89)
Subject: [Minios-devel] [UNIKRAFT PATCH v2] lib/vfscore: fix null pointer
 dereferences
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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: Hugo Lefeuvre <hugo.lefeuvre@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>

ZGVudHJ5X2FsbG9jIGFuZCBkZW50cnlfbW92ZSBib3RoIGNyZWF0ZSBkZW50cnkgZF9wYXRoIGZp
ZWxkcyB1c2luZwpzdHJkdXAsIHdpdGhvdXQgY2hlY2tpbmcgZm9yIE5VTEwgcmV0dXJuIHZhbHVl
cy4gVGhpcyBsZWFkcyB0byBudWxsCnBvaW50ZXIgZGVyZWZlcmVuY2VzIGlmIHRoZSBhbGxvY2F0
b3IgZ29lcyBPT00uCgpNb2RpZnkgZGVudHJ5X21vdmUgdG8gcmV0dXJuIGFuIGVycm9yIGNvZGUg
KDAgZm9yIHN1Y2Nlc3MsIG90aGVyd2lzZQplcnJvciBjb2RlKS4KClNpZ25lZC1vZmYtYnk6IEh1
Z28gTGVmZXV2cmUgPGh1Z28ubGVmZXV2cmVAbmVjbGFiLmV1PgotLS0KQ2hhbmdlcyBzaW5jZSB2
MToKICsgZGVudHJ5X21vdmU6IHN0cmR1cCBhdCB0aGUgYmVnaW5uaW5nLCBhbmQgcmV0dXJuIEVO
T01FTSByaWdodCBhd2F5IGlmCiAgIGl0IGZhaWxlZCwgd2l0aG91dCBjaGFuZ2luZyBhbnl0aGlu
ZyB0byB0aGUgVkZTLgoKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2RlbnRyeS5jIGIvbGliL3Zm
c2NvcmUvZGVudHJ5LmMKaW5kZXggNzZmN2E2Yi4uMmI3YTNhMiAxMDA2NDQKLS0tIGEvbGliL3Zm
c2NvcmUvZGVudHJ5LmMKKysrIGIvbGliL3Zmc2NvcmUvZGVudHJ5LmMKQEAgLTgxLDYgKzgxLDEx
IEBAIGRlbnRyeV9hbGxvYyhzdHJ1Y3QgZGVudHJ5ICpwYXJlbnRfZHAsIHN0cnVjdCB2bm9kZSAq
dnAsIGNvbnN0IGNoYXIgKnBhdGgpCiAJZHAtPmRfdm5vZGUgPSB2cDsKIAlkcC0+ZF9tb3VudCA9
IG1wOwogCWRwLT5kX3BhdGggPSBzdHJkdXAocGF0aCk7CisKKwlpZiAoIWRwLT5kX3BhdGgpIHsK
KwkJcmV0dXJuIE5VTEw7CisJfQorCiAJVUtfSU5JVF9MSVNUX0hFQUQoJmRwLT5kX2NoaWxkX2xp
c3QpOwogCiAJaWYgKHBhcmVudF9kcCkgewpAQCAtMTMzLDExICsxMzgsMTcgQEAgc3RhdGljIHZv
aWQgZGVudHJ5X2NoaWxkcmVuX3JlbW92ZShzdHJ1Y3QgZGVudHJ5ICpkcCkKIAogfQogCi12b2lk
CitpbnQKIGRlbnRyeV9tb3ZlKHN0cnVjdCBkZW50cnkgKmRwLCBzdHJ1Y3QgZGVudHJ5ICpwYXJl
bnRfZHAsIGNoYXIgKnBhdGgpCiB7CiAJc3RydWN0IGRlbnRyeSAqb2xkX3BkcCA9IGRwLT5kX3Bh
cmVudDsKIAljaGFyICpvbGRfcGF0aCA9IGRwLT5kX3BhdGg7CisJY2hhciAqbmV3X3BhdGggPSBz
dHJkdXAocGF0aCk7CisKKwlpZiAoIW5ld19wYXRoKSB7CisJCS8vIEZhaWwgYmVmb3JlIGNoYW5n
aW5nIGFueXRoaW5nIHRvIHRoZSBWRlMKKwkJcmV0dXJuIEVOT01FTTsKKwl9CiAKIAlpZiAob2xk
X3BkcCkgewogCQl1a19tdXRleF9sb2NrKCZvbGRfcGRwLT5kX2xvY2spOwpAQCAtMTYxLDcgKzE3
Miw4IEBAIGRlbnRyeV9tb3ZlKHN0cnVjdCBkZW50cnkgKmRwLCBzdHJ1Y3QgZGVudHJ5ICpwYXJl
bnRfZHAsIGNoYXIgKnBhdGgpCiAJLy8gUmVtb3ZlIGRwIHdpdGggb3V0ZGF0ZWQgaGFzaCBpbmZv
IGZyb20gdGhlIGhhc2h0YWJsZS4KIAl1a19obGlzdF9kZWwoJmRwLT5kX2xpbmspOwogCS8vIFVw
ZGF0ZSBkcC4KLQlkcC0+ZF9wYXRoID0gc3RyZHVwKHBhdGgpOworCWRwLT5kX3BhdGggPSBuZXdf
cGF0aDsKKwogCWRwLT5kX3BhcmVudCA9IHBhcmVudF9kcDsKIAkvLyBJbnNlcnQgZHAgdXBkYXRl
ZCBoYXNoIGluZm8gaW50byB0aGUgaGFzaHRhYmxlLgogCXVrX2hsaXN0X2FkZF9oZWFkKCZkcC0+
ZF9saW5rLApAQCAtMTczLDYgKzE4NSw3IEBAIGRlbnRyeV9tb3ZlKHN0cnVjdCBkZW50cnkgKmRw
LCBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnRfZHAsIGNoYXIgKnBhdGgpCiAJfQogCiAJZnJlZShvbGRf
cGF0aCk7CisJcmV0dXJuIDA7CiB9CiAKIHZvaWQKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2lu
Y2x1ZGUvdmZzY29yZS9kZW50cnkuaCBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9kZW50
cnkuaAppbmRleCAwYTM4NDAyLi4yYzM1NjUzIDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS9pbmNs
dWRlL3Zmc2NvcmUvZGVudHJ5LmgKKysrIGIvbGliL3Zmc2NvcmUvaW5jbHVkZS92ZnNjb3JlL2Rl
bnRyeS5oCkBAIC01Niw3ICs1Niw3IEBAIHN0cnVjdCBkZW50cnkgewogCiBzdHJ1Y3QgZGVudHJ5
ICpkZW50cnlfYWxsb2Moc3RydWN0IGRlbnRyeSAqcGFyZW50X2RwLCBzdHJ1Y3Qgdm5vZGUgKnZw
LCBjb25zdCBjaGFyICpwYXRoKTsKIHN0cnVjdCBkZW50cnkgKmRlbnRyeV9sb29rdXAoc3RydWN0
IG1vdW50ICptcCwgY2hhciAqcGF0aCk7Ci12b2lkIGRlbnRyeV9tb3ZlKHN0cnVjdCBkZW50cnkg
KmRwLCBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnRfZHAsIGNoYXIgKnBhdGgpOworaW50IGRlbnRyeV9t
b3ZlKHN0cnVjdCBkZW50cnkgKmRwLCBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnRfZHAsIGNoYXIgKnBh
dGgpOwogdm9pZCBkZW50cnlfcmVtb3ZlKHN0cnVjdCBkZW50cnkgKmRwKTsKIHZvaWQgZHJlZihz
dHJ1Y3QgZGVudHJ5ICpkcCk7CiB2b2lkIGRyZWxlKHN0cnVjdCBkZW50cnkgKmRwKTsKZGlmZiAt
LWdpdCBhL2xpYi92ZnNjb3JlL3N5c2NhbGxzLmMgYi9saWIvdmZzY29yZS9zeXNjYWxscy5jCmlu
ZGV4IDliNWE2YmQuLjlhMTMyYjcgMTAwNjQ0Ci0tLSBhL2xpYi92ZnNjb3JlL3N5c2NhbGxzLmMK
KysrIGIvbGliL3Zmc2NvcmUvc3lzY2FsbHMuYwpAQCAtODMzLDggKzgzMywxMSBAQCBzeXNfcmVu
YW1lKGNoYXIgKnNyYywgY2hhciAqZGVzdCkKIAl9CiAKIAllcnJvciA9IFZPUF9SRU5BTUUoZHZw
MSwgdnAxLCBzbmFtZSwgZHZwMiwgdnAyLCBkbmFtZSk7CisJaWYgKGVycm9yKQorCQlnb3RvIGVy
cjM7CisKKwllcnJvciA9IGRlbnRyeV9tb3ZlKGRwMSwgZGRwMiwgZG5hbWUpOwogCi0JZGVudHJ5
X21vdmUoZHAxLCBkZHAyLCBkbmFtZSk7CiAJaWYgKGRwMikKIAkJZGVudHJ5X3JlbW92ZShkcDIp
OwogCi0tIAoyLjcuNAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnBy
b2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9t
aW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Mon Apr 06 13:40:45 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 06 Apr 2020 13:40: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 1jLRzY-0006JG-Cz; Mon, 06 Apr 2020 13:40:44 +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=XziZ=5W=upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1jLRzX-0006J5-60
 for minios-devel@lists.xen.org; Mon, 06 Apr 2020 13:40:43 +0000
X-Inumbo-ID: 33fa6c07-780c-11ea-bfed-12813bfff9fa
Received: from mx.upb.ro (unknown [141.85.13.200])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 33fa6c07-780c-11ea-bfed-12813bfff9fa;
 Mon, 06 Apr 2020 13:40:41 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id 43C45B561DCF;
 Mon,  6 Apr 2020 16:40:40 +0300 (EEST)
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10032)
 with ESMTP id 3xJd4o4zKOP1; Mon,  6 Apr 2020 16:40:38 +0300 (EEST)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id 541B2B562349;
 Mon,  6 Apr 2020 16:40:38 +0300 (EEST)
DKIM-Filter: OpenDKIM Filter v2.10.3 mx.upb.ro 541B2B562349
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=upb.ro;
 s=96342B8A-77E4-11E5-BA93-D93D0963A2DF; t=1586180438;
 bh=OP2gUySMzdzxy34K7yc3XuQHcaXRp41OjRyvuA/wmUY=;
 h=From:To:Date:Message-Id:MIME-Version;
 b=PsNnr8/vWc3QeQBd77/0e/tK/8K2qMsFQ4aOtI2cRbo4RUmlW0aKZEo1CzVdb9U91
 yNf6o3IumxB2pxF8axAqe4Yh8t72U1e+RGj7FNRM2JQO2gHtsdt7jbyoeXQ05QtFMA
 9obY+eIcqbhFvC/rT0LMn+zRPei4HZQQ6I4xcnzE=
X-Virus-Scanned: amavisd-new at upb.ro
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id c0bAlja9BlSj; Mon,  6 Apr 2020 16:40:38 +0300 (EEST)
Received: from localhost.localdomain (unknown [86.127.159.73])
 by mx.upb.ro (Postfix) with ESMTPSA id 0E0F7B562413;
 Mon,  6 Apr 2020 16:40:38 +0300 (EEST)
From: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
To: minios-devel@lists.xen.org
Date: Mon,  6 Apr 2020 16:40:32 +0300
Message-Id: <20200406134032.5064-4-vlad_andrei.badoiu@upb.ro>
X-Mailer: git-send-email 2.20.1
In-Reply-To: <20200406134032.5064-1-vlad_andrei.badoiu@upb.ro>
References: <20200406134032.5064-1-vlad_andrei.badoiu@upb.ro>
MIME-Version: 1.0
Subject: [Minios-devel] [UNIKRAFT/LIBUV PATCH v2 3/3] Add patches
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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, Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
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>

V2UgYWRkIGEgcGF0Y2ggdGhhdCBndWFyZHMgdGhlIG1hY3JvIEFSUkFZX1NJWkUuIFdlIGFscmVh
ZHkKaGF2ZSB0aGUgc2FtZSBkZWZpbml0aW9uIGluIHVuaWtyYWZ0LgoKU2lnbmVkLW9mZi1ieTog
VmxhZC1BbmRyZWkgQmFkb2l1IDx2bGFkX2FuZHJlaS5iYWRvaXVAdXBiLnJvPgotLS0KIHBhdGNo
ZXMvMDAwMS1BZGQtZ3VhcmQtZm9yLUFSUkFZX1NJWkUucGF0Y2ggfCAyNyArKysrKysrKysrKysr
KysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCAyNyBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAx
MDA2NDQgcGF0Y2hlcy8wMDAxLUFkZC1ndWFyZC1mb3ItQVJSQVlfU0laRS5wYXRjaAoKZGlmZiAt
LWdpdCBhL3BhdGNoZXMvMDAwMS1BZGQtZ3VhcmQtZm9yLUFSUkFZX1NJWkUucGF0Y2ggYi9wYXRj
aGVzLzAwMDEtQWRkLWd1YXJkLWZvci1BUlJBWV9TSVpFLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjQ3YmUwMjgKLS0tIC9kZXYvbnVsbAorKysgYi9wYXRjaGVzLzAw
MDEtQWRkLWd1YXJkLWZvci1BUlJBWV9TSVpFLnBhdGNoCkBAIC0wLDAgKzEsMjcgQEAKK0Zyb20g
MWRmNTdkNTAzMTJkMjlhODRlMTE2YjBlYTZmYzZkYWM3NWQ5YmRhNSBNb24gU2VwIDE3IDAwOjAw
OjAwIDIwMDEKK0Zyb206IFZsYWQtQW5kcmVpIEJhZG9pdSA8dmxhZF9hbmRyZWkuYmFkb2l1QHVw
Yi5ybz4KK0RhdGU6IE1vbiwgNiBBcHIgMjAyMCAxNToyMzozNiArMDMwMAorU3ViamVjdDogW1BB
VENIIDEvMV0gQWRkIGd1YXJkIGZvciBBUlJBWV9TSVpFCisKK1NpZ25lZC1vZmYtYnk6IFZsYWQt
QW5kcmVpIEJhZG9pdSA8dmxhZF9hbmRyZWkuYmFkb2l1QHVwYi5ybz4KKy0tLQorIHNyYy91di1j
b21tb24uaCB8IDIgKysKKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCisKK2RpZmYg
LS1naXQgYS9zcmMvdXYtY29tbW9uLmggYi9zcmMvdXYtY29tbW9uLmgKK2luZGV4IGY3ODgxNjEu
LjA3NDQ2N2EgMTAwNjQ0CistLS0gYS9zcmMvdXYtY29tbW9uLmgKKysrKyBiL3NyYy91di1jb21t
b24uaAorQEAgLTUyLDcgKzUyLDkgQEAKKyBleHRlcm4gaW50IHNucHJpbnRmKGNoYXIqLCBzaXpl
X3QsIGNvbnN0IGNoYXIqLCAuLi4pOworICNlbmRpZgorIAorKyNpZm5kZWYgQVJSQVlfU0laRQor
ICNkZWZpbmUgQVJSQVlfU0laRShhKSAoc2l6ZW9mKGEpIC8gc2l6ZW9mKChhKVswXSkpCisrI2Vu
ZGlmCisgCisgI2RlZmluZSBjb250YWluZXJfb2YocHRyLCB0eXBlLCBtZW1iZXIpIFwKKyAgICgo
dHlwZSAqKSAoKGNoYXIgKikgKHB0cikgLSBvZmZzZXRvZih0eXBlLCBtZW1iZXIpKSkKKy0tIAor
Mi4yMC4xCisKLS0gCjIuMjAuMQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3Rz
LnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0
aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Mon Apr 06 13:40:45 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 06 Apr 2020 13:40: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 1jLRzY-0006JB-BO; Mon, 06 Apr 2020 13:40:44 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=XziZ=5W=upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1jLRzW-0006J0-F3
 for minios-devel@lists.xen.org; Mon, 06 Apr 2020 13:40:42 +0000
X-Inumbo-ID: 33fdba12-780c-11ea-b4f4-bc764e2007e4
Received: from mx.upb.ro (unknown [141.85.13.200])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 33fdba12-780c-11ea-b4f4-bc764e2007e4;
 Mon, 06 Apr 2020 13:40:40 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id 33750B56255F;
 Mon,  6 Apr 2020 16:40:39 +0300 (EEST)
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10032)
 with ESMTP id H6LtmcEXi5QA; Mon,  6 Apr 2020 16:40:37 +0300 (EEST)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id 76C23B562377;
 Mon,  6 Apr 2020 16:40:37 +0300 (EEST)
DKIM-Filter: OpenDKIM Filter v2.10.3 mx.upb.ro 76C23B562377
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=upb.ro;
 s=96342B8A-77E4-11E5-BA93-D93D0963A2DF; t=1586180437;
 bh=wJKTsZfCkzmSwn4DO8VoitLXPqmIaN1vn3tcIpvkL6o=;
 h=From:To:Date:Message-Id:MIME-Version;
 b=hOZUx3G12KBho/5LisaJPIkbbo+ELbKdQu6lhUFwDtIrSHR1Ab2ruyvElPmnJn5XV
 XfWCVWm25SUuk8d6+1QWrH23H1gwhkfo4WBvhG9Vqb1S88rfsIV+8rFsMdnLmNs3C2
 44jnB8IBRZLmG70hEhNv+VSUdOkI9q+HCLhB2xXo=
X-Virus-Scanned: amavisd-new at upb.ro
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id EvjfZN9vBbFn; Mon,  6 Apr 2020 16:40:37 +0300 (EEST)
Received: from localhost.localdomain (unknown [86.127.159.73])
 by mx.upb.ro (Postfix) with ESMTPSA id 224C8B561DCF;
 Mon,  6 Apr 2020 16:40:37 +0300 (EEST)
From: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
To: minios-devel@lists.xen.org
Date: Mon,  6 Apr 2020 16:40:29 +0300
Message-Id: <20200406134032.5064-1-vlad_andrei.badoiu@upb.ro>
X-Mailer: git-send-email 2.20.1
MIME-Version: 1.0
Subject: [Minios-devel] [UNIKRAFT/LIBUV PATCH v2 0/3] Initial port of libuv
 on 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, Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
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>

VGhpcyBpcyBvdXIgaW5pdGlhbCBwb3J0IG9mIGxpYnV2IG9uIHVuaWtyYWZ0LiBSaWdodCBub3cs
IGR1ZSB0byB0aGUKbm9uLWV4aXN0aW5nIHBvbGwgaW1wbGVtZW50YXRpb24gZm9yIHBpcGVzIGFz
eW5jIGZ1bmN0aW9uYWxpdGllcyhzdWNoCmFzIHV2X2FzeW5jX3NlbmQpIGFyZSBub3Qgd29ya2lu
Zy4KCkNoYW5nZXMgc2luY2UgdjE6CiogRml4ZWQgd3JvbmcgbGlicmFyaWVzIGluIENvbmZpZy51
awoqIEFkZGVkIHB0aHJlYWQtZW1iZWRkZWQgdG8gUkVBRE1FCiogQWRkZWQgZ3VhcmQgdG8gQVJS
QVlfU0laRQoKVmxhZC1BbmRyZWkgQmFkb2l1ICgxKToKICBBZGQgcGF0Y2hlcwoKVmxhZC1BbmRy
ZWkgQsSCRE9JVSAoMik6CiAgSW50cm9kdWNlIGxpYnJhcnkgc2tlbGV0b24KICBBZGQgTWFrZWZp
bGUudWsKCi0tIAoyLjIwLjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54
ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGlu
Zm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Mon Apr 06 13:40:48 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 06 Apr 2020 13:40: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 1jLRzc-0006KC-F4; Mon, 06 Apr 2020 13:40:48 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=XziZ=5W=upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1jLRzb-0006Jm-6z
 for minios-devel@lists.xen.org; Mon, 06 Apr 2020 13:40:47 +0000
X-Inumbo-ID: 356b5850-780c-11ea-9e09-bc764e2007e4
Received: from mx.upb.ro (unknown [141.85.13.250])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 356b5850-780c-11ea-9e09-bc764e2007e4;
 Mon, 06 Apr 2020 13:40:42 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id B4F8DB562380;
 Mon,  6 Apr 2020 16:40:41 +0300 (EEST)
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10032)
 with ESMTP id 9yrniUEXxdoa; Mon,  6 Apr 2020 16:40:37 +0300 (EEST)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id C1EA8B5623B1;
 Mon,  6 Apr 2020 16:40:37 +0300 (EEST)
DKIM-Filter: OpenDKIM Filter v2.10.3 mx.upb.ro C1EA8B5623B1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=upb.ro;
 s=96342B8A-77E4-11E5-BA93-D93D0963A2DF; t=1586180437;
 bh=GbmC61xKD+GJAWr6zYYPSpxXi3hUPxZq1sP17dUo2kE=;
 h=From:To:Date:Message-Id:MIME-Version;
 b=kxyDMEEHpefL+QbG8khr4wlvlSh5fLGPRmQXPYdfqhifbSXfbHH1PCyYF1x3C4xt3
 aRxbEBMdZnooCMRLYBJUPFn6f4Dv8IV6XLWxHcqaBHLOZe/YgEOmqjqiI5ZbRLL7dJ
 xYX1BTaWkghqPppfTm5u6nIWlDpBZA4mlv6qKGdk=
X-Virus-Scanned: amavisd-new at upb.ro
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id jY_8-mwkkSyg; Mon,  6 Apr 2020 16:40:37 +0300 (EEST)
Received: from localhost.localdomain (unknown [86.127.159.73])
 by mx.upb.ro (Postfix) with ESMTPSA id 64C17B562349;
 Mon,  6 Apr 2020 16:40:37 +0300 (EEST)
From: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
To: minios-devel@lists.xen.org
Date: Mon,  6 Apr 2020 16:40:30 +0300
Message-Id: <20200406134032.5064-2-vlad_andrei.badoiu@upb.ro>
X-Mailer: git-send-email 2.20.1
In-Reply-To: <20200406134032.5064-1-vlad_andrei.badoiu@upb.ro>
References: <20200406134032.5064-1-vlad_andrei.badoiu@upb.ro>
MIME-Version: 1.0
Subject: [Minios-devel] [UNIKRAFT/LIBUV PATCH v2 1/3] Introduce library
 skeleton
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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, Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>,
 =?UTF-8?q?Vlad-Andrei=20B=C4=82DOIU?= <vlad_andrei.badoiu@stud.acs.upb.ro>
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>

RnJvbTogVmxhZC1BbmRyZWkgQsSCRE9JVSA8dmxhZF9hbmRyZWkuYmFkb2l1QHN0dWQuYWNzLnVw
Yi5ybz4KCldlIHVzZSB0aGUgQlNELTMtQ2xhdXNlIGxpY2Vuc2UgZm9yIHRoaXMgbGlicmFyeSBn
bHVlIGNvZGUuCgpTaWduZWQtb2ZmLWJ5OiBWbGFkLUFuZHJlaSBCYWRvaXUgPHZsYWRfYW5kcmVp
LmJhZG9pdUB1cGIucm8+Ci0tLQogLmdpdGlnbm9yZSAgICAgIHwgMjcgKysrKysrKysrKysrKysr
KysrKysrKysrKysrCiBDT0RJTkdfU1RZTEUubWQgfCAgNCArKysrCiBDT05UUklCVVRJTkcubWQg
fCAgNCArKysrCiBDT1BZSU5HLm1kICAgICAgfCAzOSArKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysKIENvbmZpZy51ayAgICAgICB8IDExICsrKysrKysrKysrCiBNQUlOVEFJ
TkVSUy5tZCAgfCAxMSArKysrKysrKysrKwogUkVBRE1FLm1kICAgICAgIHwgMTMgKysrKysrKysr
KysrKwogNyBmaWxlcyBjaGFuZ2VkLCAxMDkgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAw
NjQ0IC5naXRpZ25vcmUKIGNyZWF0ZSBtb2RlIDEwMDY0NCBDT0RJTkdfU1RZTEUubWQKIGNyZWF0
ZSBtb2RlIDEwMDY0NCBDT05UUklCVVRJTkcubWQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBDT1BZSU5H
Lm1kCiBjcmVhdGUgbW9kZSAxMDA2NDQgQ29uZmlnLnVrCiBjcmVhdGUgbW9kZSAxMDA2NDQgTUFJ
TlRBSU5FUlMubWQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBSRUFETUUubWQKCmRpZmYgLS1naXQgYS8u
Z2l0aWdub3JlIGIvLmdpdGlnbm9yZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li43NWQyZmQzCi0tLSAvZGV2L251bGwKKysrIGIvLmdpdGlnbm9yZQpAQCAtMCwwICsxLDI3IEBA
CisqLmRlcGVuZAorKi5vCisqLmEKKyouZAorKi5zbworKi5vcmlnCisqLnJlagorKi5iYWsKKyou
c3dwCisqfgorLCoKK1wjKlwjCisuXCMqCitcI18qXCMKKy5cI18qCishLmdpdGlnbm9yZQorLioK
KworIyBnbnUgZ2xvYmFsIGZpbGVzCitHUEFUSAorR1JUQUdTCitHU1lNUworR1RBR1MKKworIyBj
c2NvcGUgZmlsZXMKK2NzY29wZS4qCituY3Njb3BlLioKZGlmZiAtLWdpdCBhL0NPRElOR19TVFlM
RS5tZCBiL0NPRElOR19TVFlMRS5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li41NzMwMDQxCi0tLSAvZGV2L251bGwKKysrIGIvQ09ESU5HX1NUWUxFLm1kCkBAIC0wLDAgKzEs
NCBAQAorQ29kaW5nIFN0eWxlCis9PT09PT09PT09PT0KKworUGxlYXNlIHJlZmVyIHRvIHRoZSBg
Q09ESU5HX1NUWUxFLm1kYCBmaWxlIGluIHRoZSBtYWluIFVuaWtyYWZ0IHJlcG9zaXRvcnkuCmRp
ZmYgLS1naXQgYS9DT05UUklCVVRJTkcubWQgYi9DT05UUklCVVRJTkcubWQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWY1NWVjYQotLS0gL2Rldi9udWxsCisrKyBiL0NPTlRS
SUJVVElORy5tZApAQCAtMCwwICsxLDQgQEAKK0NvbnRyaWJ1dGluZyB0byBVbmlrcmFmdAorPT09
PT09PT09PT09PT09PT09PT09PT0KKworUGxlYXNlIHJlZmVyIHRvIHRoZSBgQ09OVFJJQlVUSU5H
Lm1kYCBmaWxlIGluIHRoZSBtYWluIFVuaWtyYWZ0IHJlcG9zaXRvcnkuCmRpZmYgLS1naXQgYS9D
T1BZSU5HLm1kIGIvQ09QWUlORy5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li41OWRhMTE2Ci0tLSAvZGV2L251bGwKKysrIGIvQ09QWUlORy5tZApAQCAtMCwwICsxLDM5IEBA
CitMaWNlbnNlCis9PT09PT09CisKK1VuaWtyYWZ0IGxpYnV2IHdyYXBwZXJzCistLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworVGhpcyByZXBvc2l0b3J5IGNvbnRhaW5zIHdyYXBwZXIgY29kZSB0
byBidWlsZCBsaWJ1diB3aXRoIFVuaWtyYWZ0LgorRWFjaCBDIGNvZGUgZmlsZSBpbiB0aGlzIHJl
cG9zaXRvcnkgc2hvdWxkIGRlY2xhcmUgd2hvIGlzIHRoZQorY29weXJpZ2h0IG93bmVyIGFuZCB1
bmRlciB3aGljaCB0ZXJtcyBhbmQgY29uZGl0aW9ucyB0aGUgY29kZSBpcworbGljZW5zZWQuIElm
IHN1Y2ggYSBsaWNlbmNlIG5vdGUgaXMgbWlzc2luZywgdGhlIGZvbGxvd2luZyBjb3B5cmlnaHQK
K25vdGljZSB3aWxsIGFwcGx5OgorCisJQ29weXJpZ2h0IChjKSAyMDIwLCBVbml2ZXJzaXR5IFBv
bGl0ZWhuaWNhIG9mIEJ1Y2hhcmVzdC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKworCVJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorCW1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworCWFyZSBtZXQ6CisKKwkxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorCSAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKwkyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorCSAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKwkgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorCTMuIE5laXRoZXIgdGhlIG5h
bWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMKKwkgICBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorCSAgIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisKKwlUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKKwlBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisJ
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UKKwlBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFCisJTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorCUNPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisJU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisJSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKwlDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorCUFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFCisJUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKZGlm
ZiAtLWdpdCBhL0NvbmZpZy51ayBiL0NvbmZpZy51awpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5lZTVhZDU4Ci0tLSAvZGV2L251bGwKKysrIGIvQ29uZmlnLnVrCkBAIC0wLDAg
KzEsMTEgQEAKK21lbnVjb25maWcgTElCVVYKKwlib29sICJsaWJ1diAtIGFzeW5jaHJvbm91cyBJ
L08iCisJc2VsZWN0IExJQkxXSVAKKwlzZWxlY3QgTFdJUF9JR01QCisJc2VsZWN0IExXSVBfSVBW
NgorCXNlbGVjdCBMV0lQX1NPQ0tFVAorCXNlbGVjdCBMSUJORVdMSUJDCisJc2VsZWN0IExJQlBP
U0lYX1NZU0lORk8KKwlzZWxlY3QgTElCUE9TSVhfTElCREwKKwlzZWxlY3QgTElCUFRIUkVBRF9F
TUJFRERFRAorCWRlZmF1bHQgbgpkaWZmIC0tZ2l0IGEvTUFJTlRBSU5FUlMubWQgYi9NQUlOVEFJ
TkVSUy5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYmRmZWI4Ci0tLSAv
ZGV2L251bGwKKysrIGIvTUFJTlRBSU5FUlMubWQKQEAgLTAsMCArMSwxMSBAQAorTWFpbnRhaW5l
cnMgTGlzdAorPT09PT09PT09PT09PT09PQorCitGb3Igbm90ZXMgb24gaG93IHRvIHJlYWQgdGhp
cyBpbmZvcm1hdGlvbiwgcGxlYXNlIHJlZmVyIHRvIGBNQUlOVEFJTkVSUy5tZGAgaW4KK3RoZSBt
YWluIFVuaWtyYWZ0IHJlcG9zaXRvcnkuCisKKwlMSUJVVi1VTklLUkFGVAorCU06CUZlbGlwZSBI
dWljaSA8ZmVsaXBlLmh1aWNpQG5lY2xhYi5ldT4KKwlNOglWbGFkLUFuZHJlaSBCYWRvaXUgPHZs
YWRfYW5kcmVpLmJhZG9pdUBzdHVkLmFjcy51cGIucm8+CisJTDoJbWluaW9zLWRldmVsQGxpc3Rz
Lnhlbi5vcmcKKwlGOiAqCmRpZmYgLS1naXQgYS9SRUFETUUubWQgYi9SRUFETUUubWQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDI2OWQ5MwotLS0gL2Rldi9udWxsCisrKyBi
L1JFQURNRS5tZApAQCAtMCwwICsxLDEzIEBACitsaWJ1diBmb3IgVW5pa3JhZnQKKz09PT09PT09
PT09PT09PT09PT09PT09PT09PT09CisKK1RoaXMgaXMgdGhlIHBvcnQgb2YgbGlidXYgYXMgYSBV
bmlrcmFmdCBleHRlcm5hbCBsaWJyYXJ5LiBJdAorZGVwZW5kcyBvbiB0aGUgZm9sbG93aW5nIGxp
YnJhcmllcyB0aGF0IG5lZWQgdG8gYmUgYWRkZWQgdG8gYE1ha2VmaWxlYAoraW4gdGhpcyBvcmRl
cjoKKworKiBgcHRocmVhZHNgLCBlLmcuIGBwdGhyZWFkLWVtYmVkZGVkYAorKiBgbGliY2AsIGUu
Zy4gYG5ld2xpYmAKKyogYGx3aXAnCisKK1BsZWFzZSByZWZlciB0byB0aGUgYFJFQURNRS5tZGAg
YXMgd2VsbCBhcyB0aGUgZG9jdW1lbnRhdGlvbiBpbiB0aGUgYGRvYy9gCitzdWJkaXJlY3Rvcnkg
b2YgdGhlIG1haW4gdW5pa3JhZnQgcmVwb3NpdG9yeS4KLS0gCjIuMjAuMQoKCl9fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5n
IGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVu
cHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Mon Apr 06 13:40:49 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 06 Apr 2020 13:40: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 1jLRzd-0006Kg-Gj; Mon, 06 Apr 2020 13:40: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=XziZ=5W=upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1jLRzc-0006K3-4U
 for minios-devel@lists.xen.org; Mon, 06 Apr 2020 13:40:48 +0000
X-Inumbo-ID: 3536b870-780c-11ea-bfed-12813bfff9fa
Received: from mx.upb.ro (unknown [141.85.13.200])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 3536b870-780c-11ea-bfed-12813bfff9fa;
 Mon, 06 Apr 2020 13:40:42 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id 5F003B562349;
 Mon,  6 Apr 2020 16:40:41 +0300 (EEST)
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10032)
 with ESMTP id ngjXGC9KZt4z; Mon,  6 Apr 2020 16:40:38 +0300 (EEST)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id 1FBD4B562508;
 Mon,  6 Apr 2020 16:40:38 +0300 (EEST)
DKIM-Filter: OpenDKIM Filter v2.10.3 mx.upb.ro 1FBD4B562508
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=upb.ro;
 s=96342B8A-77E4-11E5-BA93-D93D0963A2DF; t=1586180438;
 bh=uFRXlxQUWvYR+e9HGkre41llMLU8UFaeFn8Sd3oZpvs=;
 h=From:To:Date:Message-Id:MIME-Version;
 b=FJ2to3Hxed3dzMnOPyvJCq06WP4tPWXG2sXOhnUu/cMqVf5Uy+547n3Z59b4QHSAq
 sElvfxqLYMCkRJK/aHk0E7YtuVM7I119so2ffoTrZEtpinyb3hVVcDfVMTgrhsn3Sy
 WzjIZidR9ThgSM7rTBVSNC9z5kd1bzRgHmoL1EM4=
X-Virus-Scanned: amavisd-new at upb.ro
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id DrWQrMgD20_N; Mon,  6 Apr 2020 16:40:37 +0300 (EEST)
Received: from localhost.localdomain (unknown [86.127.159.73])
 by mx.upb.ro (Postfix) with ESMTPSA id B19BEB562380;
 Mon,  6 Apr 2020 16:40:37 +0300 (EEST)
From: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
To: minios-devel@lists.xen.org
Date: Mon,  6 Apr 2020 16:40:31 +0300
Message-Id: <20200406134032.5064-3-vlad_andrei.badoiu@upb.ro>
X-Mailer: git-send-email 2.20.1
In-Reply-To: <20200406134032.5064-1-vlad_andrei.badoiu@upb.ro>
References: <20200406134032.5064-1-vlad_andrei.badoiu@upb.ro>
MIME-Version: 1.0
Subject: [Minios-devel] [UNIKRAFT/LIBUV PATCH v2 2/3] Add 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@neclab.eu, Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>,
 =?UTF-8?q?Vlad-Andrei=20B=C4=82DOIU?= <vlad_andrei.badoiu@stud.acs.upb.ro>
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>

RnJvbTogVmxhZC1BbmRyZWkgQsSCRE9JVSA8dmxhZF9hbmRyZWkuYmFkb2l1QHN0dWQuYWNzLnVw
Yi5ybz4KCkFkZCBsaWJ1diBwb3J0IE1ha2VmaWxlLnVrCgpTaWduZWQtb2ZmLWJ5OiBWbGFkLUFu
ZHJlaSBCYWRvaXUgPHZsYWRfYW5kcmVpLmJhZG9pdUB1cGIucm8+Ci0tLQogTWFrZWZpbGUudWsg
fCAxMjAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KwogMSBmaWxlIGNoYW5nZWQsIDEyMCBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQg
TWFrZWZpbGUudWsKCmRpZmYgLS1naXQgYS9NYWtlZmlsZS51ayBiL01ha2VmaWxlLnVrCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2ODFjY2YKLS0tIC9kZXYvbnVsbAorKysg
Yi9NYWtlZmlsZS51awpAQCAtMCwwICsxLDEyMCBAQAorIyAgbGlidXYxMSBjb25maWcgZmlsZQor
IworIyAgQXV0aG9yczogVmxhZC1BbmRyZWkgQmFkb2l1IDx2bGFkX2FuZHJlaS5iYWRvaXVAc3R1
ZC5hY3MudXBiLnJvPgorIworIyAgQ29weXJpZ2h0IChjKSAyMDIwLCBVbml2ZXJzaXR5IFBvbGl0
ZWhuaWNhIG9mIEJ1Y2hhcmVzdC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorIyAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisjICBhcmUgbWV0OgorIworIyAgMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyMgIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIyAg
My4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgY29weXJpZ2h0IGhvbGRlciBub3IgdGhlIG5hbWVz
IG9mIGl0cworIyAgICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgICAgIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjICBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJ
UyIKKyMgIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyMgIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisjICBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJ
QlVUT1JTIEJFCisjICBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjICBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyAgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisjICBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyAgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFCisjICBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyMKKyMgIFRISVMgSEVBREVS
IE1BWSBOT1QgQkUgRVhUUkFDVEVEIE9SIE1PRElGSUVEIElOIEFOWSBXQVkuCisKKyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjCisjIExpYnJhcnkgcmVnaXN0cmF0aW9uCisjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIworJChldmFsICQoY2FsbCBhZGRsaWJfcyxsaWJ1diwkKENPTkZJR19MSUJVVikpKQor
CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBTb3VyY2VzCisjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIworTElCVVZfVkVSU0lPTj0xLjM1LjAKK0xJQlVWX1VSTD1odHRwczovL2dpdGh1Yi5jb20v
bGlidXYvbGlidXYvYXJjaGl2ZS92JChMSUJVVl9WRVJTSU9OKS50YXIuZ3oKK0xJQlVWX1BBVENI
RElSPSQoTElCVVZfQkFTRSkvcGF0Y2hlcworJChldmFsICQoY2FsbCBmZXRjaCxsaWJ1diwkKExJ
QlVWX1VSTCkpKQorJChldmFsICQoY2FsbCBwYXRjaCxsaWJ1diwkKExJQlVWX1BBVENIRElSKSxs
aWJ1di0kKExJQlVWX1ZFUlNJT04pKSkKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgSGVs
cGVycworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK0xJQlVWX1NVQkRJUj1saWJ1di0kKExJQlVW
X1ZFUlNJT04pCitMSUJVVl9TUkM9JChMSUJVVl9PUklHSU4pLyQoTElCVVZfU1VCRElSKQorCisj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBMaWJyYXJ5IGluY2x1ZGVzCisjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIworQ0lOQ0xVREVTLSQoQ09ORklHX0xJQlVWKSArPSAtSSQoTElCVVZfU1JDKS9p
bmNsdWRlCitDSU5DTFVERVMtJChDT05GSUdfTElCVVYpICs9IC1JJChMSUJVVl9TUkMpL3NyYwor
Q1hYSU5DTFVERVMtJChDT05GSUdfTElCVVYpICs9IC1JJChMSUJVVl9TUkMpL2luY2x1ZGUKK0NY
WElOQ0xVREVTLSQoQ09ORklHX0xJQlVWKSArPSAtSSQoTElCVVZfU1JDKS9zcmMKKworIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMKKyMgR2xvYmFsIGZsYWdzCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IworIyBTdXBwcmVzcyBzb21lIHdhcm5pbmdzIHRvIG1ha2UgdGhlIGJ1aWxkIHByb2Nlc3MgbG9v
ayBuZWF0ZXIKK1NVUFBSRVNTX0ZMQUdTICs9IC1Xbm8tdW51c2VkLXBhcmFtZXRlciAtV25vLXVu
dXNlZC12YXJpYWJsZSAtV25vLW5vbm51bGwJXAorLVduby11bnVzZWQtYnV0LXNldC12YXJpYWJs
ZSAtV25vLXVudXNlZC1sYWJlbCAtV25vLWNoYXItc3Vic2NyaXB0cwkJXAorLVduby11bnVzZWQt
ZnVuY3Rpb24gLVduby1taXNzaW5nLWZpZWxkLWluaXRpYWxpemVycyAtV25vLXVuaW5pdGlhbGl6
ZWQJCVwKKy1Xbm8tYXJyYXktYm91bmRzIC1Xbm8tbWF5YmUtdW5pbml0aWFsaXplZCAtV25vLXBv
aW50ZXItc2lnbiAtV25vLXVudXNlZC12YWx1ZQlcCistV25vLXVudXNlZC1tYWNyb3MgLVduby1w
YXJlbnRoZXNlcyAtV25vLWltcGxpY2l0LWZ1bmN0aW9uLWRlY2xhcmF0aW9uCQlcCistV25vLW1p
c3NpbmctYnJhY2VzIC1Xbm8tZW5kaWYtbGFiZWxzIC1Xbm8tdW51c2VkLWJ1dC1zZXQtdmFyaWFi
bGUJCVwKKy1Xbm8taW1wbGljaXQtZnVuY3Rpb24tZGVjbGFyYXRpb24gLVduby10eXBlLWxpbWl0
cyAtV25vLXNpZ24tY29tcGFyZQorCitMSUJVVl9DRkxBR1MteSAgICArPSAgJChTVVBQUkVTU19G
TEFHUykgLURfUE9TSVhfUkVBREVSX1dSSVRFUl9MT0NLUyAtRF9QT1NJWF9USFJFQURTIC1VX19s
aW51eF9fIC1EX19HTlVfXworTElCVVZfQ1hYRkxBR1MteSAgICArPSAgJChTVVBQUkVTU19GTEFH
UykgLURfUE9TSVhfUkVBREVSX1dSSVRFUl9MT0NLUyAtRF9QT1NJWF9USFJFQURTIC1VX19saW51
eF9fIC1EX19HTlVfXworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBMaWJyYXJ5IHNvdXJj
ZXMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitMSUJVVl9TUkNTLXkgKz0gJChMSUJVVl9TUkMp
L3NyYy91bml4L3N5c2luZm8tbWVtb3J5LmMKK0xJQlVWX1NSQ1MteSArPSAkKExJQlVWX1NSQykv
c3JjL3VuaXgvbm8tZnNldmVudHMuYworTElCVVZfU1JDUy15ICs9ICQoTElCVVZfU1JDKS9zcmMv
dW5peC9nZXRuYW1laW5mby5jCitMSUJVVl9TUkNTLXkgKz0gJChMSUJVVl9TUkMpL3NyYy91bml4
L3Byb2Nmcy1leGVwYXRoLmMKK0xJQlVWX1NSQ1MteSArPSAkKExJQlVWX1NSQykvc3JjL3VuaXgv
cmFuZG9tLWdldGVudHJvcHkuYworTElCVVZfU1JDUy15ICs9ICQoTElCVVZfU1JDKS9zcmMvdW5p
eC9zeXNpbmZvLWxvYWRhdmcuYworTElCVVZfU1JDUy15ICs9ICQoTElCVVZfU1JDKS9zcmMvdW5p
eC9yYW5kb20tZGV2dXJhbmRvbS5jCitMSUJVVl9TUkNTLXkgKz0gJChMSUJVVl9TUkMpL3NyYy91
bml4L2RsLmMKK0xJQlVWX1NSQ1MteSArPSAkKExJQlVWX1NSQykvc3JjL3VuaXgvcmFuZG9tLWdl
dHJhbmRvbS5jCitMSUJVVl9TUkNTLXkgKz0gJChMSUJVVl9TUkMpL3NyYy91bml4L2NvcmUuYwor
TElCVVZfU1JDUy15ICs9ICQoTElCVVZfU1JDKS9zcmMvdW5peC9wb3NpeC1ocnRpbWUuYworTElC
VVZfU1JDUy15ICs9ICQoTElCVVZfU1JDKS9zcmMvdW5peC9uby1wcm9jdGl0bGUuYworTElCVVZf
U1JDUy15ICs9ICQoTElCVVZfU1JDKS9zcmMvdW5peC9waXBlLmMKK0xJQlVWX1NSQ1MteSArPSAk
KExJQlVWX1NSQykvc3JjL3VuaXgvYXN5bmMuYworTElCVVZfU1JDUy15ICs9ICQoTElCVVZfU1JD
KS9zcmMvdW5peC9wdGhyZWFkLWZpeGVzLmMKK0xJQlVWX1NSQ1MteSArPSAkKExJQlVWX1NSQykv
c3JjL3VuaXgvZ2V0YWRkcmluZm8uYworTElCVVZfU1JDUy15ICs9ICQoTElCVVZfU1JDKS9zcmMv
dW5peC91ZHAuYworTElCVVZfU1JDUy15ICs9ICQoTElCVVZfU1JDKS9zcmMvdW5peC9zdHJlYW0u
YworTElCVVZfU1JDUy15ICs9ICQoTElCVVZfU1JDKS9zcmMvdW5peC9mc2V2ZW50cy5jCitMSUJV
Vl9TUkNTLXkgKz0gJChMSUJVVl9TUkMpL3NyYy91bml4L3RjcC5jCitMSUJVVl9TUkNTLXkgKz0g
JChMSUJVVl9TUkMpL3NyYy91bml4L2xvb3Atd2F0Y2hlci5jCitMSUJVVl9TUkNTLXkgKz0gJChM
SUJVVl9TUkMpL3NyYy91bml4L3Bvc2l4LXBvbGwuYworTElCVVZfU1JDUy15ICs9ICQoTElCVVZf
U1JDKS9zcmMvdW5peC9yYW5kb20tc3lzY3RsLWxpbnV4LmMKK0xJQlVWX1NSQ1MteSArPSAkKExJ
QlVWX1NSQykvc3JjL3VuaXgvbG9vcC5jCitMSUJVVl9TUkNTLXkgKz0gJChMSUJVVl9TUkMpL3Ny
Yy91bml4L2ZzLmMKK0xJQlVWX1NSQ1MteSArPSAkKExJQlVWX1NSQykvc3JjL3VuaXgvcG9sbC5j
CitMSUJVVl9TUkNTLXkgKz0gJChMSUJVVl9TUkMpL3NyYy91bml4L3Byb2Nlc3MuYworTElCVVZf
U1JDUy15ICs9ICQoTElCVVZfU1JDKS9zcmMvdW5peC90dHkuYworTElCVVZfU1JDUy15ICs9ICQo
TElCVVZfU1JDKS9zcmMvdW5peC9saW51eC1zeXNjYWxscy5jCitMSUJVVl9TUkNTLXkgKz0gJChM
SUJVVl9TUkMpL3NyYy91bml4L3NpZ25hbC5jCitMSUJVVl9TUkNTLXkgKz0gJChMSUJVVl9TUkMp
L3NyYy91bml4L3RocmVhZC5jCitMSUJVVl9TUkNTLXkgKz0gJChMSUJVVl9TUkMpL3NyYy91di1k
YXRhLWdldHRlci1zZXR0ZXJzLmMKK0xJQlVWX1NSQ1MteSArPSAkKExJQlVWX1NSQykvc3JjL2lu
ZXQuYworTElCVVZfU1JDUy15ICs9ICQoTElCVVZfU1JDKS9zcmMvdGhyZWFkcG9vbC5jCitMSUJV
Vl9TUkNTLXkgKz0gJChMSUJVVl9TUkMpL3NyYy9yYW5kb20uYworTElCVVZfU1JDUy15ICs9ICQo
TElCVVZfU1JDKS9zcmMvdXYtY29tbW9uLmMKK0xJQlVWX1NSQ1MteSArPSAkKExJQlVWX1NSQykv
c3JjL2lkbmEuYworTElCVVZfU1JDUy15ICs9ICQoTElCVVZfU1JDKS9zcmMvZnMtcG9sbC5jCitM
SUJVVl9TUkNTLXkgKz0gJChMSUJVVl9TUkMpL3NyYy9zdHJzY3B5LmMKK0xJQlVWX1NSQ1MteSAr
PSAkKExJQlVWX1NSQykvc3JjL3RpbWVyLmMKK0xJQlVWX1NSQ1MteSArPSAkKExJQlVWX1NSQykv
c3JjL3ZlcnNpb24uYwotLSAKMi4yMC4xCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxA
bGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFu
L2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Apr 06 14:06:07 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 06 Apr 2020 14:06: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 1jLSO5-0008BI-MG; Mon, 06 Apr 2020 14:06:05 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=W85B=5W=neclab.eu=hugo.lefeuvre@srs-us1.protection.inumbo.net>)
 id 1jLSO4-0008BC-Ot
 for minios-devel@lists.xen.org; Mon, 06 Apr 2020 14:06:04 +0000
X-Inumbo-ID: bf6c4a7a-780f-11ea-b58d-bc764e2007e4
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id bf6c4a7a-780f-11ea-b58d-bc764e2007e4;
 Mon, 06 Apr 2020 14:06:02 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 98AE0F200F;
 Mon,  6 Apr 2020 16:06:01 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (atlas-b.office.hd)
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 dFLY7I0loXga; Mon,  6 Apr 2020 16:06:01 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from titania.office.hd (titania.office.hd [192.168.24.89])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 64084F200E
 for <minios-devel@lists.xen.org>; Mon,  6 Apr 2020 16:05:59 +0200 (CEST)
Received: from N-1237.office.hd (192.168.24.96) by titania.office.hd
 (192.168.24.89) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Mon, 6 Apr 2020
 16:05:58 +0200
From: Hugo Lefeuvre <hugo.lefeuvre@neclab.eu>
To: <minios-devel@lists.xen.org>
Date: Mon, 6 Apr 2020 16:05:54 +0200
Message-ID: <dc972b4b3b688f81095ef5e0c5a9373c7bebab78.1586181805.git.hugo.lefeuvre@neclab.eu>
X-Mailer: git-send-email 2.7.4
MIME-Version: 1.0
X-Originating-IP: [192.168.24.96]
X-ClientProxiedBy: oberon.office.hd (192.168.24.90) To titania.office.hd
 (192.168.24.89)
Subject: [Minios-devel] [UNIKRAFT PATCH v3] lib/vfscore: fix null pointer
 dereferences
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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: Hugo Lefeuvre <hugo.lefeuvre@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>

ZGVudHJ5X2FsbG9jIGFuZCBkZW50cnlfbW92ZSBib3RoIGNyZWF0ZSBkZW50cnkgZF9wYXRoIGZp
ZWxkcyB1c2luZwpzdHJkdXAsIHdpdGhvdXQgY2hlY2tpbmcgZm9yIE5VTEwgcmV0dXJuIHZhbHVl
cy4gVGhpcyBsZWFkcyB0byBudWxsCnBvaW50ZXIgZGVyZWZlcmVuY2VzIGlmIHRoZSBhbGxvY2F0
b3IgZ29lcyBPT00uCgpNb2RpZnkgZGVudHJ5X21vdmUgdG8gcmV0dXJuIGFuIGVycm9yIGNvZGUg
KDAgZm9yIHN1Y2Nlc3MsIG90aGVyd2lzZQplcnJvciBjb2RlKS4KClNpZ25lZC1vZmYtYnk6IEh1
Z28gTGVmZXV2cmUgPGh1Z28ubGVmZXV2cmVAbmVjbGFiLmV1PgotLS0KQ2hhbmdlcyBzaW5jZSB2
MjoKICsgZGVudHJ5X2FsbG9jOiBmcmVlKGRwKSBpZiBzdHJkdXAgcmV0dXJucyBOVUxMLCBvdGhl
cndpc2UgdGhpcyBpcyBhIG1lbW9yeSBsZWFrLgoKZGlmZiAtLWdpdCBhL2xpYi92ZnNjb3JlL2Rl
bnRyeS5jIGIvbGliL3Zmc2NvcmUvZGVudHJ5LmMKaW5kZXggNzZmN2E2Yi4uNDNlZTJmZSAxMDA2
NDQKLS0tIGEvbGliL3Zmc2NvcmUvZGVudHJ5LmMKKysrIGIvbGliL3Zmc2NvcmUvZGVudHJ5LmMK
QEAgLTc1LDEyICs3NSwxNyBAQCBkZW50cnlfYWxsb2Moc3RydWN0IGRlbnRyeSAqcGFyZW50X2Rw
LCBzdHJ1Y3Qgdm5vZGUgKnZwLCBjb25zdCBjaGFyICpwYXRoKQogCQlyZXR1cm4gTlVMTDsKIAl9
CiAKKwlkcC0+ZF9wYXRoID0gc3RyZHVwKHBhdGgpOworCWlmICghZHAtPmRfcGF0aCkgeworCQlm
cmVlKGRwKTsKKwkJcmV0dXJuIE5VTEw7CisJfQorCiAJdnJlZih2cCk7CiAKIAlkcC0+ZF9yZWZj
bnQgPSAxOwogCWRwLT5kX3Zub2RlID0gdnA7CiAJZHAtPmRfbW91bnQgPSBtcDsKLQlkcC0+ZF9w
YXRoID0gc3RyZHVwKHBhdGgpOwogCVVLX0lOSVRfTElTVF9IRUFEKCZkcC0+ZF9jaGlsZF9saXN0
KTsKIAogCWlmIChwYXJlbnRfZHApIHsKQEAgLTEzMywxMSArMTM4LDE3IEBAIHN0YXRpYyB2b2lk
IGRlbnRyeV9jaGlsZHJlbl9yZW1vdmUoc3RydWN0IGRlbnRyeSAqZHApCiAKIH0KIAotdm9pZAor
aW50CiBkZW50cnlfbW92ZShzdHJ1Y3QgZGVudHJ5ICpkcCwgc3RydWN0IGRlbnRyeSAqcGFyZW50
X2RwLCBjaGFyICpwYXRoKQogewogCXN0cnVjdCBkZW50cnkgKm9sZF9wZHAgPSBkcC0+ZF9wYXJl
bnQ7CiAJY2hhciAqb2xkX3BhdGggPSBkcC0+ZF9wYXRoOworCWNoYXIgKm5ld19wYXRoID0gc3Ry
ZHVwKHBhdGgpOworCisJaWYgKCFuZXdfcGF0aCkgeworCQkvLyBGYWlsIGJlZm9yZSBjaGFuZ2lu
ZyBhbnl0aGluZyB0byB0aGUgVkZTCisJCXJldHVybiBFTk9NRU07CisJfQogCiAJaWYgKG9sZF9w
ZHApIHsKIAkJdWtfbXV0ZXhfbG9jaygmb2xkX3BkcC0+ZF9sb2NrKTsKQEAgLTE2MSw3ICsxNzIs
OCBAQCBkZW50cnlfbW92ZShzdHJ1Y3QgZGVudHJ5ICpkcCwgc3RydWN0IGRlbnRyeSAqcGFyZW50
X2RwLCBjaGFyICpwYXRoKQogCS8vIFJlbW92ZSBkcCB3aXRoIG91dGRhdGVkIGhhc2ggaW5mbyBm
cm9tIHRoZSBoYXNodGFibGUuCiAJdWtfaGxpc3RfZGVsKCZkcC0+ZF9saW5rKTsKIAkvLyBVcGRh
dGUgZHAuCi0JZHAtPmRfcGF0aCA9IHN0cmR1cChwYXRoKTsKKwlkcC0+ZF9wYXRoID0gbmV3X3Bh
dGg7CisKIAlkcC0+ZF9wYXJlbnQgPSBwYXJlbnRfZHA7CiAJLy8gSW5zZXJ0IGRwIHVwZGF0ZWQg
aGFzaCBpbmZvIGludG8gdGhlIGhhc2h0YWJsZS4KIAl1a19obGlzdF9hZGRfaGVhZCgmZHAtPmRf
bGluaywKQEAgLTE3Myw2ICsxODUsNyBAQCBkZW50cnlfbW92ZShzdHJ1Y3QgZGVudHJ5ICpkcCwg
c3RydWN0IGRlbnRyeSAqcGFyZW50X2RwLCBjaGFyICpwYXRoKQogCX0KIAogCWZyZWUob2xkX3Bh
dGgpOworCXJldHVybiAwOwogfQogCiB2b2lkCmRpZmYgLS1naXQgYS9saWIvdmZzY29yZS9pbmNs
dWRlL3Zmc2NvcmUvZGVudHJ5LmggYi9saWIvdmZzY29yZS9pbmNsdWRlL3Zmc2NvcmUvZGVudHJ5
LmgKaW5kZXggMGEzODQwMi4uMmMzNTY1MyAxMDA2NDQKLS0tIGEvbGliL3Zmc2NvcmUvaW5jbHVk
ZS92ZnNjb3JlL2RlbnRyeS5oCisrKyBiL2xpYi92ZnNjb3JlL2luY2x1ZGUvdmZzY29yZS9kZW50
cnkuaApAQCAtNTYsNyArNTYsNyBAQCBzdHJ1Y3QgZGVudHJ5IHsKIAogc3RydWN0IGRlbnRyeSAq
ZGVudHJ5X2FsbG9jKHN0cnVjdCBkZW50cnkgKnBhcmVudF9kcCwgc3RydWN0IHZub2RlICp2cCwg
Y29uc3QgY2hhciAqcGF0aCk7CiBzdHJ1Y3QgZGVudHJ5ICpkZW50cnlfbG9va3VwKHN0cnVjdCBt
b3VudCAqbXAsIGNoYXIgKnBhdGgpOwotdm9pZCBkZW50cnlfbW92ZShzdHJ1Y3QgZGVudHJ5ICpk
cCwgc3RydWN0IGRlbnRyeSAqcGFyZW50X2RwLCBjaGFyICpwYXRoKTsKK2ludCBkZW50cnlfbW92
ZShzdHJ1Y3QgZGVudHJ5ICpkcCwgc3RydWN0IGRlbnRyeSAqcGFyZW50X2RwLCBjaGFyICpwYXRo
KTsKIHZvaWQgZGVudHJ5X3JlbW92ZShzdHJ1Y3QgZGVudHJ5ICpkcCk7CiB2b2lkIGRyZWYoc3Ry
dWN0IGRlbnRyeSAqZHApOwogdm9pZCBkcmVsZShzdHJ1Y3QgZGVudHJ5ICpkcCk7CmRpZmYgLS1n
aXQgYS9saWIvdmZzY29yZS9zeXNjYWxscy5jIGIvbGliL3Zmc2NvcmUvc3lzY2FsbHMuYwppbmRl
eCA5YjVhNmJkLi45YTEzMmI3IDEwMDY0NAotLS0gYS9saWIvdmZzY29yZS9zeXNjYWxscy5jCisr
KyBiL2xpYi92ZnNjb3JlL3N5c2NhbGxzLmMKQEAgLTgzMyw4ICs4MzMsMTEgQEAgc3lzX3JlbmFt
ZShjaGFyICpzcmMsIGNoYXIgKmRlc3QpCiAJfQogCiAJZXJyb3IgPSBWT1BfUkVOQU1FKGR2cDEs
IHZwMSwgc25hbWUsIGR2cDIsIHZwMiwgZG5hbWUpOworCWlmIChlcnJvcikKKwkJZ290byBlcnIz
OworCisJZXJyb3IgPSBkZW50cnlfbW92ZShkcDEsIGRkcDIsIGRuYW1lKTsKIAotCWRlbnRyeV9t
b3ZlKGRwMSwgZGRwMiwgZG5hbWUpOwogCWlmIChkcDIpCiAJCWRlbnRyeV9yZW1vdmUoZHAyKTsK
IAotLSAKMi43LjQKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9q
ZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWlu
aW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Mon Apr 06 14:09:48 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 06 Apr 2020 14:09: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 1jLSRg-0008K8-9I; Mon, 06 Apr 2020 14:09:48 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=zvUw=5W=owl.eu.com=hle@srs-us1.protection.inumbo.net>)
 id 1jLSRe-0008Jw-NV
 for minios-devel@lists.xenproject.org; Mon, 06 Apr 2020 14:09:46 +0000
X-Inumbo-ID: 43da2f20-7810-11ea-b4f4-bc764e2007e4
Received: from relay10.mail.gandi.net (unknown [217.70.178.230])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 43da2f20-7810-11ea-b4f4-bc764e2007e4;
 Mon, 06 Apr 2020 14:09:44 +0000 (UTC)
Received: from localhost (hadi-gate-vlan-851.hadiko.whka.de [141.70.45.131])
 (Authenticated sender: hle@owl.eu.com)
 by relay10.mail.gandi.net (Postfix) with ESMTPSA id EB5B0240012;
 Mon,  6 Apr 2020 14:09:41 +0000 (UTC)
Date: Mon, 6 Apr 2020 16:09:40 +0200
From: Hugo Lefeuvre <hle@owl.eu.com>
To: Simon Kuenzer <simon.kuenzer@neclab.eu>
Message-ID: <20200406140940.bu3edojyoqt4lumc@behemoth.owl.eu.com.local>
References: <5b7ac3809a611277163efca3d71e7da5120164c5.1582895769.git.hugo.lefeuvre@neclab.eu>
 <b079dd89-2814-a29a-3db8-c9b849c1e20c@neclab.eu>
MIME-Version: 1.0
In-Reply-To: <b079dd89-2814-a29a-3db8-c9b849c1e20c@neclab.eu>
Subject: Re: [Minios-devel] [UNIKRAFT PATCH] lib/vfscore: fix null pointer
 dereferences
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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.xenproject.org
Content-Type: multipart/mixed; boundary="===============4120835575281646977=="
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>


--===============4120835575281646977==
Content-Type: multipart/signed; micalg=pgp-sha512;
	protocol="application/pgp-signature"; boundary="kc7pz5brvxhx4dl5"
Content-Disposition: inline


--kc7pz5brvxhx4dl5
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

Hi Simon,

> thanks a lot for this work, I have some comments inline.

thanks for your review! answers inline.

Please jump right to the v3, I found another issue in my patch meanwhile :-)

> On 28.02.20 14:22, Hugo Lefeuvre wrote:
> > dentry_alloc and dentry_move both create dentry d_path fields using
> > strdup, without checking for NULL return values. This leads to null
> > pointer dereferences if the allocator goes OOM.
> >=20
> > Modify dentry_move to return an error code (0 for success, otherwise
> > error code).
> >=20
> > Signed-off-by: Hugo Lefeuvre <hugo.lefeuvre@neclab.eu>
> > ---
> >   lib/vfscore/dentry.c                 | 12 +++++++++++-
> >   lib/vfscore/include/vfscore/dentry.h |  2 +-
> >   lib/vfscore/syscalls.c               |  5 ++++-
> >   3 files changed, 16 insertions(+), 3 deletions(-)
> >=20
> > diff --git a/lib/vfscore/dentry.c b/lib/vfscore/dentry.c
> > index 76f7a6b..a4728fc 100644
> > --- a/lib/vfscore/dentry.c
> > +++ b/lib/vfscore/dentry.c
> > @@ -81,6 +81,11 @@ dentry_alloc(struct dentry *parent_dp, struct vnode =
*vp, const char *path)
> >   	dp->d_vnode =3D vp;
> >   	dp->d_mount =3D mp;
> >   	dp->d_path =3D strdup(path);
> > +
> > +	if (!dp->d_path) {
> > +		return NULL;
> > +	}
>=20
> I think this should be an UK_ASSERT() in the function entry instead if it=
 is
> required to hand-over a path.

I'm not sure to understand this comment... checking the return value of
strdup via UK_ASSERT doesn't sound right to me.

> > +
> >   	UK_INIT_LIST_HEAD(&dp->d_child_list);
> >   	if (parent_dp) {
> > @@ -133,11 +138,12 @@ static void dentry_children_remove(struct dentry =
*dp)
> >   }
> > -void
> > +int
> >   dentry_move(struct dentry *dp, struct dentry *parent_dp, char *path)
> >   {
> >   	struct dentry *old_pdp =3D dp->d_parent;
> >   	char *old_path =3D dp->d_path;
> > +	int error =3D 0;
> >   	if (old_pdp) {
> >   		uk_mutex_lock(&old_pdp->d_lock);
> > @@ -162,6 +168,9 @@ dentry_move(struct dentry *dp, struct dentry *paren=
t_dp, char *path)
> >   	uk_hlist_del(&dp->d_link);
> >   	// Update dp.
> >   	dp->d_path =3D strdup(path);
> > +	if (!dp->d_path)
> > +		error =3D ENOMEM;
> > +
>=20
> Hum... I think it is better to do the strdup() at the function entry and
> return at failure before changing anything to the VFS.

Agree. Done in the v3.

> Btw, do the functions that call dentry_move() expect that the path is new=
ly
> allocated (e.g., by giving something alocated on the stack). I guess yes =
and
> it would be the better style. I just want to double-check.

Well, as far as I know the path is allocated on the stack (this is src in
the rename function, lib/vfscore/main.c).

> Also, could dp have contain already a path? If so, should that one be fre=
ed
> before?

Yes, dp can already have a path, and we typically free it at the end of
dentry_move. However, if we fail to allocate a new path at function entry,
I don't think we should do anything. Just return an error code and let the
caller decide what to do next. That's the most intuitive thing that comes
to my mind.

cheers,
Hugo

--=20
                Hugo Lefeuvre (hle)    |    www.owl.eu.com
RSA4096_ 360B 03B3 BF27 4F4D 7A3F D5E8 14AA 1EB8 A247 3DFD
ed25519_ 37B2 6D38 0B25 B8A2 6B9F 3A65 A36F 5357 5F2D DC4C

--kc7pz5brvxhx4dl5
Content-Type: application/pgp-signature; name="signature.asc"

-----BEGIN PGP SIGNATURE-----

iQGzBAABCgAdFiEEeDb9QWtkMa2LX4zREeMFjl5EGkIFAl6LOCMACgkQEeMFjl5E
GkIOBgwAtvSLadACu5dyIooAqq4L2De9R5aFgHO5Sycp+/Z/6ocaOW0zAmO6rLyH
lMvfUD0rYCjVJLJDZKsoBPnOH7KcXw6Siu13m09s4k+TInX6aFt8I5eje9jA3SqI
QBo6Hye3Io7wkkwKpeimudQzr06+O3t3XHFvMOrGZ4mjcTPe3SoinBTbYccEkYQ3
Q9MtJE0K1bAzmtHeysfJY4UlzG+YsYtxzv1PFtWnVdWBK8vcVPyrrLRxng6ltf6Z
R6icg+wDAvjFwfvDn2dJSXNx98IV8dEaNfbVTx8RPleRrpajFUCRE4wa4u1Es8xa
jzQk9S1upfCpH73UDTlCc/+rS90XeKHdUUfG8ZUZyDA+/Lslu497yfsBwXbX9Jig
WQcfkyeL3ZJ/BqQExUP1d0QO0c4AETDwaydJfAKsUlc+qEDq3i1wZF8ejfDlyYz4
Zb2ICCtjtpVrW4/P+mPRsCfRx0oCs2kb2cI+Eg+L9YJgnqx3/4wHLmVZrzF1oKRS
mWvg/srx
=UXEu
-----END PGP SIGNATURE-----

--kc7pz5brvxhx4dl5--


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

X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRl
dmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6
Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

--===============4120835575281646977==--


From minios-devel-bounces@lists.xenproject.org Mon Apr 06 18:41:45 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 06 Apr 2020 18:41: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 1jLWgp-0007Wq-Ju; Mon, 06 Apr 2020 18:41:43 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=XziZ=5W=upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1jLWgn-0007Wd-IN
 for minios-devel@lists.xen.org; Mon, 06 Apr 2020 18:41:42 +0000
X-Inumbo-ID: 3fe9038e-7836-11ea-9e09-bc764e2007e4
Received: from mx.upb.ro (unknown [141.85.13.220])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 3fe9038e-7836-11ea-9e09-bc764e2007e4;
 Mon, 06 Apr 2020 18:41:39 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id 2DC67B561DCF;
 Mon,  6 Apr 2020 21:41:38 +0300 (EEST)
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10032)
 with ESMTP id w1xCLgOm95pv; Mon,  6 Apr 2020 21:41:35 +0300 (EEST)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id D68CEB56259C;
 Mon,  6 Apr 2020 21:41:35 +0300 (EEST)
DKIM-Filter: OpenDKIM Filter v2.10.3 mx.upb.ro D68CEB56259C
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=upb.ro;
 s=96342B8A-77E4-11E5-BA93-D93D0963A2DF; t=1586198495;
 bh=mOnT8nEcwT3W/+CS6NtvCWAc9RivxF2DY62JDuK3fsI=;
 h=From:To:Date:Message-Id:MIME-Version;
 b=JSK1/EXhdgbxs6snvfD8S5HTRv4+djB0zOrOn+QbwjnBmQO8TweuO0PRYkHM57D5n
 nR8yX3O7RhlD58PXjPhDRAa0wP4c/49AxTp90R8zb4LgqeKdCxTVvPGVgccCgfl6d+
 qR0HCFuh5Z+LGH24qhGkbeA22qMHl+Qbf/hu1PwI=
X-Virus-Scanned: amavisd-new at upb.ro
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id tq0miaIWoYB4; Mon,  6 Apr 2020 21:41:35 +0300 (EEST)
Received: from localhost.localdomain (unknown [86.127.159.73])
 by mx.upb.ro (Postfix) with ESMTPSA id 955D9B562427;
 Mon,  6 Apr 2020 21:41:35 +0300 (EEST)
From: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
To: minios-devel@lists.xen.org
Date: Mon,  6 Apr 2020 21:40:01 +0300
Message-Id: <20200406184001.16149-4-vlad_andrei.badoiu@upb.ro>
X-Mailer: git-send-email 2.20.1
In-Reply-To: <20200406184001.16149-1-vlad_andrei.badoiu@upb.ro>
References: <20200406184001.16149-1-vlad_andrei.badoiu@upb.ro>
MIME-Version: 1.0
Subject: [Minios-devel] [UNIKRAFT/LIBONNX PATCH 3/3] Add patches
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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, Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
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>

SW4gdGhpcyBwYXRjaCwgd2UgYWRkIGEgZ3VhcmQgdG8gdGhlIE9OTlhfQVBJCmRlZmluZSBhcyB0
byBhdm9pZCByZWRlZmluaXRpb24gd2FybmluZ3MuCgpTaWduZWQtb2ZmLWJ5OiBWbGFkLUFuZHJl
aSBCYWRvaXUgPHZsYWRfYW5kcmVpLmJhZG9pdUB1cGIucm8+Ci0tLQogcGF0Y2hlcy8wMDAxLUFk
ZC1ndWFyZC10by1PTk5YX0FQSS5wYXRjaCB8IDI3ICsrKysrKysrKysrKysrKysrKysrKysrKwog
MSBmaWxlIGNoYW5nZWQsIDI3IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBwYXRj
aGVzLzAwMDEtQWRkLWd1YXJkLXRvLU9OTlhfQVBJLnBhdGNoCgpkaWZmIC0tZ2l0IGEvcGF0Y2hl
cy8wMDAxLUFkZC1ndWFyZC10by1PTk5YX0FQSS5wYXRjaCBiL3BhdGNoZXMvMDAwMS1BZGQtZ3Vh
cmQtdG8tT05OWF9BUEkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
ZmZmYzIxNwotLS0gL2Rldi9udWxsCisrKyBiL3BhdGNoZXMvMDAwMS1BZGQtZ3VhcmQtdG8tT05O
WF9BUEkucGF0Y2gKQEAgLTAsMCArMSwyNyBAQAorRnJvbSA4MDQ0ZjViODNiNDNjZDdhM2ZhZTc5
NmYyOTkxZjQ4ODYwMDIzZThlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogVmxhZC1B
bmRyZWkgQmFkb2l1IDx2bGFkX2FuZHJlaS5iYWRvaXVAdXBiLnJvPgorRGF0ZTogTW9uLCA2IEFw
ciAyMDIwIDIwOjE2OjIzICswMzAwCitTdWJqZWN0OiBbUEFUQ0ggMS8xXSBBZGQgZ3VhcmQgdG8g
T05OWF9BUEkKKworU2lnbmVkLW9mZi1ieTogVmxhZC1BbmRyZWkgQmFkb2l1IDx2bGFkX2FuZHJl
aS5iYWRvaXVAdXBiLnJvPgorLS0tCisgb25ueC9vbm54X3BiLmggfCAyICsrCisgMSBmaWxlIGNo
YW5nZWQsIDIgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvb25ueC9vbm54X3BiLmggYi9v
bm54L29ubnhfcGIuaAoraW5kZXggN2RjNjhkZS4uZGYyMmY3MyAxMDA2NDQKKy0tLSBhL29ubngv
b25ueF9wYi5oCisrKysgYi9vbm54L29ubnhfcGIuaAorQEAgLTQxLDcgKzQxLDkgQEAKKyAvLyBU
aGlzIHNvbHV0aW9uIGlzIHNpbWlsYXIgdG8KKyAvLyBodHRwczovL2dpdGh1Yi5jb20vcHl0b3Jj
aC9weXRvcmNoL2Jsb2IvbWFzdGVyL2NhZmZlMi9jb3JlL2NvbW1vbi5oCisgI2lmIGRlZmluZWQo
T05OWF9CVUlMRF9TSEFSRURfTElCUykgfHwgZGVmaW5lZChPTk5YX0JVSUxEX01BSU5fTElCKQor
KyNpZm5kZWYgT05OWF9BUEkKKyAjZGVmaW5lIE9OTlhfQVBJIE9OTlhfRVhQT1JUCisrI2VuZGlm
CisgI2Vsc2UKKyAjZGVmaW5lIE9OTlhfQVBJIE9OTlhfSU1QT1JUCisgI2VuZGlmCistLSAKKzIu
MjAuMQorCi0tIAoyLjIwLjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54
ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGlu
Zm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Mon Apr 06 18:41:45 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 06 Apr 2020 18:41: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 1jLWgp-0007Wv-LQ; Mon, 06 Apr 2020 18:41: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=XziZ=5W=upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1jLWgo-0007Wh-7s
 for minios-devel@lists.xen.org; Mon, 06 Apr 2020 18:41:42 +0000
X-Inumbo-ID: 3f3fa83e-7836-11ea-801e-12813bfff9fa
Received: from mx.upb.ro (unknown [141.85.13.220])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 3f3fa83e-7836-11ea-801e-12813bfff9fa;
 Mon, 06 Apr 2020 18:41:38 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id D3160B562597;
 Mon,  6 Apr 2020 21:41:36 +0300 (EEST)
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10032)
 with ESMTP id 1b-fam1SNBan; Mon,  6 Apr 2020 21:41:35 +0300 (EEST)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id 24851B562413;
 Mon,  6 Apr 2020 21:41:35 +0300 (EEST)
DKIM-Filter: OpenDKIM Filter v2.10.3 mx.upb.ro 24851B562413
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=upb.ro;
 s=96342B8A-77E4-11E5-BA93-D93D0963A2DF; t=1586198495;
 bh=9pvEKqMTkJQ3Ii4sJrMT4RhLgLV2md4YyoODlEuSUhk=;
 h=From:To:Date:Message-Id:MIME-Version;
 b=i5GPCCJMrqf0J57BE/eVDYBNSxh+agYeY0nO1iHLDhZwzzIeSZS/c19hjFSeJnIxA
 EnKjR5PtYNWC0ahQhk4EYPar/fcMvSPNUOzM2LhWirofObjKpAYnboGqyojOe2xjR0
 EPc3LLuTPpDopZK36ylnalMCr9XlFefkJ4vpzHNI=
X-Virus-Scanned: amavisd-new at upb.ro
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id 2vYO1ngiHMhY; Mon,  6 Apr 2020 21:41:35 +0300 (EEST)
Received: from localhost.localdomain (unknown [86.127.159.73])
 by mx.upb.ro (Postfix) with ESMTPSA id CFFE6B561DCF;
 Mon,  6 Apr 2020 21:41:34 +0300 (EEST)
From: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
To: minios-devel@lists.xen.org
Date: Mon,  6 Apr 2020 21:39:58 +0300
Message-Id: <20200406184001.16149-1-vlad_andrei.badoiu@upb.ro>
X-Mailer: git-send-email 2.20.1
MIME-Version: 1.0
Subject: [Minios-devel] [UNIKRAFT/LIBONNX PATCH 0/3] Initial port of onnx on
 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, Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
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>

VGhpcyBpcyBvdXIgaW5pdGlhbCBwb3J0IG9mIG9ubnggb24gVW5pa3JhZnQuCgpWbGFkLUFuZHJl
aSBCYWRvaXUgKDMpOgogIEludHJvZHVjZSBsaWJyYXJ5IHNrZWxldG9uCiAgQWRkIE1ha2VmaWxl
CiAgQWRkIHBhdGNoZXMKCi0tIAoyLjIwLjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZl
bEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxt
YW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Mon Apr 06 18:41:47 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 06 Apr 2020 18:41: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 1jLWgt-0007XZ-N2; Mon, 06 Apr 2020 18:41:47 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=XziZ=5W=upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1jLWgs-0007XM-Cc
 for minios-devel@lists.xen.org; Mon, 06 Apr 2020 18:41:46 +0000
X-Inumbo-ID: 408a10da-7836-11ea-83d8-bc764e2007e4
Received: from mx.upb.ro (unknown [141.85.13.220])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 408a10da-7836-11ea-83d8-bc764e2007e4;
 Mon, 06 Apr 2020 18:41:40 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id 3DA87B5623B4;
 Mon,  6 Apr 2020 21:41:39 +0300 (EEST)
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10032)
 with ESMTP id 5nErq6vcL2N8; Mon,  6 Apr 2020 21:41:35 +0300 (EEST)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id 9944DB56243E;
 Mon,  6 Apr 2020 21:41:35 +0300 (EEST)
DKIM-Filter: OpenDKIM Filter v2.10.3 mx.upb.ro 9944DB56243E
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=upb.ro;
 s=96342B8A-77E4-11E5-BA93-D93D0963A2DF; t=1586198495;
 bh=j8BZ5x2U1ahwjXH/PIY0L0WniStVEheNBN7wzzowmcs=;
 h=From:To:Date:Message-Id:MIME-Version;
 b=r2nKETnDROTf2nQvFP89tZjYlYR1Wvjyoki2LKYovLUVTop9fMQGxXPiDLDzF2KSw
 EZkn/iujc/KQ2SywUehefDD3ag3MEYms+WiuB6Ygf0oho4dxOtTdp01iHUpaNb6gZp
 SYqURdeeLBmy2bLQzv8eYkwP2wI1JH+bt+tXuxDI=
X-Virus-Scanned: amavisd-new at upb.ro
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id L1xxNEdHzlOE; Mon,  6 Apr 2020 21:41:35 +0300 (EEST)
Received: from localhost.localdomain (unknown [86.127.159.73])
 by mx.upb.ro (Postfix) with ESMTPSA id 5ED78B562415;
 Mon,  6 Apr 2020 21:41:35 +0300 (EEST)
From: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
To: minios-devel@lists.xen.org
Date: Mon,  6 Apr 2020 21:40:00 +0300
Message-Id: <20200406184001.16149-3-vlad_andrei.badoiu@upb.ro>
X-Mailer: git-send-email 2.20.1
In-Reply-To: <20200406184001.16149-1-vlad_andrei.badoiu@upb.ro>
References: <20200406184001.16149-1-vlad_andrei.badoiu@upb.ro>
MIME-Version: 1.0
Subject: [Minios-devel] [UNIKRAFT/LIBONNX PATCH 2/3] Add Makefile
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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, Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
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>

QWRkIG9ubnggcG9ydCBNYWtlZmlsZS51awoKU2lnbmVkLW9mZi1ieTogVmxhZC1BbmRyZWkgQmFk
b2l1IDx2bGFkX2FuZHJlaS5iYWRvaXVAdXBiLnJvPgotLS0KIE1ha2VmaWxlLnVrIHwgMTQzICsr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDEgZmls
ZSBjaGFuZ2VkLCAxNDMgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IE1ha2VmaWxl
LnVrCgpkaWZmIC0tZ2l0IGEvTWFrZWZpbGUudWsgYi9NYWtlZmlsZS51awpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYjA0NTczCi0tLSAvZGV2L251bGwKKysrIGIvTWFrZWZp
bGUudWsKQEAgLTAsMCArMSwxNDMgQEAKKyMgIGxpYm9ubnggY29uZmlnIGZpbGUKKyMKKyMgIEF1
dGhvcnM6IFZsYWQtQW5kcmVpIEJhZG9pdSA8dmxhZF9hbmRyZWkuYmFkb2l1QHVwYi5ybz4KKyMK
KyMgIENvcHlyaWdodCAoYykgMjAyMCwgVW5pdmVyc2l0eSBQb2xpdGVobmljYSBvZiBCdWNoYXJl
c3QuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
IyAgYXJlIG1ldDoKKyMKKyMgIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMgIDMuIE5laXRoZXIgdGhlIG5h
bWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgICAgIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisjICAgICB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorIworIyAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiCisjICBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisjICBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorIyAgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRQorIyAgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorIyAgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyAgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyMgIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjICBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQorIyAgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisjCisjICBUSElTIEhFQURFUiBNQVkgTk9UIEJFIEVYVFJB
Q1RFRCBPUiBNT0RJRklFRCBJTiBBTlkgV0FZCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisj
IExpYnJhcnkgcmVnaXN0cmF0aW9uCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworJChldmFsICQo
Y2FsbCBhZGRsaWJfcyxsaWJvbm54LCQoQ09ORklHX0xJQk9OTlgpKSkKKworIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMKKyMgU291cmNlcworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK0xJQk9OTlhf
VkVSU0lPTj0xLjYuMAorTElCT05OWF9VUkw9aHR0cHM6Ly9naXRodWIuY29tL29ubngvb25ueC9h
cmNoaXZlL3YxLjYuMC50YXIuZ3oKK0xJQk9OTlhfUEFUQ0hESVI9JChMSUJPTk5YX0JBU0UpL3Bh
dGNoZXMKKworJChldmFsICQoY2FsbCBmZXRjaCxsaWJvbm54LCQoTElCT05OWF9VUkwpLCQoTElC
T05OWF9WRVJTSU9OKS50YXIuZ3opKQorJChldmFsICQoY2FsbCBwYXRjaCxsaWJvbm54LCQoTElC
T05OWF9QQVRDSERJUiksb25ueC0kKExJQk9OTlhfVkVSU0lPTikpKQorCisjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjCisjIEhlbHBlcnMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitMSUJPTk5YX1NV
QkRJUj1vbm54LSQoTElCT05OWF9WRVJTSU9OKQorTElCT05OWF9TUkM9JChMSUJPTk5YX09SSUdJ
TikvJChMSUJPTk5YX1NVQkRJUikKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgTGlicmFy
eSBpbmNsdWRlcworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK0NJTkNMVURFUy0kKENPTkZJR19M
SUJPTk5YKSArPSAtSSQoTElCT05OWF9TUkMpLworQ1hYSU5DTFVERVMtJChDT05GSUdfTElCT05O
WCkgKz0gLUkkKExJQk9OTlhfU1JDKS8KKworQ0lOQ0xVREVTLSQoQ09ORklHX0xJQk9OTlgpICs9
IC1JJChMSUJPTk5YX1NSQykvb25ueAorQ1hYSU5DTFVERVMtJChDT05GSUdfTElCT05OWCkgKz0g
LUkkKExJQk9OTlhfU1JDKS9vbm54CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIEdsb2Jh
bCBmbGFncworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgU3VwcHJlc3Mgc29tZSB3YXJuaW5n
cyB0byBtYWtlIHRoZSBidWlsZCBwcm9jZXNzIGxvb2sgbmVhdGVyCitMSUJPTk5YX1NVUFBSRVNT
X0ZMQUdTICs9IC1Xbm8tdW51c2VkLXBhcmFtZXRlciAtV25vLXVudXNlZC12YXJpYWJsZSAtV25v
LW5vbm51bGwJXAorLVduby11bnVzZWQtYnV0LXNldC12YXJpYWJsZSAtV25vLXVudXNlZC1sYWJl
bCAtV25vLWNoYXItc3Vic2NyaXB0cwkJXAorLVduby11bnVzZWQtZnVuY3Rpb24gLVduby1taXNz
aW5nLWZpZWxkLWluaXRpYWxpemVycyAtV25vLXVuaW5pdGlhbGl6ZWQJCVwKKy1Xbm8tYXJyYXkt
Ym91bmRzIC1Xbm8tbWF5YmUtdW5pbml0aWFsaXplZCAtV25vLXVudXNlZC12YWx1ZQkJCVwKKy1X
bm8tdW51c2VkLW1hY3JvcyAtV25vLXBhcmVudGhlc2VzIC1Xbm8tdHlwZS1saW1pdHMgLVduby1z
aWduLWNvbXBhcmUJCVwKKy1Xbm8tbWlzc2luZy1icmFjZXMgLVduby1lbmRpZi1sYWJlbHMgLVdu
by11bnVzZWQtYnV0LXNldC12YXJpYWJsZQorCitMSUJPTk5YX0xJQlJBUllfRkxBR1MgKz0gLURP
Tk5YX0FQST0iX19hdHRyaWJ1dGVfXygoX192aXNpYmlsaXR5X18oXCJkZWZhdWx0XCIpKSkiCVwK
KwkJCS1ET05OWF9NTD0xIC1ET05OWF9OQU1FU1BBQ0U9b25ueCAtRE9OTlhfQlVJTERfTUFJTl9M
SUIgLUROREVCVUcKKworTElCT05OWF9DRkxBR1MteSAgICArPSAgJChMSUJPTk5YX1NVUFBSRVNT
X0ZMQUdTKSAkKExJQk9OTlhfTElCUkFSWV9GTEFHUykKK0xJQk9OTlhfQ1hYRkxBR1MteSAgICAr
PSAgJChMSUJPTk5YX1NVUFBSRVNTX0ZMQUdTKSAkKExJQk9OTlhfTElCUkFSWV9GTEFHUykKKwor
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgTGlicmFyeSBzb3VyY2VzCisjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIworTElCT05OWF9TUkNTLXkgKz0gJChMSUJPTk5YX1NSQykvb25ueC9vbm54aWZp
X2xvYWRlci5jCitMSUJPTk5YX1NSQ1MteSArPSAkKExJQk9OTlhfU1JDKS9vbm54L29ubnhpZmlf
d3JhcHBlci5jCitMSUJPTk5YX1NSQ1MteSArPSAkKExJQk9OTlhfU1JDKS9vbm54L29ubngvb25u
eC1tbC5wYi5jYworTElCT05OWF9TUkNTLXkgKz0gJChMSUJPTk5YX1NSQykvb25ueC9vbm54L29u
bngtb3BlcmF0b3JzLW1sLnBiLmNjCitMSUJPTk5YX1NSQ1MteSArPSAkKExJQk9OTlhfU1JDKS9v
bm54L2NwcDJweV9leHBvcnQuY2MKK0xJQk9OTlhfU1JDUy15ICs9ICQoTElCT05OWF9TUkMpL29u
bngvb25ueGlmaV91dGlscy5jYworTElCT05OWF9TUkNTLXkgKz0gJChMSUJPTk5YX1NSQykvb25u
eC9kZWZzL3NjaGVtYS5jYworTElCT05OWF9TUkNTLXkgKz0gJChMSUJPTk5YX1NSQykvb25ueC9k
ZWZzL2NvbnRyb2xmbG93L2RlZnMuY2N8Y29udHJvbGZsb3cKK0xJQk9OTlhfU1JDUy15ICs9ICQo
TElCT05OWF9TUkMpL29ubngvZGVmcy9jb250cm9sZmxvdy9vbGQuY2N8Y29udHJvbGZsb3cKK0xJ
Qk9OTlhfU1JDUy15ICs9ICQoTElCT05OWF9TUkMpL29ubngvZGVmcy90ZW5zb3JfcHJvdG9fdXRp
bC5jYworTElCT05OWF9TUkNTLXkgKz0gJChMSUJPTk5YX1NSQykvb25ueC9kZWZzL3RlbnNvcl91
dGlsLmNjCitMSUJPTk5YX1NSQ1MteSArPSAkKExJQk9OTlhfU1JDKS9vbm54L2RlZnMvdGVuc29y
L2RlZnMuY2N8dGVuc29yCitMSUJPTk5YX1NSQ1MteSArPSAkKExJQk9OTlhfU1JDKS9vbm54L2Rl
ZnMvdGVuc29yL29sZC5jY3x0ZW5zb3IKK0xJQk9OTlhfU1JDUy15ICs9ICQoTElCT05OWF9TUkMp
L29ubngvZGVmcy9hdHRyX3Byb3RvX3V0aWwuY2MKK0xJQk9OTlhfU1JDUy15ICs9ICQoTElCT05O
WF9TUkMpL29ubngvZGVmcy9mdW5jdGlvbi5jYworTElCT05OWF9TUkNTLXkgKz0gJChMSUJPTk5Y
X1NSQykvb25ueC9kZWZzL3RyYWRpdGlvbmFsbWwvZGVmcy5jY3x0cmFkaXRpb25hbG1sCitMSUJP
Tk5YX1NSQ1MteSArPSAkKExJQk9OTlhfU1JDKS9vbm54L2RlZnMvdHJhZGl0aW9uYWxtbC9vbGQu
Y2N8dHJhZGl0aW9uYWxtbAorTElCT05OWF9TUkNTLXkgKz0gJChMSUJPTk5YX1NSQykvb25ueC9k
ZWZzL3F1YW50aXphdGlvbi9kZWZzLmNjfHF1YW50aXphdGlvbgorTElCT05OWF9TUkNTLXkgKz0g
JChMSUJPTk5YX1NSQykvb25ueC9kZWZzL3JlZHVjdGlvbi9kZWZzLmNjfHJlZHVjdGlvbgorTElC
T05OWF9TUkNTLXkgKz0gJChMSUJPTk5YX1NSQykvb25ueC9kZWZzL3JlZHVjdGlvbi9vbGQuY2N8
cmVkdWN0aW9uCitMSUJPTk5YX1NSQ1MteSArPSAkKExJQk9OTlhfU1JDKS9vbm54L2RlZnMvbG9n
aWNhbC9kZWZzLmNjfGxvZ2ljYWwKK0xJQk9OTlhfU1JDUy15ICs9ICQoTElCT05OWF9TUkMpL29u
bngvZGVmcy9sb2dpY2FsL29sZC5jY3xsb2dpY2FsCitMSUJPTk5YX1NSQ1MteSArPSAkKExJQk9O
TlhfU1JDKS9vbm54L2RlZnMvZGF0YV90eXBlX3V0aWxzLmNjCitMSUJPTk5YX1NSQ1MteSArPSAk
KExJQk9OTlhfU1JDKS9vbm54L2RlZnMvbm4vZGVmcy5jY3xubgorTElCT05OWF9TUkNTLXkgKz0g
JChMSUJPTk5YX1NSQykvb25ueC9kZWZzL25uL29sZC5jY3xubgorTElCT05OWF9TUkNTLXkgKz0g
JChMSUJPTk5YX1NSQykvb25ueC9kZWZzL29iamVjdF9kZXRlY3Rpb24vZGVmcy5jY3xvbmplY3Rf
ZGV0ZWN0aW9uCitMSUJPTk5YX1NSQ1MteSArPSAkKExJQk9OTlhfU1JDKS9vbm54L2RlZnMvb2Jq
ZWN0X2RldGVjdGlvbi9vbGQuY2N8b25qZWN0X2RldGVjdGlvbgorTElCT05OWF9TUkNTLXkgKz0g
JChMSUJPTk5YX1NSQykvb25ueC9kZWZzL21hdGgvZGVmcy5jY3xtYXRoCitMSUJPTk5YX1NSQ1Mt
eSArPSAkKExJQk9OTlhfU1JDKS9vbm54L2RlZnMvbWF0aC9vbGQuY2N8bWF0aAorTElCT05OWF9T
UkNTLXkgKz0gJChMSUJPTk5YX1NSQykvb25ueC9kZWZzL2dlbmVyYXRvci9kZWZzLmNjfGdlbmVy
YXRvcgorTElCT05OWF9TUkNTLXkgKz0gJChMSUJPTk5YX1NSQykvb25ueC9kZWZzL2dlbmVyYXRv
ci9vbGQuY2N8Z2VuZXJhdG9yCitMSUJPTk5YX1NSQ1MteSArPSAkKExJQk9OTlhfU1JDKS9vbm54
L2RlZnMvcm5uL2RlZnMuY2N8cm5uCitMSUJPTk5YX1NSQ1MteSArPSAkKExJQk9OTlhfU1JDKS9v
bm54L2RlZnMvcm5uL29sZC5jY3xybm4KK0xJQk9OTlhfU1JDUy15ICs9ICQoTElCT05OWF9TUkMp
L29ubngvZGVmcy9zZXF1ZW5jZS9kZWZzLmNjfHNlcXVlbmNlCitMSUJPTk5YX1NSQ1MteSArPSAk
KExJQk9OTlhfU1JDKS9vbm54L2RlZnMvdGVuc29yL3V0aWxzLmNjCitMSUJPTk5YX1NSQ1MteSAr
PSAkKExJQk9OTlhfU1JDKS9vbm54L3NoYXBlX2luZmVyZW5jZS9pbXBsZW1lbnRhdGlvbi5jYwor
TElCT05OWF9TUkNTLXkgKz0gJChMSUJPTk5YX1NSQykvb25ueC9jb21tb24vYXNzZXJ0aW9ucy5j
YworTElCT05OWF9TUkNTLXkgKz0gJChMSUJPTk5YX1NSQykvb25ueC9jb21tb24vaW50ZXJuZWRf
c3RyaW5ncy5jYworTElCT05OWF9TUkNTLXkgKz0gJChMSUJPTk5YX1NSQykvb25ueC9jb21tb24v
bW9kZWxfaGVscGVycy5jYworTElCT05OWF9TUkNTLXkgKz0gJChMSUJPTk5YX1NSQykvb25ueC9j
b21tb24vaXJfcGJfY29udmVydGVyLmNjCitMSUJPTk5YX1NSQ1MteSArPSAkKExJQk9OTlhfU1JD
KS9vbm54L2NvbW1vbi9zdGF0dXMuY2MKK0xJQk9OTlhfU1JDUy15ICs9ICQoTElCT05OWF9TUkMp
L29ubngvb3B0aW1pemVyL29wdGltaXplLmNjCitMSUJPTk5YX1NSQ1MteSArPSAkKExJQk9OTlhf
U1JDKS9vbm54L29wdGltaXplci9wYXNzX3JlZ2lzdHJ5LmNjCitMSUJPTk5YX1NSQ1MteSArPSAk
KExJQk9OTlhfU1JDKS9vbm54L29wdGltaXplci9wYXNzLmNjCitMSUJPTk5YX1NSQ1MteSArPSAk
KExJQk9OTlhfU1JDKS9vbm54L29wdGltaXplci9wYXNzX21hbmFnZXIuY2MKK0xJQk9OTlhfU1JD
Uy15ICs9ICQoTElCT05OWF9TUkMpL29ubngvY2hlY2tlci5jYworTElCT05OWF9TUkNTLXkgKz0g
JChMSUJPTk5YX1NSQykvb25ueC92ZXJzaW9uX2NvbnZlcnRlci9jb252ZXJ0LmNjCitMSUJPTk5Y
X1NSQ1MteSArPSAkKExJQk9OTlhfU1JDKS9vbm54L3ZlcnNpb25fY29udmVydGVyL2hlbHBlci5j
YworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBMaWItc3BlY2lmaWMgVGFyZ2V0cworIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMKKworJChMSUJPTk5YX0JVSUxEKS8ucHJlcGFyZWQ6ICQoTElC
T05OWF9CVUlMRCkvLm9yaWdpbgorCWNkICQoTElCT05OWF9TUkMpICYmIHB5dGhvbiBvbm54L2dl
bl9wcm90by5weSAtcCBvbm54IC1vIG9ubngvIG9ubnggLW0gJiYgCQlcCisJCXByb3RvYyBvbm54
L29ubngtbWwucHJvdG8gLUkuIC0tY3BwX291dCBkbGxleHBvcnRfZGVjbD1PTk5YX0FQSTpvbm54
LyAmJiAJXAorCQlweXRob24gb25ueC9nZW5fcHJvdG8ucHkgLXAgb25ueCAtbyBvbm54LyBvbm54
LW9wZXJhdG9ycyAtbSAmJiAJCQlcCisJCXByb3RvYyBvbm54L29ubngtb3BlcmF0b3JzLW1sLnBy
b3RvIC1JLiAtLWNwcF9vdXQgZGxsZXhwb3J0X2RlY2w9T05OWF9BUEk6b25ueC8KKworVUtfUFJF
UEFSRSArPSAkKExJQk9OTlhfQlVJTEQpLy5wcmVwYXJlZAotLSAKMi4yMC4xCgoKX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxp
bmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54
ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Apr 06 18:41:52 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 06 Apr 2020 18:41: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 1jLWgy-0007ZY-Q7; Mon, 06 Apr 2020 18:41:52 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=XziZ=5W=upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1jLWgx-0007ZH-DG
 for minios-devel@lists.xen.org; Mon, 06 Apr 2020 18:41:51 +0000
X-Inumbo-ID: 401ff808-7836-11ea-83d8-bc764e2007e4
Received: from mx.upb.ro (unknown [141.85.13.5])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 401ff808-7836-11ea-83d8-bc764e2007e4;
 Mon, 06 Apr 2020 18:41:39 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id 89AFDB562413;
 Mon,  6 Apr 2020 21:41:38 +0300 (EEST)
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10032)
 with ESMTP id qgWrWsg801lj; Mon,  6 Apr 2020 21:41:35 +0300 (EEST)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id 632DEB562416;
 Mon,  6 Apr 2020 21:41:35 +0300 (EEST)
DKIM-Filter: OpenDKIM Filter v2.10.3 mx.upb.ro 632DEB562416
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=upb.ro;
 s=96342B8A-77E4-11E5-BA93-D93D0963A2DF; t=1586198495;
 bh=te1shb6mSslt/7AEqlSN29VJudnMbcuOW4ugmBpQ9Y8=;
 h=From:To:Date:Message-Id:MIME-Version;
 b=UI40d6+9jcA+lnr+xqyK1N45gFuA8VI8pS8u2rnntoea8cOnOEcIfxdQSxTSEyJbK
 97WdpoLm6mHW9Nn5brWGxexvPHQKUMWyGtidhOBey3opVElNOkoOmJQje1srwBZpIh
 rJiwMAdnke1ev4stz/eFRGv0X72uDF0el3YvtK7Y=
X-Virus-Scanned: amavisd-new at upb.ro
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id M8x76hT7ga04; Mon,  6 Apr 2020 21:41:35 +0300 (EEST)
Received: from localhost.localdomain (unknown [86.127.159.73])
 by mx.upb.ro (Postfix) with ESMTPSA id 21F28B5623DC;
 Mon,  6 Apr 2020 21:41:35 +0300 (EEST)
From: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
To: minios-devel@lists.xen.org
Date: Mon,  6 Apr 2020 21:39:59 +0300
Message-Id: <20200406184001.16149-2-vlad_andrei.badoiu@upb.ro>
X-Mailer: git-send-email 2.20.1
In-Reply-To: <20200406184001.16149-1-vlad_andrei.badoiu@upb.ro>
References: <20200406184001.16149-1-vlad_andrei.badoiu@upb.ro>
MIME-Version: 1.0
Subject: [Minios-devel] [UNIKRAFT/LIBONNX PATCH 1/3] Introduce library
 skeleton
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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, Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
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>

V2UgdXNlIHRoZSBCU0QtMy1DbGF1c2UgbGljZW5zZSBmb3IgdGhpcyBsaWJyYXJ5IGdsdWUgY29k
ZS4KClNpZ25lZC1vZmYtYnk6IFZsYWQtQW5kcmVpIEJhZG9pdSA8dmxhZF9hbmRyZWkuYmFkb2l1
QHVwYi5ybz4KLS0tCiAuZ2l0aWdub3JlICAgICAgfCAyNyArKysrKysrKysrKysrKysrKysrKysr
KysrKysKIENPRElOR19TVFlMRS5tZCB8ICA0ICsrKysKIENPTlRSSUJVVElORy5tZCB8ICA0ICsr
KysKIENPUFlJTkcubWQgICAgICB8IDM5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKwogQ29uZmlnLnVrICAgICAgIHwgMTIgKysrKysrKysrKysrCiBNQUlOVEFJTkVSUy5t
ZCAgfCAxMSArKysrKysrKysrKwogUkVBRE1FLm1kICAgICAgIHwgMjQgKysrKysrKysrKysrKysr
KysrKysrKysrCiA3IGZpbGVzIGNoYW5nZWQsIDEyMSBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9k
ZSAxMDA2NDQgLmdpdGlnbm9yZQogY3JlYXRlIG1vZGUgMTAwNjQ0IENPRElOR19TVFlMRS5tZAog
Y3JlYXRlIG1vZGUgMTAwNjQ0IENPTlRSSUJVVElORy5tZAogY3JlYXRlIG1vZGUgMTAwNjQ0IENP
UFlJTkcubWQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBDb25maWcudWsKIGNyZWF0ZSBtb2RlIDEwMDY0
NCBNQUlOVEFJTkVSUy5tZAogY3JlYXRlIG1vZGUgMTAwNjQ0IFJFQURNRS5tZAoKZGlmZiAtLWdp
dCBhLy5naXRpZ25vcmUgYi8uZ2l0aWdub3JlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjc1ZDJmZDMKLS0tIC9kZXYvbnVsbAorKysgYi8uZ2l0aWdub3JlCkBAIC0wLDAgKzEs
MjcgQEAKKyouZGVwZW5kCisqLm8KKyouYQorKi5kCisqLnNvCisqLm9yaWcKKyoucmVqCisqLmJh
aworKi5zd3AKKyp+CissKgorXCMqXCMKKy5cIyoKK1wjXypcIworLlwjXyoKKyEuZ2l0aWdub3Jl
CisuKgorCisjIGdudSBnbG9iYWwgZmlsZXMKK0dQQVRICitHUlRBR1MKK0dTWU1TCitHVEFHUwor
CisjIGNzY29wZSBmaWxlcworY3Njb3BlLioKK25jc2NvcGUuKgpkaWZmIC0tZ2l0IGEvQ09ESU5H
X1NUWUxFLm1kIGIvQ09ESU5HX1NUWUxFLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjU3MzAwNDEKLS0tIC9kZXYvbnVsbAorKysgYi9DT0RJTkdfU1RZTEUubWQKQEAgLTAs
MCArMSw0IEBACitDb2RpbmcgU3R5bGUKKz09PT09PT09PT09PQorCitQbGVhc2UgcmVmZXIgdG8g
dGhlIGBDT0RJTkdfU1RZTEUubWRgIGZpbGUgaW4gdGhlIG1haW4gVW5pa3JhZnQgcmVwb3NpdG9y
eS4KZGlmZiAtLWdpdCBhL0NPTlRSSUJVVElORy5tZCBiL0NPTlRSSUJVVElORy5tZApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZjU1ZWNhCi0tLSAvZGV2L251bGwKKysrIGIv
Q09OVFJJQlVUSU5HLm1kCkBAIC0wLDAgKzEsNCBAQAorQ29udHJpYnV0aW5nIHRvIFVuaWtyYWZ0
Cis9PT09PT09PT09PT09PT09PT09PT09PQorCitQbGVhc2UgcmVmZXIgdG8gdGhlIGBDT05UUklC
VVRJTkcubWRgIGZpbGUgaW4gdGhlIG1haW4gVW5pa3JhZnQgcmVwb3NpdG9yeS4KZGlmZiAtLWdp
dCBhL0NPUFlJTkcubWQgYi9DT1BZSU5HLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmNlYzgwZjAKLS0tIC9kZXYvbnVsbAorKysgYi9DT1BZSU5HLm1kCkBAIC0wLDAgKzEs
MzkgQEAKK0xpY2Vuc2UKKz09PT09PT0KKworVW5pa3JhZnQgb25ueCB3cmFwcGVycworLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoaXMgcmVwb3NpdG9yeSBjb250YWlucyB3cmFwcGVyIGNv
ZGUgdG8gYnVpbGQgb25ueCB3aXRoIFVuaWtyYWZ0LgorRWFjaCBDIGNvZGUgZmlsZSBpbiB0aGlz
IHJlcG9zaXRvcnkgc2hvdWxkIGRlY2xhcmUgd2hvIGlzIHRoZQorY29weXJpZ2h0IG93bmVyIGFu
ZCB1bmRlciB3aGljaCB0ZXJtcyBhbmQgY29uZGl0aW9ucyB0aGUgY29kZSBpcworbGljZW5zZWQu
IElmIHN1Y2ggYSBsaWNlbmNlIG5vdGUgaXMgbWlzc2luZywgdGhlIGZvbGxvd2luZyBjb3B5cmln
aHQKK25vdGljZSB3aWxsIGFwcGx5OgorCisJQ29weXJpZ2h0IChjKSAyMDIwLCBVbml2ZXJzaXR5
IFBvbGl0ZWhuaWNhIG9mIEJ1Y2hhcmVzdC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKworCVJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorCW1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworCWFyZSBtZXQ6CisKKwkxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorCSAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKwkyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorCSAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKwkgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorCTMuIE5laXRoZXIgdGhl
IG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMKKwkgICBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorCSAgIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisKKwlUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKKwlBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisJSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UKKwlBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFCisJTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorCUNP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisJU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisJSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKwlDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorCUFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCisJUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisK
ZGlmZiAtLWdpdCBhL0NvbmZpZy51ayBiL0NvbmZpZy51awpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi4zNWRmNWZjCi0tLSAvZGV2L251bGwKKysrIGIvQ29uZmlnLnVrCkBAIC0w
LDAgKzEsMTIgQEAKK21lbnVjb25maWcgTElCT05OWAorCWJvb2wgIm9ubnggLSBtYWNoaW5lIGxl
YXJuaW5nIGludGVyb3BlcmFiaWxpdHkiCisJc2VsZWN0IExJQkNYWAorCXNlbGVjdCBMSUJQWVRI
T04zCisJc2VsZWN0IExJQkxXSVAKKwlzZWxlY3QgTElCUFRIUkVBRF9FTUJFRERFRAorCXNlbGVj
dCBMSUJQT1NJWF9TWVNJTkZPCisJc2VsZWN0IExJQk5FV0xJQkMKKwlzZWxlY3QgTElCUFJPVE9C
VUYKKwlzZWxlY3QgTElCUFlCSU5EMTEKKwlkZWZhdWx0IG4KKwpkaWZmIC0tZ2l0IGEvTUFJTlRB
SU5FUlMubWQgYi9NQUlOVEFJTkVSUy5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi5mNDNkNzk2Ci0tLSAvZGV2L251bGwKKysrIGIvTUFJTlRBSU5FUlMubWQKQEAgLTAsMCAr
MSwxMSBAQAorTWFpbnRhaW5lcnMgTGlzdAorPT09PT09PT09PT09PT09PQorCitGb3Igbm90ZXMg
b24gaG93IHRvIHJlYWQgdGhpcyBpbmZvcm1hdGlvbiwgcGxlYXNlIHJlZmVyIHRvIGBNQUlOVEFJ
TkVSUy5tZGAgaW4KK3RoZSBtYWluIFVuaWtyYWZ0IHJlcG9zaXRvcnkuCisKKwlMSUJVVi1VTklL
UkFGVAorCU06CUZlbGlwZSBIdWljaSA8ZmVsaXBlLmh1aWNpQG5lY2xhYi5ldT4KKwlNOglWbGFk
LUFuZHJlaSBCYWRvaXUgPHZsYWRfYW5kcmVpLmJhZG9pdUB1cGIucm8+CisJTDoJbWluaW9zLWRl
dmVsQGxpc3RzLnhlbi5vcmcKKwlGOiAqCmRpZmYgLS1naXQgYS9SRUFETUUubWQgYi9SRUFETUUu
bWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2VlNjhhYwotLS0gL2Rldi9u
dWxsCisrKyBiL1JFQURNRS5tZApAQCAtMCwwICsxLDI0IEBACitvbm54IGZvciBVbmlrcmFmdAor
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhpcyBpcyB0aGUgcG9ydCBvZiBvbm54
IGFzIGEgVW5pa3JhZnQgZXh0ZXJuYWwgbGlicmFyeS4gSXQKK2RlcGVuZHMgb24gdGhlIGZvbGxv
d2luZyBsaWJyYXJpZXMgdGhhdCBuZWVkIHRvIGJlIGFkZGVkIHRvIGBNYWtlZmlsZWAKK2luIHRo
aXMgb3JkZXI6CisKKyogYHB0aHJlYWRzYCwgZS5nLiBgcHRocmVhZC1lbWJlZGRlZGAKKyogYGxp
YmNgLCBlLmcuIGBuZXdsaWJgCisqIGBsd2lwJworKiBgcHl0aG9uYAorKiBgcHliaW5kMTFgCisq
IGBwcm90b2J1ZmAKKworIyBCdWlsZGluZworVGhpcyBsaWJyYXJ5IHVzZXMgcHJvdG9idWYgdG8g
Z2VuZXJhdGUgc29tZSBvZiB0aGUgc291cmNlIGZpbGVzLiBUaGUKK3ZlcnNpb24gb2YgcHJvdG9i
dWYgb24gdGhlIGhvc3QgbWFjaGluZSBtdXN0IGJlIHRoZSBzYW1lIHdpdGggdGhlIG9uZQorY29t
cGlsZSBvbiBVbmlrcmFmdC4gVGhlIGVhc2llcyB3YXkgdG8gdXNlIHRoZSBiaW5hcmllcyBmcm9t
IGdpdGh1YjoKK2UuZy4gaHR0cHM6Ly9naXRodWIuY29tL3Byb3RvY29sYnVmZmVycy9wcm90b2J1
Zi9yZWxlYXNlcy9kb3dubG9hZC92My4xMC4wL3Byb3RvYy0zLjEwLjAtbGludXgtYWFyY2hfNjQu
emlwCithbmQgYWRkIHRoZSBiaW5hcnkgdG8gdGhlIHBhdGgsIGUuZy4gYFBBVEg9JFBBVEg6fi9w
YXRoL3RvL3Byb3RvYy0zLjEwLjAtbGludXgteDg2XzY0L2Jpbi9gCisKKworUGxlYXNlIHJlZmVy
IHRvIHRoZSBgUkVBRE1FLm1kYCBhcyB3ZWxsIGFzIHRoZSBkb2N1bWVudGF0aW9uIGluIHRoZSBg
ZG9jL2AKK3N1YmRpcmVjdG9yeSBvZiB0aGUgbWFpbiB1bmlrcmFmdCByZXBvc2l0b3J5LgotLSAK
Mi4yMC4xCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
TWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5v
cmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1k
ZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Apr 06 19:24:16 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 06 Apr 2020 19:24: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 1jLXLy-0002Yh-Qx; Mon, 06 Apr 2020 19:24:14 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=XziZ=5W=upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1jLXLx-0002Yc-So
 for minios-devel@lists.xen.org; Mon, 06 Apr 2020 19:24:13 +0000
X-Inumbo-ID: 31f9b5ba-783c-11ea-b4f4-bc764e2007e4
Received: from mx.upb.ro (unknown [141.85.13.200])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 31f9b5ba-783c-11ea-b4f4-bc764e2007e4;
 Mon, 06 Apr 2020 19:24:12 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id 96622B562344;
 Mon,  6 Apr 2020 22:24:11 +0300 (EEST)
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10032)
 with ESMTP id D_i0lQimZfNH; Mon,  6 Apr 2020 22:24:09 +0300 (EEST)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id BE76BB5621ED;
 Mon,  6 Apr 2020 22:24:09 +0300 (EEST)
DKIM-Filter: OpenDKIM Filter v2.10.3 mx.upb.ro BE76BB5621ED
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=upb.ro;
 s=96342B8A-77E4-11E5-BA93-D93D0963A2DF; t=1586201049;
 bh=qAA1299o3kZDOLeGVGMhrW0Z9G6juegEymYpC1syGpk=;
 h=From:To:Date:Message-Id:MIME-Version;
 b=D37I7Eymd6MnxmORmWxmKvEgQDiFdLHZwp4TqFVksNmRHCgpGRbvQguNcgD6HUGPT
 Ffr/wgzz62Ypq0fMejH+0cGHXX98xzYD+VWc+Vo4HptPDg37L3rF+U8bpAjFVwqL3U
 Vn4HB25facYUTGIUkK00SPwxDl3/3wazjP0dJRYI=
X-Virus-Scanned: amavisd-new at upb.ro
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id J8AxM14-jCEX; Mon,  6 Apr 2020 22:24:09 +0300 (EEST)
Received: from localhost.localdomain (unknown [86.127.159.73])
 by mx.upb.ro (Postfix) with ESMTPSA id 7CF7CB561DCF;
 Mon,  6 Apr 2020 22:24:09 +0300 (EEST)
From: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
To: minios-devel@lists.xen.org
Date: Mon,  6 Apr 2020 22:24:04 +0300
Message-Id: <20200406192406.30700-1-vlad_andrei.badoiu@upb.ro>
X-Mailer: git-send-email 2.20.1
MIME-Version: 1.0
Subject: [Minios-devel] [UNIKRAFT/INTEL-INTRINSICS PATCH 0/2] Add fixes need
 by sleef
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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, Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
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>

VGhpcyBzZXJpZXMgaW50cm9kdWNlcyBvbmUgbmV3IGhlYWRlciBhbmQgZml4ZXMKb25lIGRlZmlu
aXRpb24gaW4gdGhlIGludGVsLWludHJpbnNpY3MgbGlicmFyeS4KClZsYWQtQW5kcmVpIEJhZG9p
dSAoMik6CiAgQWRkIHg4NmludHJpbi5oCiAgRml4IF9tbTI1Nl9leHRyYWN0X2VwaTY0IGRlZmlu
aXRpb24gb24gR0NDCgogaW5jbHVkZS9hdnhpbnRyaW4uaCB8IDkgKysrKysrKysrCiBpbmNsdWRl
L3g4NmludHJpbi5oIHwgOSArKysrKysrKysKIDIgZmlsZXMgY2hhbmdlZCwgMTggaW5zZXJ0aW9u
cygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUveDg2aW50cmluLmgKCi0tIAoyLjIwLjEK
CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3Mt
ZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRw
czovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Mon Apr 06 19:24:19 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 06 Apr 2020 19:24: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 1jLXM3-0002ZB-Sp; Mon, 06 Apr 2020 19:24:19 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=XziZ=5W=upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1jLXM2-0002Z5-Sm
 for minios-devel@lists.xen.org; Mon, 06 Apr 2020 19:24:18 +0000
X-Inumbo-ID: 31fcb076-783c-11ea-83d8-bc764e2007e4
Received: from mx.upb.ro (unknown [141.85.13.220])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 31fcb076-783c-11ea-83d8-bc764e2007e4;
 Mon, 06 Apr 2020 19:24:12 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id C87A5B561FA4;
 Mon,  6 Apr 2020 22:24:11 +0300 (EEST)
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10032)
 with ESMTP id SWzhI2CmyqPK; Mon,  6 Apr 2020 22:24:10 +0300 (EEST)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id 00AAFB562349;
 Mon,  6 Apr 2020 22:24:09 +0300 (EEST)
DKIM-Filter: OpenDKIM Filter v2.10.3 mx.upb.ro 00AAFB562349
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=upb.ro;
 s=96342B8A-77E4-11E5-BA93-D93D0963A2DF; t=1586201050;
 bh=FT0U1TcIIAh12dg66oXhFTbORP34qcj6F0iUQpYYAg4=;
 h=From:To:Date:Message-Id:MIME-Version;
 b=OlgGVyCXeGht1ziMNj+NIp0Ma093mqMjzevrF+m9CU7sEjuUshdFpaMwStqq8feVz
 M0ZFmVqZE9D+oMMI9s3HRGijgagp3AypbxL4RwP/0g0h/QBop3rO2hPNrTt4OuIZH+
 5p7r8Sy8dxFKPRUIf0s4SkFLgYv2Piy46vekCmYg=
X-Virus-Scanned: amavisd-new at upb.ro
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id Al-xdrRgTsRW; Mon,  6 Apr 2020 22:24:09 +0300 (EEST)
Received: from localhost.localdomain (unknown [86.127.159.73])
 by mx.upb.ro (Postfix) with ESMTPSA id BD3F8B561FC3;
 Mon,  6 Apr 2020 22:24:09 +0300 (EEST)
From: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
To: minios-devel@lists.xen.org
Date: Mon,  6 Apr 2020 22:24:05 +0300
Message-Id: <20200406192406.30700-2-vlad_andrei.badoiu@upb.ro>
X-Mailer: git-send-email 2.20.1
In-Reply-To: <20200406192406.30700-1-vlad_andrei.badoiu@upb.ro>
References: <20200406192406.30700-1-vlad_andrei.badoiu@upb.ro>
MIME-Version: 1.0
Subject: [Minios-devel] [UNIKRAFT/INTEL-INTRINSICS PATCH 1/2] Add x86intrin.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: felipe.huici@neclab.eu, Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
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>

VGhpcyB4ODZpbnRyaW4uaCBkb2VzIG5vdCBpbmNsdWRlIGFsbCB0aGUKZXhwZWN0ZWQgaGVhZGVy
cyBzaW5jZSB3ZSBkb24ndCBoYXZlIHRoZW0geWV0LgoKU2lnbmVkLW9mZi1ieTogVmxhZC1BbmRy
ZWkgQmFkb2l1IDx2bGFkX2FuZHJlaS5iYWRvaXVAdXBiLnJvPgotLS0KIGluY2x1ZGUveDg2aW50
cmluLmggfCA5ICsrKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKQogY3Jl
YXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUveDg2aW50cmluLmgKCmRpZmYgLS1naXQgYS9pbmNsdWRl
L3g4NmludHJpbi5oIGIvaW5jbHVkZS94ODZpbnRyaW4uaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi4zYmJlNDE0Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS94ODZpbnRy
aW4uaApAQCAtMCwwICsxLDkgQEAKKyNpZm5kZWYgX1g4NklOVFJJTl9IX0lOQ0xVREVECisjZGVm
aW5lIF9YODZJTlRSSU5fSF9JTkNMVURFRAorCisvKiBGb3IgaW5jbHVkaW5nIEFWWCBpbnN0cnVj
dGlvbnMgKi8KKyNpbmNsdWRlIDxpbW1pbnRyaW4uaD4KKworI2luY2x1ZGUgPHBvcGNudGludHJp
bi5oPgorCisjZW5kaWYgLyogX1g4NklOVFJJTl9IX0lOQ0xVREVEICovCi0tIAoyLjIwLjEKCgpf
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2
ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczov
L2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Mon Apr 06 19:24:25 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 06 Apr 2020 19:24: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 1jLXM8-0002a3-Uk; Mon, 06 Apr 2020 19:24:24 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=XziZ=5W=upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1jLXM7-0002Zs-SO
 for minios-devel@lists.xen.org; Mon, 06 Apr 2020 19:24:23 +0000
X-Inumbo-ID: 32352c30-783c-11ea-83d8-bc764e2007e4
Received: from mx.upb.ro (unknown [141.85.13.200])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 32352c30-783c-11ea-83d8-bc764e2007e4;
 Mon, 06 Apr 2020 19:24:13 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id 2FC3EB561FC3;
 Mon,  6 Apr 2020 22:24:12 +0300 (EEST)
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10032)
 with ESMTP id pTKlzYaCPIcs; Mon,  6 Apr 2020 22:24:10 +0300 (EEST)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id 3B5CFB562427;
 Mon,  6 Apr 2020 22:24:10 +0300 (EEST)
DKIM-Filter: OpenDKIM Filter v2.10.3 mx.upb.ro 3B5CFB562427
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=upb.ro;
 s=96342B8A-77E4-11E5-BA93-D93D0963A2DF; t=1586201050;
 bh=0OXugl1RMk6av5bLqmjQaWUhCbRVtMw8xVc0ShDlfqU=;
 h=From:To:Date:Message-Id:MIME-Version;
 b=avgmmywjUMYrlDGipt72d/DfDZBXYktmw0T2sHn1YzoDZEhkTr7zV/gtHoDA8CF7M
 REw4yKUGv6FPiHxcZPv1KxMPJPJ5sGdKhNSV7yRvNGBuJOyaZkUWTgR+krzKstZnnL
 6jnCz1SDG+kzsc65okZqxyb1NdaF5MOIlr4ftFVc=
X-Virus-Scanned: amavisd-new at upb.ro
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id RVELaXIb5BhF; Mon,  6 Apr 2020 22:24:10 +0300 (EEST)
Received: from localhost.localdomain (unknown [86.127.159.73])
 by mx.upb.ro (Postfix) with ESMTPSA id F3C4DB562344;
 Mon,  6 Apr 2020 22:24:09 +0300 (EEST)
From: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
To: minios-devel@lists.xen.org
Date: Mon,  6 Apr 2020 22:24:06 +0300
Message-Id: <20200406192406.30700-3-vlad_andrei.badoiu@upb.ro>
X-Mailer: git-send-email 2.20.1
In-Reply-To: <20200406192406.30700-1-vlad_andrei.badoiu@upb.ro>
References: <20200406192406.30700-1-vlad_andrei.badoiu@upb.ro>
MIME-Version: 1.0
Subject: [Minios-devel] [UNIKRAFT/INTEL-INTRINSICS PATCH 2/2] Fix
 _mm256_extract_epi64 definition on GCC
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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, Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
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>

U2lnbmVkLW9mZi1ieTogVmxhZC1BbmRyZWkgQmFkb2l1IDx2bGFkX2FuZHJlaS5iYWRvaXVAdXBi
LnJvPgotLS0KIGluY2x1ZGUvYXZ4aW50cmluLmggfCA5ICsrKysrKysrKwogMSBmaWxlIGNoYW5n
ZWQsIDkgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXZ4aW50cmluLmggYi9p
bmNsdWRlL2F2eGludHJpbi5oCmluZGV4IDZiOTU0MWQuLjlhYjZkZTcgMTAwNjQ0Ci0tLSBhL2lu
Y2x1ZGUvYXZ4aW50cmluLmgKKysrIGIvaW5jbHVkZS9hdnhpbnRyaW4uaApAQCAtMjAzNSw4ICsy
MDM1LDE3IEBAIF9tbTI1Nl9ibGVuZHZfcHMoX19tMjU2IF9fYSwgX19tMjU2IF9fYiwgX19tMjU2
IF9fYykKIC8vLyAgICBlbGVtZW50IGlzIGV4dHJhY3RlZCBhbmQgcmV0dXJuZWQuCiAvLy8gXHJl
dHVybnMgQSA2NC1iaXQgaW50ZWdlciBjb250YWluaW5nIHRoZSBleHRyYWN0ZWQgNjQgYml0cyBv
ZiBleHRlbmRlZAogLy8vICAgIHBhY2tlZCBkYXRhLgorI2lmZGVmIF9fY2xhbmdfXwogI2RlZmlu
ZSBfbW0yNTZfZXh0cmFjdF9lcGk2NChYLCBOKSBcCiAgIChsb25nIGxvbmcpX19idWlsdGluX2lh
MzJfdmVjX2V4dF92NGRpKChfX3Y0ZGkpKF9fbTI1NmkpKFgpLCAoaW50KShOKSkKKyNlbHNlCisj
ZGVmaW5lIF9tbTI1Nl9leHRyYWN0X2VwaTY0KFgsIE4pCQkJCQlcCisJICAoX19leHRlbnNpb25f
XwkJCQkJCQlcCisJICAgICAgKHsJCQkJCQkJCQlcCisJICAgICAgICAgICAgIF9fbTEyOGkgX19Z
ID0gX21tMjU2X2V4dHJhY3RmMTI4X3NpMjU2ICgoWCksIChOKSA+PiAxKTsJCVwKKwkJICAgICAg
ICAgICBfbW1fZXh0cmFjdF9lcGk2NCAoX19ZLCAoTikgJSAyKTsJCQkJCVwKKwkJCSAgICAgICB9
KSkKKyNlbmRpZgogI2VuZGlmCiAKIC8vLyBUYWtlcyBhIFs4IHggaTMyXSB2ZWN0b3IgYW5kIHJl
cGxhY2VzIHRoZSB2ZWN0b3IgZWxlbWVudCB2YWx1ZQotLSAKMi4yMC4xCgoKX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcg
bGlzdApNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5w
cm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Mon Apr 06 20:34:01 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 06 Apr 2020 20:34: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 1jLYRT-00088C-Ai; Mon, 06 Apr 2020 20:33:59 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=XziZ=5W=upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1jLYRS-000887-4A
 for minios-devel@lists.xen.org; Mon, 06 Apr 2020 20:33:58 +0000
X-Inumbo-ID: efc555c8-7845-11ea-b4f4-bc764e2007e4
Received: from mx.upb.ro (unknown [141.85.13.220])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id efc555c8-7845-11ea-b4f4-bc764e2007e4;
 Mon, 06 Apr 2020 20:33:56 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id 94BD9B562446;
 Mon,  6 Apr 2020 23:33:55 +0300 (EEST)
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10032)
 with ESMTP id 5W926pLsH6Y9; Mon,  6 Apr 2020 23:33:53 +0300 (EEST)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id BE1C5B562416;
 Mon,  6 Apr 2020 23:33:53 +0300 (EEST)
DKIM-Filter: OpenDKIM Filter v2.10.3 mx.upb.ro BE1C5B562416
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=upb.ro;
 s=96342B8A-77E4-11E5-BA93-D93D0963A2DF; t=1586205233;
 bh=7No8ixFjYiCbGt9G6M1nHcC2tenzpvLnVwg4bVx8qmA=;
 h=From:To:Date:Message-Id:MIME-Version;
 b=O3VgWWTDh8kaNOTEaXsaNUF7K29zcL/y9Wq4iSVlfGpmdnzwRlZpG3Ll43Arhb/lF
 p8YzEi8FgfNx308vHi9u10xndDu6k24GavrCg981Aa+mV/irWu+K2igLr0gGRBHf9H
 KEHvL//3HClnIEgme/8NkB0e6GyWZkMqFImKzDPk=
X-Virus-Scanned: amavisd-new at upb.ro
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id v3DuAKkUgVR8; Mon,  6 Apr 2020 23:33:53 +0300 (EEST)
Received: from localhost.localdomain (unknown [86.127.159.73])
 by mx.upb.ro (Postfix) with ESMTPSA id 758BCB561DC9;
 Mon,  6 Apr 2020 23:33:53 +0300 (EEST)
From: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
To: minios-devel@lists.xen.org
Date: Mon,  6 Apr 2020 23:33:37 +0300
Message-Id: <20200406203340.1092-1-vlad_andrei.badoiu@upb.ro>
X-Mailer: git-send-email 2.20.1
MIME-Version: 1.0
Subject: [Minios-devel] [UNIKRAFT/LIBSLEEF PATCH 0/3] Initial port of sleef
 on 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, Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
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>

VGhpcyBpcyBvdXIgaW5pdGlhbCBwb3J0IG9mIHNsZWVmIG9uIFVuaWtyYWZ0LgoKVmxhZC1BbmRy
ZWkgQmFkb2l1ICgzKToKICBJbnRyb2R1Y2UgbGlicmFyeSBza2VsZXRvbgogIEFkZCBNYWtlZmls
ZS51awogIEFkZCBoZWFkZXIgZmlsZXMKCi0tIAoyLjIwLjEKCgpfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1p
bmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qu
b3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Mon Apr 06 20:34:04 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 06 Apr 2020 20: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 1jLYRY-000893-Ct; Mon, 06 Apr 2020 20:34:04 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=XziZ=5W=upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1jLYRW-00088u-Vg
 for minios-devel@lists.xen.org; Mon, 06 Apr 2020 20:34:02 +0000
X-Inumbo-ID: f05e983c-7845-11ea-b4f4-bc764e2007e4
Received: from mx.upb.ro (unknown [141.85.13.200])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id f05e983c-7845-11ea-b4f4-bc764e2007e4;
 Mon, 06 Apr 2020 20:33:57 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id AC45EB5623F2;
 Mon,  6 Apr 2020 23:33:56 +0300 (EEST)
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10032)
 with ESMTP id hg7j9XPB7awL; Mon,  6 Apr 2020 23:33:54 +0300 (EEST)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id 0B2BBB56243E;
 Mon,  6 Apr 2020 23:33:53 +0300 (EEST)
DKIM-Filter: OpenDKIM Filter v2.10.3 mx.upb.ro 0B2BBB56243E
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=upb.ro;
 s=96342B8A-77E4-11E5-BA93-D93D0963A2DF; t=1586205234;
 bh=TeQk2CUvTUQFoyXakEmfIsIUYMD/tBONYwL7gpAJUuo=;
 h=From:To:Date:Message-Id:MIME-Version;
 b=FWEarMoOEuvAHcRgrTgcjMYuBMb9drscE0bAax+xDh+TpaE+m6Lqus3AS2aI2Cd2v
 7y28DX3yO4BwXPrE8c1pbA3E8GYnuahc7CU+7HGks5T+1Im5yxRdcLFRsBEcRhOoK2
 BhF2pz2TFv//eK578MHj0+cUZQgvmxijqElMXjUs=
X-Virus-Scanned: amavisd-new at upb.ro
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id iT0mfwljpXyJ; Mon,  6 Apr 2020 23:33:53 +0300 (EEST)
Received: from localhost.localdomain (unknown [86.127.159.73])
 by mx.upb.ro (Postfix) with ESMTPSA id B01C5B562415;
 Mon,  6 Apr 2020 23:33:53 +0300 (EEST)
From: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
To: minios-devel@lists.xen.org
Date: Mon,  6 Apr 2020 23:33:38 +0300
Message-Id: <20200406203340.1092-2-vlad_andrei.badoiu@upb.ro>
X-Mailer: git-send-email 2.20.1
In-Reply-To: <20200406203340.1092-1-vlad_andrei.badoiu@upb.ro>
References: <20200406203340.1092-1-vlad_andrei.badoiu@upb.ro>
MIME-Version: 1.0
Subject: [Minios-devel] [UNIKRAFT/LIBSLEEF PATCH 1/3] Introduce library
 skeleton
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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, Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
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>

V2UgdXNlIHRoZSBCU0QtMy1DbGF1c2UgbGljZW5zZSBmb3IgdGhpcyBsaWJyYXJ5IGdsdWUgY29k
ZS4KClNpZ25lZC1vZmYtYnk6IFZsYWQtQW5kcmVpIEJhZG9pdSA8dmxhZF9hbmRyZWkuYmFkb2l1
QHVwYi5ybz4KLS0tCiAuZ2l0aWdub3JlICAgICAgfCAyNyArKysrKysrKysrKysrKysrKysrKysr
KysrKysKIENPRElOR19TVFlMRS5tZCB8ICA0ICsrKysKIENPTlRSSUJVVElORy5tZCB8ICA0ICsr
KysKIENPUFlJTkcubWQgICAgICB8IDM5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKwogQ29uZmlnLnVrICAgICAgIHwgIDcgKysrKysrKwogTUFJTlRBSU5FUlMubWQgIHwg
MTEgKysrKysrKysrKysKIFJFQURNRS5tZCAgICAgICB8IDEyICsrKysrKysrKysrKwogNyBmaWxl
cyBjaGFuZ2VkLCAxMDQgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IC5naXRpZ25v
cmUKIGNyZWF0ZSBtb2RlIDEwMDY0NCBDT0RJTkdfU1RZTEUubWQKIGNyZWF0ZSBtb2RlIDEwMDY0
NCBDT05UUklCVVRJTkcubWQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBDT1BZSU5HLm1kCiBjcmVhdGUg
bW9kZSAxMDA2NDQgQ29uZmlnLnVrCiBjcmVhdGUgbW9kZSAxMDA2NDQgTUFJTlRBSU5FUlMubWQK
IGNyZWF0ZSBtb2RlIDEwMDY0NCBSRUFETUUubWQKCmRpZmYgLS1naXQgYS8uZ2l0aWdub3JlIGIv
LmdpdGlnbm9yZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NWQyZmQzCi0t
LSAvZGV2L251bGwKKysrIGIvLmdpdGlnbm9yZQpAQCAtMCwwICsxLDI3IEBACisqLmRlcGVuZAor
Ki5vCisqLmEKKyouZAorKi5zbworKi5vcmlnCisqLnJlagorKi5iYWsKKyouc3dwCisqfgorLCoK
K1wjKlwjCisuXCMqCitcI18qXCMKKy5cI18qCishLmdpdGlnbm9yZQorLioKKworIyBnbnUgZ2xv
YmFsIGZpbGVzCitHUEFUSAorR1JUQUdTCitHU1lNUworR1RBR1MKKworIyBjc2NvcGUgZmlsZXMK
K2NzY29wZS4qCituY3Njb3BlLioKZGlmZiAtLWdpdCBhL0NPRElOR19TVFlMRS5tZCBiL0NPRElO
R19TVFlMRS5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NzMwMDQxCi0t
LSAvZGV2L251bGwKKysrIGIvQ09ESU5HX1NUWUxFLm1kCkBAIC0wLDAgKzEsNCBAQAorQ29kaW5n
IFN0eWxlCis9PT09PT09PT09PT0KKworUGxlYXNlIHJlZmVyIHRvIHRoZSBgQ09ESU5HX1NUWUxF
Lm1kYCBmaWxlIGluIHRoZSBtYWluIFVuaWtyYWZ0IHJlcG9zaXRvcnkuCmRpZmYgLS1naXQgYS9D
T05UUklCVVRJTkcubWQgYi9DT05UUklCVVRJTkcubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uNWY1NWVjYQotLS0gL2Rldi9udWxsCisrKyBiL0NPTlRSSUJVVElORy5tZApA
QCAtMCwwICsxLDQgQEAKK0NvbnRyaWJ1dGluZyB0byBVbmlrcmFmdAorPT09PT09PT09PT09PT09
PT09PT09PT0KKworUGxlYXNlIHJlZmVyIHRvIHRoZSBgQ09OVFJJQlVUSU5HLm1kYCBmaWxlIGlu
IHRoZSBtYWluIFVuaWtyYWZ0IHJlcG9zaXRvcnkuCmRpZmYgLS1naXQgYS9DT1BZSU5HLm1kIGIv
Q09QWUlORy5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNzZjNDlkCi0t
LSAvZGV2L251bGwKKysrIGIvQ09QWUlORy5tZApAQCAtMCwwICsxLDM5IEBACitMaWNlbnNlCis9
PT09PT09CisKK1VuaWtyYWZ0IHNsZWVmIHdyYXBwZXJzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworVGhpcyByZXBvc2l0b3J5IGNvbnRhaW5zIHdyYXBwZXIgY29kZSB0byBidWlsZCBzbGVl
ZiB3aXRoIFVuaWtyYWZ0LgorRWFjaCBDIGNvZGUgZmlsZSBpbiB0aGlzIHJlcG9zaXRvcnkgc2hv
dWxkIGRlY2xhcmUgd2hvIGlzIHRoZQorY29weXJpZ2h0IG93bmVyIGFuZCB1bmRlciB3aGljaCB0
ZXJtcyBhbmQgY29uZGl0aW9ucyB0aGUgY29kZSBpcworbGljZW5zZWQuIElmIHN1Y2ggYSBsaWNl
bmNlIG5vdGUgaXMgbWlzc2luZywgdGhlIGZvbGxvd2luZyBjb3B5cmlnaHQKK25vdGljZSB3aWxs
IGFwcGx5OgorCisJQ29weXJpZ2h0IChjKSAyMDIwLCBVbml2ZXJzaXR5IFBvbGl0ZWhuaWNhIG9m
IEJ1Y2hhcmVzdC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKworCVJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorCW1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworCWFyZSBtZXQ6CisKKwkxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorCSAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKwkyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorCSAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKwkgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorCTMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNv
cHlyaWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMKKwkgICBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorCSAg
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisKKwlUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKKwlBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisJSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UKKwlBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBI
T0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFCisJTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorCUNPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisJU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisJSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKwlDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorCUFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFCisJUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKZGlmZiAtLWdpdCBhL0Nv
bmZpZy51ayBiL0NvbmZpZy51awpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4z
NzhhMTUwCi0tLSAvZGV2L251bGwKKysrIGIvQ29uZmlnLnVrCkBAIC0wLDAgKzEsNyBAQAorbWVu
dWNvbmZpZyBMSUJTTEVFRgorCWJvb2wgInNsZWVmIC0gU0lNRCBMaWIgZm9yIEV2YWx1YXRpbmcg
RWxlbWVudGFyeSBGdW5jdGlvbnMiCisJc2VsZWN0IExJQk5FV0xJQkMKKwlzZWxlY3QgTElCSU5U
RUxfSU5UUklOU0lDUworCXNlbGVjdCBTSU1EX0FWWAorCWRlZmF1bHQgbgorCmRpZmYgLS1naXQg
YS9NQUlOVEFJTkVSUy5tZCBiL01BSU5UQUlORVJTLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjRiYzcyNjUKLS0tIC9kZXYvbnVsbAorKysgYi9NQUlOVEFJTkVSUy5tZApA
QCAtMCwwICsxLDExIEBACitNYWludGFpbmVycyBMaXN0Cis9PT09PT09PT09PT09PT09CisKK0Zv
ciBub3RlcyBvbiBob3cgdG8gcmVhZCB0aGlzIGluZm9ybWF0aW9uLCBwbGVhc2UgcmVmZXIgdG8g
YE1BSU5UQUlORVJTLm1kYCBpbgordGhlIG1haW4gVW5pa3JhZnQgcmVwb3NpdG9yeS4KKworCUxJ
QlNMRUVGLVVOSUtSQUZUCisJTToJRmVsaXBlIEh1aWNpIDxmZWxpcGUuaHVpY2lAbmVjbGFiLmV1
PgorCU06CVZsYWQtQW5kcmVpIEJhZG9pdSA8dmxhZF9hbmRyZWkuYmFkb2l1QHVwYi5ybz4KKwlM
OgltaW5pb3MtZGV2ZWxAbGlzdHMueGVuLm9yZworCUY6ICoKZGlmZiAtLWdpdCBhL1JFQURNRS5t
ZCBiL1JFQURNRS5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMDNjNzZl
Ci0tLSAvZGV2L251bGwKKysrIGIvUkVBRE1FLm1kCkBAIC0wLDAgKzEsMTIgQEAKK3NsZWV2IGZv
ciBVbmlrcmFmdAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhpcyBpcyB0aGUg
cG9ydCBvZiBzbGVldiBhcyBhIFVuaWtyYWZ0IGV4dGVybmFsIGxpYnJhcnkuIEl0CitkZXBlbmRz
IG9uIHRoZSBmb2xsb3dpbmcgbGlicmFyaWVzIHRoYXQgbmVlZCB0byBiZSBhZGRlZCB0byBgTWFr
ZWZpbGVgCitpbiB0aGlzIG9yZGVyOgorCisqIGBsaWJjYCwgZS5nLiBgbmV3bGliYAorKiBpbnRl
bCBpbnRyaW5zaWNzLCBlLmcuIGBpbnRlbC1pbnRyaW5zaWNzYAorCitQbGVhc2UgcmVmZXIgdG8g
dGhlIGBSRUFETUUubWRgIGFzIHdlbGwgYXMgdGhlIGRvY3VtZW50YXRpb24gaW4gdGhlIGBkb2Mv
YAorc3ViZGlyZWN0b3J5IG9mIHRoZSBtYWluIHVuaWtyYWZ0IHJlcG9zaXRvcnkuCi0tIAoyLjIw
LjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5p
b3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpo
dHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Mon Apr 06 20:34:09 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 06 Apr 2020 20:34: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 1jLYRd-00089t-Fd; Mon, 06 Apr 2020 20:34:09 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=XziZ=5W=upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1jLYRc-00089g-0E
 for minios-devel@lists.xen.org; Mon, 06 Apr 2020 20:34:08 +0000
X-Inumbo-ID: f0cb1db8-7845-11ea-b58d-bc764e2007e4
Received: from mx.upb.ro (unknown [141.85.13.200])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id f0cb1db8-7845-11ea-b58d-bc764e2007e4;
 Mon, 06 Apr 2020 20:33:58 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id 631F3B562415;
 Mon,  6 Apr 2020 23:33:57 +0300 (EEST)
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10032)
 with ESMTP id fEv1gNHs16qG; Mon,  6 Apr 2020 23:33:54 +0300 (EEST)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id 37ECFB56255F;
 Mon,  6 Apr 2020 23:33:54 +0300 (EEST)
DKIM-Filter: OpenDKIM Filter v2.10.3 mx.upb.ro 37ECFB56255F
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=upb.ro;
 s=96342B8A-77E4-11E5-BA93-D93D0963A2DF; t=1586205234;
 bh=D5xvmtgajJXf48cgh49PF+/ngcOryOrN9Tp9HVQQCOo=;
 h=From:To:Date:Message-Id:MIME-Version;
 b=aNB2CVQkCzwY5rC0WnS+4Zn1k3QACabYhQZLzFOaf/dL8FJNvf+saqEbUCvEhRtz6
 PiUuoxLvqZ/wOU1P1T8REu/paNYb9kGiP2S92ID7MMaN1S06FkmvkHFj34mzrlILXl
 HuJSJOtPWJpHjm/8xK6f8aNFXAvx0AFw6ob82aU4=
X-Virus-Scanned: amavisd-new at upb.ro
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id DdoJsAMDNYmz; Mon,  6 Apr 2020 23:33:54 +0300 (EEST)
Received: from localhost.localdomain (unknown [86.127.159.73])
 by mx.upb.ro (Postfix) with ESMTPSA id EF66BB561DC9;
 Mon,  6 Apr 2020 23:33:53 +0300 (EEST)
From: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
To: minios-devel@lists.xen.org
Date: Mon,  6 Apr 2020 23:33:39 +0300
Message-Id: <20200406203340.1092-3-vlad_andrei.badoiu@upb.ro>
X-Mailer: git-send-email 2.20.1
In-Reply-To: <20200406203340.1092-1-vlad_andrei.badoiu@upb.ro>
References: <20200406203340.1092-1-vlad_andrei.badoiu@upb.ro>
MIME-Version: 1.0
Subject: [Minios-devel] [UNIKRAFT/LIBSLEEF PATCH 2/3] Add 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@neclab.eu, Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
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>

QWRkIHNsZWVmIHBvcnQgTWFrZWZpbGUudWsKClNpZ25lZC1vZmYtYnk6IFZsYWQtQW5kcmVpIEJh
ZG9pdSA8dmxhZF9hbmRyZWkuYmFkb2l1QHVwYi5ybz4KLS0tCiBNYWtlZmlsZS51ayB8IDEwMiAr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAxIGZp
bGUgY2hhbmdlZCwgMTAyIGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBNYWtlZmls
ZS51awoKZGlmZiAtLWdpdCBhL01ha2VmaWxlLnVrIGIvTWFrZWZpbGUudWsKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjE5OWJiYQotLS0gL2Rldi9udWxsCisrKyBiL01ha2Vm
aWxlLnVrCkBAIC0wLDAgKzEsMTAyIEBACisjICBsaWJvbm54IGNvbmZpZyBmaWxlCisjCisjICBB
dXRob3JzOiBWbGFkLUFuZHJlaSBCYWRvaXUgPHZsYWRfYW5kcmVpLmJhZG9pdUB1cGIucm8+Cisj
CisjICBDb3B5cmlnaHQgKGMpIDIwMjAsIFVuaXZlcnNpdHkgUG9saXRlaG5pY2Egb2YgQnVjaGFy
ZXN0LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjICBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyMgIGFyZSBtZXQ6CisjCisjICAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjICAzLiBOZWl0aGVyIHRoZSBu
YW1lIG9mIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjICAgICBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorIyAgICAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIgorIyAgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorIyAgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyMgIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUKKyMgIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyMgIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjICBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisjICBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyAgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyMgIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorIworIyAgVEhJUyBIRUFERVIgTUFZIE5PVCBCRSBFWFRS
QUNURUQgT1IgTU9ESUZJRUQgSU4gQU5ZIFdBWQorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwor
IyBMaWJyYXJ5IHJlZ2lzdHJhdGlvbgorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyQoZXZhbCAk
KGNhbGwgYWRkbGliX3MsbGlic2xlZWYsJChDT05GSUdfTElCU0xFRUYpKSkKKworIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMKKyMgU291cmNlcworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK0xJQlNM
RUVGX1ZFUlNJT049My40LjEKK0xJQlNMRUVGX1VSTD1odHRwczovL2dpdGh1Yi5jb20vc2hpYmF0
Y2gvc2xlZWYvYXJjaGl2ZS8zLjQuMS50YXIuZ3oKK0xJQlNMRUVGX1BBVENIRElSPSQoTElCU0xF
RUZfQkFTRSkvcGF0Y2hlcworJChldmFsICQoY2FsbCBmZXRjaCxsaWJzbGVlZiwkKExJQlNMRUVG
X1VSTCkpKQorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBIZWxwZXJzCisjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIworTElCU0xFRUZfU1VCRElSPXNsZWVmLTMuNC4xCitMSUJTTEVFRl9TUkM9
JChMSUJTTEVFRl9PUklHSU4pLyQoTElCU0xFRUZfU1VCRElSKQorCisjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIworIyBMaWJyYXJ5IGluY2x1ZGVzCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworQ0lO
Q0xVREVTLSQoQ09ORklHX0xJQlNMRUVGKSArPSAtSSQoTElCU0xFRUZfU1JDKS9pbmNsdWRlCitD
WFhJTkNMVURFUy0kKENPTkZJR19MSUJTTEVFRikgKz0gLUkkKExJQlNMRUVGX1NSQykvaW5jbHVk
ZQorCitDSU5DTFVERVMtJChDT05GSUdfTElCU0xFRUYpICs9IC1JJChMSUJTTEVFRl9TUkMpL3Ny
Yy9jb21tb24KK0NYWElOQ0xVREVTLSQoQ09ORklHX0xJQlNMRUVGKSArPSAtSSQoTElCU0xFRUZf
U1JDKS9zcmMvY29tbW9uCisKKworQ0lOQ0xVREVTLSQoQ09ORklHX0xJQlNMRUVGKSArPSAtSSQo
TElCU0xFRUZfU1JDKS9zcmMvbGlibQorQ1hYSU5DTFVERVMtJChDT05GSUdfTElCU0xFRUYpICs9
IC1JJChMSUJTTEVFRl9TUkMpL3NyYy9saWJtCisKK0NJTkNMVURFUy0kKENPTkZJR19MSUJTTEVF
RikgKz0gLUkkKExJQlNMRUVGX1NSQykvc3JjL2RmdAorQ1hYSU5DTFVERVMtJChDT05GSUdfTElC
U0xFRUYpICs9IC1JJChMSUJTTEVFRl9TUkMpL3NyYy9kZnQKKworQ0lOQ0xVREVTLSQoQ09ORklH
X0xJQlNMRUVGKSArPSAtSSQoTElCU0xFRUZfU1JDKS9zcmMvYXJjaAorQ1hYSU5DTFVERVMtJChD
T05GSUdfTElCU0xFRUYpICs9IC1JJChMSUJTTEVFRl9TUkMpL3NyYy9hcmNoCisKK0NJTkNMVURF
Uy0kKENPTkZJR19MSUJTTEVFRikgKz0gLUkkKExJQlNMRUVGX0JBU0UpL2luY2x1ZGUKK0NYWElO
Q0xVREVTLSQoQ09ORklHX0xJQlNMRUVGKSArPSAtSSQoTElCU0xFRUZfQkFTRSkvaW5jbHVkZQor
CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBHbG9iYWwgZmxhZ3MKKyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjCisjIFN1cHByZXNzIHNvbWUgd2FybmluZ3MgdG8gbWFrZSB0aGUgYnVpbGQgcHJv
Y2VzcyBsb29rIG5lYXRlcgorTElCU0xFRUZfU1VQUFJFU1NfRkxBR1MgKz0gLVduby11bnVzZWQt
cGFyYW1ldGVyIC1Xbm8tdW51c2VkLXZhcmlhYmxlIC1Xbm8tbm9ubnVsbAlcCistV25vLXVudXNl
ZC1idXQtc2V0LXZhcmlhYmxlIC1Xbm8tdW51c2VkLWxhYmVsIC1Xbm8tY2hhci1zdWJzY3JpcHRz
CQlcCistV25vLXVudXNlZC1mdW5jdGlvbiAtV25vLW1pc3NpbmctZmllbGQtaW5pdGlhbGl6ZXJz
IC1Xbm8tdW5pbml0aWFsaXplZAkJXAorLVduby1hcnJheS1ib3VuZHMgLVduby1tYXliZS11bmlu
aXRpYWxpemVkIC1Xbm8tcG9pbnRlci1zaWduIC1Xbm8tdW51c2VkLXZhbHVlCVwKKy1Xbm8tdW51
c2VkLW1hY3JvcyAtV25vLXBhcmVudGhlc2VzIC1Xbm8taW1wbGljaXQtZnVuY3Rpb24tZGVjbGFy
YXRpb24JCVwKKy1Xbm8tbWlzc2luZy1icmFjZXMgLVduby1lbmRpZi1sYWJlbHMgLVduby11bnVz
ZWQtYnV0LXNldC12YXJpYWJsZQkJXAorLVduby1pbXBsaWNpdC1mdW5jdGlvbi1kZWNsYXJhdGlv
biAtV25vLXR5cGUtbGltaXRzIC1Xbm8tc2lnbi1jb21wYXJlCQlcCistV25vLWF0dHJpYnV0ZXMg
LVduby1pZ25vcmVkLXF1YWxpZmllcnMJCQkJCQlcCisKK0xJQlNMRUVGX0NGTEFHUy15ICAgICs9
ICAkKExJQlNMRUVGX1NVUFBSRVNTX0ZMQUdTKSAtREVOQUJMRV9BVlggLURCQVNFVFlQRUlEPTEg
LWZmcC1jb250cmFjdD1vZmYKK0xJQlNMRUVGX0NYWEZMQUdTLXkgICAgKz0gICQoTElCU0xFRUZf
U1VQUFJFU1NfRkxBR1MpIC1ERU5BQkxFX0FWWCAtREJBU0VUWVBFSUQ9MSAtZmZwLWNvbnRyYWN0
PW9mZgorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBMaWJyYXJ5IHNvdXJjZXMKKyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjCitMSUJTTEVFRl9TUkNTLXkgKz0gJChMSUJTTEVFRl9TUkMpL3Ny
Yy9jb21tb24vYXJyYXltYXAuYworTElCU0xFRUZfU1JDUy15ICs9ICQoTElCU0xFRUZfU1JDKS9z
cmMvY29tbW9uL2NvbW1vbi5jCitMSUJTTEVFRl9TUkNTLXkgKz0gJChMSUJTTEVFRl9TUkMpL3Ny
Yy9saWJtL3NsZWVmc2ltZGRwLmMKK0xJQlNMRUVGX1NSQ1MteSArPSAkKExJQlNMRUVGX1NSQykv
c3JjL2xpYm0vc2xlZWZsZC5jCitMSUJTTEVFRl9TUkNTLXkgKz0gJChMSUJTTEVFRl9TUkMpL3Ny
Yy9saWJtL3NsZWVmc2ltZHNwLmMKK0xJQlNMRUVGX1NSQ1MteSArPSAkKExJQlNMRUVGX1NSQykv
c3JjL2xpYm0vcmVtcGl0YWIuYworTElCU0xFRUZfU1JDUy15ICs9ICQoTElCU0xFRUZfU1JDKS9z
cmMvcXVhZC9yZW1waXRhYnFwLmMKK0xJQlNMRUVGX1NSQ1MteSArPSAkKExJQlNMRUVGX1NSQykv
c3JjL3F1YWQvc2xlZWZzaW1kcXAuYworTElCU0xFRUZfU1JDUy15ICs9ICQoTElCU0xFRUZfU1JD
KS9zcmMvZGZ0L2RmdGNvbW1vbi5jCi0tIAoyLjIwLjEKCgpfX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlv
cy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3Jn
L21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Mon Apr 06 20:34:51 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 06 Apr 2020 20:34: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 1jLYSJ-0008Bs-KE; Mon, 06 Apr 2020 20:34:51 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=XziZ=5W=upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1jLYSH-0008Bn-K8
 for minios-devel@lists.xen.org; Mon, 06 Apr 2020 20:34:49 +0000
X-Inumbo-ID: 072c9050-7846-11ea-9e09-bc764e2007e4
Received: from mx.upb.ro (unknown [141.85.13.5])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 072c9050-7846-11ea-9e09-bc764e2007e4;
 Mon, 06 Apr 2020 20:34:35 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id E4633B562415;
 Mon,  6 Apr 2020 23:34:34 +0300 (EEST)
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10032)
 with ESMTP id oKBb0zNZ1ZoT; Mon,  6 Apr 2020 23:33:54 +0300 (EEST)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id AC4C4B562597;
 Mon,  6 Apr 2020 23:33:54 +0300 (EEST)
DKIM-Filter: OpenDKIM Filter v2.10.3 mx.upb.ro AC4C4B562597
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=upb.ro;
 s=96342B8A-77E4-11E5-BA93-D93D0963A2DF; t=1586205234;
 bh=D9gAaqH+6t2i1Mq0puHfLsnhXGTG1U67PixC95l78nU=;
 h=From:To:Date:Message-Id:MIME-Version;
 b=gJuznd9+a/SSj64IWnWrkv8S63bmvIpFIRTIPsV79eDIPp6XX+phAKKv2nElC9oPs
 DsRBDhkvqiPWy9Xg0PsETRfqpFnaMv09qemuABu4eU8k++MaEJouAi8G6fOCBhO0s4
 aW6zn7VQSPR8ov+SVewdimmNMoV42h0xS0femx0Q=
X-Virus-Scanned: amavisd-new at upb.ro
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id xOtWY7E5zInx; Mon,  6 Apr 2020 23:33:54 +0300 (EEST)
Received: from localhost.localdomain (unknown [86.127.159.73])
 by mx.upb.ro (Postfix) with ESMTPSA id 36E51B562446;
 Mon,  6 Apr 2020 23:33:54 +0300 (EEST)
From: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
To: minios-devel@lists.xen.org
Date: Mon,  6 Apr 2020 23:33:40 +0300
Message-Id: <20200406203340.1092-4-vlad_andrei.badoiu@upb.ro>
X-Mailer: git-send-email 2.20.1
In-Reply-To: <20200406203340.1092-1-vlad_andrei.badoiu@upb.ro>
References: <20200406203340.1092-1-vlad_andrei.badoiu@upb.ro>
MIME-Version: 1.0
Subject: [Minios-devel] [UNIKRAFT/LIBSLEEF PATCH 3/3] Add header 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: felipe.huici@neclab.eu, Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
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>

VGhlc2UgaGVhZGVycyBhcmUgZ2VuZXJhdGVkIGF0IGJ1aWxkIHRpbWUgYnkgc2xlZWYuCldlIGFk
ZCB0aGVtIGluIG91ciBnbHVlY29kZS4KClNpZ25lZC1vZmYtYnk6IFZsYWQtQW5kcmVpIEJhZG9p
dSA8dmxhZF9hbmRyZWkuYmFkb2l1QHVwYi5ybz4KLS0tCiBpbmNsdWRlL2Rpc3BhdGNoZHAuaCAg
ICB8ICA0NjcgKysrKysKIGluY2x1ZGUvZGlzcGF0Y2hwYXJhbS5oIHwgICAgMiArCiBpbmNsdWRl
L3NsZWVmLmggICAgICAgICB8IDQzODQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDQ4NTMgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUg
MTAwNjQ0IGluY2x1ZGUvZGlzcGF0Y2hkcC5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9k
aXNwYXRjaHBhcmFtLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL3NsZWVmLmgKCmRpZmYg
LS1naXQgYS9pbmNsdWRlL2Rpc3BhdGNoZHAuaCBiL2luY2x1ZGUvZGlzcGF0Y2hkcC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVjNGQxZDcKLS0tIC9kZXYvbnVsbAorKysg
Yi9pbmNsdWRlL2Rpc3BhdGNoZHAuaApAQCAtMCwwICsxLDQ2NyBAQAorI2RlZmluZSBNQVhCVVRX
SURUSCA0CisKKyNkZWZpbmUgSVNBTUFYIDUKKyNkZWZpbmUgQ09ORklHTUFYIDQKK3ZvaWQgZGZ0
MmZfMF92ZWNleHRkcChyZWFsICosIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50KTsKK3ZvaWQgZGZ0
MmJfMF92ZWNleHRkcChyZWFsICosIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50KTsKK3ZvaWQgdGJ1
dDJmXzBfdmVjZXh0ZHAocmVhbCAqLCB1aW50MzJfdCAqLCBjb25zdCByZWFsICosIGNvbnN0IGlu
dCwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQpOwordm9pZCB0YnV0MmJfMF92ZWNleHRkcChyZWFs
ICosIHVpbnQzMl90ICosIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50LCBjb25zdCByZWFsICosIGNv
bnN0IGludCk7Cit2b2lkIGJ1dDJmXzBfdmVjZXh0ZHAocmVhbCAqLCB1aW50MzJfdCAqLCBjb25z
dCBpbnQsIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50LCBjb25zdCByZWFsICosIGNvbnN0IGludCk7
Cit2b2lkIGJ1dDJiXzBfdmVjZXh0ZHAocmVhbCAqLCB1aW50MzJfdCAqLCBjb25zdCBpbnQsIGNv
bnN0IHJlYWwgKiwgY29uc3QgaW50LCBjb25zdCByZWFsICosIGNvbnN0IGludCk7Cit2b2lkIGRm
dDRmXzBfdmVjZXh0ZHAocmVhbCAqLCBjb25zdCByZWFsICosIGNvbnN0IGludCk7Cit2b2lkIGRm
dDRiXzBfdmVjZXh0ZHAocmVhbCAqLCBjb25zdCByZWFsICosIGNvbnN0IGludCk7Cit2b2lkIHRi
dXQ0Zl8wX3ZlY2V4dGRwKHJlYWwgKiwgdWludDMyX3QgKiwgY29uc3QgcmVhbCAqLCBjb25zdCBp
bnQsIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50KTsKK3ZvaWQgdGJ1dDRiXzBfdmVjZXh0ZHAocmVh
bCAqLCB1aW50MzJfdCAqLCBjb25zdCByZWFsICosIGNvbnN0IGludCwgY29uc3QgcmVhbCAqLCBj
b25zdCBpbnQpOwordm9pZCBidXQ0Zl8wX3ZlY2V4dGRwKHJlYWwgKiwgdWludDMyX3QgKiwgY29u
c3QgaW50LCBjb25zdCByZWFsICosIGNvbnN0IGludCwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQp
Owordm9pZCBidXQ0Yl8wX3ZlY2V4dGRwKHJlYWwgKiwgdWludDMyX3QgKiwgY29uc3QgaW50LCBj
b25zdCByZWFsICosIGNvbnN0IGludCwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQpOwordm9pZCBk
ZnQ4Zl8wX3ZlY2V4dGRwKHJlYWwgKiwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQpOwordm9pZCBk
ZnQ4Yl8wX3ZlY2V4dGRwKHJlYWwgKiwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQpOwordm9pZCB0
YnV0OGZfMF92ZWNleHRkcChyZWFsICosIHVpbnQzMl90ICosIGNvbnN0IHJlYWwgKiwgY29uc3Qg
aW50LCBjb25zdCByZWFsICosIGNvbnN0IGludCk7Cit2b2lkIHRidXQ4Yl8wX3ZlY2V4dGRwKHJl
YWwgKiwgdWludDMyX3QgKiwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQsIGNvbnN0IHJlYWwgKiwg
Y29uc3QgaW50KTsKK3ZvaWQgYnV0OGZfMF92ZWNleHRkcChyZWFsICosIHVpbnQzMl90ICosIGNv
bnN0IGludCwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQsIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50
KTsKK3ZvaWQgYnV0OGJfMF92ZWNleHRkcChyZWFsICosIHVpbnQzMl90ICosIGNvbnN0IGludCwg
Y29uc3QgcmVhbCAqLCBjb25zdCBpbnQsIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50KTsKK3ZvaWQg
ZGZ0MTZmXzBfdmVjZXh0ZHAocmVhbCAqLCBjb25zdCByZWFsICosIGNvbnN0IGludCk7Cit2b2lk
IGRmdDE2Yl8wX3ZlY2V4dGRwKHJlYWwgKiwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQpOwordm9p
ZCB0YnV0MTZmXzBfdmVjZXh0ZHAocmVhbCAqLCB1aW50MzJfdCAqLCBjb25zdCByZWFsICosIGNv
bnN0IGludCwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQpOwordm9pZCB0YnV0MTZiXzBfdmVjZXh0
ZHAocmVhbCAqLCB1aW50MzJfdCAqLCBjb25zdCByZWFsICosIGNvbnN0IGludCwgY29uc3QgcmVh
bCAqLCBjb25zdCBpbnQpOwordm9pZCBidXQxNmZfMF92ZWNleHRkcChyZWFsICosIHVpbnQzMl90
ICosIGNvbnN0IGludCwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQsIGNvbnN0IHJlYWwgKiwgY29u
c3QgaW50KTsKK3ZvaWQgYnV0MTZiXzBfdmVjZXh0ZHAocmVhbCAqLCB1aW50MzJfdCAqLCBjb25z
dCBpbnQsIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50LCBjb25zdCByZWFsICosIGNvbnN0IGludCk7
Cit2b2lkIGRmdDJmXzJfdmVjZXh0ZHAocmVhbCAqLCBjb25zdCByZWFsICosIGNvbnN0IGludCk7
Cit2b2lkIGRmdDJiXzJfdmVjZXh0ZHAocmVhbCAqLCBjb25zdCByZWFsICosIGNvbnN0IGludCk7
Cit2b2lkIHRidXQyZl8yX3ZlY2V4dGRwKHJlYWwgKiwgdWludDMyX3QgKiwgY29uc3QgcmVhbCAq
LCBjb25zdCBpbnQsIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50KTsKK3ZvaWQgdGJ1dDJiXzJfdmVj
ZXh0ZHAocmVhbCAqLCB1aW50MzJfdCAqLCBjb25zdCByZWFsICosIGNvbnN0IGludCwgY29uc3Qg
cmVhbCAqLCBjb25zdCBpbnQpOwordm9pZCBidXQyZl8yX3ZlY2V4dGRwKHJlYWwgKiwgdWludDMy
X3QgKiwgY29uc3QgaW50LCBjb25zdCByZWFsICosIGNvbnN0IGludCwgY29uc3QgcmVhbCAqLCBj
b25zdCBpbnQpOwordm9pZCBidXQyYl8yX3ZlY2V4dGRwKHJlYWwgKiwgdWludDMyX3QgKiwgY29u
c3QgaW50LCBjb25zdCByZWFsICosIGNvbnN0IGludCwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQp
Owordm9pZCBkZnQ0Zl8yX3ZlY2V4dGRwKHJlYWwgKiwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQp
Owordm9pZCBkZnQ0Yl8yX3ZlY2V4dGRwKHJlYWwgKiwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQp
Owordm9pZCB0YnV0NGZfMl92ZWNleHRkcChyZWFsICosIHVpbnQzMl90ICosIGNvbnN0IHJlYWwg
KiwgY29uc3QgaW50LCBjb25zdCByZWFsICosIGNvbnN0IGludCk7Cit2b2lkIHRidXQ0Yl8yX3Zl
Y2V4dGRwKHJlYWwgKiwgdWludDMyX3QgKiwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQsIGNvbnN0
IHJlYWwgKiwgY29uc3QgaW50KTsKK3ZvaWQgYnV0NGZfMl92ZWNleHRkcChyZWFsICosIHVpbnQz
Ml90ICosIGNvbnN0IGludCwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQsIGNvbnN0IHJlYWwgKiwg
Y29uc3QgaW50KTsKK3ZvaWQgYnV0NGJfMl92ZWNleHRkcChyZWFsICosIHVpbnQzMl90ICosIGNv
bnN0IGludCwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQsIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50
KTsKK3ZvaWQgZGZ0OGZfMl92ZWNleHRkcChyZWFsICosIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50
KTsKK3ZvaWQgZGZ0OGJfMl92ZWNleHRkcChyZWFsICosIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50
KTsKK3ZvaWQgdGJ1dDhmXzJfdmVjZXh0ZHAocmVhbCAqLCB1aW50MzJfdCAqLCBjb25zdCByZWFs
ICosIGNvbnN0IGludCwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQpOwordm9pZCB0YnV0OGJfMl92
ZWNleHRkcChyZWFsICosIHVpbnQzMl90ICosIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50LCBjb25z
dCByZWFsICosIGNvbnN0IGludCk7Cit2b2lkIGJ1dDhmXzJfdmVjZXh0ZHAocmVhbCAqLCB1aW50
MzJfdCAqLCBjb25zdCBpbnQsIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50LCBjb25zdCByZWFsICos
IGNvbnN0IGludCk7Cit2b2lkIGJ1dDhiXzJfdmVjZXh0ZHAocmVhbCAqLCB1aW50MzJfdCAqLCBj
b25zdCBpbnQsIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50LCBjb25zdCByZWFsICosIGNvbnN0IGlu
dCk7Cit2b2lkIGRmdDE2Zl8yX3ZlY2V4dGRwKHJlYWwgKiwgY29uc3QgcmVhbCAqLCBjb25zdCBp
bnQpOwordm9pZCBkZnQxNmJfMl92ZWNleHRkcChyZWFsICosIGNvbnN0IHJlYWwgKiwgY29uc3Qg
aW50KTsKK3ZvaWQgdGJ1dDE2Zl8yX3ZlY2V4dGRwKHJlYWwgKiwgdWludDMyX3QgKiwgY29uc3Qg
cmVhbCAqLCBjb25zdCBpbnQsIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50KTsKK3ZvaWQgdGJ1dDE2
Yl8yX3ZlY2V4dGRwKHJlYWwgKiwgdWludDMyX3QgKiwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQs
IGNvbnN0IHJlYWwgKiwgY29uc3QgaW50KTsKK3ZvaWQgYnV0MTZmXzJfdmVjZXh0ZHAocmVhbCAq
LCB1aW50MzJfdCAqLCBjb25zdCBpbnQsIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50LCBjb25zdCBy
ZWFsICosIGNvbnN0IGludCk7Cit2b2lkIGJ1dDE2Yl8yX3ZlY2V4dGRwKHJlYWwgKiwgdWludDMy
X3QgKiwgY29uc3QgaW50LCBjb25zdCByZWFsICosIGNvbnN0IGludCwgY29uc3QgcmVhbCAqLCBj
b25zdCBpbnQpOwordm9pZCByZWFsU3ViMF92ZWNleHRkcChyZWFsICosIGNvbnN0IHJlYWwgKiwg
Y29uc3QgaW50LCBjb25zdCByZWFsICosIGNvbnN0IHJlYWwgKik7Cit2b2lkIHJlYWxTdWIxX3Zl
Y2V4dGRwKHJlYWwgKiwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQsIGNvbnN0IHJlYWwgKiwgY29u
c3QgcmVhbCAqLCBjb25zdCBpbnQpOworaW50IGdldEludF92ZWNleHRkcChpbnQpOworY29uc3Qg
dm9pZCAqZ2V0UHRyX3ZlY2V4dGRwKGludCk7Cit2b2lkIGRmdDJmXzBfc3NlMmRwKHJlYWwgKiwg
Y29uc3QgcmVhbCAqLCBjb25zdCBpbnQpOwordm9pZCBkZnQyYl8wX3NzZTJkcChyZWFsICosIGNv
bnN0IHJlYWwgKiwgY29uc3QgaW50KTsKK3ZvaWQgdGJ1dDJmXzBfc3NlMmRwKHJlYWwgKiwgdWlu
dDMyX3QgKiwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQsIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50
KTsKK3ZvaWQgdGJ1dDJiXzBfc3NlMmRwKHJlYWwgKiwgdWludDMyX3QgKiwgY29uc3QgcmVhbCAq
LCBjb25zdCBpbnQsIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50KTsKK3ZvaWQgYnV0MmZfMF9zc2Uy
ZHAocmVhbCAqLCB1aW50MzJfdCAqLCBjb25zdCBpbnQsIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50
LCBjb25zdCByZWFsICosIGNvbnN0IGludCk7Cit2b2lkIGJ1dDJiXzBfc3NlMmRwKHJlYWwgKiwg
dWludDMyX3QgKiwgY29uc3QgaW50LCBjb25zdCByZWFsICosIGNvbnN0IGludCwgY29uc3QgcmVh
bCAqLCBjb25zdCBpbnQpOwordm9pZCBkZnQ0Zl8wX3NzZTJkcChyZWFsICosIGNvbnN0IHJlYWwg
KiwgY29uc3QgaW50KTsKK3ZvaWQgZGZ0NGJfMF9zc2UyZHAocmVhbCAqLCBjb25zdCByZWFsICos
IGNvbnN0IGludCk7Cit2b2lkIHRidXQ0Zl8wX3NzZTJkcChyZWFsICosIHVpbnQzMl90ICosIGNv
bnN0IHJlYWwgKiwgY29uc3QgaW50LCBjb25zdCByZWFsICosIGNvbnN0IGludCk7Cit2b2lkIHRi
dXQ0Yl8wX3NzZTJkcChyZWFsICosIHVpbnQzMl90ICosIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50
LCBjb25zdCByZWFsICosIGNvbnN0IGludCk7Cit2b2lkIGJ1dDRmXzBfc3NlMmRwKHJlYWwgKiwg
dWludDMyX3QgKiwgY29uc3QgaW50LCBjb25zdCByZWFsICosIGNvbnN0IGludCwgY29uc3QgcmVh
bCAqLCBjb25zdCBpbnQpOwordm9pZCBidXQ0Yl8wX3NzZTJkcChyZWFsICosIHVpbnQzMl90ICos
IGNvbnN0IGludCwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQsIGNvbnN0IHJlYWwgKiwgY29uc3Qg
aW50KTsKK3ZvaWQgZGZ0OGZfMF9zc2UyZHAocmVhbCAqLCBjb25zdCByZWFsICosIGNvbnN0IGlu
dCk7Cit2b2lkIGRmdDhiXzBfc3NlMmRwKHJlYWwgKiwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQp
Owordm9pZCB0YnV0OGZfMF9zc2UyZHAocmVhbCAqLCB1aW50MzJfdCAqLCBjb25zdCByZWFsICos
IGNvbnN0IGludCwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQpOwordm9pZCB0YnV0OGJfMF9zc2Uy
ZHAocmVhbCAqLCB1aW50MzJfdCAqLCBjb25zdCByZWFsICosIGNvbnN0IGludCwgY29uc3QgcmVh
bCAqLCBjb25zdCBpbnQpOwordm9pZCBidXQ4Zl8wX3NzZTJkcChyZWFsICosIHVpbnQzMl90ICos
IGNvbnN0IGludCwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQsIGNvbnN0IHJlYWwgKiwgY29uc3Qg
aW50KTsKK3ZvaWQgYnV0OGJfMF9zc2UyZHAocmVhbCAqLCB1aW50MzJfdCAqLCBjb25zdCBpbnQs
IGNvbnN0IHJlYWwgKiwgY29uc3QgaW50LCBjb25zdCByZWFsICosIGNvbnN0IGludCk7Cit2b2lk
IGRmdDE2Zl8wX3NzZTJkcChyZWFsICosIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50KTsKK3ZvaWQg
ZGZ0MTZiXzBfc3NlMmRwKHJlYWwgKiwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQpOwordm9pZCB0
YnV0MTZmXzBfc3NlMmRwKHJlYWwgKiwgdWludDMyX3QgKiwgY29uc3QgcmVhbCAqLCBjb25zdCBp
bnQsIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50KTsKK3ZvaWQgdGJ1dDE2Yl8wX3NzZTJkcChyZWFs
ICosIHVpbnQzMl90ICosIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50LCBjb25zdCByZWFsICosIGNv
bnN0IGludCk7Cit2b2lkIGJ1dDE2Zl8wX3NzZTJkcChyZWFsICosIHVpbnQzMl90ICosIGNvbnN0
IGludCwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQsIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50KTsK
K3ZvaWQgYnV0MTZiXzBfc3NlMmRwKHJlYWwgKiwgdWludDMyX3QgKiwgY29uc3QgaW50LCBjb25z
dCByZWFsICosIGNvbnN0IGludCwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQpOwordm9pZCBkZnQy
Zl8yX3NzZTJkcChyZWFsICosIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50KTsKK3ZvaWQgZGZ0MmJf
Ml9zc2UyZHAocmVhbCAqLCBjb25zdCByZWFsICosIGNvbnN0IGludCk7Cit2b2lkIHRidXQyZl8y
X3NzZTJkcChyZWFsICosIHVpbnQzMl90ICosIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50LCBjb25z
dCByZWFsICosIGNvbnN0IGludCk7Cit2b2lkIHRidXQyYl8yX3NzZTJkcChyZWFsICosIHVpbnQz
Ml90ICosIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50LCBjb25zdCByZWFsICosIGNvbnN0IGludCk7
Cit2b2lkIGJ1dDJmXzJfc3NlMmRwKHJlYWwgKiwgdWludDMyX3QgKiwgY29uc3QgaW50LCBjb25z
dCByZWFsICosIGNvbnN0IGludCwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQpOwordm9pZCBidXQy
Yl8yX3NzZTJkcChyZWFsICosIHVpbnQzMl90ICosIGNvbnN0IGludCwgY29uc3QgcmVhbCAqLCBj
b25zdCBpbnQsIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50KTsKK3ZvaWQgZGZ0NGZfMl9zc2UyZHAo
cmVhbCAqLCBjb25zdCByZWFsICosIGNvbnN0IGludCk7Cit2b2lkIGRmdDRiXzJfc3NlMmRwKHJl
YWwgKiwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQpOwordm9pZCB0YnV0NGZfMl9zc2UyZHAocmVh
bCAqLCB1aW50MzJfdCAqLCBjb25zdCByZWFsICosIGNvbnN0IGludCwgY29uc3QgcmVhbCAqLCBj
b25zdCBpbnQpOwordm9pZCB0YnV0NGJfMl9zc2UyZHAocmVhbCAqLCB1aW50MzJfdCAqLCBjb25z
dCByZWFsICosIGNvbnN0IGludCwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQpOwordm9pZCBidXQ0
Zl8yX3NzZTJkcChyZWFsICosIHVpbnQzMl90ICosIGNvbnN0IGludCwgY29uc3QgcmVhbCAqLCBj
b25zdCBpbnQsIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50KTsKK3ZvaWQgYnV0NGJfMl9zc2UyZHAo
cmVhbCAqLCB1aW50MzJfdCAqLCBjb25zdCBpbnQsIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50LCBj
b25zdCByZWFsICosIGNvbnN0IGludCk7Cit2b2lkIGRmdDhmXzJfc3NlMmRwKHJlYWwgKiwgY29u
c3QgcmVhbCAqLCBjb25zdCBpbnQpOwordm9pZCBkZnQ4Yl8yX3NzZTJkcChyZWFsICosIGNvbnN0
IHJlYWwgKiwgY29uc3QgaW50KTsKK3ZvaWQgdGJ1dDhmXzJfc3NlMmRwKHJlYWwgKiwgdWludDMy
X3QgKiwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQsIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50KTsK
K3ZvaWQgdGJ1dDhiXzJfc3NlMmRwKHJlYWwgKiwgdWludDMyX3QgKiwgY29uc3QgcmVhbCAqLCBj
b25zdCBpbnQsIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50KTsKK3ZvaWQgYnV0OGZfMl9zc2UyZHAo
cmVhbCAqLCB1aW50MzJfdCAqLCBjb25zdCBpbnQsIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50LCBj
b25zdCByZWFsICosIGNvbnN0IGludCk7Cit2b2lkIGJ1dDhiXzJfc3NlMmRwKHJlYWwgKiwgdWlu
dDMyX3QgKiwgY29uc3QgaW50LCBjb25zdCByZWFsICosIGNvbnN0IGludCwgY29uc3QgcmVhbCAq
LCBjb25zdCBpbnQpOwordm9pZCBkZnQxNmZfMl9zc2UyZHAocmVhbCAqLCBjb25zdCByZWFsICos
IGNvbnN0IGludCk7Cit2b2lkIGRmdDE2Yl8yX3NzZTJkcChyZWFsICosIGNvbnN0IHJlYWwgKiwg
Y29uc3QgaW50KTsKK3ZvaWQgdGJ1dDE2Zl8yX3NzZTJkcChyZWFsICosIHVpbnQzMl90ICosIGNv
bnN0IHJlYWwgKiwgY29uc3QgaW50LCBjb25zdCByZWFsICosIGNvbnN0IGludCk7Cit2b2lkIHRi
dXQxNmJfMl9zc2UyZHAocmVhbCAqLCB1aW50MzJfdCAqLCBjb25zdCByZWFsICosIGNvbnN0IGlu
dCwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQpOwordm9pZCBidXQxNmZfMl9zc2UyZHAocmVhbCAq
LCB1aW50MzJfdCAqLCBjb25zdCBpbnQsIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50LCBjb25zdCBy
ZWFsICosIGNvbnN0IGludCk7Cit2b2lkIGJ1dDE2Yl8yX3NzZTJkcChyZWFsICosIHVpbnQzMl90
ICosIGNvbnN0IGludCwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQsIGNvbnN0IHJlYWwgKiwgY29u
c3QgaW50KTsKK3ZvaWQgcmVhbFN1YjBfc3NlMmRwKHJlYWwgKiwgY29uc3QgcmVhbCAqLCBjb25z
dCBpbnQsIGNvbnN0IHJlYWwgKiwgY29uc3QgcmVhbCAqKTsKK3ZvaWQgcmVhbFN1YjFfc3NlMmRw
KHJlYWwgKiwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQsIGNvbnN0IHJlYWwgKiwgY29uc3QgcmVh
bCAqLCBjb25zdCBpbnQpOworaW50IGdldEludF9zc2UyZHAoaW50KTsKK2NvbnN0IHZvaWQgKmdl
dFB0cl9zc2UyZHAoaW50KTsKK3ZvaWQgZGZ0MmZfMF9hdnhkcChyZWFsICosIGNvbnN0IHJlYWwg
KiwgY29uc3QgaW50KTsKK3ZvaWQgZGZ0MmJfMF9hdnhkcChyZWFsICosIGNvbnN0IHJlYWwgKiwg
Y29uc3QgaW50KTsKK3ZvaWQgdGJ1dDJmXzBfYXZ4ZHAocmVhbCAqLCB1aW50MzJfdCAqLCBjb25z
dCByZWFsICosIGNvbnN0IGludCwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQpOwordm9pZCB0YnV0
MmJfMF9hdnhkcChyZWFsICosIHVpbnQzMl90ICosIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50LCBj
b25zdCByZWFsICosIGNvbnN0IGludCk7Cit2b2lkIGJ1dDJmXzBfYXZ4ZHAocmVhbCAqLCB1aW50
MzJfdCAqLCBjb25zdCBpbnQsIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50LCBjb25zdCByZWFsICos
IGNvbnN0IGludCk7Cit2b2lkIGJ1dDJiXzBfYXZ4ZHAocmVhbCAqLCB1aW50MzJfdCAqLCBjb25z
dCBpbnQsIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50LCBjb25zdCByZWFsICosIGNvbnN0IGludCk7
Cit2b2lkIGRmdDRmXzBfYXZ4ZHAocmVhbCAqLCBjb25zdCByZWFsICosIGNvbnN0IGludCk7Cit2
b2lkIGRmdDRiXzBfYXZ4ZHAocmVhbCAqLCBjb25zdCByZWFsICosIGNvbnN0IGludCk7Cit2b2lk
IHRidXQ0Zl8wX2F2eGRwKHJlYWwgKiwgdWludDMyX3QgKiwgY29uc3QgcmVhbCAqLCBjb25zdCBp
bnQsIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50KTsKK3ZvaWQgdGJ1dDRiXzBfYXZ4ZHAocmVhbCAq
LCB1aW50MzJfdCAqLCBjb25zdCByZWFsICosIGNvbnN0IGludCwgY29uc3QgcmVhbCAqLCBjb25z
dCBpbnQpOwordm9pZCBidXQ0Zl8wX2F2eGRwKHJlYWwgKiwgdWludDMyX3QgKiwgY29uc3QgaW50
LCBjb25zdCByZWFsICosIGNvbnN0IGludCwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQpOwordm9p
ZCBidXQ0Yl8wX2F2eGRwKHJlYWwgKiwgdWludDMyX3QgKiwgY29uc3QgaW50LCBjb25zdCByZWFs
ICosIGNvbnN0IGludCwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQpOwordm9pZCBkZnQ4Zl8wX2F2
eGRwKHJlYWwgKiwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQpOwordm9pZCBkZnQ4Yl8wX2F2eGRw
KHJlYWwgKiwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQpOwordm9pZCB0YnV0OGZfMF9hdnhkcChy
ZWFsICosIHVpbnQzMl90ICosIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50LCBjb25zdCByZWFsICos
IGNvbnN0IGludCk7Cit2b2lkIHRidXQ4Yl8wX2F2eGRwKHJlYWwgKiwgdWludDMyX3QgKiwgY29u
c3QgcmVhbCAqLCBjb25zdCBpbnQsIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50KTsKK3ZvaWQgYnV0
OGZfMF9hdnhkcChyZWFsICosIHVpbnQzMl90ICosIGNvbnN0IGludCwgY29uc3QgcmVhbCAqLCBj
b25zdCBpbnQsIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50KTsKK3ZvaWQgYnV0OGJfMF9hdnhkcChy
ZWFsICosIHVpbnQzMl90ICosIGNvbnN0IGludCwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQsIGNv
bnN0IHJlYWwgKiwgY29uc3QgaW50KTsKK3ZvaWQgZGZ0MTZmXzBfYXZ4ZHAocmVhbCAqLCBjb25z
dCByZWFsICosIGNvbnN0IGludCk7Cit2b2lkIGRmdDE2Yl8wX2F2eGRwKHJlYWwgKiwgY29uc3Qg
cmVhbCAqLCBjb25zdCBpbnQpOwordm9pZCB0YnV0MTZmXzBfYXZ4ZHAocmVhbCAqLCB1aW50MzJf
dCAqLCBjb25zdCByZWFsICosIGNvbnN0IGludCwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQpOwor
dm9pZCB0YnV0MTZiXzBfYXZ4ZHAocmVhbCAqLCB1aW50MzJfdCAqLCBjb25zdCByZWFsICosIGNv
bnN0IGludCwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQpOwordm9pZCBidXQxNmZfMF9hdnhkcChy
ZWFsICosIHVpbnQzMl90ICosIGNvbnN0IGludCwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQsIGNv
bnN0IHJlYWwgKiwgY29uc3QgaW50KTsKK3ZvaWQgYnV0MTZiXzBfYXZ4ZHAocmVhbCAqLCB1aW50
MzJfdCAqLCBjb25zdCBpbnQsIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50LCBjb25zdCByZWFsICos
IGNvbnN0IGludCk7Cit2b2lkIGRmdDJmXzJfYXZ4ZHAocmVhbCAqLCBjb25zdCByZWFsICosIGNv
bnN0IGludCk7Cit2b2lkIGRmdDJiXzJfYXZ4ZHAocmVhbCAqLCBjb25zdCByZWFsICosIGNvbnN0
IGludCk7Cit2b2lkIHRidXQyZl8yX2F2eGRwKHJlYWwgKiwgdWludDMyX3QgKiwgY29uc3QgcmVh
bCAqLCBjb25zdCBpbnQsIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50KTsKK3ZvaWQgdGJ1dDJiXzJf
YXZ4ZHAocmVhbCAqLCB1aW50MzJfdCAqLCBjb25zdCByZWFsICosIGNvbnN0IGludCwgY29uc3Qg
cmVhbCAqLCBjb25zdCBpbnQpOwordm9pZCBidXQyZl8yX2F2eGRwKHJlYWwgKiwgdWludDMyX3Qg
KiwgY29uc3QgaW50LCBjb25zdCByZWFsICosIGNvbnN0IGludCwgY29uc3QgcmVhbCAqLCBjb25z
dCBpbnQpOwordm9pZCBidXQyYl8yX2F2eGRwKHJlYWwgKiwgdWludDMyX3QgKiwgY29uc3QgaW50
LCBjb25zdCByZWFsICosIGNvbnN0IGludCwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQpOwordm9p
ZCBkZnQ0Zl8yX2F2eGRwKHJlYWwgKiwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQpOwordm9pZCBk
ZnQ0Yl8yX2F2eGRwKHJlYWwgKiwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQpOwordm9pZCB0YnV0
NGZfMl9hdnhkcChyZWFsICosIHVpbnQzMl90ICosIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50LCBj
b25zdCByZWFsICosIGNvbnN0IGludCk7Cit2b2lkIHRidXQ0Yl8yX2F2eGRwKHJlYWwgKiwgdWlu
dDMyX3QgKiwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQsIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50
KTsKK3ZvaWQgYnV0NGZfMl9hdnhkcChyZWFsICosIHVpbnQzMl90ICosIGNvbnN0IGludCwgY29u
c3QgcmVhbCAqLCBjb25zdCBpbnQsIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50KTsKK3ZvaWQgYnV0
NGJfMl9hdnhkcChyZWFsICosIHVpbnQzMl90ICosIGNvbnN0IGludCwgY29uc3QgcmVhbCAqLCBj
b25zdCBpbnQsIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50KTsKK3ZvaWQgZGZ0OGZfMl9hdnhkcChy
ZWFsICosIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50KTsKK3ZvaWQgZGZ0OGJfMl9hdnhkcChyZWFs
ICosIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50KTsKK3ZvaWQgdGJ1dDhmXzJfYXZ4ZHAocmVhbCAq
LCB1aW50MzJfdCAqLCBjb25zdCByZWFsICosIGNvbnN0IGludCwgY29uc3QgcmVhbCAqLCBjb25z
dCBpbnQpOwordm9pZCB0YnV0OGJfMl9hdnhkcChyZWFsICosIHVpbnQzMl90ICosIGNvbnN0IHJl
YWwgKiwgY29uc3QgaW50LCBjb25zdCByZWFsICosIGNvbnN0IGludCk7Cit2b2lkIGJ1dDhmXzJf
YXZ4ZHAocmVhbCAqLCB1aW50MzJfdCAqLCBjb25zdCBpbnQsIGNvbnN0IHJlYWwgKiwgY29uc3Qg
aW50LCBjb25zdCByZWFsICosIGNvbnN0IGludCk7Cit2b2lkIGJ1dDhiXzJfYXZ4ZHAocmVhbCAq
LCB1aW50MzJfdCAqLCBjb25zdCBpbnQsIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50LCBjb25zdCBy
ZWFsICosIGNvbnN0IGludCk7Cit2b2lkIGRmdDE2Zl8yX2F2eGRwKHJlYWwgKiwgY29uc3QgcmVh
bCAqLCBjb25zdCBpbnQpOwordm9pZCBkZnQxNmJfMl9hdnhkcChyZWFsICosIGNvbnN0IHJlYWwg
KiwgY29uc3QgaW50KTsKK3ZvaWQgdGJ1dDE2Zl8yX2F2eGRwKHJlYWwgKiwgdWludDMyX3QgKiwg
Y29uc3QgcmVhbCAqLCBjb25zdCBpbnQsIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50KTsKK3ZvaWQg
dGJ1dDE2Yl8yX2F2eGRwKHJlYWwgKiwgdWludDMyX3QgKiwgY29uc3QgcmVhbCAqLCBjb25zdCBp
bnQsIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50KTsKK3ZvaWQgYnV0MTZmXzJfYXZ4ZHAocmVhbCAq
LCB1aW50MzJfdCAqLCBjb25zdCBpbnQsIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50LCBjb25zdCBy
ZWFsICosIGNvbnN0IGludCk7Cit2b2lkIGJ1dDE2Yl8yX2F2eGRwKHJlYWwgKiwgdWludDMyX3Qg
KiwgY29uc3QgaW50LCBjb25zdCByZWFsICosIGNvbnN0IGludCwgY29uc3QgcmVhbCAqLCBjb25z
dCBpbnQpOwordm9pZCByZWFsU3ViMF9hdnhkcChyZWFsICosIGNvbnN0IHJlYWwgKiwgY29uc3Qg
aW50LCBjb25zdCByZWFsICosIGNvbnN0IHJlYWwgKik7Cit2b2lkIHJlYWxTdWIxX2F2eGRwKHJl
YWwgKiwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQsIGNvbnN0IHJlYWwgKiwgY29uc3QgcmVhbCAq
LCBjb25zdCBpbnQpOworaW50IGdldEludF9hdnhkcChpbnQpOworY29uc3Qgdm9pZCAqZ2V0UHRy
X2F2eGRwKGludCk7Cit2b2lkIGRmdDJmXzBfYXZ4MmRwKHJlYWwgKiwgY29uc3QgcmVhbCAqLCBj
b25zdCBpbnQpOwordm9pZCBkZnQyYl8wX2F2eDJkcChyZWFsICosIGNvbnN0IHJlYWwgKiwgY29u
c3QgaW50KTsKK3ZvaWQgdGJ1dDJmXzBfYXZ4MmRwKHJlYWwgKiwgdWludDMyX3QgKiwgY29uc3Qg
cmVhbCAqLCBjb25zdCBpbnQsIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50KTsKK3ZvaWQgdGJ1dDJi
XzBfYXZ4MmRwKHJlYWwgKiwgdWludDMyX3QgKiwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQsIGNv
bnN0IHJlYWwgKiwgY29uc3QgaW50KTsKK3ZvaWQgYnV0MmZfMF9hdngyZHAocmVhbCAqLCB1aW50
MzJfdCAqLCBjb25zdCBpbnQsIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50LCBjb25zdCByZWFsICos
IGNvbnN0IGludCk7Cit2b2lkIGJ1dDJiXzBfYXZ4MmRwKHJlYWwgKiwgdWludDMyX3QgKiwgY29u
c3QgaW50LCBjb25zdCByZWFsICosIGNvbnN0IGludCwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQp
Owordm9pZCBkZnQ0Zl8wX2F2eDJkcChyZWFsICosIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50KTsK
K3ZvaWQgZGZ0NGJfMF9hdngyZHAocmVhbCAqLCBjb25zdCByZWFsICosIGNvbnN0IGludCk7Cit2
b2lkIHRidXQ0Zl8wX2F2eDJkcChyZWFsICosIHVpbnQzMl90ICosIGNvbnN0IHJlYWwgKiwgY29u
c3QgaW50LCBjb25zdCByZWFsICosIGNvbnN0IGludCk7Cit2b2lkIHRidXQ0Yl8wX2F2eDJkcChy
ZWFsICosIHVpbnQzMl90ICosIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50LCBjb25zdCByZWFsICos
IGNvbnN0IGludCk7Cit2b2lkIGJ1dDRmXzBfYXZ4MmRwKHJlYWwgKiwgdWludDMyX3QgKiwgY29u
c3QgaW50LCBjb25zdCByZWFsICosIGNvbnN0IGludCwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQp
Owordm9pZCBidXQ0Yl8wX2F2eDJkcChyZWFsICosIHVpbnQzMl90ICosIGNvbnN0IGludCwgY29u
c3QgcmVhbCAqLCBjb25zdCBpbnQsIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50KTsKK3ZvaWQgZGZ0
OGZfMF9hdngyZHAocmVhbCAqLCBjb25zdCByZWFsICosIGNvbnN0IGludCk7Cit2b2lkIGRmdDhi
XzBfYXZ4MmRwKHJlYWwgKiwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQpOwordm9pZCB0YnV0OGZf
MF9hdngyZHAocmVhbCAqLCB1aW50MzJfdCAqLCBjb25zdCByZWFsICosIGNvbnN0IGludCwgY29u
c3QgcmVhbCAqLCBjb25zdCBpbnQpOwordm9pZCB0YnV0OGJfMF9hdngyZHAocmVhbCAqLCB1aW50
MzJfdCAqLCBjb25zdCByZWFsICosIGNvbnN0IGludCwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQp
Owordm9pZCBidXQ4Zl8wX2F2eDJkcChyZWFsICosIHVpbnQzMl90ICosIGNvbnN0IGludCwgY29u
c3QgcmVhbCAqLCBjb25zdCBpbnQsIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50KTsKK3ZvaWQgYnV0
OGJfMF9hdngyZHAocmVhbCAqLCB1aW50MzJfdCAqLCBjb25zdCBpbnQsIGNvbnN0IHJlYWwgKiwg
Y29uc3QgaW50LCBjb25zdCByZWFsICosIGNvbnN0IGludCk7Cit2b2lkIGRmdDE2Zl8wX2F2eDJk
cChyZWFsICosIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50KTsKK3ZvaWQgZGZ0MTZiXzBfYXZ4MmRw
KHJlYWwgKiwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQpOwordm9pZCB0YnV0MTZmXzBfYXZ4MmRw
KHJlYWwgKiwgdWludDMyX3QgKiwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQsIGNvbnN0IHJlYWwg
KiwgY29uc3QgaW50KTsKK3ZvaWQgdGJ1dDE2Yl8wX2F2eDJkcChyZWFsICosIHVpbnQzMl90ICos
IGNvbnN0IHJlYWwgKiwgY29uc3QgaW50LCBjb25zdCByZWFsICosIGNvbnN0IGludCk7Cit2b2lk
IGJ1dDE2Zl8wX2F2eDJkcChyZWFsICosIHVpbnQzMl90ICosIGNvbnN0IGludCwgY29uc3QgcmVh
bCAqLCBjb25zdCBpbnQsIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50KTsKK3ZvaWQgYnV0MTZiXzBf
YXZ4MmRwKHJlYWwgKiwgdWludDMyX3QgKiwgY29uc3QgaW50LCBjb25zdCByZWFsICosIGNvbnN0
IGludCwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQpOwordm9pZCBkZnQyZl8yX2F2eDJkcChyZWFs
ICosIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50KTsKK3ZvaWQgZGZ0MmJfMl9hdngyZHAocmVhbCAq
LCBjb25zdCByZWFsICosIGNvbnN0IGludCk7Cit2b2lkIHRidXQyZl8yX2F2eDJkcChyZWFsICos
IHVpbnQzMl90ICosIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50LCBjb25zdCByZWFsICosIGNvbnN0
IGludCk7Cit2b2lkIHRidXQyYl8yX2F2eDJkcChyZWFsICosIHVpbnQzMl90ICosIGNvbnN0IHJl
YWwgKiwgY29uc3QgaW50LCBjb25zdCByZWFsICosIGNvbnN0IGludCk7Cit2b2lkIGJ1dDJmXzJf
YXZ4MmRwKHJlYWwgKiwgdWludDMyX3QgKiwgY29uc3QgaW50LCBjb25zdCByZWFsICosIGNvbnN0
IGludCwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQpOwordm9pZCBidXQyYl8yX2F2eDJkcChyZWFs
ICosIHVpbnQzMl90ICosIGNvbnN0IGludCwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQsIGNvbnN0
IHJlYWwgKiwgY29uc3QgaW50KTsKK3ZvaWQgZGZ0NGZfMl9hdngyZHAocmVhbCAqLCBjb25zdCBy
ZWFsICosIGNvbnN0IGludCk7Cit2b2lkIGRmdDRiXzJfYXZ4MmRwKHJlYWwgKiwgY29uc3QgcmVh
bCAqLCBjb25zdCBpbnQpOwordm9pZCB0YnV0NGZfMl9hdngyZHAocmVhbCAqLCB1aW50MzJfdCAq
LCBjb25zdCByZWFsICosIGNvbnN0IGludCwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQpOwordm9p
ZCB0YnV0NGJfMl9hdngyZHAocmVhbCAqLCB1aW50MzJfdCAqLCBjb25zdCByZWFsICosIGNvbnN0
IGludCwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQpOwordm9pZCBidXQ0Zl8yX2F2eDJkcChyZWFs
ICosIHVpbnQzMl90ICosIGNvbnN0IGludCwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQsIGNvbnN0
IHJlYWwgKiwgY29uc3QgaW50KTsKK3ZvaWQgYnV0NGJfMl9hdngyZHAocmVhbCAqLCB1aW50MzJf
dCAqLCBjb25zdCBpbnQsIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50LCBjb25zdCByZWFsICosIGNv
bnN0IGludCk7Cit2b2lkIGRmdDhmXzJfYXZ4MmRwKHJlYWwgKiwgY29uc3QgcmVhbCAqLCBjb25z
dCBpbnQpOwordm9pZCBkZnQ4Yl8yX2F2eDJkcChyZWFsICosIGNvbnN0IHJlYWwgKiwgY29uc3Qg
aW50KTsKK3ZvaWQgdGJ1dDhmXzJfYXZ4MmRwKHJlYWwgKiwgdWludDMyX3QgKiwgY29uc3QgcmVh
bCAqLCBjb25zdCBpbnQsIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50KTsKK3ZvaWQgdGJ1dDhiXzJf
YXZ4MmRwKHJlYWwgKiwgdWludDMyX3QgKiwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQsIGNvbnN0
IHJlYWwgKiwgY29uc3QgaW50KTsKK3ZvaWQgYnV0OGZfMl9hdngyZHAocmVhbCAqLCB1aW50MzJf
dCAqLCBjb25zdCBpbnQsIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50LCBjb25zdCByZWFsICosIGNv
bnN0IGludCk7Cit2b2lkIGJ1dDhiXzJfYXZ4MmRwKHJlYWwgKiwgdWludDMyX3QgKiwgY29uc3Qg
aW50LCBjb25zdCByZWFsICosIGNvbnN0IGludCwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQpOwor
dm9pZCBkZnQxNmZfMl9hdngyZHAocmVhbCAqLCBjb25zdCByZWFsICosIGNvbnN0IGludCk7Cit2
b2lkIGRmdDE2Yl8yX2F2eDJkcChyZWFsICosIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50KTsKK3Zv
aWQgdGJ1dDE2Zl8yX2F2eDJkcChyZWFsICosIHVpbnQzMl90ICosIGNvbnN0IHJlYWwgKiwgY29u
c3QgaW50LCBjb25zdCByZWFsICosIGNvbnN0IGludCk7Cit2b2lkIHRidXQxNmJfMl9hdngyZHAo
cmVhbCAqLCB1aW50MzJfdCAqLCBjb25zdCByZWFsICosIGNvbnN0IGludCwgY29uc3QgcmVhbCAq
LCBjb25zdCBpbnQpOwordm9pZCBidXQxNmZfMl9hdngyZHAocmVhbCAqLCB1aW50MzJfdCAqLCBj
b25zdCBpbnQsIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50LCBjb25zdCByZWFsICosIGNvbnN0IGlu
dCk7Cit2b2lkIGJ1dDE2Yl8yX2F2eDJkcChyZWFsICosIHVpbnQzMl90ICosIGNvbnN0IGludCwg
Y29uc3QgcmVhbCAqLCBjb25zdCBpbnQsIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50KTsKK3ZvaWQg
cmVhbFN1YjBfYXZ4MmRwKHJlYWwgKiwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQsIGNvbnN0IHJl
YWwgKiwgY29uc3QgcmVhbCAqKTsKK3ZvaWQgcmVhbFN1YjFfYXZ4MmRwKHJlYWwgKiwgY29uc3Qg
cmVhbCAqLCBjb25zdCBpbnQsIGNvbnN0IHJlYWwgKiwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQp
OworaW50IGdldEludF9hdngyZHAoaW50KTsKK2NvbnN0IHZvaWQgKmdldFB0cl9hdngyZHAoaW50
KTsKK3ZvaWQgZGZ0MmZfMF9hdng1MTJmZHAocmVhbCAqLCBjb25zdCByZWFsICosIGNvbnN0IGlu
dCk7Cit2b2lkIGRmdDJiXzBfYXZ4NTEyZmRwKHJlYWwgKiwgY29uc3QgcmVhbCAqLCBjb25zdCBp
bnQpOwordm9pZCB0YnV0MmZfMF9hdng1MTJmZHAocmVhbCAqLCB1aW50MzJfdCAqLCBjb25zdCBy
ZWFsICosIGNvbnN0IGludCwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQpOwordm9pZCB0YnV0MmJf
MF9hdng1MTJmZHAocmVhbCAqLCB1aW50MzJfdCAqLCBjb25zdCByZWFsICosIGNvbnN0IGludCwg
Y29uc3QgcmVhbCAqLCBjb25zdCBpbnQpOwordm9pZCBidXQyZl8wX2F2eDUxMmZkcChyZWFsICos
IHVpbnQzMl90ICosIGNvbnN0IGludCwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQsIGNvbnN0IHJl
YWwgKiwgY29uc3QgaW50KTsKK3ZvaWQgYnV0MmJfMF9hdng1MTJmZHAocmVhbCAqLCB1aW50MzJf
dCAqLCBjb25zdCBpbnQsIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50LCBjb25zdCByZWFsICosIGNv
bnN0IGludCk7Cit2b2lkIGRmdDRmXzBfYXZ4NTEyZmRwKHJlYWwgKiwgY29uc3QgcmVhbCAqLCBj
b25zdCBpbnQpOwordm9pZCBkZnQ0Yl8wX2F2eDUxMmZkcChyZWFsICosIGNvbnN0IHJlYWwgKiwg
Y29uc3QgaW50KTsKK3ZvaWQgdGJ1dDRmXzBfYXZ4NTEyZmRwKHJlYWwgKiwgdWludDMyX3QgKiwg
Y29uc3QgcmVhbCAqLCBjb25zdCBpbnQsIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50KTsKK3ZvaWQg
dGJ1dDRiXzBfYXZ4NTEyZmRwKHJlYWwgKiwgdWludDMyX3QgKiwgY29uc3QgcmVhbCAqLCBjb25z
dCBpbnQsIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50KTsKK3ZvaWQgYnV0NGZfMF9hdng1MTJmZHAo
cmVhbCAqLCB1aW50MzJfdCAqLCBjb25zdCBpbnQsIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50LCBj
b25zdCByZWFsICosIGNvbnN0IGludCk7Cit2b2lkIGJ1dDRiXzBfYXZ4NTEyZmRwKHJlYWwgKiwg
dWludDMyX3QgKiwgY29uc3QgaW50LCBjb25zdCByZWFsICosIGNvbnN0IGludCwgY29uc3QgcmVh
bCAqLCBjb25zdCBpbnQpOwordm9pZCBkZnQ4Zl8wX2F2eDUxMmZkcChyZWFsICosIGNvbnN0IHJl
YWwgKiwgY29uc3QgaW50KTsKK3ZvaWQgZGZ0OGJfMF9hdng1MTJmZHAocmVhbCAqLCBjb25zdCBy
ZWFsICosIGNvbnN0IGludCk7Cit2b2lkIHRidXQ4Zl8wX2F2eDUxMmZkcChyZWFsICosIHVpbnQz
Ml90ICosIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50LCBjb25zdCByZWFsICosIGNvbnN0IGludCk7
Cit2b2lkIHRidXQ4Yl8wX2F2eDUxMmZkcChyZWFsICosIHVpbnQzMl90ICosIGNvbnN0IHJlYWwg
KiwgY29uc3QgaW50LCBjb25zdCByZWFsICosIGNvbnN0IGludCk7Cit2b2lkIGJ1dDhmXzBfYXZ4
NTEyZmRwKHJlYWwgKiwgdWludDMyX3QgKiwgY29uc3QgaW50LCBjb25zdCByZWFsICosIGNvbnN0
IGludCwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQpOwordm9pZCBidXQ4Yl8wX2F2eDUxMmZkcChy
ZWFsICosIHVpbnQzMl90ICosIGNvbnN0IGludCwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQsIGNv
bnN0IHJlYWwgKiwgY29uc3QgaW50KTsKK3ZvaWQgZGZ0MTZmXzBfYXZ4NTEyZmRwKHJlYWwgKiwg
Y29uc3QgcmVhbCAqLCBjb25zdCBpbnQpOwordm9pZCBkZnQxNmJfMF9hdng1MTJmZHAocmVhbCAq
LCBjb25zdCByZWFsICosIGNvbnN0IGludCk7Cit2b2lkIHRidXQxNmZfMF9hdng1MTJmZHAocmVh
bCAqLCB1aW50MzJfdCAqLCBjb25zdCByZWFsICosIGNvbnN0IGludCwgY29uc3QgcmVhbCAqLCBj
b25zdCBpbnQpOwordm9pZCB0YnV0MTZiXzBfYXZ4NTEyZmRwKHJlYWwgKiwgdWludDMyX3QgKiwg
Y29uc3QgcmVhbCAqLCBjb25zdCBpbnQsIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50KTsKK3ZvaWQg
YnV0MTZmXzBfYXZ4NTEyZmRwKHJlYWwgKiwgdWludDMyX3QgKiwgY29uc3QgaW50LCBjb25zdCBy
ZWFsICosIGNvbnN0IGludCwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQpOwordm9pZCBidXQxNmJf
MF9hdng1MTJmZHAocmVhbCAqLCB1aW50MzJfdCAqLCBjb25zdCBpbnQsIGNvbnN0IHJlYWwgKiwg
Y29uc3QgaW50LCBjb25zdCByZWFsICosIGNvbnN0IGludCk7Cit2b2lkIGRmdDJmXzJfYXZ4NTEy
ZmRwKHJlYWwgKiwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQpOwordm9pZCBkZnQyYl8yX2F2eDUx
MmZkcChyZWFsICosIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50KTsKK3ZvaWQgdGJ1dDJmXzJfYXZ4
NTEyZmRwKHJlYWwgKiwgdWludDMyX3QgKiwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQsIGNvbnN0
IHJlYWwgKiwgY29uc3QgaW50KTsKK3ZvaWQgdGJ1dDJiXzJfYXZ4NTEyZmRwKHJlYWwgKiwgdWlu
dDMyX3QgKiwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQsIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50
KTsKK3ZvaWQgYnV0MmZfMl9hdng1MTJmZHAocmVhbCAqLCB1aW50MzJfdCAqLCBjb25zdCBpbnQs
IGNvbnN0IHJlYWwgKiwgY29uc3QgaW50LCBjb25zdCByZWFsICosIGNvbnN0IGludCk7Cit2b2lk
IGJ1dDJiXzJfYXZ4NTEyZmRwKHJlYWwgKiwgdWludDMyX3QgKiwgY29uc3QgaW50LCBjb25zdCBy
ZWFsICosIGNvbnN0IGludCwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQpOwordm9pZCBkZnQ0Zl8y
X2F2eDUxMmZkcChyZWFsICosIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50KTsKK3ZvaWQgZGZ0NGJf
Ml9hdng1MTJmZHAocmVhbCAqLCBjb25zdCByZWFsICosIGNvbnN0IGludCk7Cit2b2lkIHRidXQ0
Zl8yX2F2eDUxMmZkcChyZWFsICosIHVpbnQzMl90ICosIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50
LCBjb25zdCByZWFsICosIGNvbnN0IGludCk7Cit2b2lkIHRidXQ0Yl8yX2F2eDUxMmZkcChyZWFs
ICosIHVpbnQzMl90ICosIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50LCBjb25zdCByZWFsICosIGNv
bnN0IGludCk7Cit2b2lkIGJ1dDRmXzJfYXZ4NTEyZmRwKHJlYWwgKiwgdWludDMyX3QgKiwgY29u
c3QgaW50LCBjb25zdCByZWFsICosIGNvbnN0IGludCwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQp
Owordm9pZCBidXQ0Yl8yX2F2eDUxMmZkcChyZWFsICosIHVpbnQzMl90ICosIGNvbnN0IGludCwg
Y29uc3QgcmVhbCAqLCBjb25zdCBpbnQsIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50KTsKK3ZvaWQg
ZGZ0OGZfMl9hdng1MTJmZHAocmVhbCAqLCBjb25zdCByZWFsICosIGNvbnN0IGludCk7Cit2b2lk
IGRmdDhiXzJfYXZ4NTEyZmRwKHJlYWwgKiwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQpOwordm9p
ZCB0YnV0OGZfMl9hdng1MTJmZHAocmVhbCAqLCB1aW50MzJfdCAqLCBjb25zdCByZWFsICosIGNv
bnN0IGludCwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQpOwordm9pZCB0YnV0OGJfMl9hdng1MTJm
ZHAocmVhbCAqLCB1aW50MzJfdCAqLCBjb25zdCByZWFsICosIGNvbnN0IGludCwgY29uc3QgcmVh
bCAqLCBjb25zdCBpbnQpOwordm9pZCBidXQ4Zl8yX2F2eDUxMmZkcChyZWFsICosIHVpbnQzMl90
ICosIGNvbnN0IGludCwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQsIGNvbnN0IHJlYWwgKiwgY29u
c3QgaW50KTsKK3ZvaWQgYnV0OGJfMl9hdng1MTJmZHAocmVhbCAqLCB1aW50MzJfdCAqLCBjb25z
dCBpbnQsIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50LCBjb25zdCByZWFsICosIGNvbnN0IGludCk7
Cit2b2lkIGRmdDE2Zl8yX2F2eDUxMmZkcChyZWFsICosIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50
KTsKK3ZvaWQgZGZ0MTZiXzJfYXZ4NTEyZmRwKHJlYWwgKiwgY29uc3QgcmVhbCAqLCBjb25zdCBp
bnQpOwordm9pZCB0YnV0MTZmXzJfYXZ4NTEyZmRwKHJlYWwgKiwgdWludDMyX3QgKiwgY29uc3Qg
cmVhbCAqLCBjb25zdCBpbnQsIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50KTsKK3ZvaWQgdGJ1dDE2
Yl8yX2F2eDUxMmZkcChyZWFsICosIHVpbnQzMl90ICosIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50
LCBjb25zdCByZWFsICosIGNvbnN0IGludCk7Cit2b2lkIGJ1dDE2Zl8yX2F2eDUxMmZkcChyZWFs
ICosIHVpbnQzMl90ICosIGNvbnN0IGludCwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQsIGNvbnN0
IHJlYWwgKiwgY29uc3QgaW50KTsKK3ZvaWQgYnV0MTZiXzJfYXZ4NTEyZmRwKHJlYWwgKiwgdWlu
dDMyX3QgKiwgY29uc3QgaW50LCBjb25zdCByZWFsICosIGNvbnN0IGludCwgY29uc3QgcmVhbCAq
LCBjb25zdCBpbnQpOwordm9pZCByZWFsU3ViMF9hdng1MTJmZHAocmVhbCAqLCBjb25zdCByZWFs
ICosIGNvbnN0IGludCwgY29uc3QgcmVhbCAqLCBjb25zdCByZWFsICopOwordm9pZCByZWFsU3Vi
MV9hdng1MTJmZHAocmVhbCAqLCBjb25zdCByZWFsICosIGNvbnN0IGludCwgY29uc3QgcmVhbCAq
LCBjb25zdCByZWFsICosIGNvbnN0IGludCk7CitpbnQgZ2V0SW50X2F2eDUxMmZkcChpbnQpOwor
Y29uc3Qgdm9pZCAqZ2V0UHRyX2F2eDUxMmZkcChpbnQpOworCit2b2lkICgqZGZ0Zl9kb3VibGVb
Q09ORklHTUFYXVtJU0FNQVhdW01BWEJVVFdJRFRIKzFdKShyZWFsICosIGNvbnN0IHJlYWwgKiwg
Y29uc3QgaW50KSA9IHsKKyAgeworICAgIHtOVUxMLCBkZnQyZl8wX3ZlY2V4dGRwLCBkZnQ0Zl8w
X3ZlY2V4dGRwLCBkZnQ4Zl8wX3ZlY2V4dGRwLCBkZnQxNmZfMF92ZWNleHRkcCwgfSwKKyAgICB7
TlVMTCwgZGZ0MmZfMF9zc2UyZHAsIGRmdDRmXzBfc3NlMmRwLCBkZnQ4Zl8wX3NzZTJkcCwgZGZ0
MTZmXzBfc3NlMmRwLCB9LAorICAgIHtOVUxMLCBkZnQyZl8wX2F2eGRwLCBkZnQ0Zl8wX2F2eGRw
LCBkZnQ4Zl8wX2F2eGRwLCBkZnQxNmZfMF9hdnhkcCwgfSwKKyAgICB7TlVMTCwgZGZ0MmZfMF9h
dngyZHAsIGRmdDRmXzBfYXZ4MmRwLCBkZnQ4Zl8wX2F2eDJkcCwgZGZ0MTZmXzBfYXZ4MmRwLCB9
LAorICAgIHtOVUxMLCBkZnQyZl8wX2F2eDUxMmZkcCwgZGZ0NGZfMF9hdng1MTJmZHAsIGRmdDhm
XzBfYXZ4NTEyZmRwLCBkZnQxNmZfMF9hdng1MTJmZHAsIH0sCit9LAorICB7CisgICAge05VTEws
IE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIH0sCisgICAge05VTEwsIE5VTEwsIE5VTEwsIE5VTEws
IE5VTEwsIH0sCisgICAge05VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIH0sCisgICAge05V
TEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIH0sCisgICAge05VTEwsIE5VTEwsIE5VTEwsIE5V
TEwsIE5VTEwsIH0sCit9LAorICB7CisgICAge05VTEwsIGRmdDJmXzJfdmVjZXh0ZHAsIGRmdDRm
XzJfdmVjZXh0ZHAsIGRmdDhmXzJfdmVjZXh0ZHAsIGRmdDE2Zl8yX3ZlY2V4dGRwLCB9LAorICAg
IHtOVUxMLCBkZnQyZl8yX3NzZTJkcCwgZGZ0NGZfMl9zc2UyZHAsIGRmdDhmXzJfc3NlMmRwLCBk
ZnQxNmZfMl9zc2UyZHAsIH0sCisgICAge05VTEwsIGRmdDJmXzJfYXZ4ZHAsIGRmdDRmXzJfYXZ4
ZHAsIGRmdDhmXzJfYXZ4ZHAsIGRmdDE2Zl8yX2F2eGRwLCB9LAorICAgIHtOVUxMLCBkZnQyZl8y
X2F2eDJkcCwgZGZ0NGZfMl9hdngyZHAsIGRmdDhmXzJfYXZ4MmRwLCBkZnQxNmZfMl9hdngyZHAs
IH0sCisgICAge05VTEwsIGRmdDJmXzJfYXZ4NTEyZmRwLCBkZnQ0Zl8yX2F2eDUxMmZkcCwgZGZ0
OGZfMl9hdng1MTJmZHAsIGRmdDE2Zl8yX2F2eDUxMmZkcCwgfSwKK30sCisgIHsKKyAgICB7TlVM
TCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgfSwKKyAgICB7TlVMTCwgTlVMTCwgTlVMTCwgTlVM
TCwgTlVMTCwgfSwKKyAgICB7TlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgfSwKKyAgICB7
TlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgfSwKKyAgICB7TlVMTCwgTlVMTCwgTlVMTCwg
TlVMTCwgTlVMTCwgfSwKK30sCit9OworCit2b2lkICgqZGZ0Yl9kb3VibGVbQ09ORklHTUFYXVtJ
U0FNQVhdW01BWEJVVFdJRFRIKzFdKShyZWFsICosIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50KSA9
IHsKKyAgeworICAgIHtOVUxMLCBkZnQyZl8wX3ZlY2V4dGRwLCBkZnQ0Yl8wX3ZlY2V4dGRwLCBk
ZnQ4Yl8wX3ZlY2V4dGRwLCBkZnQxNmJfMF92ZWNleHRkcCwgfSwKKyAgICB7TlVMTCwgZGZ0MmZf
MF9zc2UyZHAsIGRmdDRiXzBfc3NlMmRwLCBkZnQ4Yl8wX3NzZTJkcCwgZGZ0MTZiXzBfc3NlMmRw
LCB9LAorICAgIHtOVUxMLCBkZnQyZl8wX2F2eGRwLCBkZnQ0Yl8wX2F2eGRwLCBkZnQ4Yl8wX2F2
eGRwLCBkZnQxNmJfMF9hdnhkcCwgfSwKKyAgICB7TlVMTCwgZGZ0MmZfMF9hdngyZHAsIGRmdDRi
XzBfYXZ4MmRwLCBkZnQ4Yl8wX2F2eDJkcCwgZGZ0MTZiXzBfYXZ4MmRwLCB9LAorICAgIHtOVUxM
LCBkZnQyZl8wX2F2eDUxMmZkcCwgZGZ0NGJfMF9hdng1MTJmZHAsIGRmdDhiXzBfYXZ4NTEyZmRw
LCBkZnQxNmJfMF9hdng1MTJmZHAsIH0sCit9LAorICB7CisgICAge05VTEwsIE5VTEwsIE5VTEws
IE5VTEwsIE5VTEwsIH0sCisgICAge05VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIH0sCisg
ICAge05VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIH0sCisgICAge05VTEwsIE5VTEwsIE5V
TEwsIE5VTEwsIE5VTEwsIH0sCisgICAge05VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIH0s
Cit9LAorICB7CisgICAge05VTEwsIGRmdDJmXzJfdmVjZXh0ZHAsIGRmdDRiXzJfdmVjZXh0ZHAs
IGRmdDhiXzJfdmVjZXh0ZHAsIGRmdDE2Yl8yX3ZlY2V4dGRwLCB9LAorICAgIHtOVUxMLCBkZnQy
Zl8yX3NzZTJkcCwgZGZ0NGJfMl9zc2UyZHAsIGRmdDhiXzJfc3NlMmRwLCBkZnQxNmJfMl9zc2Uy
ZHAsIH0sCisgICAge05VTEwsIGRmdDJmXzJfYXZ4ZHAsIGRmdDRiXzJfYXZ4ZHAsIGRmdDhiXzJf
YXZ4ZHAsIGRmdDE2Yl8yX2F2eGRwLCB9LAorICAgIHtOVUxMLCBkZnQyZl8yX2F2eDJkcCwgZGZ0
NGJfMl9hdngyZHAsIGRmdDhiXzJfYXZ4MmRwLCBkZnQxNmJfMl9hdngyZHAsIH0sCisgICAge05V
TEwsIGRmdDJmXzJfYXZ4NTEyZmRwLCBkZnQ0Yl8yX2F2eDUxMmZkcCwgZGZ0OGJfMl9hdng1MTJm
ZHAsIGRmdDE2Yl8yX2F2eDUxMmZkcCwgfSwKK30sCisgIHsKKyAgICB7TlVMTCwgTlVMTCwgTlVM
TCwgTlVMTCwgTlVMTCwgfSwKKyAgICB7TlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgfSwK
KyAgICB7TlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgfSwKKyAgICB7TlVMTCwgTlVMTCwg
TlVMTCwgTlVMTCwgTlVMTCwgfSwKKyAgICB7TlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwg
fSwKK30sCit9OworCit2b2lkICgqdGJ1dGZfZG91YmxlW0NPTkZJR01BWF1bSVNBTUFYXVtNQVhC
VVRXSURUSCsxXSkocmVhbCAqLCB1aW50MzJfdCAqLCBjb25zdCByZWFsICosIGNvbnN0IGludCwg
Y29uc3QgcmVhbCAqLCBjb25zdCBpbnQpID0geworICB7CisgICAge05VTEwsIHRidXQyZl8wX3Zl
Y2V4dGRwLCB0YnV0NGZfMF92ZWNleHRkcCwgdGJ1dDhmXzBfdmVjZXh0ZHAsIHRidXQxNmZfMF92
ZWNleHRkcCwgfSwKKyAgICB7TlVMTCwgdGJ1dDJmXzBfc3NlMmRwLCB0YnV0NGZfMF9zc2UyZHAs
IHRidXQ4Zl8wX3NzZTJkcCwgdGJ1dDE2Zl8wX3NzZTJkcCwgfSwKKyAgICB7TlVMTCwgdGJ1dDJm
XzBfYXZ4ZHAsIHRidXQ0Zl8wX2F2eGRwLCB0YnV0OGZfMF9hdnhkcCwgdGJ1dDE2Zl8wX2F2eGRw
LCB9LAorICAgIHtOVUxMLCB0YnV0MmZfMF9hdngyZHAsIHRidXQ0Zl8wX2F2eDJkcCwgdGJ1dDhm
XzBfYXZ4MmRwLCB0YnV0MTZmXzBfYXZ4MmRwLCB9LAorICAgIHtOVUxMLCB0YnV0MmZfMF9hdng1
MTJmZHAsIHRidXQ0Zl8wX2F2eDUxMmZkcCwgdGJ1dDhmXzBfYXZ4NTEyZmRwLCB0YnV0MTZmXzBf
YXZ4NTEyZmRwLCB9LAorfSwKKyAgeworICAgIHtOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxM
LCB9LAorICAgIHtOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCB9LAorICAgIHtOVUxMLCBO
VUxMLCBOVUxMLCBOVUxMLCBOVUxMLCB9LAorICAgIHtOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBO
VUxMLCB9LAorICAgIHtOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCB9LAorfSwKKyAgewor
ICAgIHtOVUxMLCB0YnV0MmZfMl92ZWNleHRkcCwgdGJ1dDRmXzJfdmVjZXh0ZHAsIHRidXQ4Zl8y
X3ZlY2V4dGRwLCB0YnV0MTZmXzJfdmVjZXh0ZHAsIH0sCisgICAge05VTEwsIHRidXQyZl8yX3Nz
ZTJkcCwgdGJ1dDRmXzJfc3NlMmRwLCB0YnV0OGZfMl9zc2UyZHAsIHRidXQxNmZfMl9zc2UyZHAs
IH0sCisgICAge05VTEwsIHRidXQyZl8yX2F2eGRwLCB0YnV0NGZfMl9hdnhkcCwgdGJ1dDhmXzJf
YXZ4ZHAsIHRidXQxNmZfMl9hdnhkcCwgfSwKKyAgICB7TlVMTCwgdGJ1dDJmXzJfYXZ4MmRwLCB0
YnV0NGZfMl9hdngyZHAsIHRidXQ4Zl8yX2F2eDJkcCwgdGJ1dDE2Zl8yX2F2eDJkcCwgfSwKKyAg
ICB7TlVMTCwgdGJ1dDJmXzJfYXZ4NTEyZmRwLCB0YnV0NGZfMl9hdng1MTJmZHAsIHRidXQ4Zl8y
X2F2eDUxMmZkcCwgdGJ1dDE2Zl8yX2F2eDUxMmZkcCwgfSwKK30sCisgIHsKKyAgICB7TlVMTCwg
TlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgfSwKKyAgICB7TlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwg
TlVMTCwgfSwKKyAgICB7TlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgfSwKKyAgICB7TlVM
TCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgfSwKKyAgICB7TlVMTCwgTlVMTCwgTlVMTCwgTlVM
TCwgTlVMTCwgfSwKK30sCit9OworCit2b2lkICgqdGJ1dGJfZG91YmxlW0NPTkZJR01BWF1bSVNB
TUFYXVtNQVhCVVRXSURUSCsxXSkocmVhbCAqLCB1aW50MzJfdCAqLCBjb25zdCByZWFsICosIGNv
bnN0IGludCwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQpID0geworICB7CisgICAge05VTEwsIHRi
dXQyYl8wX3ZlY2V4dGRwLCB0YnV0NGJfMF92ZWNleHRkcCwgdGJ1dDhiXzBfdmVjZXh0ZHAsIHRi
dXQxNmJfMF92ZWNleHRkcCwgfSwKKyAgICB7TlVMTCwgdGJ1dDJiXzBfc3NlMmRwLCB0YnV0NGJf
MF9zc2UyZHAsIHRidXQ4Yl8wX3NzZTJkcCwgdGJ1dDE2Yl8wX3NzZTJkcCwgfSwKKyAgICB7TlVM
TCwgdGJ1dDJiXzBfYXZ4ZHAsIHRidXQ0Yl8wX2F2eGRwLCB0YnV0OGJfMF9hdnhkcCwgdGJ1dDE2
Yl8wX2F2eGRwLCB9LAorICAgIHtOVUxMLCB0YnV0MmJfMF9hdngyZHAsIHRidXQ0Yl8wX2F2eDJk
cCwgdGJ1dDhiXzBfYXZ4MmRwLCB0YnV0MTZiXzBfYXZ4MmRwLCB9LAorICAgIHtOVUxMLCB0YnV0
MmJfMF9hdng1MTJmZHAsIHRidXQ0Yl8wX2F2eDUxMmZkcCwgdGJ1dDhiXzBfYXZ4NTEyZmRwLCB0
YnV0MTZiXzBfYXZ4NTEyZmRwLCB9LAorfSwKKyAgeworICAgIHtOVUxMLCBOVUxMLCBOVUxMLCBO
VUxMLCBOVUxMLCB9LAorICAgIHtOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCB9LAorICAg
IHtOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCB9LAorICAgIHtOVUxMLCBOVUxMLCBOVUxM
LCBOVUxMLCBOVUxMLCB9LAorICAgIHtOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCB9LAor
fSwKKyAgeworICAgIHtOVUxMLCB0YnV0MmJfMl92ZWNleHRkcCwgdGJ1dDRiXzJfdmVjZXh0ZHAs
IHRidXQ4Yl8yX3ZlY2V4dGRwLCB0YnV0MTZiXzJfdmVjZXh0ZHAsIH0sCisgICAge05VTEwsIHRi
dXQyYl8yX3NzZTJkcCwgdGJ1dDRiXzJfc3NlMmRwLCB0YnV0OGJfMl9zc2UyZHAsIHRidXQxNmJf
Ml9zc2UyZHAsIH0sCisgICAge05VTEwsIHRidXQyYl8yX2F2eGRwLCB0YnV0NGJfMl9hdnhkcCwg
dGJ1dDhiXzJfYXZ4ZHAsIHRidXQxNmJfMl9hdnhkcCwgfSwKKyAgICB7TlVMTCwgdGJ1dDJiXzJf
YXZ4MmRwLCB0YnV0NGJfMl9hdngyZHAsIHRidXQ4Yl8yX2F2eDJkcCwgdGJ1dDE2Yl8yX2F2eDJk
cCwgfSwKKyAgICB7TlVMTCwgdGJ1dDJiXzJfYXZ4NTEyZmRwLCB0YnV0NGJfMl9hdng1MTJmZHAs
IHRidXQ4Yl8yX2F2eDUxMmZkcCwgdGJ1dDE2Yl8yX2F2eDUxMmZkcCwgfSwKK30sCisgIHsKKyAg
ICB7TlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgfSwKKyAgICB7TlVMTCwgTlVMTCwgTlVM
TCwgTlVMTCwgTlVMTCwgfSwKKyAgICB7TlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgfSwK
KyAgICB7TlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgfSwKKyAgICB7TlVMTCwgTlVMTCwg
TlVMTCwgTlVMTCwgTlVMTCwgfSwKK30sCit9OworCit2b2lkICgqYnV0Zl9kb3VibGVbQ09ORklH
TUFYXVtJU0FNQVhdW01BWEJVVFdJRFRIKzFdKShyZWFsICosIHVpbnQzMl90ICosIGNvbnN0IGlu
dCwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQsIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50KSA9IHsK
KyAgeworICAgIHtOVUxMLCBidXQyZl8wX3ZlY2V4dGRwLCBidXQ0Zl8wX3ZlY2V4dGRwLCBidXQ4
Zl8wX3ZlY2V4dGRwLCBidXQxNmZfMF92ZWNleHRkcCwgfSwKKyAgICB7TlVMTCwgYnV0MmZfMF9z
c2UyZHAsIGJ1dDRmXzBfc3NlMmRwLCBidXQ4Zl8wX3NzZTJkcCwgYnV0MTZmXzBfc3NlMmRwLCB9
LAorICAgIHtOVUxMLCBidXQyZl8wX2F2eGRwLCBidXQ0Zl8wX2F2eGRwLCBidXQ4Zl8wX2F2eGRw
LCBidXQxNmZfMF9hdnhkcCwgfSwKKyAgICB7TlVMTCwgYnV0MmZfMF9hdngyZHAsIGJ1dDRmXzBf
YXZ4MmRwLCBidXQ4Zl8wX2F2eDJkcCwgYnV0MTZmXzBfYXZ4MmRwLCB9LAorICAgIHtOVUxMLCBi
dXQyZl8wX2F2eDUxMmZkcCwgYnV0NGZfMF9hdng1MTJmZHAsIGJ1dDhmXzBfYXZ4NTEyZmRwLCBi
dXQxNmZfMF9hdng1MTJmZHAsIH0sCit9LAorICB7CisgICAge05VTEwsIE5VTEwsIE5VTEwsIE5V
TEwsIE5VTEwsIH0sCisgICAge05VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIH0sCisgICAg
e05VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIH0sCisgICAge05VTEwsIE5VTEwsIE5VTEws
IE5VTEwsIE5VTEwsIH0sCisgICAge05VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIH0sCit9
LAorICB7CisgICAge05VTEwsIGJ1dDJmXzJfdmVjZXh0ZHAsIGJ1dDRmXzJfdmVjZXh0ZHAsIGJ1
dDhmXzJfdmVjZXh0ZHAsIGJ1dDE2Zl8yX3ZlY2V4dGRwLCB9LAorICAgIHtOVUxMLCBidXQyZl8y
X3NzZTJkcCwgYnV0NGZfMl9zc2UyZHAsIGJ1dDhmXzJfc3NlMmRwLCBidXQxNmZfMl9zc2UyZHAs
IH0sCisgICAge05VTEwsIGJ1dDJmXzJfYXZ4ZHAsIGJ1dDRmXzJfYXZ4ZHAsIGJ1dDhmXzJfYXZ4
ZHAsIGJ1dDE2Zl8yX2F2eGRwLCB9LAorICAgIHtOVUxMLCBidXQyZl8yX2F2eDJkcCwgYnV0NGZf
Ml9hdngyZHAsIGJ1dDhmXzJfYXZ4MmRwLCBidXQxNmZfMl9hdngyZHAsIH0sCisgICAge05VTEws
IGJ1dDJmXzJfYXZ4NTEyZmRwLCBidXQ0Zl8yX2F2eDUxMmZkcCwgYnV0OGZfMl9hdng1MTJmZHAs
IGJ1dDE2Zl8yX2F2eDUxMmZkcCwgfSwKK30sCisgIHsKKyAgICB7TlVMTCwgTlVMTCwgTlVMTCwg
TlVMTCwgTlVMTCwgfSwKKyAgICB7TlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgfSwKKyAg
ICB7TlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgfSwKKyAgICB7TlVMTCwgTlVMTCwgTlVM
TCwgTlVMTCwgTlVMTCwgfSwKKyAgICB7TlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgfSwK
K30sCit9OworCit2b2lkICgqYnV0Yl9kb3VibGVbQ09ORklHTUFYXVtJU0FNQVhdW01BWEJVVFdJ
RFRIKzFdKShyZWFsICosIHVpbnQzMl90ICosIGNvbnN0IGludCwgY29uc3QgcmVhbCAqLCBjb25z
dCBpbnQsIGNvbnN0IHJlYWwgKiwgY29uc3QgaW50KSA9IHsKKyAgeworICAgIHtOVUxMLCBidXQy
Yl8wX3ZlY2V4dGRwLCBidXQ0Yl8wX3ZlY2V4dGRwLCBidXQ4Yl8wX3ZlY2V4dGRwLCBidXQxNmJf
MF92ZWNleHRkcCwgfSwKKyAgICB7TlVMTCwgYnV0MmJfMF9zc2UyZHAsIGJ1dDRiXzBfc3NlMmRw
LCBidXQ4Yl8wX3NzZTJkcCwgYnV0MTZiXzBfc3NlMmRwLCB9LAorICAgIHtOVUxMLCBidXQyYl8w
X2F2eGRwLCBidXQ0Yl8wX2F2eGRwLCBidXQ4Yl8wX2F2eGRwLCBidXQxNmJfMF9hdnhkcCwgfSwK
KyAgICB7TlVMTCwgYnV0MmJfMF9hdngyZHAsIGJ1dDRiXzBfYXZ4MmRwLCBidXQ4Yl8wX2F2eDJk
cCwgYnV0MTZiXzBfYXZ4MmRwLCB9LAorICAgIHtOVUxMLCBidXQyYl8wX2F2eDUxMmZkcCwgYnV0
NGJfMF9hdng1MTJmZHAsIGJ1dDhiXzBfYXZ4NTEyZmRwLCBidXQxNmJfMF9hdng1MTJmZHAsIH0s
Cit9LAorICB7CisgICAge05VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIH0sCisgICAge05V
TEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIH0sCisgICAge05VTEwsIE5VTEwsIE5VTEwsIE5V
TEwsIE5VTEwsIH0sCisgICAge05VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIH0sCisgICAg
e05VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIH0sCit9LAorICB7CisgICAge05VTEwsIGJ1
dDJiXzJfdmVjZXh0ZHAsIGJ1dDRiXzJfdmVjZXh0ZHAsIGJ1dDhiXzJfdmVjZXh0ZHAsIGJ1dDE2
Yl8yX3ZlY2V4dGRwLCB9LAorICAgIHtOVUxMLCBidXQyYl8yX3NzZTJkcCwgYnV0NGJfMl9zc2Uy
ZHAsIGJ1dDhiXzJfc3NlMmRwLCBidXQxNmJfMl9zc2UyZHAsIH0sCisgICAge05VTEwsIGJ1dDJi
XzJfYXZ4ZHAsIGJ1dDRiXzJfYXZ4ZHAsIGJ1dDhiXzJfYXZ4ZHAsIGJ1dDE2Yl8yX2F2eGRwLCB9
LAorICAgIHtOVUxMLCBidXQyYl8yX2F2eDJkcCwgYnV0NGJfMl9hdngyZHAsIGJ1dDhiXzJfYXZ4
MmRwLCBidXQxNmJfMl9hdngyZHAsIH0sCisgICAge05VTEwsIGJ1dDJiXzJfYXZ4NTEyZmRwLCBi
dXQ0Yl8yX2F2eDUxMmZkcCwgYnV0OGJfMl9hdng1MTJmZHAsIGJ1dDE2Yl8yX2F2eDUxMmZkcCwg
fSwKK30sCisgIHsKKyAgICB7TlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgfSwKKyAgICB7
TlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgfSwKKyAgICB7TlVMTCwgTlVMTCwgTlVMTCwg
TlVMTCwgTlVMTCwgfSwKKyAgICB7TlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgfSwKKyAg
ICB7TlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgfSwKK30sCit9OworCit2b2lkICgqcmVh
bFN1YjBfZG91YmxlW0lTQU1BWF0pKHJlYWwgKiwgY29uc3QgcmVhbCAqLCBjb25zdCBpbnQsIGNv
bnN0IHJlYWwgKiwgY29uc3QgcmVhbCAqKSA9IHsKKyAgcmVhbFN1YjBfdmVjZXh0ZHAsIHJlYWxT
dWIwX3NzZTJkcCwgcmVhbFN1YjBfYXZ4ZHAsIHJlYWxTdWIwX2F2eDJkcCwgcmVhbFN1YjBfYXZ4
NTEyZmRwLCAKK307CisKK3ZvaWQgKCpyZWFsU3ViMV9kb3VibGVbSVNBTUFYXSkocmVhbCAqLCBj
b25zdCByZWFsICosIGNvbnN0IGludCwgY29uc3QgcmVhbCAqLCBjb25zdCByZWFsICosIGNvbnN0
IGludCkgPSB7CisgIHJlYWxTdWIxX3ZlY2V4dGRwLCByZWFsU3ViMV9zc2UyZHAsIHJlYWxTdWIx
X2F2eGRwLCByZWFsU3ViMV9hdngyZHAsIHJlYWxTdWIxX2F2eDUxMmZkcCwgCit9OworCitpbnQg
KCpnZXRJbnRfZG91YmxlWzE2XSkoaW50KSA9IHsKKyAgZ2V0SW50X3ZlY2V4dGRwLCBnZXRJbnRf
c3NlMmRwLCBnZXRJbnRfYXZ4ZHAsIGdldEludF9hdngyZHAsIGdldEludF9hdng1MTJmZHAsIE5V
TEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEws
IE5VTEwsIAorfTsKKworY29uc3Qgdm9pZCAqKCpnZXRQdHJfZG91YmxlWzE2XSkoaW50KSA9IHsK
KyAgZ2V0UHRyX3ZlY2V4dGRwLCBnZXRQdHJfc3NlMmRwLCBnZXRQdHJfYXZ4ZHAsIGdldFB0cl9h
dngyZHAsIGdldFB0cl9hdng1MTJmZHAsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5V
TEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIAorfTsKKwpkaWZmIC0tZ2l0IGEvaW5j
bHVkZS9kaXNwYXRjaHBhcmFtLmggYi9pbmNsdWRlL2Rpc3BhdGNocGFyYW0uaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMWQ1YWRjCi0tLSAvZGV2L251bGwKKysrIGIvaW5j
bHVkZS9kaXNwYXRjaHBhcmFtLmgKQEAgLTAsMCArMSwyIEBACisjZGVmaW5lIE1BWEJVVFdJRFRI
IDQKKwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zbGVlZi5oIGIvaW5jbHVkZS9zbGVlZi5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzOTEwYmIKLS0tIC9kZXYvbnVsbAorKysg
Yi9pbmNsdWRlL3NsZWVmLmgKQEAgLTAsMCArMSw0Mzg0IEBACisvLyAgICAgICAgICBDb3B5cmln
aHQgTmFva2kgU2hpYmF0YSAyMDEwIC0gMjAxOS4KKy8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBC
b29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KKy8vICAgIChTZWUgYWNjb21wYW55
aW5nIGZpbGUgTElDRU5TRS50eHQgb3IgY29weSBhdAorLy8gICAgICAgICAgaHR0cDovL3d3dy5i
b29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQorCisjaWZuZGVmIF9fU0xFRUZfSF9fCisjZGVmaW5l
IF9fU0xFRUZfSF9fCisKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4K
KworI2lmIChkZWZpbmVkKF9fR05VQ19fKSB8fCBkZWZpbmVkKF9fQ0xBTkdfXykpICYmICFkZWZp
bmVkKF9fSU5URUxfQ09NUElMRVIpCisjZGVmaW5lIENPTlNUIGNvbnN0CisjZWxzZQorI2RlZmlu
ZSBDT05TVAorI2VuZGlmCisKKyNpZiBkZWZpbmVkKF9fQVZYMl9fKSB8fCBkZWZpbmVkKF9fYWFy
Y2g2NF9fKSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyNp
Zm5kZWYgRlBfRkFTVF9GTUEKKyNkZWZpbmUgRlBfRkFTVF9GTUEKKyNlbmRpZgorI2VuZGlmCisK
KyNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAhZGVmaW5lZChfX1NURENfXykKKyNkZWZpbmUgX19T
VERDX18gMQorI2VuZGlmCisKKyNpZiAoZGVmaW5lZChfX01JTkdXMzJfXykgfHwgZGVmaW5lZChf
X01JTkdXNjRfXykgfHwgZGVmaW5lZChfX0NZR1dJTl9fKSB8fCBkZWZpbmVkKF9NU0NfVkVSKSkg
JiYgIWRlZmluZWQoU0xFRUZfU1RBVElDX0xJQlMpCisjaWZkZWYgSU1QT1JUX0lTX0VYUE9SVAor
I2RlZmluZSBJTVBPUlQgX19kZWNsc3BlYyhkbGxleHBvcnQpCisjZWxzZSAvLyAjaWZkZWYgSU1Q
T1JUX0lTX0VYUE9SVAorI2RlZmluZSBJTVBPUlQgX19kZWNsc3BlYyhkbGxpbXBvcnQpCisjaWYg
KGRlZmluZWQoX01TQ19WRVIpKQorI3ByYWdtYSBjb21tZW50KGxpYiwic2xlZWYubGliIikKKyNl
bmRpZiAvLyAjaWYgKGRlZmluZWQoX01TQ19WRVIpKQorI2VuZGlmIC8vICNpZmRlZiBJTVBPUlRf
SVNfRVhQT1JUCisjZWxzZSAvLyAjaWYgKGRlZmluZWQoX19NSU5HVzMyX18pIHx8IGRlZmluZWQo
X19NSU5HVzY0X18pIHx8IGRlZmluZWQoX19DWUdXSU5fXykgfHwgZGVmaW5lZChfTVNDX1ZFUikp
ICYmICFkZWZpbmVkKFNMRUVGX1NUQVRJQ19MSUJTKQorI2RlZmluZSBJTVBPUlQKKyNlbmRpZiAv
LyAjaWYgKGRlZmluZWQoX19NSU5HVzMyX18pIHx8IGRlZmluZWQoX19NSU5HVzY0X18pIHx8IGRl
ZmluZWQoX19DWUdXSU5fXykgfHwgZGVmaW5lZChfTVNDX1ZFUikpICYmICFkZWZpbmVkKFNMRUVG
X1NUQVRJQ19MSUJTKQorCisjaWYgKGRlZmluZWQoX19HTlVDX18pIHx8IGRlZmluZWQoX19DTEFO
R19fKSkgJiYgKGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykpCisjaW5j
bHVkZSA8eDg2aW50cmluLmg+CisjZW5kaWYKKworI2lmIChkZWZpbmVkKF9NU0NfVkVSKSkKKyNp
bmNsdWRlIDxpbnRyaW4uaD4KKyNlbmRpZgorCisjaWYgZGVmaW5lZChfX0FSTV9ORU9OX18pIHx8
IGRlZmluZWQoX19BUk1fTkVPTikKKyNpbmNsdWRlIDxhcm1fbmVvbi5oPgorI2VuZGlmCisKKyNp
ZiBkZWZpbmVkKF9fQVJNX0ZFQVRVUkVfU1ZFKQorI2luY2x1ZGUgPGFybV9zdmUuaD4KKyNlbmRp
ZgorCisvLworCisjaWZuZGVmIFNMRUVGX0ZQX0lMT0dCMAorI2RlZmluZSBTTEVFRl9GUF9JTE9H
QjAgKChpbnQpLTIxNDc0ODM2NDgpCisjZW5kaWYKKworI2lmbmRlZiBTTEVFRl9GUF9JTE9HQk5B
TgorI2RlZmluZSBTTEVFRl9GUF9JTE9HQk5BTiAoKGludCkyMTQ3NDgzNjQ3KQorI2VuZGlmCisK
Ky8vCisKK0lNUE9SVCB2b2lkICpTbGVlZl9tYWxsb2Moc2l6ZV90IHopOworSU1QT1JUIHZvaWQg
U2xlZWZfZnJlZSh2b2lkICpwdHIpOworSU1QT1JUIHVpbnQ2NF90IFNsZWVmX2N1cnJlbnRUaW1l
TWljcm9zKCk7CisKKyNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18p
IHx8IGRlZmluZWQoX01TQ19WRVIpCitJTVBPUlQgdm9pZCBTbGVlZl94ODZDcHVJRChpbnQzMl90
IG91dFs0XSwgdWludDMyX3QgZWF4LCB1aW50MzJfdCBlY3gpOworI2VuZGlmCisKKy8vCisKKyNp
Zm5kZWYgU2xlZWZfZG91YmxlMl9ERUZJTkVECisjZGVmaW5lIFNsZWVmX2RvdWJsZTJfREVGSU5F
RAordHlwZWRlZiBzdHJ1Y3QgeworICBkb3VibGUgeCwgeTsKK30gU2xlZWZfZG91YmxlMjsKKyNl
bmRpZgorCisjaWZuZGVmIFNsZWVmX2Zsb2F0Ml9ERUZJTkVECisjZGVmaW5lIFNsZWVmX2Zsb2F0
Ml9ERUZJTkVECit0eXBlZGVmIHN0cnVjdCB7CisgIGZsb2F0IHgsIHk7Cit9IFNsZWVmX2Zsb2F0
MjsKKyNlbmRpZgorCisjaWZuZGVmIFNsZWVmX2xvbmdkb3VibGUyX0RFRklORUQKKyNkZWZpbmUg
U2xlZWZfbG9uZ2RvdWJsZTJfREVGSU5FRAordHlwZWRlZiBzdHJ1Y3QgeworICBsb25nIGRvdWJs
ZSB4LCB5OworfSBTbGVlZl9sb25nZG91YmxlMjsKKyNlbmRpZgorCisjaWYgIWRlZmluZWQoU2xl
ZWZfcXVhZF9ERUZJTkVEKQorI2RlZmluZSBTbGVlZl9xdWFkX0RFRklORUQKKyNpZiBkZWZpbmVk
KEVOQUJMRUZMT0FUMTI4KQordHlwZWRlZiBfX2Zsb2F0MTI4IFNsZWVmX3F1YWQ7CisjZWxzZQor
dHlwZWRlZiBzdHJ1Y3QgeyB1aW50NjRfdCB4LCB5OyB9IFNsZWVmX3F1YWQ7CisjZW5kaWYKKyNl
bmRpZgorCisjaWYgIWRlZmluZWQoU2xlZWZfcXVhZDJfREVGSU5FRCkKKyNkZWZpbmUgU2xlZWZf
cXVhZDJfREVGSU5FRAordHlwZWRlZiB1bmlvbiB7CisgIHN0cnVjdCB7CisgICAgU2xlZWZfcXVh
ZCB4LCB5OworICB9OworICBTbGVlZl9xdWFkIHNbMl07Cit9IFNsZWVmX3F1YWQyOworI2VuZGlm
CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIgoreworI2VuZGlmCisKK0lNUE9SVCBD
T05TVCBkb3VibGUgU2xlZWZfc2luX3UzNShkb3VibGUpOworSU1QT1JUIENPTlNUIGRvdWJsZSBT
bGVlZl9jb3NfdTM1KGRvdWJsZSk7CitJTVBPUlQgQ09OU1QgU2xlZWZfZG91YmxlMiBTbGVlZl9z
aW5jb3NfdTM1KGRvdWJsZSk7CitJTVBPUlQgQ09OU1QgZG91YmxlIFNsZWVmX3Rhbl91MzUoZG91
YmxlKTsKK0lNUE9SVCBDT05TVCBkb3VibGUgU2xlZWZfYXNpbl91MzUoZG91YmxlKTsKK0lNUE9S
VCBDT05TVCBkb3VibGUgU2xlZWZfYWNvc191MzUoZG91YmxlKTsKK0lNUE9SVCBDT05TVCBkb3Vi
bGUgU2xlZWZfYXRhbl91MzUoZG91YmxlKTsKK0lNUE9SVCBDT05TVCBkb3VibGUgU2xlZWZfYXRh
bjJfdTM1KGRvdWJsZSwgZG91YmxlKTsKK0lNUE9SVCBDT05TVCBkb3VibGUgU2xlZWZfbG9nX3Uz
NShkb3VibGUpOworSU1QT1JUIENPTlNUIGRvdWJsZSBTbGVlZl9jYnJ0X3UzNShkb3VibGUpOwor
SU1QT1JUIENPTlNUIGRvdWJsZSBTbGVlZl9zaW5fdTEwKGRvdWJsZSk7CitJTVBPUlQgQ09OU1Qg
ZG91YmxlIFNsZWVmX2Nvc191MTAoZG91YmxlKTsKK0lNUE9SVCBDT05TVCBTbGVlZl9kb3VibGUy
IFNsZWVmX3NpbmNvc191MTAoZG91YmxlKTsKK0lNUE9SVCBDT05TVCBkb3VibGUgU2xlZWZfdGFu
X3UxMChkb3VibGUpOworSU1QT1JUIENPTlNUIGRvdWJsZSBTbGVlZl9hc2luX3UxMChkb3VibGUp
OworSU1QT1JUIENPTlNUIGRvdWJsZSBTbGVlZl9hY29zX3UxMChkb3VibGUpOworSU1QT1JUIENP
TlNUIGRvdWJsZSBTbGVlZl9hdGFuX3UxMChkb3VibGUpOworSU1QT1JUIENPTlNUIGRvdWJsZSBT
bGVlZl9hdGFuMl91MTAoZG91YmxlLCBkb3VibGUpOworSU1QT1JUIENPTlNUIGRvdWJsZSBTbGVl
Zl9sb2dfdTEwKGRvdWJsZSk7CitJTVBPUlQgQ09OU1QgZG91YmxlIFNsZWVmX2NicnRfdTEwKGRv
dWJsZSk7CitJTVBPUlQgQ09OU1QgZG91YmxlIFNsZWVmX2V4cF91MTAoZG91YmxlKTsKK0lNUE9S
VCBDT05TVCBkb3VibGUgU2xlZWZfcG93X3UxMChkb3VibGUsIGRvdWJsZSk7CitJTVBPUlQgQ09O
U1QgZG91YmxlIFNsZWVmX3NpbmhfdTEwKGRvdWJsZSk7CitJTVBPUlQgQ09OU1QgZG91YmxlIFNs
ZWVmX2Nvc2hfdTEwKGRvdWJsZSk7CitJTVBPUlQgQ09OU1QgZG91YmxlIFNsZWVmX3RhbmhfdTEw
KGRvdWJsZSk7CitJTVBPUlQgQ09OU1QgZG91YmxlIFNsZWVmX3NpbmhfdTM1KGRvdWJsZSk7CitJ
TVBPUlQgQ09OU1QgZG91YmxlIFNsZWVmX2Nvc2hfdTM1KGRvdWJsZSk7CitJTVBPUlQgQ09OU1Qg
ZG91YmxlIFNsZWVmX3RhbmhfdTM1KGRvdWJsZSk7CitJTVBPUlQgQ09OU1QgZG91YmxlIFNsZWVm
X2FzaW5oX3UxMChkb3VibGUpOworSU1QT1JUIENPTlNUIGRvdWJsZSBTbGVlZl9hY29zaF91MTAo
ZG91YmxlKTsKK0lNUE9SVCBDT05TVCBkb3VibGUgU2xlZWZfYXRhbmhfdTEwKGRvdWJsZSk7CitJ
TVBPUlQgQ09OU1QgZG91YmxlIFNsZWVmX2V4cDJfdTEwKGRvdWJsZSk7CitJTVBPUlQgQ09OU1Qg
ZG91YmxlIFNsZWVmX2V4cDEwX3UxMChkb3VibGUpOworSU1QT1JUIENPTlNUIGRvdWJsZSBTbGVl
Zl9leHAyX3UzNShkb3VibGUpOworSU1QT1JUIENPTlNUIGRvdWJsZSBTbGVlZl9leHAxMF91MzUo
ZG91YmxlKTsKK0lNUE9SVCBDT05TVCBkb3VibGUgU2xlZWZfZXhwbTFfdTEwKGRvdWJsZSk7CitJ
TVBPUlQgQ09OU1QgZG91YmxlIFNsZWVmX2xvZzEwX3UxMChkb3VibGUpOworSU1QT1JUIENPTlNU
IGRvdWJsZSBTbGVlZl9sb2cyX3UxMChkb3VibGUpOworSU1QT1JUIENPTlNUIGRvdWJsZSBTbGVl
Zl9sb2cyX3UzNShkb3VibGUpOworSU1QT1JUIENPTlNUIGRvdWJsZSBTbGVlZl9sb2cxcF91MTAo
ZG91YmxlKTsKK0lNUE9SVCBDT05TVCBTbGVlZl9kb3VibGUyIFNsZWVmX3NpbmNvc3BpX3UwNShk
b3VibGUpOworSU1QT1JUIENPTlNUIFNsZWVmX2RvdWJsZTIgU2xlZWZfc2luY29zcGlfdTM1KGRv
dWJsZSk7CitJTVBPUlQgQ09OU1QgZG91YmxlIFNsZWVmX3NpbnBpX3UwNShkb3VibGUpOworSU1Q
T1JUIENPTlNUIGRvdWJsZSBTbGVlZl9jb3NwaV91MDUoZG91YmxlKTsKK0lNUE9SVCBDT05TVCBk
b3VibGUgU2xlZWZfbGRleHAoZG91YmxlLCBpbnQpOworSU1QT1JUIENPTlNUIGludCBTbGVlZl9p
bG9nYihkb3VibGUpOworSU1QT1JUIENPTlNUIGRvdWJsZSBTbGVlZl9mbWEoZG91YmxlLCBkb3Vi
bGUsIGRvdWJsZSk7CitJTVBPUlQgQ09OU1QgZG91YmxlIFNsZWVmX3NxcnQoZG91YmxlKTsKK0lN
UE9SVCBDT05TVCBkb3VibGUgU2xlZWZfc3FydF91MDUoZG91YmxlKTsKK0lNUE9SVCBDT05TVCBk
b3VibGUgU2xlZWZfc3FydF91MzUoZG91YmxlKTsKKworSU1QT1JUIENPTlNUIGRvdWJsZSBTbGVl
Zl9oeXBvdF91MDUoZG91YmxlLCBkb3VibGUpOworSU1QT1JUIENPTlNUIGRvdWJsZSBTbGVlZl9o
eXBvdF91MzUoZG91YmxlLCBkb3VibGUpOworCitJTVBPUlQgQ09OU1QgZG91YmxlIFNsZWVmX2Zh
YnMoZG91YmxlKTsKK0lNUE9SVCBDT05TVCBkb3VibGUgU2xlZWZfY29weXNpZ24oZG91YmxlLCBk
b3VibGUpOworSU1QT1JUIENPTlNUIGRvdWJsZSBTbGVlZl9mbWF4KGRvdWJsZSwgZG91YmxlKTsK
K0lNUE9SVCBDT05TVCBkb3VibGUgU2xlZWZfZm1pbihkb3VibGUsIGRvdWJsZSk7CitJTVBPUlQg
Q09OU1QgZG91YmxlIFNsZWVmX2ZkaW0oZG91YmxlLCBkb3VibGUpOworSU1QT1JUIENPTlNUIGRv
dWJsZSBTbGVlZl90cnVuYyhkb3VibGUpOworSU1QT1JUIENPTlNUIGRvdWJsZSBTbGVlZl9mbG9v
cihkb3VibGUpOworSU1QT1JUIENPTlNUIGRvdWJsZSBTbGVlZl9jZWlsKGRvdWJsZSk7CitJTVBP
UlQgQ09OU1QgZG91YmxlIFNsZWVmX3JvdW5kKGRvdWJsZSk7CitJTVBPUlQgQ09OU1QgZG91Ymxl
IFNsZWVmX3JpbnQoZG91YmxlKTsKK0lNUE9SVCBDT05TVCBkb3VibGUgU2xlZWZfbmV4dGFmdGVy
KGRvdWJsZSwgZG91YmxlKTsKK0lNUE9SVCBDT05TVCBkb3VibGUgU2xlZWZfZnJmcmV4cChkb3Vi
bGUpOworSU1QT1JUIENPTlNUIGludCBTbGVlZl9leHBmcmV4cChkb3VibGUpOworSU1QT1JUIENP
TlNUIGRvdWJsZSBTbGVlZl9mbW9kKGRvdWJsZSwgZG91YmxlKTsKK0lNUE9SVCBDT05TVCBTbGVl
Zl9kb3VibGUyIFNsZWVmX21vZGYoZG91YmxlKTsKKworSU1QT1JUIENPTlNUIGRvdWJsZSBTbGVl
Zl9sZ2FtbWFfdTEwKGRvdWJsZSk7CitJTVBPUlQgQ09OU1QgZG91YmxlIFNsZWVmX3RnYW1tYV91
MTAoZG91YmxlKTsKK0lNUE9SVCBDT05TVCBkb3VibGUgU2xlZWZfZXJmX3UxMChkb3VibGUpOwor
SU1QT1JUIENPTlNUIGRvdWJsZSBTbGVlZl9lcmZjX3UxNShkb3VibGUpOworCitJTVBPUlQgQ09O
U1QgZmxvYXQgU2xlZWZfc2luZl91MzUoZmxvYXQpOworSU1QT1JUIENPTlNUIGZsb2F0IFNsZWVm
X2Nvc2ZfdTM1KGZsb2F0KTsKK0lNUE9SVCBDT05TVCBTbGVlZl9mbG9hdDIgU2xlZWZfc2luY29z
Zl91MzUoZmxvYXQpOworSU1QT1JUIENPTlNUIGZsb2F0IFNsZWVmX3RhbmZfdTM1KGZsb2F0KTsK
K0lNUE9SVCBDT05TVCBmbG9hdCBTbGVlZl9hc2luZl91MzUoZmxvYXQpOworSU1QT1JUIENPTlNU
IGZsb2F0IFNsZWVmX2Fjb3NmX3UzNShmbG9hdCk7CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xlZWZf
YXRhbmZfdTM1KGZsb2F0KTsKK0lNUE9SVCBDT05TVCBmbG9hdCBTbGVlZl9hdGFuMmZfdTM1KGZs
b2F0LCBmbG9hdCk7CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xlZWZfbG9nZl91MzUoZmxvYXQpOwor
SU1QT1JUIENPTlNUIGZsb2F0IFNsZWVmX2NicnRmX3UzNShmbG9hdCk7CitJTVBPUlQgQ09OU1Qg
ZmxvYXQgU2xlZWZfc2luZl91MTAoZmxvYXQpOworSU1QT1JUIENPTlNUIGZsb2F0IFNsZWVmX2Nv
c2ZfdTEwKGZsb2F0KTsKK0lNUE9SVCBDT05TVCBTbGVlZl9mbG9hdDIgU2xlZWZfc2luY29zZl91
MTAoZmxvYXQpOworSU1QT1JUIENPTlNUIGZsb2F0IFNsZWVmX2Zhc3RzaW5mX3UzNTAwKGZsb2F0
KTsKK0lNUE9SVCBDT05TVCBmbG9hdCBTbGVlZl9mYXN0Y29zZl91MzUwMChmbG9hdCk7CitJTVBP
UlQgQ09OU1QgZmxvYXQgU2xlZWZfdGFuZl91MTAoZmxvYXQpOworSU1QT1JUIENPTlNUIGZsb2F0
IFNsZWVmX2FzaW5mX3UxMChmbG9hdCk7CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xlZWZfYWNvc2Zf
dTEwKGZsb2F0KTsKK0lNUE9SVCBDT05TVCBmbG9hdCBTbGVlZl9hdGFuZl91MTAoZmxvYXQpOwor
SU1QT1JUIENPTlNUIGZsb2F0IFNsZWVmX2F0YW4yZl91MTAoZmxvYXQsIGZsb2F0KTsKK0lNUE9S
VCBDT05TVCBmbG9hdCBTbGVlZl9sb2dmX3UxMChmbG9hdCk7CitJTVBPUlQgQ09OU1QgZmxvYXQg
U2xlZWZfY2JydGZfdTEwKGZsb2F0KTsKK0lNUE9SVCBDT05TVCBmbG9hdCBTbGVlZl9leHBmX3Ux
MChmbG9hdCk7CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xlZWZfcG93Zl91MTAoZmxvYXQsIGZsb2F0
KTsKK0lNUE9SVCBDT05TVCBmbG9hdCBTbGVlZl9mYXN0cG93Zl91MzUwMChmbG9hdCwgZmxvYXQp
OworSU1QT1JUIENPTlNUIGZsb2F0IFNsZWVmX3NpbmhmX3UxMChmbG9hdCk7CitJTVBPUlQgQ09O
U1QgZmxvYXQgU2xlZWZfY29zaGZfdTEwKGZsb2F0KTsKK0lNUE9SVCBDT05TVCBmbG9hdCBTbGVl
Zl90YW5oZl91MTAoZmxvYXQpOworSU1QT1JUIENPTlNUIGZsb2F0IFNsZWVmX3NpbmhmX3UzNShm
bG9hdCk7CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xlZWZfY29zaGZfdTM1KGZsb2F0KTsKK0lNUE9S
VCBDT05TVCBmbG9hdCBTbGVlZl90YW5oZl91MzUoZmxvYXQpOworSU1QT1JUIENPTlNUIGZsb2F0
IFNsZWVmX2FzaW5oZl91MTAoZmxvYXQpOworSU1QT1JUIENPTlNUIGZsb2F0IFNsZWVmX2Fjb3No
Zl91MTAoZmxvYXQpOworSU1QT1JUIENPTlNUIGZsb2F0IFNsZWVmX2F0YW5oZl91MTAoZmxvYXQp
OworSU1QT1JUIENPTlNUIGZsb2F0IFNsZWVmX2V4cDJmX3UxMChmbG9hdCk7CitJTVBPUlQgQ09O
U1QgZmxvYXQgU2xlZWZfZXhwMTBmX3UxMChmbG9hdCk7CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xl
ZWZfZXhwMmZfdTM1KGZsb2F0KTsKK0lNUE9SVCBDT05TVCBmbG9hdCBTbGVlZl9leHAxMGZfdTM1
KGZsb2F0KTsKK0lNUE9SVCBDT05TVCBmbG9hdCBTbGVlZl9leHBtMWZfdTEwKGZsb2F0KTsKK0lN
UE9SVCBDT05TVCBmbG9hdCBTbGVlZl9sb2cxMGZfdTEwKGZsb2F0KTsKK0lNUE9SVCBDT05TVCBm
bG9hdCBTbGVlZl9sb2cyZl91MTAoZmxvYXQpOworSU1QT1JUIENPTlNUIGZsb2F0IFNsZWVmX2xv
ZzJmX3UzNShmbG9hdCk7CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xlZWZfbG9nMXBmX3UxMChmbG9h
dCk7CitJTVBPUlQgQ09OU1QgU2xlZWZfZmxvYXQyIFNsZWVmX3NpbmNvc3BpZl91MDUoZmxvYXQp
OworSU1QT1JUIENPTlNUIFNsZWVmX2Zsb2F0MiBTbGVlZl9zaW5jb3NwaWZfdTM1KGZsb2F0KTsK
K0lNUE9SVCBDT05TVCBmbG9hdCBTbGVlZl9zaW5waWZfdTA1KGZsb2F0IGQpOworSU1QT1JUIENP
TlNUIGZsb2F0IFNsZWVmX2Nvc3BpZl91MDUoZmxvYXQgZCk7CitJTVBPUlQgQ09OU1QgZmxvYXQg
U2xlZWZfbGRleHBmKGZsb2F0LCBpbnQpOworSU1QT1JUIENPTlNUIGludCBTbGVlZl9pbG9nYmYo
ZmxvYXQpOworSU1QT1JUIENPTlNUIGZsb2F0IFNsZWVmX2ZtYWYoZmxvYXQsIGZsb2F0LCBmbG9h
dCk7CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xlZWZfc3FydGYoZmxvYXQpOworSU1QT1JUIENPTlNU
IGZsb2F0IFNsZWVmX3NxcnRmX3UwNShmbG9hdCk7CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xlZWZf
c3FydGZfdTM1KGZsb2F0KTsKKworSU1QT1JUIENPTlNUIGZsb2F0IFNsZWVmX2h5cG90Zl91MDUo
ZmxvYXQsIGZsb2F0KTsKK0lNUE9SVCBDT05TVCBmbG9hdCBTbGVlZl9oeXBvdGZfdTM1KGZsb2F0
LCBmbG9hdCk7CisKK0lNUE9SVCBDT05TVCBmbG9hdCBTbGVlZl9mYWJzZihmbG9hdCk7CitJTVBP
UlQgQ09OU1QgZmxvYXQgU2xlZWZfY29weXNpZ25mKGZsb2F0LCBmbG9hdCk7CitJTVBPUlQgQ09O
U1QgZmxvYXQgU2xlZWZfZm1heGYoZmxvYXQsIGZsb2F0KTsKK0lNUE9SVCBDT05TVCBmbG9hdCBT
bGVlZl9mbWluZihmbG9hdCwgZmxvYXQpOworSU1QT1JUIENPTlNUIGZsb2F0IFNsZWVmX2ZkaW1m
KGZsb2F0LCBmbG9hdCk7CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xlZWZfdHJ1bmNmKGZsb2F0KTsK
K0lNUE9SVCBDT05TVCBmbG9hdCBTbGVlZl9mbG9vcmYoZmxvYXQpOworSU1QT1JUIENPTlNUIGZs
b2F0IFNsZWVmX2NlaWxmKGZsb2F0KTsKK0lNUE9SVCBDT05TVCBmbG9hdCBTbGVlZl9yb3VuZGYo
ZmxvYXQpOworSU1QT1JUIENPTlNUIGZsb2F0IFNsZWVmX3JpbnRmKGZsb2F0KTsKK0lNUE9SVCBD
T05TVCBmbG9hdCBTbGVlZl9uZXh0YWZ0ZXJmKGZsb2F0LCBmbG9hdCk7CitJTVBPUlQgQ09OU1Qg
ZmxvYXQgU2xlZWZfZnJmcmV4cGYoZmxvYXQpOworSU1QT1JUIENPTlNUIGludCBTbGVlZl9leHBm
cmV4cGYoZmxvYXQpOworSU1QT1JUIENPTlNUIGZsb2F0IFNsZWVmX2Ztb2RmKGZsb2F0LCBmbG9h
dCk7CitJTVBPUlQgQ09OU1QgU2xlZWZfZmxvYXQyIFNsZWVmX21vZGZmKGZsb2F0KTsKKworSU1Q
T1JUIENPTlNUIGZsb2F0IFNsZWVmX2xnYW1tYWZfdTEwKGZsb2F0KTsKK0lNUE9SVCBDT05TVCBm
bG9hdCBTbGVlZl90Z2FtbWFmX3UxMChmbG9hdCk7CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xlZWZf
ZXJmZl91MTAoZmxvYXQpOworSU1QT1JUIENPTlNUIGZsb2F0IFNsZWVmX2VyZmNmX3UxNShmbG9h
dCk7CisKK0lNUE9SVCBDT05TVCBTbGVlZl9sb25nZG91YmxlMiBTbGVlZl9zaW5jb3NwaWxfdTA1
KGxvbmcgZG91YmxlKTsKK0lNUE9SVCBDT05TVCBTbGVlZl9sb25nZG91YmxlMiBTbGVlZl9zaW5j
b3NwaWxfdTM1KGxvbmcgZG91YmxlKTsKKworI2lmIGRlZmluZWQoU2xlZWZfcXVhZDJfREVGSU5F
RCkKK0lNUE9SVCBDT05TVCBTbGVlZl9xdWFkMiBTbGVlZl9zaW5jb3NwaXFfdTA1KFNsZWVmX3F1
YWQpOworSU1QT1JUIENPTlNUIFNsZWVmX3F1YWQyIFNsZWVmX3NpbmNvc3BpcV91MzUoU2xlZWZf
cXVhZCk7CisjZW5kaWYKKyNpZmRlZiBfX1NTRTJfXworI2RlZmluZSBTVFJVQ1RfS0VZV09SRF9f
X1NTRTJfXyBzdHJ1Y3QKKworI2lmbmRlZiBTbGVlZl9fX20xMjhkXzJfREVGSU5FRAordHlwZWRl
ZiBTVFJVQ1RfS0VZV09SRF9fX1NTRTJfXyB7CisgIF9fbTEyOGQgeCwgeTsKK30gU2xlZWZfX19t
MTI4ZF8yOworI2RlZmluZSBTbGVlZl9fX20xMjhkXzJfREVGSU5FRAorI2VuZGlmCisKK0lNUE9S
VCBDT05TVCBfX20xMjhkIFNsZWVmX3NpbmQyX3UzNShfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBf
X20xMjhkIFNsZWVmX2Npbnpfc2luZDJfdTM1KF9fbTEyOGQpOworSU1QT1JUIENPTlNUIF9fbTEy
OGQgU2xlZWZfY29zZDJfdTM1KF9fbTEyOGQpOworSU1QT1JUIENPTlNUIF9fbTEyOGQgU2xlZWZf
Y2luel9jb3NkMl91MzUoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgU2xlZWZfX19tMTI4ZF8yIFNs
ZWVmX3NpbmNvc2QyX3UzNShfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBTbGVlZl9fX20xMjhkXzIg
U2xlZWZfY2luel9zaW5jb3NkMl91MzUoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBT
bGVlZl90YW5kMl91MzUoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9jaW56
X3RhbmQyX3UzNShfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2FzaW5kMl91
MzUoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9jaW56X2FzaW5kMl91MzUo
X19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9hY29zZDJfdTM1KF9fbTEyOGQp
OworSU1QT1JUIENPTlNUIF9fbTEyOGQgU2xlZWZfY2luel9hY29zZDJfdTM1KF9fbTEyOGQpOwor
SU1QT1JUIENPTlNUIF9fbTEyOGQgU2xlZWZfYXRhbmQyX3UzNShfX20xMjhkKTsKK0lNUE9SVCBD
T05TVCBfX20xMjhkIFNsZWVmX2NpbnpfYXRhbmQyX3UzNShfX20xMjhkKTsKK0lNUE9SVCBDT05T
VCBfX20xMjhkIFNsZWVmX2F0YW4yZDJfdTM1KF9fbTEyOGQsIF9fbTEyOGQpOworSU1QT1JUIENP
TlNUIF9fbTEyOGQgU2xlZWZfY2luel9hdGFuMmQyX3UzNShfX20xMjhkLCBfX20xMjhkKTsKK0lN
UE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2xvZ2QyX3UzNShfX20xMjhkKTsKK0lNUE9SVCBDT05T
VCBfX20xMjhkIFNsZWVmX2NpbnpfbG9nZDJfdTM1KF9fbTEyOGQpOworSU1QT1JUIENPTlNUIF9f
bTEyOGQgU2xlZWZfY2JydGQyX3UzNShfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBfX20xMjhkIFNs
ZWVmX2NpbnpfY2JydGQyX3UzNShfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVm
X3NpbmQyX3UxMChfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2Npbnpfc2lu
ZDJfdTEwKF9fbTEyOGQpOworSU1QT1JUIENPTlNUIF9fbTEyOGQgU2xlZWZfY29zZDJfdTEwKF9f
bTEyOGQpOworSU1QT1JUIENPTlNUIF9fbTEyOGQgU2xlZWZfY2luel9jb3NkMl91MTAoX19tMTI4
ZCk7CitJTVBPUlQgQ09OU1QgU2xlZWZfX19tMTI4ZF8yIFNsZWVmX3NpbmNvc2QyX3UxMChfX20x
MjhkKTsKK0lNUE9SVCBDT05TVCBTbGVlZl9fX20xMjhkXzIgU2xlZWZfY2luel9zaW5jb3NkMl91
MTAoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVlZl90YW5kMl91MTAoX19tMTI4
ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9jaW56X3RhbmQyX3UxMChfX20xMjhkKTsK
K0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2FzaW5kMl91MTAoX19tMTI4ZCk7CitJTVBPUlQg
Q09OU1QgX19tMTI4ZCBTbGVlZl9jaW56X2FzaW5kMl91MTAoX19tMTI4ZCk7CitJTVBPUlQgQ09O
U1QgX19tMTI4ZCBTbGVlZl9hY29zZDJfdTEwKF9fbTEyOGQpOworSU1QT1JUIENPTlNUIF9fbTEy
OGQgU2xlZWZfY2luel9hY29zZDJfdTEwKF9fbTEyOGQpOworSU1QT1JUIENPTlNUIF9fbTEyOGQg
U2xlZWZfYXRhbmQyX3UxMChfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2Np
bnpfYXRhbmQyX3UxMChfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2F0YW4y
ZDJfdTEwKF9fbTEyOGQsIF9fbTEyOGQpOworSU1QT1JUIENPTlNUIF9fbTEyOGQgU2xlZWZfY2lu
el9hdGFuMmQyX3UxMChfX20xMjhkLCBfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBfX20xMjhkIFNs
ZWVmX2xvZ2QyX3UxMChfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2Npbnpf
bG9nZDJfdTEwKF9fbTEyOGQpOworSU1QT1JUIENPTlNUIF9fbTEyOGQgU2xlZWZfY2JydGQyX3Ux
MChfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2NpbnpfY2JydGQyX3UxMChf
X20xMjhkKTsKK0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2V4cGQyX3UxMChfX20xMjhkKTsK
K0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2NpbnpfZXhwZDJfdTEwKF9fbTEyOGQpOworSU1Q
T1JUIENPTlNUIF9fbTEyOGQgU2xlZWZfcG93ZDJfdTEwKF9fbTEyOGQsIF9fbTEyOGQpOworSU1Q
T1JUIENPTlNUIF9fbTEyOGQgU2xlZWZfY2luel9wb3dkMl91MTAoX19tMTI4ZCwgX19tMTI4ZCk7
CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9zaW5oZDJfdTEwKF9fbTEyOGQpOworSU1QT1JU
IENPTlNUIF9fbTEyOGQgU2xlZWZfY2luel9zaW5oZDJfdTEwKF9fbTEyOGQpOworSU1QT1JUIENP
TlNUIF9fbTEyOGQgU2xlZWZfY29zaGQyX3UxMChfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBfX20x
MjhkIFNsZWVmX2NpbnpfY29zaGQyX3UxMChfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBfX20xMjhk
IFNsZWVmX3RhbmhkMl91MTAoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9j
aW56X3RhbmhkMl91MTAoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9zaW5o
ZDJfdTM1KF9fbTEyOGQpOworSU1QT1JUIENPTlNUIF9fbTEyOGQgU2xlZWZfY2luel9zaW5oZDJf
dTM1KF9fbTEyOGQpOworSU1QT1JUIENPTlNUIF9fbTEyOGQgU2xlZWZfY29zaGQyX3UzNShfX20x
MjhkKTsKK0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2NpbnpfY29zaGQyX3UzNShfX20xMjhk
KTsKK0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX3RhbmhkMl91MzUoX19tMTI4ZCk7CitJTVBP
UlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9jaW56X3RhbmhkMl91MzUoX19tMTI4ZCk7CitJTVBPUlQg
Q09OU1QgX19tMTI4ZCBTbGVlZl9mYXN0c2luZDJfdTM1MDAoX19tMTI4ZCk7CitJTVBPUlQgQ09O
U1QgX19tMTI4ZCBTbGVlZl9jaW56X2Zhc3RzaW5kMl91MzUwMChfX20xMjhkKTsKK0lNUE9SVCBD
T05TVCBfX20xMjhkIFNsZWVmX2Zhc3Rjb3NkMl91MzUwMChfX20xMjhkKTsKK0lNUE9SVCBDT05T
VCBfX20xMjhkIFNsZWVmX2NpbnpfZmFzdGNvc2QyX3UzNTAwKF9fbTEyOGQpOworSU1QT1JUIENP
TlNUIF9fbTEyOGQgU2xlZWZfZmFzdHBvd2QyX3UzNTAwKF9fbTEyOGQsIF9fbTEyOGQpOworSU1Q
T1JUIENPTlNUIF9fbTEyOGQgU2xlZWZfY2luel9mYXN0cG93ZDJfdTM1MDAoX19tMTI4ZCwgX19t
MTI4ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9hc2luaGQyX3UxMChfX20xMjhkKTsK
K0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2NpbnpfYXNpbmhkMl91MTAoX19tMTI4ZCk7CitJ
TVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9hY29zaGQyX3UxMChfX20xMjhkKTsKK0lNUE9SVCBD
T05TVCBfX20xMjhkIFNsZWVmX2NpbnpfYWNvc2hkMl91MTAoX19tMTI4ZCk7CitJTVBPUlQgQ09O
U1QgX19tMTI4ZCBTbGVlZl9hdGFuaGQyX3UxMChfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBfX20x
MjhkIFNsZWVmX2NpbnpfYXRhbmhkMl91MTAoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4
ZCBTbGVlZl9leHAyZDJfdTEwKF9fbTEyOGQpOworSU1QT1JUIENPTlNUIF9fbTEyOGQgU2xlZWZf
Y2luel9leHAyZDJfdTEwKF9fbTEyOGQpOworSU1QT1JUIENPTlNUIF9fbTEyOGQgU2xlZWZfZXhw
MmQyX3UzNShfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2NpbnpfZXhwMmQy
X3UzNShfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2V4cDEwZDJfdTEwKF9f
bTEyOGQpOworSU1QT1JUIENPTlNUIF9fbTEyOGQgU2xlZWZfY2luel9leHAxMGQyX3UxMChfX20x
MjhkKTsKK0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2V4cDEwZDJfdTM1KF9fbTEyOGQpOwor
SU1QT1JUIENPTlNUIF9fbTEyOGQgU2xlZWZfY2luel9leHAxMGQyX3UzNShfX20xMjhkKTsKK0lN
UE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2V4cG0xZDJfdTEwKF9fbTEyOGQpOworSU1QT1JUIENP
TlNUIF9fbTEyOGQgU2xlZWZfY2luel9leHBtMWQyX3UxMChfX20xMjhkKTsKK0lNUE9SVCBDT05T
VCBfX20xMjhkIFNsZWVmX2xvZzEwZDJfdTEwKF9fbTEyOGQpOworSU1QT1JUIENPTlNUIF9fbTEy
OGQgU2xlZWZfY2luel9sb2cxMGQyX3UxMChfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBfX20xMjhk
IFNsZWVmX2xvZzJkMl91MTAoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9j
aW56X2xvZzJkMl91MTAoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9sb2cy
ZDJfdTM1KF9fbTEyOGQpOworSU1QT1JUIENPTlNUIF9fbTEyOGQgU2xlZWZfY2luel9sb2cyZDJf
dTM1KF9fbTEyOGQpOworSU1QT1JUIENPTlNUIF9fbTEyOGQgU2xlZWZfbG9nMXBkMl91MTAoX19t
MTI4ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9jaW56X2xvZzFwZDJfdTEwKF9fbTEy
OGQpOworSU1QT1JUIENPTlNUIFNsZWVmX19fbTEyOGRfMiBTbGVlZl9zaW5jb3NwaWQyX3UwNShf
X20xMjhkKTsKK0lNUE9SVCBDT05TVCBTbGVlZl9fX20xMjhkXzIgU2xlZWZfY2luel9zaW5jb3Nw
aWQyX3UwNShfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBTbGVlZl9fX20xMjhkXzIgU2xlZWZfc2lu
Y29zcGlkMl91MzUoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgU2xlZWZfX19tMTI4ZF8yIFNsZWVm
X2Npbnpfc2luY29zcGlkMl91MzUoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVl
Zl9zaW5waWQyX3UwNShfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2Npbnpf
c2lucGlkMl91MDUoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9jb3NwaWQy
X3UwNShfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2NpbnpfY29zcGlkMl91
MDUoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9sZGV4cGQyKF9fbTEyOGQs
IF9fbTEyOGkpOworSU1QT1JUIENPTlNUIF9fbTEyOGQgU2xlZWZfY2luel9sZGV4cGQyKF9fbTEy
OGQsIF9fbTEyOGkpOworSU1QT1JUIENPTlNUIF9fbTEyOGkgU2xlZWZfaWxvZ2JkMihfX20xMjhk
KTsKK0lNUE9SVCBDT05TVCBfX20xMjhpIFNsZWVmX2NpbnpfaWxvZ2JkMihfX20xMjhkKTsKK0lN
UE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2ZtYWQyKF9fbTEyOGQsIF9fbTEyOGQsIF9fbTEyOGQp
OworSU1QT1JUIENPTlNUIF9fbTEyOGQgU2xlZWZfY2luel9mbWFkMihfX20xMjhkLCBfX20xMjhk
LCBfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX3NxcnRkMihfX20xMjhkKTsK
K0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2Npbnpfc3FydGQyKF9fbTEyOGQpOworSU1QT1JU
IENPTlNUIF9fbTEyOGQgU2xlZWZfc3FydGQyX3UwNShfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBf
X20xMjhkIFNsZWVmX2Npbnpfc3FydGQyX3UwNShfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBfX20x
MjhkIFNsZWVmX3NxcnRkMl91MzUoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVl
Zl9jaW56X3NxcnRkMl91MzUoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9o
eXBvdGQyX3UwNShfX20xMjhkLCBfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVm
X2NpbnpfaHlwb3RkMl91MDUoX19tMTI4ZCwgX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4
ZCBTbGVlZl9oeXBvdGQyX3UzNShfX20xMjhkLCBfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBfX20x
MjhkIFNsZWVmX2NpbnpfaHlwb3RkMl91MzUoX19tMTI4ZCwgX19tMTI4ZCk7CitJTVBPUlQgQ09O
U1QgX19tMTI4ZCBTbGVlZl9mYWJzZDIoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBT
bGVlZl9jaW56X2ZhYnNkMihfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2Nv
cHlzaWduZDIoX19tMTI4ZCwgX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9j
aW56X2NvcHlzaWduZDIoX19tMTI4ZCwgX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBT
bGVlZl9mbWF4ZDIoX19tMTI4ZCwgX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVl
Zl9jaW56X2ZtYXhkMihfX20xMjhkLCBfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBfX20xMjhkIFNs
ZWVmX2ZtaW5kMihfX20xMjhkLCBfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVm
X2NpbnpfZm1pbmQyKF9fbTEyOGQsIF9fbTEyOGQpOworSU1QT1JUIENPTlNUIF9fbTEyOGQgU2xl
ZWZfZmRpbWQyKF9fbTEyOGQsIF9fbTEyOGQpOworSU1QT1JUIENPTlNUIF9fbTEyOGQgU2xlZWZf
Y2luel9mZGltZDIoX19tMTI4ZCwgX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVl
Zl90cnVuY2QyKF9fbTEyOGQpOworSU1QT1JUIENPTlNUIF9fbTEyOGQgU2xlZWZfY2luel90cnVu
Y2QyKF9fbTEyOGQpOworSU1QT1JUIENPTlNUIF9fbTEyOGQgU2xlZWZfZmxvb3JkMihfX20xMjhk
KTsKK0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2NpbnpfZmxvb3JkMihfX20xMjhkKTsKK0lN
UE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2NlaWxkMihfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBf
X20xMjhkIFNsZWVmX2NpbnpfY2VpbGQyKF9fbTEyOGQpOworSU1QT1JUIENPTlNUIF9fbTEyOGQg
U2xlZWZfcm91bmRkMihfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2Npbnpf
cm91bmRkMihfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX3JpbnRkMihfX20x
MjhkKTsKK0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2NpbnpfcmludGQyKF9fbTEyOGQpOwor
SU1QT1JUIENPTlNUIF9fbTEyOGQgU2xlZWZfbmV4dGFmdGVyZDIoX19tMTI4ZCwgX19tMTI4ZCk7
CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9jaW56X25leHRhZnRlcmQyKF9fbTEyOGQsIF9f
bTEyOGQpOworSU1QT1JUIENPTlNUIF9fbTEyOGQgU2xlZWZfZnJmcmV4cGQyKF9fbTEyOGQpOwor
SU1QT1JUIENPTlNUIF9fbTEyOGQgU2xlZWZfY2luel9mcmZyZXhwZDIoX19tMTI4ZCk7CitJTVBP
UlQgQ09OU1QgX19tMTI4aSBTbGVlZl9leHBmcmV4cGQyKF9fbTEyOGQpOworSU1QT1JUIENPTlNU
IF9fbTEyOGkgU2xlZWZfY2luel9leHBmcmV4cGQyKF9fbTEyOGQpOworSU1QT1JUIENPTlNUIF9f
bTEyOGQgU2xlZWZfZm1vZGQyKF9fbTEyOGQsIF9fbTEyOGQpOworSU1QT1JUIENPTlNUIF9fbTEy
OGQgU2xlZWZfY2luel9mbW9kZDIoX19tMTI4ZCwgX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgU2xl
ZWZfX19tMTI4ZF8yIFNsZWVmX21vZGZkMihfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBTbGVlZl9f
X20xMjhkXzIgU2xlZWZfY2luel9tb2RmZDIoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4
ZCBTbGVlZl9sZ2FtbWFkMl91MTAoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVl
Zl9jaW56X2xnYW1tYWQyX3UxMChfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVm
X3RnYW1tYWQyX3UxMChfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2Npbnpf
dGdhbW1hZDJfdTEwKF9fbTEyOGQpOworSU1QT1JUIENPTlNUIF9fbTEyOGQgU2xlZWZfZXJmZDJf
dTEwKF9fbTEyOGQpOworSU1QT1JUIENPTlNUIF9fbTEyOGQgU2xlZWZfY2luel9lcmZkMl91MTAo
X19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9lcmZjZDJfdTE1KF9fbTEyOGQp
OworSU1QT1JUIENPTlNUIF9fbTEyOGQgU2xlZWZfY2luel9lcmZjZDJfdTE1KF9fbTEyOGQpOwor
SU1QT1JUIENPTlNUIGludCBTbGVlZl9nZXRJbnRkMihpbnQpOworSU1QT1JUIENPTlNUIHZvaWQg
KlNsZWVmX2dldFB0cmQyKGludCk7CisKKyNpZm5kZWYgU2xlZWZfX19tMTI4XzJfREVGSU5FRAor
dHlwZWRlZiBTVFJVQ1RfS0VZV09SRF9fX1NTRTJfXyB7CisgIF9fbTEyOCB4LCB5OworfSBTbGVl
Zl9fX20xMjhfMjsKKyNkZWZpbmUgU2xlZWZfX19tMTI4XzJfREVGSU5FRAorI2VuZGlmCisKK0lN
UE9SVCBDT05TVCBfX20xMjggU2xlZWZfc2luZjRfdTM1KF9fbTEyOCk7CitJTVBPUlQgQ09OU1Qg
X19tMTI4IFNsZWVmX2Npbnpfc2luZjRfdTM1KF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4
IFNsZWVmX2Nvc2Y0X3UzNShfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9jaW56
X2Nvc2Y0X3UzNShfX20xMjgpOworSU1QT1JUIENPTlNUIFNsZWVmX19fbTEyOF8yIFNsZWVmX3Np
bmNvc2Y0X3UzNShfX20xMjgpOworSU1QT1JUIENPTlNUIFNsZWVmX19fbTEyOF8yIFNsZWVmX2Np
bnpfc2luY29zZjRfdTM1KF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX3RhbmY0
X3UzNShfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9jaW56X3RhbmY0X3UzNShf
X20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9hc2luZjRfdTM1KF9fbTEyOCk7CitJ
TVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX2NpbnpfYXNpbmY0X3UzNShfX20xMjgpOworSU1QT1JU
IENPTlNUIF9fbTEyOCBTbGVlZl9hY29zZjRfdTM1KF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19t
MTI4IFNsZWVmX2NpbnpfYWNvc2Y0X3UzNShfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBT
bGVlZl9hdGFuZjRfdTM1KF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX2Npbnpf
YXRhbmY0X3UzNShfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9hdGFuMmY0X3Uz
NShfX20xMjgsIF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX2NpbnpfYXRhbjJm
NF91MzUoX19tMTI4LCBfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9sb2dmNF91
MzUoX19tMTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZfY2luel9sb2dmNF91MzUoX19t
MTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZfY2JydGY0X3UzNShfX20xMjgpOworSU1Q
T1JUIENPTlNUIF9fbTEyOCBTbGVlZl9jaW56X2NicnRmNF91MzUoX19tMTI4KTsKK0lNUE9SVCBD
T05TVCBfX20xMjggU2xlZWZfc2luZjRfdTEwKF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4
IFNsZWVmX2Npbnpfc2luZjRfdTEwKF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVm
X2Nvc2Y0X3UxMChfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9jaW56X2Nvc2Y0
X3UxMChfX20xMjgpOworSU1QT1JUIENPTlNUIFNsZWVmX19fbTEyOF8yIFNsZWVmX3NpbmNvc2Y0
X3UxMChfX20xMjgpOworSU1QT1JUIENPTlNUIFNsZWVmX19fbTEyOF8yIFNsZWVmX2Npbnpfc2lu
Y29zZjRfdTEwKF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX3RhbmY0X3UxMChf
X20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9jaW56X3RhbmY0X3UxMChfX20xMjgp
OworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9hc2luZjRfdTEwKF9fbTEyOCk7CitJTVBPUlQg
Q09OU1QgX19tMTI4IFNsZWVmX2NpbnpfYXNpbmY0X3UxMChfX20xMjgpOworSU1QT1JUIENPTlNU
IF9fbTEyOCBTbGVlZl9hY29zZjRfdTEwKF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNs
ZWVmX2NpbnpfYWNvc2Y0X3UxMChfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9h
dGFuZjRfdTEwKF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX2NpbnpfYXRhbmY0
X3UxMChfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9hdGFuMmY0X3UxMChfX20x
MjgsIF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX2NpbnpfYXRhbjJmNF91MTAo
X19tMTI4LCBfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9sb2dmNF91MTAoX19t
MTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZfY2luel9sb2dmNF91MTAoX19tMTI4KTsK
K0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZfY2JydGY0X3UxMChfX20xMjgpOworSU1QT1JUIENP
TlNUIF9fbTEyOCBTbGVlZl9jaW56X2NicnRmNF91MTAoX19tMTI4KTsKK0lNUE9SVCBDT05TVCBf
X20xMjggU2xlZWZfZXhwZjRfdTEwKF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVm
X2NpbnpfZXhwZjRfdTEwKF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX3Bvd2Y0
X3UxMChfX20xMjgsIF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX2NpbnpfcG93
ZjRfdTEwKF9fbTEyOCwgX19tMTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZfc2luaGY0
X3UxMChfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9jaW56X3NpbmhmNF91MTAo
X19tMTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZfY29zaGY0X3UxMChfX20xMjgpOwor
SU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9jaW56X2Nvc2hmNF91MTAoX19tMTI4KTsKK0lNUE9S
VCBDT05TVCBfX20xMjggU2xlZWZfdGFuaGY0X3UxMChfX20xMjgpOworSU1QT1JUIENPTlNUIF9f
bTEyOCBTbGVlZl9jaW56X3RhbmhmNF91MTAoX19tMTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjgg
U2xlZWZfc2luaGY0X3UzNShfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9jaW56
X3NpbmhmNF91MzUoX19tMTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZfY29zaGY0X3Uz
NShfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9jaW56X2Nvc2hmNF91MzUoX19t
MTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZfdGFuaGY0X3UzNShfX20xMjgpOworSU1Q
T1JUIENPTlNUIF9fbTEyOCBTbGVlZl9jaW56X3RhbmhmNF91MzUoX19tMTI4KTsKK0lNUE9SVCBD
T05TVCBfX20xMjggU2xlZWZfZmFzdHNpbmY0X3UzNTAwKF9fbTEyOCk7CitJTVBPUlQgQ09OU1Qg
X19tMTI4IFNsZWVmX2NpbnpfZmFzdHNpbmY0X3UzNTAwKF9fbTEyOCk7CitJTVBPUlQgQ09OU1Qg
X19tMTI4IFNsZWVmX2Zhc3Rjb3NmNF91MzUwMChfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEy
OCBTbGVlZl9jaW56X2Zhc3Rjb3NmNF91MzUwMChfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEy
OCBTbGVlZl9mYXN0cG93ZjRfdTM1MDAoX19tMTI4LCBfX20xMjgpOworSU1QT1JUIENPTlNUIF9f
bTEyOCBTbGVlZl9jaW56X2Zhc3Rwb3dmNF91MzUwMChfX20xMjgsIF9fbTEyOCk7CitJTVBPUlQg
Q09OU1QgX19tMTI4IFNsZWVmX2FzaW5oZjRfdTEwKF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19t
MTI4IFNsZWVmX2NpbnpfYXNpbmhmNF91MTAoX19tMTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjgg
U2xlZWZfYWNvc2hmNF91MTAoX19tMTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZfY2lu
el9hY29zaGY0X3UxMChfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9hdGFuaGY0
X3UxMChfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9jaW56X2F0YW5oZjRfdTEw
KF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX2V4cDJmNF91MTAoX19tMTI4KTsK
K0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZfY2luel9leHAyZjRfdTEwKF9fbTEyOCk7CitJTVBP
UlQgQ09OU1QgX19tMTI4IFNsZWVmX2V4cDJmNF91MzUoX19tMTI4KTsKK0lNUE9SVCBDT05TVCBf
X20xMjggU2xlZWZfY2luel9leHAyZjRfdTM1KF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4
IFNsZWVmX2V4cDEwZjRfdTEwKF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX2Np
bnpfZXhwMTBmNF91MTAoX19tMTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZfZXhwMTBm
NF91MzUoX19tMTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZfY2luel9leHAxMGY0X3Uz
NShfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9leHBtMWY0X3UxMChfX20xMjgp
OworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9jaW56X2V4cG0xZjRfdTEwKF9fbTEyOCk7CitJ
TVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX2xvZzEwZjRfdTEwKF9fbTEyOCk7CitJTVBPUlQgQ09O
U1QgX19tMTI4IFNsZWVmX2NpbnpfbG9nMTBmNF91MTAoX19tMTI4KTsKK0lNUE9SVCBDT05TVCBf
X20xMjggU2xlZWZfbG9nMmY0X3UxMChfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVl
Zl9jaW56X2xvZzJmNF91MTAoX19tMTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZfbG9n
MmY0X3UzNShfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9jaW56X2xvZzJmNF91
MzUoX19tMTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZfbG9nMXBmNF91MTAoX19tMTI4
KTsKK0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZfY2luel9sb2cxcGY0X3UxMChfX20xMjgpOwor
SU1QT1JUIENPTlNUIFNsZWVmX19fbTEyOF8yIFNsZWVmX3NpbmNvc3BpZjRfdTA1KF9fbTEyOCk7
CitJTVBPUlQgQ09OU1QgU2xlZWZfX19tMTI4XzIgU2xlZWZfY2luel9zaW5jb3NwaWY0X3UwNShf
X20xMjgpOworSU1QT1JUIENPTlNUIFNsZWVmX19fbTEyOF8yIFNsZWVmX3NpbmNvc3BpZjRfdTM1
KF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgU2xlZWZfX19tMTI4XzIgU2xlZWZfY2luel9zaW5jb3Nw
aWY0X3UzNShfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9zaW5waWY0X3UwNShf
X20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9jaW56X3NpbnBpZjRfdTA1KF9fbTEy
OCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX2Nvc3BpZjRfdTA1KF9fbTEyOCk7CitJTVBP
UlQgQ09OU1QgX19tMTI4IFNsZWVmX2NpbnpfY29zcGlmNF91MDUoX19tMTI4KTsKK0lNUE9SVCBD
T05TVCBfX20xMjggU2xlZWZfZm1hZjQoX19tMTI4LCBfX20xMjgsIF9fbTEyOCk7CitJTVBPUlQg
Q09OU1QgX19tMTI4IFNsZWVmX2NpbnpfZm1hZjQoX19tMTI4LCBfX20xMjgsIF9fbTEyOCk7CitJ
TVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX3NxcnRmNChfX20xMjgpOworSU1QT1JUIENPTlNUIF9f
bTEyOCBTbGVlZl9jaW56X3NxcnRmNChfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVl
Zl9zcXJ0ZjRfdTA1KF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX2Npbnpfc3Fy
dGY0X3UwNShfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9zcXJ0ZjRfdTM1KF9f
bTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX2Npbnpfc3FydGY0X3UzNShfX20xMjgp
OworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9oeXBvdGY0X3UwNShfX20xMjgsIF9fbTEyOCk7
CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX2NpbnpfaHlwb3RmNF91MDUoX19tMTI4LCBfX20x
MjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9oeXBvdGY0X3UzNShfX20xMjgsIF9fbTEy
OCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX2NpbnpfaHlwb3RmNF91MzUoX19tMTI4LCBf
X20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9mYWJzZjQoX19tMTI4KTsKK0lNUE9S
VCBDT05TVCBfX20xMjggU2xlZWZfY2luel9mYWJzZjQoX19tMTI4KTsKK0lNUE9SVCBDT05TVCBf
X20xMjggU2xlZWZfY29weXNpZ25mNChfX20xMjgsIF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19t
MTI4IFNsZWVmX2NpbnpfY29weXNpZ25mNChfX20xMjgsIF9fbTEyOCk7CitJTVBPUlQgQ09OU1Qg
X19tMTI4IFNsZWVmX2ZtYXhmNChfX20xMjgsIF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4
IFNsZWVmX2NpbnpfZm1heGY0KF9fbTEyOCwgX19tMTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjgg
U2xlZWZfZm1pbmY0KF9fbTEyOCwgX19tMTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZf
Y2luel9mbWluZjQoX19tMTI4LCBfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9m
ZGltZjQoX19tMTI4LCBfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9jaW56X2Zk
aW1mNChfX20xMjgsIF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX3RydW5jZjQo
X19tMTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZfY2luel90cnVuY2Y0KF9fbTEyOCk7
CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX2Zsb29yZjQoX19tMTI4KTsKK0lNUE9SVCBDT05T
VCBfX20xMjggU2xlZWZfY2luel9mbG9vcmY0KF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4
IFNsZWVmX2NlaWxmNChfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9jaW56X2Nl
aWxmNChfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9yb3VuZGY0KF9fbTEyOCk7
CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX2Npbnpfcm91bmRmNChfX20xMjgpOworSU1QT1JU
IENPTlNUIF9fbTEyOCBTbGVlZl9yaW50ZjQoX19tMTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjgg
U2xlZWZfY2luel9yaW50ZjQoX19tMTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZfbmV4
dGFmdGVyZjQoX19tMTI4LCBfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9jaW56
X25leHRhZnRlcmY0KF9fbTEyOCwgX19tMTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZf
ZnJmcmV4cGY0KF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX2NpbnpfZnJmcmV4
cGY0KF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX2Ztb2RmNChfX20xMjgsIF9f
bTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX2NpbnpfZm1vZGY0KF9fbTEyOCwgX19t
MTI4KTsKK0lNUE9SVCBDT05TVCBTbGVlZl9fX20xMjhfMiBTbGVlZl9tb2RmZjQoX19tMTI4KTsK
K0lNUE9SVCBDT05TVCBTbGVlZl9fX20xMjhfMiBTbGVlZl9jaW56X21vZGZmNChfX20xMjgpOwor
SU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9sZ2FtbWFmNF91MTAoX19tMTI4KTsKK0lNUE9SVCBD
T05TVCBfX20xMjggU2xlZWZfY2luel9sZ2FtbWFmNF91MTAoX19tMTI4KTsKK0lNUE9SVCBDT05T
VCBfX20xMjggU2xlZWZfdGdhbW1hZjRfdTEwKF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4
IFNsZWVmX2NpbnpfdGdhbW1hZjRfdTEwKF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNs
ZWVmX2VyZmY0X3UxMChfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9jaW56X2Vy
ZmY0X3UxMChfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9lcmZjZjRfdTE1KF9f
bTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX2NpbnpfZXJmY2Y0X3UxNShfX20xMjgp
OworSU1QT1JUIENPTlNUIGludCBTbGVlZl9nZXRJbnRmNChpbnQpOworSU1QT1JUIENPTlNUIGlu
dCBTbGVlZl9jaW56X2dldEludGY0KGludCk7CitJTVBPUlQgQ09OU1Qgdm9pZCAqU2xlZWZfZ2V0
UHRyZjQoaW50KTsKK0lNUE9SVCBDT05TVCB2b2lkICpTbGVlZl9jaW56X2dldFB0cmY0KGludCk7
CisjZW5kaWYKKyNpZmRlZiBfX1NTRTJfXworI2RlZmluZSBTVFJVQ1RfS0VZV09SRF9fX1NTRTJf
XyBzdHJ1Y3QKKworI2lmbmRlZiBTbGVlZl9fX20xMjhkXzJfREVGSU5FRAordHlwZWRlZiBTVFJV
Q1RfS0VZV09SRF9fX1NTRTJfXyB7CisgIF9fbTEyOGQgeCwgeTsKK30gU2xlZWZfX19tMTI4ZF8y
OworI2RlZmluZSBTbGVlZl9fX20xMjhkXzJfREVGSU5FRAorI2VuZGlmCisKK0lNUE9SVCBDT05T
VCBfX20xMjhkIFNsZWVmX3NpbmQyX3UzNXNzZTIoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19t
MTI4ZCBTbGVlZl9jaW56X3NpbmQyX3UzNXNzZTIoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19t
MTI4ZCBTbGVlZl9jb3NkMl91MzVzc2UyKF9fbTEyOGQpOworSU1QT1JUIENPTlNUIF9fbTEyOGQg
U2xlZWZfY2luel9jb3NkMl91MzVzc2UyKF9fbTEyOGQpOworSU1QT1JUIENPTlNUIFNsZWVmX19f
bTEyOGRfMiBTbGVlZl9zaW5jb3NkMl91MzVzc2UyKF9fbTEyOGQpOworSU1QT1JUIENPTlNUIFNs
ZWVmX19fbTEyOGRfMiBTbGVlZl9jaW56X3NpbmNvc2QyX3UzNXNzZTIoX19tMTI4ZCk7CitJTVBP
UlQgQ09OU1QgX19tMTI4ZCBTbGVlZl90YW5kMl91MzVzc2UyKF9fbTEyOGQpOworSU1QT1JUIENP
TlNUIF9fbTEyOGQgU2xlZWZfY2luel90YW5kMl91MzVzc2UyKF9fbTEyOGQpOworSU1QT1JUIENP
TlNUIF9fbTEyOGQgU2xlZWZfYXNpbmQyX3UzNXNzZTIoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1Qg
X19tMTI4ZCBTbGVlZl9jaW56X2FzaW5kMl91MzVzc2UyKF9fbTEyOGQpOworSU1QT1JUIENPTlNU
IF9fbTEyOGQgU2xlZWZfYWNvc2QyX3UzNXNzZTIoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19t
MTI4ZCBTbGVlZl9jaW56X2Fjb3NkMl91MzVzc2UyKF9fbTEyOGQpOworSU1QT1JUIENPTlNUIF9f
bTEyOGQgU2xlZWZfYXRhbmQyX3UzNXNzZTIoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4
ZCBTbGVlZl9jaW56X2F0YW5kMl91MzVzc2UyKF9fbTEyOGQpOworSU1QT1JUIENPTlNUIF9fbTEy
OGQgU2xlZWZfYXRhbjJkMl91MzVzc2UyKF9fbTEyOGQsIF9fbTEyOGQpOworSU1QT1JUIENPTlNU
IF9fbTEyOGQgU2xlZWZfY2luel9hdGFuMmQyX3UzNXNzZTIoX19tMTI4ZCwgX19tMTI4ZCk7CitJ
TVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9sb2dkMl91MzVzc2UyKF9fbTEyOGQpOworSU1QT1JU
IENPTlNUIF9fbTEyOGQgU2xlZWZfY2luel9sb2dkMl91MzVzc2UyKF9fbTEyOGQpOworSU1QT1JU
IENPTlNUIF9fbTEyOGQgU2xlZWZfY2JydGQyX3UzNXNzZTIoX19tMTI4ZCk7CitJTVBPUlQgQ09O
U1QgX19tMTI4ZCBTbGVlZl9jaW56X2NicnRkMl91MzVzc2UyKF9fbTEyOGQpOworSU1QT1JUIENP
TlNUIF9fbTEyOGQgU2xlZWZfc2luZDJfdTEwc3NlMihfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBf
X20xMjhkIFNsZWVmX2Npbnpfc2luZDJfdTEwc3NlMihfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBf
X20xMjhkIFNsZWVmX2Nvc2QyX3UxMHNzZTIoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4
ZCBTbGVlZl9jaW56X2Nvc2QyX3UxMHNzZTIoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgU2xlZWZf
X19tMTI4ZF8yIFNsZWVmX3NpbmNvc2QyX3UxMHNzZTIoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1Qg
U2xlZWZfX19tMTI4ZF8yIFNsZWVmX2Npbnpfc2luY29zZDJfdTEwc3NlMihfX20xMjhkKTsKK0lN
UE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX3RhbmQyX3UxMHNzZTIoX19tMTI4ZCk7CitJTVBPUlQg
Q09OU1QgX19tMTI4ZCBTbGVlZl9jaW56X3RhbmQyX3UxMHNzZTIoX19tMTI4ZCk7CitJTVBPUlQg
Q09OU1QgX19tMTI4ZCBTbGVlZl9hc2luZDJfdTEwc3NlMihfX20xMjhkKTsKK0lNUE9SVCBDT05T
VCBfX20xMjhkIFNsZWVmX2NpbnpfYXNpbmQyX3UxMHNzZTIoX19tMTI4ZCk7CitJTVBPUlQgQ09O
U1QgX19tMTI4ZCBTbGVlZl9hY29zZDJfdTEwc3NlMihfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBf
X20xMjhkIFNsZWVmX2NpbnpfYWNvc2QyX3UxMHNzZTIoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1Qg
X19tMTI4ZCBTbGVlZl9hdGFuZDJfdTEwc3NlMihfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBfX20x
MjhkIFNsZWVmX2NpbnpfYXRhbmQyX3UxMHNzZTIoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19t
MTI4ZCBTbGVlZl9hdGFuMmQyX3UxMHNzZTIoX19tMTI4ZCwgX19tMTI4ZCk7CitJTVBPUlQgQ09O
U1QgX19tMTI4ZCBTbGVlZl9jaW56X2F0YW4yZDJfdTEwc3NlMihfX20xMjhkLCBfX20xMjhkKTsK
K0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2xvZ2QyX3UxMHNzZTIoX19tMTI4ZCk7CitJTVBP
UlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9jaW56X2xvZ2QyX3UxMHNzZTIoX19tMTI4ZCk7CitJTVBP
UlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9jYnJ0ZDJfdTEwc3NlMihfX20xMjhkKTsKK0lNUE9SVCBD
T05TVCBfX20xMjhkIFNsZWVmX2NpbnpfY2JydGQyX3UxMHNzZTIoX19tMTI4ZCk7CitJTVBPUlQg
Q09OU1QgX19tMTI4ZCBTbGVlZl9leHBkMl91MTBzc2UyKF9fbTEyOGQpOworSU1QT1JUIENPTlNU
IF9fbTEyOGQgU2xlZWZfY2luel9leHBkMl91MTBzc2UyKF9fbTEyOGQpOworSU1QT1JUIENPTlNU
IF9fbTEyOGQgU2xlZWZfcG93ZDJfdTEwc3NlMihfX20xMjhkLCBfX20xMjhkKTsKK0lNUE9SVCBD
T05TVCBfX20xMjhkIFNsZWVmX2NpbnpfcG93ZDJfdTEwc3NlMihfX20xMjhkLCBfX20xMjhkKTsK
K0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX3NpbmhkMl91MTBzc2UyKF9fbTEyOGQpOworSU1Q
T1JUIENPTlNUIF9fbTEyOGQgU2xlZWZfY2luel9zaW5oZDJfdTEwc3NlMihfX20xMjhkKTsKK0lN
UE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2Nvc2hkMl91MTBzc2UyKF9fbTEyOGQpOworSU1QT1JU
IENPTlNUIF9fbTEyOGQgU2xlZWZfY2luel9jb3NoZDJfdTEwc3NlMihfX20xMjhkKTsKK0lNUE9S
VCBDT05TVCBfX20xMjhkIFNsZWVmX3RhbmhkMl91MTBzc2UyKF9fbTEyOGQpOworSU1QT1JUIENP
TlNUIF9fbTEyOGQgU2xlZWZfY2luel90YW5oZDJfdTEwc3NlMihfX20xMjhkKTsKK0lNUE9SVCBD
T05TVCBfX20xMjhkIFNsZWVmX3NpbmhkMl91MzVzc2UyKF9fbTEyOGQpOworSU1QT1JUIENPTlNU
IF9fbTEyOGQgU2xlZWZfY2luel9zaW5oZDJfdTM1c3NlMihfX20xMjhkKTsKK0lNUE9SVCBDT05T
VCBfX20xMjhkIFNsZWVmX2Nvc2hkMl91MzVzc2UyKF9fbTEyOGQpOworSU1QT1JUIENPTlNUIF9f
bTEyOGQgU2xlZWZfY2luel9jb3NoZDJfdTM1c3NlMihfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBf
X20xMjhkIFNsZWVmX3RhbmhkMl91MzVzc2UyKF9fbTEyOGQpOworSU1QT1JUIENPTlNUIF9fbTEy
OGQgU2xlZWZfY2luel90YW5oZDJfdTM1c3NlMihfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBfX20x
MjhkIFNsZWVmX2Zhc3RzaW5kMl91MzUwMHNzZTIoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19t
MTI4ZCBTbGVlZl9jaW56X2Zhc3RzaW5kMl91MzUwMHNzZTIoX19tMTI4ZCk7CitJTVBPUlQgQ09O
U1QgX19tMTI4ZCBTbGVlZl9mYXN0Y29zZDJfdTM1MDBzc2UyKF9fbTEyOGQpOworSU1QT1JUIENP
TlNUIF9fbTEyOGQgU2xlZWZfY2luel9mYXN0Y29zZDJfdTM1MDBzc2UyKF9fbTEyOGQpOworSU1Q
T1JUIENPTlNUIF9fbTEyOGQgU2xlZWZfZmFzdHBvd2QyX3UzNTAwc3NlMihfX20xMjhkLCBfX20x
MjhkKTsKK0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2NpbnpfZmFzdHBvd2QyX3UzNTAwc3Nl
MihfX20xMjhkLCBfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2FzaW5oZDJf
dTEwc3NlMihfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2NpbnpfYXNpbmhk
Ml91MTBzc2UyKF9fbTEyOGQpOworSU1QT1JUIENPTlNUIF9fbTEyOGQgU2xlZWZfYWNvc2hkMl91
MTBzc2UyKF9fbTEyOGQpOworSU1QT1JUIENPTlNUIF9fbTEyOGQgU2xlZWZfY2luel9hY29zaGQy
X3UxMHNzZTIoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9hdGFuaGQyX3Ux
MHNzZTIoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9jaW56X2F0YW5oZDJf
dTEwc3NlMihfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2V4cDJkMl91MTBz
c2UyKF9fbTEyOGQpOworSU1QT1JUIENPTlNUIF9fbTEyOGQgU2xlZWZfY2luel9leHAyZDJfdTEw
c3NlMihfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2V4cDJkMl91MzVzc2Uy
KF9fbTEyOGQpOworSU1QT1JUIENPTlNUIF9fbTEyOGQgU2xlZWZfY2luel9leHAyZDJfdTM1c3Nl
MihfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2V4cDEwZDJfdTEwc3NlMihf
X20xMjhkKTsKK0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2NpbnpfZXhwMTBkMl91MTBzc2Uy
KF9fbTEyOGQpOworSU1QT1JUIENPTlNUIF9fbTEyOGQgU2xlZWZfZXhwMTBkMl91MzVzc2UyKF9f
bTEyOGQpOworSU1QT1JUIENPTlNUIF9fbTEyOGQgU2xlZWZfY2luel9leHAxMGQyX3UzNXNzZTIo
X19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9leHBtMWQyX3UxMHNzZTIoX19t
MTI4ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9jaW56X2V4cG0xZDJfdTEwc3NlMihf
X20xMjhkKTsKK0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2xvZzEwZDJfdTEwc3NlMihfX20x
MjhkKTsKK0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2NpbnpfbG9nMTBkMl91MTBzc2UyKF9f
bTEyOGQpOworSU1QT1JUIENPTlNUIF9fbTEyOGQgU2xlZWZfbG9nMmQyX3UxMHNzZTIoX19tMTI4
ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9jaW56X2xvZzJkMl91MTBzc2UyKF9fbTEy
OGQpOworSU1QT1JUIENPTlNUIF9fbTEyOGQgU2xlZWZfbG9nMmQyX3UzNXNzZTIoX19tMTI4ZCk7
CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9jaW56X2xvZzJkMl91MzVzc2UyKF9fbTEyOGQp
OworSU1QT1JUIENPTlNUIF9fbTEyOGQgU2xlZWZfbG9nMXBkMl91MTBzc2UyKF9fbTEyOGQpOwor
SU1QT1JUIENPTlNUIF9fbTEyOGQgU2xlZWZfY2luel9sb2cxcGQyX3UxMHNzZTIoX19tMTI4ZCk7
CitJTVBPUlQgQ09OU1QgU2xlZWZfX19tMTI4ZF8yIFNsZWVmX3NpbmNvc3BpZDJfdTA1c3NlMihf
X20xMjhkKTsKK0lNUE9SVCBDT05TVCBTbGVlZl9fX20xMjhkXzIgU2xlZWZfY2luel9zaW5jb3Nw
aWQyX3UwNXNzZTIoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgU2xlZWZfX19tMTI4ZF8yIFNsZWVm
X3NpbmNvc3BpZDJfdTM1c3NlMihfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBTbGVlZl9fX20xMjhk
XzIgU2xlZWZfY2luel9zaW5jb3NwaWQyX3UzNXNzZTIoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1Qg
X19tMTI4ZCBTbGVlZl9zaW5waWQyX3UwNXNzZTIoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19t
MTI4ZCBTbGVlZl9jaW56X3NpbnBpZDJfdTA1c3NlMihfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBf
X20xMjhkIFNsZWVmX2Nvc3BpZDJfdTA1c3NlMihfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBfX20x
MjhkIFNsZWVmX2NpbnpfY29zcGlkMl91MDVzc2UyKF9fbTEyOGQpOworSU1QT1JUIENPTlNUIF9f
bTEyOGQgU2xlZWZfbGRleHBkMl9zc2UyKF9fbTEyOGQsIF9fbTEyOGkpOworSU1QT1JUIENPTlNU
IF9fbTEyOGQgU2xlZWZfY2luel9sZGV4cGQyX3NzZTIoX19tMTI4ZCwgX19tMTI4aSk7CitJTVBP
UlQgQ09OU1QgX19tMTI4aSBTbGVlZl9pbG9nYmQyX3NzZTIoX19tMTI4ZCk7CitJTVBPUlQgQ09O
U1QgX19tMTI4aSBTbGVlZl9jaW56X2lsb2diZDJfc3NlMihfX20xMjhkKTsKK0lNUE9SVCBDT05T
VCBfX20xMjhkIFNsZWVmX2ZtYWQyX3NzZTIoX19tMTI4ZCwgX19tMTI4ZCwgX19tMTI4ZCk7CitJ
TVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9jaW56X2ZtYWQyX3NzZTIoX19tMTI4ZCwgX19tMTI4
ZCwgX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9zcXJ0ZDJfc3NlMihfX20x
MjhkKTsKK0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2Npbnpfc3FydGQyX3NzZTIoX19tMTI4
ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9zcXJ0ZDJfdTA1c3NlMihfX20xMjhkKTsK
K0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2Npbnpfc3FydGQyX3UwNXNzZTIoX19tMTI4ZCk7
CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9zcXJ0ZDJfdTM1c3NlMihfX20xMjhkKTsKK0lN
UE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2Npbnpfc3FydGQyX3UzNXNzZTIoX19tMTI4ZCk7CitJ
TVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9oeXBvdGQyX3UwNXNzZTIoX19tMTI4ZCwgX19tMTI4
ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9jaW56X2h5cG90ZDJfdTA1c3NlMihfX20x
MjhkLCBfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2h5cG90ZDJfdTM1c3Nl
MihfX20xMjhkLCBfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2NpbnpfaHlw
b3RkMl91MzVzc2UyKF9fbTEyOGQsIF9fbTEyOGQpOworSU1QT1JUIENPTlNUIF9fbTEyOGQgU2xl
ZWZfZmFic2QyX3NzZTIoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9jaW56
X2ZhYnNkMl9zc2UyKF9fbTEyOGQpOworSU1QT1JUIENPTlNUIF9fbTEyOGQgU2xlZWZfY29weXNp
Z25kMl9zc2UyKF9fbTEyOGQsIF9fbTEyOGQpOworSU1QT1JUIENPTlNUIF9fbTEyOGQgU2xlZWZf
Y2luel9jb3B5c2lnbmQyX3NzZTIoX19tMTI4ZCwgX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19t
MTI4ZCBTbGVlZl9mbWF4ZDJfc3NlMihfX20xMjhkLCBfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBf
X20xMjhkIFNsZWVmX2NpbnpfZm1heGQyX3NzZTIoX19tMTI4ZCwgX19tMTI4ZCk7CitJTVBPUlQg
Q09OU1QgX19tMTI4ZCBTbGVlZl9mbWluZDJfc3NlMihfX20xMjhkLCBfX20xMjhkKTsKK0lNUE9S
VCBDT05TVCBfX20xMjhkIFNsZWVmX2NpbnpfZm1pbmQyX3NzZTIoX19tMTI4ZCwgX19tMTI4ZCk7
CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9mZGltZDJfc3NlMihfX20xMjhkLCBfX20xMjhk
KTsKK0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2NpbnpfZmRpbWQyX3NzZTIoX19tMTI4ZCwg
X19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVlZl90cnVuY2QyX3NzZTIoX19tMTI4
ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9jaW56X3RydW5jZDJfc3NlMihfX20xMjhk
KTsKK0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2Zsb29yZDJfc3NlMihfX20xMjhkKTsKK0lN
UE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2NpbnpfZmxvb3JkMl9zc2UyKF9fbTEyOGQpOworSU1Q
T1JUIENPTlNUIF9fbTEyOGQgU2xlZWZfY2VpbGQyX3NzZTIoX19tMTI4ZCk7CitJTVBPUlQgQ09O
U1QgX19tMTI4ZCBTbGVlZl9jaW56X2NlaWxkMl9zc2UyKF9fbTEyOGQpOworSU1QT1JUIENPTlNU
IF9fbTEyOGQgU2xlZWZfcm91bmRkMl9zc2UyKF9fbTEyOGQpOworSU1QT1JUIENPTlNUIF9fbTEy
OGQgU2xlZWZfY2luel9yb3VuZGQyX3NzZTIoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4
ZCBTbGVlZl9yaW50ZDJfc3NlMihfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVm
X2NpbnpfcmludGQyX3NzZTIoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9u
ZXh0YWZ0ZXJkMl9zc2UyKF9fbTEyOGQsIF9fbTEyOGQpOworSU1QT1JUIENPTlNUIF9fbTEyOGQg
U2xlZWZfY2luel9uZXh0YWZ0ZXJkMl9zc2UyKF9fbTEyOGQsIF9fbTEyOGQpOworSU1QT1JUIENP
TlNUIF9fbTEyOGQgU2xlZWZfZnJmcmV4cGQyX3NzZTIoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1Qg
X19tMTI4ZCBTbGVlZl9jaW56X2ZyZnJleHBkMl9zc2UyKF9fbTEyOGQpOworSU1QT1JUIENPTlNU
IF9fbTEyOGkgU2xlZWZfZXhwZnJleHBkMl9zc2UyKF9fbTEyOGQpOworSU1QT1JUIENPTlNUIF9f
bTEyOGkgU2xlZWZfY2luel9leHBmcmV4cGQyX3NzZTIoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1Qg
X19tMTI4ZCBTbGVlZl9mbW9kZDJfc3NlMihfX20xMjhkLCBfX20xMjhkKTsKK0lNUE9SVCBDT05T
VCBfX20xMjhkIFNsZWVmX2NpbnpfZm1vZGQyX3NzZTIoX19tMTI4ZCwgX19tMTI4ZCk7CitJTVBP
UlQgQ09OU1QgU2xlZWZfX19tMTI4ZF8yIFNsZWVmX21vZGZkMl9zc2UyKF9fbTEyOGQpOworSU1Q
T1JUIENPTlNUIFNsZWVmX19fbTEyOGRfMiBTbGVlZl9jaW56X21vZGZkMl9zc2UyKF9fbTEyOGQp
OworSU1QT1JUIENPTlNUIF9fbTEyOGQgU2xlZWZfbGdhbW1hZDJfdTEwc3NlMihfX20xMjhkKTsK
K0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2NpbnpfbGdhbW1hZDJfdTEwc3NlMihfX20xMjhk
KTsKK0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX3RnYW1tYWQyX3UxMHNzZTIoX19tMTI4ZCk7
CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9jaW56X3RnYW1tYWQyX3UxMHNzZTIoX19tMTI4
ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9lcmZkMl91MTBzc2UyKF9fbTEyOGQpOwor
SU1QT1JUIENPTlNUIF9fbTEyOGQgU2xlZWZfY2luel9lcmZkMl91MTBzc2UyKF9fbTEyOGQpOwor
SU1QT1JUIENPTlNUIF9fbTEyOGQgU2xlZWZfZXJmY2QyX3UxNXNzZTIoX19tMTI4ZCk7CitJTVBP
UlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9jaW56X2VyZmNkMl91MTVzc2UyKF9fbTEyOGQpOworSU1Q
T1JUIENPTlNUIGludCBTbGVlZl9nZXRJbnRkMl9zc2UyKGludCk7CitJTVBPUlQgQ09OU1Qgdm9p
ZCAqU2xlZWZfZ2V0UHRyZDJfc3NlMihpbnQpOworCisjaWZuZGVmIFNsZWVmX19fbTEyOF8yX0RF
RklORUQKK3R5cGVkZWYgU1RSVUNUX0tFWVdPUkRfX19TU0UyX18geworICBfX20xMjggeCwgeTsK
K30gU2xlZWZfX19tMTI4XzI7CisjZGVmaW5lIFNsZWVmX19fbTEyOF8yX0RFRklORUQKKyNlbmRp
ZgorCitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX3NpbmY0X3UzNXNzZTIoX19tMTI4KTsKK0lN
UE9SVCBDT05TVCBfX20xMjggU2xlZWZfY2luel9zaW5mNF91MzVzc2UyKF9fbTEyOCk7CitJTVBP
UlQgQ09OU1QgX19tMTI4IFNsZWVmX2Nvc2Y0X3UzNXNzZTIoX19tMTI4KTsKK0lNUE9SVCBDT05T
VCBfX20xMjggU2xlZWZfY2luel9jb3NmNF91MzVzc2UyKF9fbTEyOCk7CitJTVBPUlQgQ09OU1Qg
U2xlZWZfX19tMTI4XzIgU2xlZWZfc2luY29zZjRfdTM1c3NlMihfX20xMjgpOworSU1QT1JUIENP
TlNUIFNsZWVmX19fbTEyOF8yIFNsZWVmX2Npbnpfc2luY29zZjRfdTM1c3NlMihfX20xMjgpOwor
SU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl90YW5mNF91MzVzc2UyKF9fbTEyOCk7CitJTVBPUlQg
Q09OU1QgX19tMTI4IFNsZWVmX2NpbnpfdGFuZjRfdTM1c3NlMihfX20xMjgpOworSU1QT1JUIENP
TlNUIF9fbTEyOCBTbGVlZl9hc2luZjRfdTM1c3NlMihfX20xMjgpOworSU1QT1JUIENPTlNUIF9f
bTEyOCBTbGVlZl9jaW56X2FzaW5mNF91MzVzc2UyKF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19t
MTI4IFNsZWVmX2Fjb3NmNF91MzVzc2UyKF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNs
ZWVmX2NpbnpfYWNvc2Y0X3UzNXNzZTIoX19tMTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjggU2xl
ZWZfYXRhbmY0X3UzNXNzZTIoX19tMTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZfY2lu
el9hdGFuZjRfdTM1c3NlMihfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9hdGFu
MmY0X3UzNXNzZTIoX19tMTI4LCBfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9j
aW56X2F0YW4yZjRfdTM1c3NlMihfX20xMjgsIF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4
IFNsZWVmX2xvZ2Y0X3UzNXNzZTIoX19tMTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZf
Y2luel9sb2dmNF91MzVzc2UyKF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX2Ni
cnRmNF91MzVzc2UyKF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX2NpbnpfY2Jy
dGY0X3UzNXNzZTIoX19tMTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZfc2luZjRfdTEw
c3NlMihfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9jaW56X3NpbmY0X3UxMHNz
ZTIoX19tMTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZfY29zZjRfdTEwc3NlMihfX20x
MjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9jaW56X2Nvc2Y0X3UxMHNzZTIoX19tMTI4
KTsKK0lNUE9SVCBDT05TVCBTbGVlZl9fX20xMjhfMiBTbGVlZl9zaW5jb3NmNF91MTBzc2UyKF9f
bTEyOCk7CitJTVBPUlQgQ09OU1QgU2xlZWZfX19tMTI4XzIgU2xlZWZfY2luel9zaW5jb3NmNF91
MTBzc2UyKF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX3RhbmY0X3UxMHNzZTIo
X19tMTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZfY2luel90YW5mNF91MTBzc2UyKF9f
bTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX2FzaW5mNF91MTBzc2UyKF9fbTEyOCk7
CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX2NpbnpfYXNpbmY0X3UxMHNzZTIoX19tMTI4KTsK
K0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZfYWNvc2Y0X3UxMHNzZTIoX19tMTI4KTsKK0lNUE9S
VCBDT05TVCBfX20xMjggU2xlZWZfY2luel9hY29zZjRfdTEwc3NlMihfX20xMjgpOworSU1QT1JU
IENPTlNUIF9fbTEyOCBTbGVlZl9hdGFuZjRfdTEwc3NlMihfX20xMjgpOworSU1QT1JUIENPTlNU
IF9fbTEyOCBTbGVlZl9jaW56X2F0YW5mNF91MTBzc2UyKF9fbTEyOCk7CitJTVBPUlQgQ09OU1Qg
X19tMTI4IFNsZWVmX2F0YW4yZjRfdTEwc3NlMihfX20xMjgsIF9fbTEyOCk7CitJTVBPUlQgQ09O
U1QgX19tMTI4IFNsZWVmX2NpbnpfYXRhbjJmNF91MTBzc2UyKF9fbTEyOCwgX19tMTI4KTsKK0lN
UE9SVCBDT05TVCBfX20xMjggU2xlZWZfbG9nZjRfdTEwc3NlMihfX20xMjgpOworSU1QT1JUIENP
TlNUIF9fbTEyOCBTbGVlZl9jaW56X2xvZ2Y0X3UxMHNzZTIoX19tMTI4KTsKK0lNUE9SVCBDT05T
VCBfX20xMjggU2xlZWZfY2JydGY0X3UxMHNzZTIoX19tMTI4KTsKK0lNUE9SVCBDT05TVCBfX20x
MjggU2xlZWZfY2luel9jYnJ0ZjRfdTEwc3NlMihfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEy
OCBTbGVlZl9leHBmNF91MTBzc2UyKF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVm
X2NpbnpfZXhwZjRfdTEwc3NlMihfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9w
b3dmNF91MTBzc2UyKF9fbTEyOCwgX19tMTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZf
Y2luel9wb3dmNF91MTBzc2UyKF9fbTEyOCwgX19tMTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjgg
U2xlZWZfc2luaGY0X3UxMHNzZTIoX19tMTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZf
Y2luel9zaW5oZjRfdTEwc3NlMihfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9j
b3NoZjRfdTEwc3NlMihfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9jaW56X2Nv
c2hmNF91MTBzc2UyKF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX3RhbmhmNF91
MTBzc2UyKF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX2NpbnpfdGFuaGY0X3Ux
MHNzZTIoX19tMTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZfc2luaGY0X3UzNXNzZTIo
X19tMTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZfY2luel9zaW5oZjRfdTM1c3NlMihf
X20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9jb3NoZjRfdTM1c3NlMihfX20xMjgp
OworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9jaW56X2Nvc2hmNF91MzVzc2UyKF9fbTEyOCk7
CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX3RhbmhmNF91MzVzc2UyKF9fbTEyOCk7CitJTVBP
UlQgQ09OU1QgX19tMTI4IFNsZWVmX2NpbnpfdGFuaGY0X3UzNXNzZTIoX19tMTI4KTsKK0lNUE9S
VCBDT05TVCBfX20xMjggU2xlZWZfZmFzdHNpbmY0X3UzNTAwc3NlMihfX20xMjgpOworSU1QT1JU
IENPTlNUIF9fbTEyOCBTbGVlZl9jaW56X2Zhc3RzaW5mNF91MzUwMHNzZTIoX19tMTI4KTsKK0lN
UE9SVCBDT05TVCBfX20xMjggU2xlZWZfZmFzdGNvc2Y0X3UzNTAwc3NlMihfX20xMjgpOworSU1Q
T1JUIENPTlNUIF9fbTEyOCBTbGVlZl9jaW56X2Zhc3Rjb3NmNF91MzUwMHNzZTIoX19tMTI4KTsK
K0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZfZmFzdHBvd2Y0X3UzNTAwc3NlMihfX20xMjgsIF9f
bTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX2NpbnpfZmFzdHBvd2Y0X3UzNTAwc3Nl
MihfX20xMjgsIF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX2FzaW5oZjRfdTEw
c3NlMihfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9jaW56X2FzaW5oZjRfdTEw
c3NlMihfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9hY29zaGY0X3UxMHNzZTIo
X19tMTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZfY2luel9hY29zaGY0X3UxMHNzZTIo
X19tMTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZfYXRhbmhmNF91MTBzc2UyKF9fbTEy
OCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX2NpbnpfYXRhbmhmNF91MTBzc2UyKF9fbTEy
OCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX2V4cDJmNF91MTBzc2UyKF9fbTEyOCk7CitJ
TVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX2NpbnpfZXhwMmY0X3UxMHNzZTIoX19tMTI4KTsKK0lN
UE9SVCBDT05TVCBfX20xMjggU2xlZWZfZXhwMmY0X3UzNXNzZTIoX19tMTI4KTsKK0lNUE9SVCBD
T05TVCBfX20xMjggU2xlZWZfY2luel9leHAyZjRfdTM1c3NlMihfX20xMjgpOworSU1QT1JUIENP
TlNUIF9fbTEyOCBTbGVlZl9leHAxMGY0X3UxMHNzZTIoX19tMTI4KTsKK0lNUE9SVCBDT05TVCBf
X20xMjggU2xlZWZfY2luel9leHAxMGY0X3UxMHNzZTIoX19tMTI4KTsKK0lNUE9SVCBDT05TVCBf
X20xMjggU2xlZWZfZXhwMTBmNF91MzVzc2UyKF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4
IFNsZWVmX2NpbnpfZXhwMTBmNF91MzVzc2UyKF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4
IFNsZWVmX2V4cG0xZjRfdTEwc3NlMihfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVl
Zl9jaW56X2V4cG0xZjRfdTEwc3NlMihfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVl
Zl9sb2cxMGY0X3UxMHNzZTIoX19tMTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZfY2lu
el9sb2cxMGY0X3UxMHNzZTIoX19tMTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZfbG9n
MmY0X3UxMHNzZTIoX19tMTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZfY2luel9sb2cy
ZjRfdTEwc3NlMihfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9sb2cyZjRfdTM1
c3NlMihfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9jaW56X2xvZzJmNF91MzVz
c2UyKF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX2xvZzFwZjRfdTEwc3NlMihf
X20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9jaW56X2xvZzFwZjRfdTEwc3NlMihf
X20xMjgpOworSU1QT1JUIENPTlNUIFNsZWVmX19fbTEyOF8yIFNsZWVmX3NpbmNvc3BpZjRfdTA1
c3NlMihfX20xMjgpOworSU1QT1JUIENPTlNUIFNsZWVmX19fbTEyOF8yIFNsZWVmX2Npbnpfc2lu
Y29zcGlmNF91MDVzc2UyKF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgU2xlZWZfX19tMTI4XzIgU2xl
ZWZfc2luY29zcGlmNF91MzVzc2UyKF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgU2xlZWZfX19tMTI4
XzIgU2xlZWZfY2luel9zaW5jb3NwaWY0X3UzNXNzZTIoX19tMTI4KTsKK0lNUE9SVCBDT05TVCBf
X20xMjggU2xlZWZfc2lucGlmNF91MDVzc2UyKF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4
IFNsZWVmX2Npbnpfc2lucGlmNF91MDVzc2UyKF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4
IFNsZWVmX2Nvc3BpZjRfdTA1c3NlMihfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVl
Zl9jaW56X2Nvc3BpZjRfdTA1c3NlMihfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVl
Zl9mbWFmNF9zc2UyKF9fbTEyOCwgX19tMTI4LCBfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEy
OCBTbGVlZl9jaW56X2ZtYWY0X3NzZTIoX19tMTI4LCBfX20xMjgsIF9fbTEyOCk7CitJTVBPUlQg
Q09OU1QgX19tMTI4IFNsZWVmX3NxcnRmNF9zc2UyKF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19t
MTI4IFNsZWVmX2Npbnpfc3FydGY0X3NzZTIoX19tMTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjgg
U2xlZWZfc3FydGY0X3UwNXNzZTIoX19tMTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZf
Y2luel9zcXJ0ZjRfdTA1c3NlMihfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9z
cXJ0ZjRfdTM1c3NlMihfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9jaW56X3Nx
cnRmNF91MzVzc2UyKF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX2h5cG90ZjRf
dTA1c3NlMihfX20xMjgsIF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX2Npbnpf
aHlwb3RmNF91MDVzc2UyKF9fbTEyOCwgX19tMTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjggU2xl
ZWZfaHlwb3RmNF91MzVzc2UyKF9fbTEyOCwgX19tMTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjgg
U2xlZWZfY2luel9oeXBvdGY0X3UzNXNzZTIoX19tMTI4LCBfX20xMjgpOworSU1QT1JUIENPTlNU
IF9fbTEyOCBTbGVlZl9mYWJzZjRfc3NlMihfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBT
bGVlZl9jaW56X2ZhYnNmNF9zc2UyKF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVm
X2NvcHlzaWduZjRfc3NlMihfX20xMjgsIF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNs
ZWVmX2NpbnpfY29weXNpZ25mNF9zc2UyKF9fbTEyOCwgX19tMTI4KTsKK0lNUE9SVCBDT05TVCBf
X20xMjggU2xlZWZfZm1heGY0X3NzZTIoX19tMTI4LCBfX20xMjgpOworSU1QT1JUIENPTlNUIF9f
bTEyOCBTbGVlZl9jaW56X2ZtYXhmNF9zc2UyKF9fbTEyOCwgX19tMTI4KTsKK0lNUE9SVCBDT05T
VCBfX20xMjggU2xlZWZfZm1pbmY0X3NzZTIoX19tMTI4LCBfX20xMjgpOworSU1QT1JUIENPTlNU
IF9fbTEyOCBTbGVlZl9jaW56X2ZtaW5mNF9zc2UyKF9fbTEyOCwgX19tMTI4KTsKK0lNUE9SVCBD
T05TVCBfX20xMjggU2xlZWZfZmRpbWY0X3NzZTIoX19tMTI4LCBfX20xMjgpOworSU1QT1JUIENP
TlNUIF9fbTEyOCBTbGVlZl9jaW56X2ZkaW1mNF9zc2UyKF9fbTEyOCwgX19tMTI4KTsKK0lNUE9S
VCBDT05TVCBfX20xMjggU2xlZWZfdHJ1bmNmNF9zc2UyKF9fbTEyOCk7CitJTVBPUlQgQ09OU1Qg
X19tMTI4IFNsZWVmX2NpbnpfdHJ1bmNmNF9zc2UyKF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19t
MTI4IFNsZWVmX2Zsb29yZjRfc3NlMihfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVl
Zl9jaW56X2Zsb29yZjRfc3NlMihfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9j
ZWlsZjRfc3NlMihfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9jaW56X2NlaWxm
NF9zc2UyKF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX3JvdW5kZjRfc3NlMihf
X20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9jaW56X3JvdW5kZjRfc3NlMihfX20x
MjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9yaW50ZjRfc3NlMihfX20xMjgpOworSU1Q
T1JUIENPTlNUIF9fbTEyOCBTbGVlZl9jaW56X3JpbnRmNF9zc2UyKF9fbTEyOCk7CitJTVBPUlQg
Q09OU1QgX19tMTI4IFNsZWVmX25leHRhZnRlcmY0X3NzZTIoX19tMTI4LCBfX20xMjgpOworSU1Q
T1JUIENPTlNUIF9fbTEyOCBTbGVlZl9jaW56X25leHRhZnRlcmY0X3NzZTIoX19tMTI4LCBfX20x
MjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9mcmZyZXhwZjRfc3NlMihfX20xMjgpOwor
SU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9jaW56X2ZyZnJleHBmNF9zc2UyKF9fbTEyOCk7CitJ
TVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX2Ztb2RmNF9zc2UyKF9fbTEyOCwgX19tMTI4KTsKK0lN
UE9SVCBDT05TVCBfX20xMjggU2xlZWZfY2luel9mbW9kZjRfc3NlMihfX20xMjgsIF9fbTEyOCk7
CitJTVBPUlQgQ09OU1QgU2xlZWZfX19tMTI4XzIgU2xlZWZfbW9kZmY0X3NzZTIoX19tMTI4KTsK
K0lNUE9SVCBDT05TVCBTbGVlZl9fX20xMjhfMiBTbGVlZl9jaW56X21vZGZmNF9zc2UyKF9fbTEy
OCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX2xnYW1tYWY0X3UxMHNzZTIoX19tMTI4KTsK
K0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZfY2luel9sZ2FtbWFmNF91MTBzc2UyKF9fbTEyOCk7
CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX3RnYW1tYWY0X3UxMHNzZTIoX19tMTI4KTsKK0lN
UE9SVCBDT05TVCBfX20xMjggU2xlZWZfY2luel90Z2FtbWFmNF91MTBzc2UyKF9fbTEyOCk7CitJ
TVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX2VyZmY0X3UxMHNzZTIoX19tMTI4KTsKK0lNUE9SVCBD
T05TVCBfX20xMjggU2xlZWZfY2luel9lcmZmNF91MTBzc2UyKF9fbTEyOCk7CitJTVBPUlQgQ09O
U1QgX19tMTI4IFNsZWVmX2VyZmNmNF91MTVzc2UyKF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19t
MTI4IFNsZWVmX2NpbnpfZXJmY2Y0X3UxNXNzZTIoX19tMTI4KTsKK0lNUE9SVCBDT05TVCBpbnQg
U2xlZWZfZ2V0SW50ZjRfc3NlMihpbnQpOworSU1QT1JUIENPTlNUIGludCBTbGVlZl9jaW56X2dl
dEludGY0X3NzZTIoaW50KTsKK0lNUE9SVCBDT05TVCB2b2lkICpTbGVlZl9nZXRQdHJmNF9zc2Uy
KGludCk7CitJTVBPUlQgQ09OU1Qgdm9pZCAqU2xlZWZfY2luel9nZXRQdHJmNF9zc2UyKGludCk7
CisjZW5kaWYKKyNpZmRlZiBfX1NTRTJfXworI2RlZmluZSBTVFJVQ1RfS0VZV09SRF9fX1NTRTJf
XyBzdHJ1Y3QKKworI2lmbmRlZiBTbGVlZl9fX20xMjhkXzJfREVGSU5FRAordHlwZWRlZiBTVFJV
Q1RfS0VZV09SRF9fX1NTRTJfXyB7CisgIF9fbTEyOGQgeCwgeTsKK30gU2xlZWZfX19tMTI4ZF8y
OworI2RlZmluZSBTbGVlZl9fX20xMjhkXzJfREVGSU5FRAorI2VuZGlmCisKK0lNUE9SVCBDT05T
VCBfX20xMjhkIFNsZWVmX3NpbmQyX3UzNXNzZTQoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19t
MTI4ZCBTbGVlZl9jaW56X3NpbmQyX3UzNXNzZTQoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19t
MTI4ZCBTbGVlZl9jb3NkMl91MzVzc2U0KF9fbTEyOGQpOworSU1QT1JUIENPTlNUIF9fbTEyOGQg
U2xlZWZfY2luel9jb3NkMl91MzVzc2U0KF9fbTEyOGQpOworSU1QT1JUIENPTlNUIFNsZWVmX19f
bTEyOGRfMiBTbGVlZl9zaW5jb3NkMl91MzVzc2U0KF9fbTEyOGQpOworSU1QT1JUIENPTlNUIFNs
ZWVmX19fbTEyOGRfMiBTbGVlZl9jaW56X3NpbmNvc2QyX3UzNXNzZTQoX19tMTI4ZCk7CitJTVBP
UlQgQ09OU1QgX19tMTI4ZCBTbGVlZl90YW5kMl91MzVzc2U0KF9fbTEyOGQpOworSU1QT1JUIENP
TlNUIF9fbTEyOGQgU2xlZWZfY2luel90YW5kMl91MzVzc2U0KF9fbTEyOGQpOworSU1QT1JUIENP
TlNUIF9fbTEyOGQgU2xlZWZfYXNpbmQyX3UzNXNzZTQoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1Qg
X19tMTI4ZCBTbGVlZl9jaW56X2FzaW5kMl91MzVzc2U0KF9fbTEyOGQpOworSU1QT1JUIENPTlNU
IF9fbTEyOGQgU2xlZWZfYWNvc2QyX3UzNXNzZTQoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19t
MTI4ZCBTbGVlZl9jaW56X2Fjb3NkMl91MzVzc2U0KF9fbTEyOGQpOworSU1QT1JUIENPTlNUIF9f
bTEyOGQgU2xlZWZfYXRhbmQyX3UzNXNzZTQoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4
ZCBTbGVlZl9jaW56X2F0YW5kMl91MzVzc2U0KF9fbTEyOGQpOworSU1QT1JUIENPTlNUIF9fbTEy
OGQgU2xlZWZfYXRhbjJkMl91MzVzc2U0KF9fbTEyOGQsIF9fbTEyOGQpOworSU1QT1JUIENPTlNU
IF9fbTEyOGQgU2xlZWZfY2luel9hdGFuMmQyX3UzNXNzZTQoX19tMTI4ZCwgX19tMTI4ZCk7CitJ
TVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9sb2dkMl91MzVzc2U0KF9fbTEyOGQpOworSU1QT1JU
IENPTlNUIF9fbTEyOGQgU2xlZWZfY2luel9sb2dkMl91MzVzc2U0KF9fbTEyOGQpOworSU1QT1JU
IENPTlNUIF9fbTEyOGQgU2xlZWZfY2JydGQyX3UzNXNzZTQoX19tMTI4ZCk7CitJTVBPUlQgQ09O
U1QgX19tMTI4ZCBTbGVlZl9jaW56X2NicnRkMl91MzVzc2U0KF9fbTEyOGQpOworSU1QT1JUIENP
TlNUIF9fbTEyOGQgU2xlZWZfc2luZDJfdTEwc3NlNChfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBf
X20xMjhkIFNsZWVmX2Npbnpfc2luZDJfdTEwc3NlNChfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBf
X20xMjhkIFNsZWVmX2Nvc2QyX3UxMHNzZTQoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4
ZCBTbGVlZl9jaW56X2Nvc2QyX3UxMHNzZTQoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgU2xlZWZf
X19tMTI4ZF8yIFNsZWVmX3NpbmNvc2QyX3UxMHNzZTQoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1Qg
U2xlZWZfX19tMTI4ZF8yIFNsZWVmX2Npbnpfc2luY29zZDJfdTEwc3NlNChfX20xMjhkKTsKK0lN
UE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX3RhbmQyX3UxMHNzZTQoX19tMTI4ZCk7CitJTVBPUlQg
Q09OU1QgX19tMTI4ZCBTbGVlZl9jaW56X3RhbmQyX3UxMHNzZTQoX19tMTI4ZCk7CitJTVBPUlQg
Q09OU1QgX19tMTI4ZCBTbGVlZl9hc2luZDJfdTEwc3NlNChfX20xMjhkKTsKK0lNUE9SVCBDT05T
VCBfX20xMjhkIFNsZWVmX2NpbnpfYXNpbmQyX3UxMHNzZTQoX19tMTI4ZCk7CitJTVBPUlQgQ09O
U1QgX19tMTI4ZCBTbGVlZl9hY29zZDJfdTEwc3NlNChfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBf
X20xMjhkIFNsZWVmX2NpbnpfYWNvc2QyX3UxMHNzZTQoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1Qg
X19tMTI4ZCBTbGVlZl9hdGFuZDJfdTEwc3NlNChfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBfX20x
MjhkIFNsZWVmX2NpbnpfYXRhbmQyX3UxMHNzZTQoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19t
MTI4ZCBTbGVlZl9hdGFuMmQyX3UxMHNzZTQoX19tMTI4ZCwgX19tMTI4ZCk7CitJTVBPUlQgQ09O
U1QgX19tMTI4ZCBTbGVlZl9jaW56X2F0YW4yZDJfdTEwc3NlNChfX20xMjhkLCBfX20xMjhkKTsK
K0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2xvZ2QyX3UxMHNzZTQoX19tMTI4ZCk7CitJTVBP
UlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9jaW56X2xvZ2QyX3UxMHNzZTQoX19tMTI4ZCk7CitJTVBP
UlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9jYnJ0ZDJfdTEwc3NlNChfX20xMjhkKTsKK0lNUE9SVCBD
T05TVCBfX20xMjhkIFNsZWVmX2NpbnpfY2JydGQyX3UxMHNzZTQoX19tMTI4ZCk7CitJTVBPUlQg
Q09OU1QgX19tMTI4ZCBTbGVlZl9leHBkMl91MTBzc2U0KF9fbTEyOGQpOworSU1QT1JUIENPTlNU
IF9fbTEyOGQgU2xlZWZfY2luel9leHBkMl91MTBzc2U0KF9fbTEyOGQpOworSU1QT1JUIENPTlNU
IF9fbTEyOGQgU2xlZWZfcG93ZDJfdTEwc3NlNChfX20xMjhkLCBfX20xMjhkKTsKK0lNUE9SVCBD
T05TVCBfX20xMjhkIFNsZWVmX2NpbnpfcG93ZDJfdTEwc3NlNChfX20xMjhkLCBfX20xMjhkKTsK
K0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX3NpbmhkMl91MTBzc2U0KF9fbTEyOGQpOworSU1Q
T1JUIENPTlNUIF9fbTEyOGQgU2xlZWZfY2luel9zaW5oZDJfdTEwc3NlNChfX20xMjhkKTsKK0lN
UE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2Nvc2hkMl91MTBzc2U0KF9fbTEyOGQpOworSU1QT1JU
IENPTlNUIF9fbTEyOGQgU2xlZWZfY2luel9jb3NoZDJfdTEwc3NlNChfX20xMjhkKTsKK0lNUE9S
VCBDT05TVCBfX20xMjhkIFNsZWVmX3RhbmhkMl91MTBzc2U0KF9fbTEyOGQpOworSU1QT1JUIENP
TlNUIF9fbTEyOGQgU2xlZWZfY2luel90YW5oZDJfdTEwc3NlNChfX20xMjhkKTsKK0lNUE9SVCBD
T05TVCBfX20xMjhkIFNsZWVmX3NpbmhkMl91MzVzc2U0KF9fbTEyOGQpOworSU1QT1JUIENPTlNU
IF9fbTEyOGQgU2xlZWZfY2luel9zaW5oZDJfdTM1c3NlNChfX20xMjhkKTsKK0lNUE9SVCBDT05T
VCBfX20xMjhkIFNsZWVmX2Nvc2hkMl91MzVzc2U0KF9fbTEyOGQpOworSU1QT1JUIENPTlNUIF9f
bTEyOGQgU2xlZWZfY2luel9jb3NoZDJfdTM1c3NlNChfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBf
X20xMjhkIFNsZWVmX3RhbmhkMl91MzVzc2U0KF9fbTEyOGQpOworSU1QT1JUIENPTlNUIF9fbTEy
OGQgU2xlZWZfY2luel90YW5oZDJfdTM1c3NlNChfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBfX20x
MjhkIFNsZWVmX2Zhc3RzaW5kMl91MzUwMHNzZTQoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19t
MTI4ZCBTbGVlZl9jaW56X2Zhc3RzaW5kMl91MzUwMHNzZTQoX19tMTI4ZCk7CitJTVBPUlQgQ09O
U1QgX19tMTI4ZCBTbGVlZl9mYXN0Y29zZDJfdTM1MDBzc2U0KF9fbTEyOGQpOworSU1QT1JUIENP
TlNUIF9fbTEyOGQgU2xlZWZfY2luel9mYXN0Y29zZDJfdTM1MDBzc2U0KF9fbTEyOGQpOworSU1Q
T1JUIENPTlNUIF9fbTEyOGQgU2xlZWZfZmFzdHBvd2QyX3UzNTAwc3NlNChfX20xMjhkLCBfX20x
MjhkKTsKK0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2NpbnpfZmFzdHBvd2QyX3UzNTAwc3Nl
NChfX20xMjhkLCBfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2FzaW5oZDJf
dTEwc3NlNChfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2NpbnpfYXNpbmhk
Ml91MTBzc2U0KF9fbTEyOGQpOworSU1QT1JUIENPTlNUIF9fbTEyOGQgU2xlZWZfYWNvc2hkMl91
MTBzc2U0KF9fbTEyOGQpOworSU1QT1JUIENPTlNUIF9fbTEyOGQgU2xlZWZfY2luel9hY29zaGQy
X3UxMHNzZTQoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9hdGFuaGQyX3Ux
MHNzZTQoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9jaW56X2F0YW5oZDJf
dTEwc3NlNChfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2V4cDJkMl91MTBz
c2U0KF9fbTEyOGQpOworSU1QT1JUIENPTlNUIF9fbTEyOGQgU2xlZWZfY2luel9leHAyZDJfdTEw
c3NlNChfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2V4cDJkMl91MzVzc2U0
KF9fbTEyOGQpOworSU1QT1JUIENPTlNUIF9fbTEyOGQgU2xlZWZfY2luel9leHAyZDJfdTM1c3Nl
NChfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2V4cDEwZDJfdTEwc3NlNChf
X20xMjhkKTsKK0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2NpbnpfZXhwMTBkMl91MTBzc2U0
KF9fbTEyOGQpOworSU1QT1JUIENPTlNUIF9fbTEyOGQgU2xlZWZfZXhwMTBkMl91MzVzc2U0KF9f
bTEyOGQpOworSU1QT1JUIENPTlNUIF9fbTEyOGQgU2xlZWZfY2luel9leHAxMGQyX3UzNXNzZTQo
X19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9leHBtMWQyX3UxMHNzZTQoX19t
MTI4ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9jaW56X2V4cG0xZDJfdTEwc3NlNChf
X20xMjhkKTsKK0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2xvZzEwZDJfdTEwc3NlNChfX20x
MjhkKTsKK0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2NpbnpfbG9nMTBkMl91MTBzc2U0KF9f
bTEyOGQpOworSU1QT1JUIENPTlNUIF9fbTEyOGQgU2xlZWZfbG9nMmQyX3UxMHNzZTQoX19tMTI4
ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9jaW56X2xvZzJkMl91MTBzc2U0KF9fbTEy
OGQpOworSU1QT1JUIENPTlNUIF9fbTEyOGQgU2xlZWZfbG9nMmQyX3UzNXNzZTQoX19tMTI4ZCk7
CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9jaW56X2xvZzJkMl91MzVzc2U0KF9fbTEyOGQp
OworSU1QT1JUIENPTlNUIF9fbTEyOGQgU2xlZWZfbG9nMXBkMl91MTBzc2U0KF9fbTEyOGQpOwor
SU1QT1JUIENPTlNUIF9fbTEyOGQgU2xlZWZfY2luel9sb2cxcGQyX3UxMHNzZTQoX19tMTI4ZCk7
CitJTVBPUlQgQ09OU1QgU2xlZWZfX19tMTI4ZF8yIFNsZWVmX3NpbmNvc3BpZDJfdTA1c3NlNChf
X20xMjhkKTsKK0lNUE9SVCBDT05TVCBTbGVlZl9fX20xMjhkXzIgU2xlZWZfY2luel9zaW5jb3Nw
aWQyX3UwNXNzZTQoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgU2xlZWZfX19tMTI4ZF8yIFNsZWVm
X3NpbmNvc3BpZDJfdTM1c3NlNChfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBTbGVlZl9fX20xMjhk
XzIgU2xlZWZfY2luel9zaW5jb3NwaWQyX3UzNXNzZTQoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1Qg
X19tMTI4ZCBTbGVlZl9zaW5waWQyX3UwNXNzZTQoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19t
MTI4ZCBTbGVlZl9jaW56X3NpbnBpZDJfdTA1c3NlNChfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBf
X20xMjhkIFNsZWVmX2Nvc3BpZDJfdTA1c3NlNChfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBfX20x
MjhkIFNsZWVmX2NpbnpfY29zcGlkMl91MDVzc2U0KF9fbTEyOGQpOworSU1QT1JUIENPTlNUIF9f
bTEyOGQgU2xlZWZfbGRleHBkMl9zc2U0KF9fbTEyOGQsIF9fbTEyOGkpOworSU1QT1JUIENPTlNU
IF9fbTEyOGQgU2xlZWZfY2luel9sZGV4cGQyX3NzZTQoX19tMTI4ZCwgX19tMTI4aSk7CitJTVBP
UlQgQ09OU1QgX19tMTI4aSBTbGVlZl9pbG9nYmQyX3NzZTQoX19tMTI4ZCk7CitJTVBPUlQgQ09O
U1QgX19tMTI4aSBTbGVlZl9jaW56X2lsb2diZDJfc3NlNChfX20xMjhkKTsKK0lNUE9SVCBDT05T
VCBfX20xMjhkIFNsZWVmX2ZtYWQyX3NzZTQoX19tMTI4ZCwgX19tMTI4ZCwgX19tMTI4ZCk7CitJ
TVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9jaW56X2ZtYWQyX3NzZTQoX19tMTI4ZCwgX19tMTI4
ZCwgX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9zcXJ0ZDJfc3NlNChfX20x
MjhkKTsKK0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2Npbnpfc3FydGQyX3NzZTQoX19tMTI4
ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9zcXJ0ZDJfdTA1c3NlNChfX20xMjhkKTsK
K0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2Npbnpfc3FydGQyX3UwNXNzZTQoX19tMTI4ZCk7
CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9zcXJ0ZDJfdTM1c3NlNChfX20xMjhkKTsKK0lN
UE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2Npbnpfc3FydGQyX3UzNXNzZTQoX19tMTI4ZCk7CitJ
TVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9oeXBvdGQyX3UwNXNzZTQoX19tMTI4ZCwgX19tMTI4
ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9jaW56X2h5cG90ZDJfdTA1c3NlNChfX20x
MjhkLCBfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2h5cG90ZDJfdTM1c3Nl
NChfX20xMjhkLCBfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2NpbnpfaHlw
b3RkMl91MzVzc2U0KF9fbTEyOGQsIF9fbTEyOGQpOworSU1QT1JUIENPTlNUIF9fbTEyOGQgU2xl
ZWZfZmFic2QyX3NzZTQoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9jaW56
X2ZhYnNkMl9zc2U0KF9fbTEyOGQpOworSU1QT1JUIENPTlNUIF9fbTEyOGQgU2xlZWZfY29weXNp
Z25kMl9zc2U0KF9fbTEyOGQsIF9fbTEyOGQpOworSU1QT1JUIENPTlNUIF9fbTEyOGQgU2xlZWZf
Y2luel9jb3B5c2lnbmQyX3NzZTQoX19tMTI4ZCwgX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19t
MTI4ZCBTbGVlZl9mbWF4ZDJfc3NlNChfX20xMjhkLCBfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBf
X20xMjhkIFNsZWVmX2NpbnpfZm1heGQyX3NzZTQoX19tMTI4ZCwgX19tMTI4ZCk7CitJTVBPUlQg
Q09OU1QgX19tMTI4ZCBTbGVlZl9mbWluZDJfc3NlNChfX20xMjhkLCBfX20xMjhkKTsKK0lNUE9S
VCBDT05TVCBfX20xMjhkIFNsZWVmX2NpbnpfZm1pbmQyX3NzZTQoX19tMTI4ZCwgX19tMTI4ZCk7
CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9mZGltZDJfc3NlNChfX20xMjhkLCBfX20xMjhk
KTsKK0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2NpbnpfZmRpbWQyX3NzZTQoX19tMTI4ZCwg
X19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVlZl90cnVuY2QyX3NzZTQoX19tMTI4
ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9jaW56X3RydW5jZDJfc3NlNChfX20xMjhk
KTsKK0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2Zsb29yZDJfc3NlNChfX20xMjhkKTsKK0lN
UE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2NpbnpfZmxvb3JkMl9zc2U0KF9fbTEyOGQpOworSU1Q
T1JUIENPTlNUIF9fbTEyOGQgU2xlZWZfY2VpbGQyX3NzZTQoX19tMTI4ZCk7CitJTVBPUlQgQ09O
U1QgX19tMTI4ZCBTbGVlZl9jaW56X2NlaWxkMl9zc2U0KF9fbTEyOGQpOworSU1QT1JUIENPTlNU
IF9fbTEyOGQgU2xlZWZfcm91bmRkMl9zc2U0KF9fbTEyOGQpOworSU1QT1JUIENPTlNUIF9fbTEy
OGQgU2xlZWZfY2luel9yb3VuZGQyX3NzZTQoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4
ZCBTbGVlZl9yaW50ZDJfc3NlNChfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVm
X2NpbnpfcmludGQyX3NzZTQoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9u
ZXh0YWZ0ZXJkMl9zc2U0KF9fbTEyOGQsIF9fbTEyOGQpOworSU1QT1JUIENPTlNUIF9fbTEyOGQg
U2xlZWZfY2luel9uZXh0YWZ0ZXJkMl9zc2U0KF9fbTEyOGQsIF9fbTEyOGQpOworSU1QT1JUIENP
TlNUIF9fbTEyOGQgU2xlZWZfZnJmcmV4cGQyX3NzZTQoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1Qg
X19tMTI4ZCBTbGVlZl9jaW56X2ZyZnJleHBkMl9zc2U0KF9fbTEyOGQpOworSU1QT1JUIENPTlNU
IF9fbTEyOGkgU2xlZWZfZXhwZnJleHBkMl9zc2U0KF9fbTEyOGQpOworSU1QT1JUIENPTlNUIF9f
bTEyOGkgU2xlZWZfY2luel9leHBmcmV4cGQyX3NzZTQoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1Qg
X19tMTI4ZCBTbGVlZl9mbW9kZDJfc3NlNChfX20xMjhkLCBfX20xMjhkKTsKK0lNUE9SVCBDT05T
VCBfX20xMjhkIFNsZWVmX2NpbnpfZm1vZGQyX3NzZTQoX19tMTI4ZCwgX19tMTI4ZCk7CitJTVBP
UlQgQ09OU1QgU2xlZWZfX19tMTI4ZF8yIFNsZWVmX21vZGZkMl9zc2U0KF9fbTEyOGQpOworSU1Q
T1JUIENPTlNUIFNsZWVmX19fbTEyOGRfMiBTbGVlZl9jaW56X21vZGZkMl9zc2U0KF9fbTEyOGQp
OworSU1QT1JUIENPTlNUIF9fbTEyOGQgU2xlZWZfbGdhbW1hZDJfdTEwc3NlNChfX20xMjhkKTsK
K0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2NpbnpfbGdhbW1hZDJfdTEwc3NlNChfX20xMjhk
KTsKK0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX3RnYW1tYWQyX3UxMHNzZTQoX19tMTI4ZCk7
CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9jaW56X3RnYW1tYWQyX3UxMHNzZTQoX19tMTI4
ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9lcmZkMl91MTBzc2U0KF9fbTEyOGQpOwor
SU1QT1JUIENPTlNUIF9fbTEyOGQgU2xlZWZfY2luel9lcmZkMl91MTBzc2U0KF9fbTEyOGQpOwor
SU1QT1JUIENPTlNUIF9fbTEyOGQgU2xlZWZfZXJmY2QyX3UxNXNzZTQoX19tMTI4ZCk7CitJTVBP
UlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9jaW56X2VyZmNkMl91MTVzc2U0KF9fbTEyOGQpOworSU1Q
T1JUIENPTlNUIGludCBTbGVlZl9nZXRJbnRkMl9zc2U0KGludCk7CitJTVBPUlQgQ09OU1Qgdm9p
ZCAqU2xlZWZfZ2V0UHRyZDJfc3NlNChpbnQpOworCisjaWZuZGVmIFNsZWVmX19fbTEyOF8yX0RF
RklORUQKK3R5cGVkZWYgU1RSVUNUX0tFWVdPUkRfX19TU0UyX18geworICBfX20xMjggeCwgeTsK
K30gU2xlZWZfX19tMTI4XzI7CisjZGVmaW5lIFNsZWVmX19fbTEyOF8yX0RFRklORUQKKyNlbmRp
ZgorCitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX3NpbmY0X3UzNXNzZTQoX19tMTI4KTsKK0lN
UE9SVCBDT05TVCBfX20xMjggU2xlZWZfY2luel9zaW5mNF91MzVzc2U0KF9fbTEyOCk7CitJTVBP
UlQgQ09OU1QgX19tMTI4IFNsZWVmX2Nvc2Y0X3UzNXNzZTQoX19tMTI4KTsKK0lNUE9SVCBDT05T
VCBfX20xMjggU2xlZWZfY2luel9jb3NmNF91MzVzc2U0KF9fbTEyOCk7CitJTVBPUlQgQ09OU1Qg
U2xlZWZfX19tMTI4XzIgU2xlZWZfc2luY29zZjRfdTM1c3NlNChfX20xMjgpOworSU1QT1JUIENP
TlNUIFNsZWVmX19fbTEyOF8yIFNsZWVmX2Npbnpfc2luY29zZjRfdTM1c3NlNChfX20xMjgpOwor
SU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl90YW5mNF91MzVzc2U0KF9fbTEyOCk7CitJTVBPUlQg
Q09OU1QgX19tMTI4IFNsZWVmX2NpbnpfdGFuZjRfdTM1c3NlNChfX20xMjgpOworSU1QT1JUIENP
TlNUIF9fbTEyOCBTbGVlZl9hc2luZjRfdTM1c3NlNChfX20xMjgpOworSU1QT1JUIENPTlNUIF9f
bTEyOCBTbGVlZl9jaW56X2FzaW5mNF91MzVzc2U0KF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19t
MTI4IFNsZWVmX2Fjb3NmNF91MzVzc2U0KF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNs
ZWVmX2NpbnpfYWNvc2Y0X3UzNXNzZTQoX19tMTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjggU2xl
ZWZfYXRhbmY0X3UzNXNzZTQoX19tMTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZfY2lu
el9hdGFuZjRfdTM1c3NlNChfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9hdGFu
MmY0X3UzNXNzZTQoX19tMTI4LCBfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9j
aW56X2F0YW4yZjRfdTM1c3NlNChfX20xMjgsIF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4
IFNsZWVmX2xvZ2Y0X3UzNXNzZTQoX19tMTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZf
Y2luel9sb2dmNF91MzVzc2U0KF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX2Ni
cnRmNF91MzVzc2U0KF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX2NpbnpfY2Jy
dGY0X3UzNXNzZTQoX19tMTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZfc2luZjRfdTEw
c3NlNChfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9jaW56X3NpbmY0X3UxMHNz
ZTQoX19tMTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZfY29zZjRfdTEwc3NlNChfX20x
MjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9jaW56X2Nvc2Y0X3UxMHNzZTQoX19tMTI4
KTsKK0lNUE9SVCBDT05TVCBTbGVlZl9fX20xMjhfMiBTbGVlZl9zaW5jb3NmNF91MTBzc2U0KF9f
bTEyOCk7CitJTVBPUlQgQ09OU1QgU2xlZWZfX19tMTI4XzIgU2xlZWZfY2luel9zaW5jb3NmNF91
MTBzc2U0KF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX3RhbmY0X3UxMHNzZTQo
X19tMTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZfY2luel90YW5mNF91MTBzc2U0KF9f
bTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX2FzaW5mNF91MTBzc2U0KF9fbTEyOCk7
CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX2NpbnpfYXNpbmY0X3UxMHNzZTQoX19tMTI4KTsK
K0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZfYWNvc2Y0X3UxMHNzZTQoX19tMTI4KTsKK0lNUE9S
VCBDT05TVCBfX20xMjggU2xlZWZfY2luel9hY29zZjRfdTEwc3NlNChfX20xMjgpOworSU1QT1JU
IENPTlNUIF9fbTEyOCBTbGVlZl9hdGFuZjRfdTEwc3NlNChfX20xMjgpOworSU1QT1JUIENPTlNU
IF9fbTEyOCBTbGVlZl9jaW56X2F0YW5mNF91MTBzc2U0KF9fbTEyOCk7CitJTVBPUlQgQ09OU1Qg
X19tMTI4IFNsZWVmX2F0YW4yZjRfdTEwc3NlNChfX20xMjgsIF9fbTEyOCk7CitJTVBPUlQgQ09O
U1QgX19tMTI4IFNsZWVmX2NpbnpfYXRhbjJmNF91MTBzc2U0KF9fbTEyOCwgX19tMTI4KTsKK0lN
UE9SVCBDT05TVCBfX20xMjggU2xlZWZfbG9nZjRfdTEwc3NlNChfX20xMjgpOworSU1QT1JUIENP
TlNUIF9fbTEyOCBTbGVlZl9jaW56X2xvZ2Y0X3UxMHNzZTQoX19tMTI4KTsKK0lNUE9SVCBDT05T
VCBfX20xMjggU2xlZWZfY2JydGY0X3UxMHNzZTQoX19tMTI4KTsKK0lNUE9SVCBDT05TVCBfX20x
MjggU2xlZWZfY2luel9jYnJ0ZjRfdTEwc3NlNChfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEy
OCBTbGVlZl9leHBmNF91MTBzc2U0KF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVm
X2NpbnpfZXhwZjRfdTEwc3NlNChfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9w
b3dmNF91MTBzc2U0KF9fbTEyOCwgX19tMTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZf
Y2luel9wb3dmNF91MTBzc2U0KF9fbTEyOCwgX19tMTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjgg
U2xlZWZfc2luaGY0X3UxMHNzZTQoX19tMTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZf
Y2luel9zaW5oZjRfdTEwc3NlNChfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9j
b3NoZjRfdTEwc3NlNChfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9jaW56X2Nv
c2hmNF91MTBzc2U0KF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX3RhbmhmNF91
MTBzc2U0KF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX2NpbnpfdGFuaGY0X3Ux
MHNzZTQoX19tMTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZfc2luaGY0X3UzNXNzZTQo
X19tMTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZfY2luel9zaW5oZjRfdTM1c3NlNChf
X20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9jb3NoZjRfdTM1c3NlNChfX20xMjgp
OworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9jaW56X2Nvc2hmNF91MzVzc2U0KF9fbTEyOCk7
CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX3RhbmhmNF91MzVzc2U0KF9fbTEyOCk7CitJTVBP
UlQgQ09OU1QgX19tMTI4IFNsZWVmX2NpbnpfdGFuaGY0X3UzNXNzZTQoX19tMTI4KTsKK0lNUE9S
VCBDT05TVCBfX20xMjggU2xlZWZfZmFzdHNpbmY0X3UzNTAwc3NlNChfX20xMjgpOworSU1QT1JU
IENPTlNUIF9fbTEyOCBTbGVlZl9jaW56X2Zhc3RzaW5mNF91MzUwMHNzZTQoX19tMTI4KTsKK0lN
UE9SVCBDT05TVCBfX20xMjggU2xlZWZfZmFzdGNvc2Y0X3UzNTAwc3NlNChfX20xMjgpOworSU1Q
T1JUIENPTlNUIF9fbTEyOCBTbGVlZl9jaW56X2Zhc3Rjb3NmNF91MzUwMHNzZTQoX19tMTI4KTsK
K0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZfZmFzdHBvd2Y0X3UzNTAwc3NlNChfX20xMjgsIF9f
bTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX2NpbnpfZmFzdHBvd2Y0X3UzNTAwc3Nl
NChfX20xMjgsIF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX2FzaW5oZjRfdTEw
c3NlNChfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9jaW56X2FzaW5oZjRfdTEw
c3NlNChfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9hY29zaGY0X3UxMHNzZTQo
X19tMTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZfY2luel9hY29zaGY0X3UxMHNzZTQo
X19tMTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZfYXRhbmhmNF91MTBzc2U0KF9fbTEy
OCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX2NpbnpfYXRhbmhmNF91MTBzc2U0KF9fbTEy
OCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX2V4cDJmNF91MTBzc2U0KF9fbTEyOCk7CitJ
TVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX2NpbnpfZXhwMmY0X3UxMHNzZTQoX19tMTI4KTsKK0lN
UE9SVCBDT05TVCBfX20xMjggU2xlZWZfZXhwMmY0X3UzNXNzZTQoX19tMTI4KTsKK0lNUE9SVCBD
T05TVCBfX20xMjggU2xlZWZfY2luel9leHAyZjRfdTM1c3NlNChfX20xMjgpOworSU1QT1JUIENP
TlNUIF9fbTEyOCBTbGVlZl9leHAxMGY0X3UxMHNzZTQoX19tMTI4KTsKK0lNUE9SVCBDT05TVCBf
X20xMjggU2xlZWZfY2luel9leHAxMGY0X3UxMHNzZTQoX19tMTI4KTsKK0lNUE9SVCBDT05TVCBf
X20xMjggU2xlZWZfZXhwMTBmNF91MzVzc2U0KF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4
IFNsZWVmX2NpbnpfZXhwMTBmNF91MzVzc2U0KF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4
IFNsZWVmX2V4cG0xZjRfdTEwc3NlNChfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVl
Zl9jaW56X2V4cG0xZjRfdTEwc3NlNChfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVl
Zl9sb2cxMGY0X3UxMHNzZTQoX19tMTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZfY2lu
el9sb2cxMGY0X3UxMHNzZTQoX19tMTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZfbG9n
MmY0X3UxMHNzZTQoX19tMTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZfY2luel9sb2cy
ZjRfdTEwc3NlNChfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9sb2cyZjRfdTM1
c3NlNChfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9jaW56X2xvZzJmNF91MzVz
c2U0KF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX2xvZzFwZjRfdTEwc3NlNChf
X20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9jaW56X2xvZzFwZjRfdTEwc3NlNChf
X20xMjgpOworSU1QT1JUIENPTlNUIFNsZWVmX19fbTEyOF8yIFNsZWVmX3NpbmNvc3BpZjRfdTA1
c3NlNChfX20xMjgpOworSU1QT1JUIENPTlNUIFNsZWVmX19fbTEyOF8yIFNsZWVmX2Npbnpfc2lu
Y29zcGlmNF91MDVzc2U0KF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgU2xlZWZfX19tMTI4XzIgU2xl
ZWZfc2luY29zcGlmNF91MzVzc2U0KF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgU2xlZWZfX19tMTI4
XzIgU2xlZWZfY2luel9zaW5jb3NwaWY0X3UzNXNzZTQoX19tMTI4KTsKK0lNUE9SVCBDT05TVCBf
X20xMjggU2xlZWZfc2lucGlmNF91MDVzc2U0KF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4
IFNsZWVmX2Npbnpfc2lucGlmNF91MDVzc2U0KF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4
IFNsZWVmX2Nvc3BpZjRfdTA1c3NlNChfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVl
Zl9jaW56X2Nvc3BpZjRfdTA1c3NlNChfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVl
Zl9mbWFmNF9zc2U0KF9fbTEyOCwgX19tMTI4LCBfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEy
OCBTbGVlZl9jaW56X2ZtYWY0X3NzZTQoX19tMTI4LCBfX20xMjgsIF9fbTEyOCk7CitJTVBPUlQg
Q09OU1QgX19tMTI4IFNsZWVmX3NxcnRmNF9zc2U0KF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19t
MTI4IFNsZWVmX2Npbnpfc3FydGY0X3NzZTQoX19tMTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjgg
U2xlZWZfc3FydGY0X3UwNXNzZTQoX19tMTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZf
Y2luel9zcXJ0ZjRfdTA1c3NlNChfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9z
cXJ0ZjRfdTM1c3NlNChfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9jaW56X3Nx
cnRmNF91MzVzc2U0KF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX2h5cG90ZjRf
dTA1c3NlNChfX20xMjgsIF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX2Npbnpf
aHlwb3RmNF91MDVzc2U0KF9fbTEyOCwgX19tMTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjggU2xl
ZWZfaHlwb3RmNF91MzVzc2U0KF9fbTEyOCwgX19tMTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjgg
U2xlZWZfY2luel9oeXBvdGY0X3UzNXNzZTQoX19tMTI4LCBfX20xMjgpOworSU1QT1JUIENPTlNU
IF9fbTEyOCBTbGVlZl9mYWJzZjRfc3NlNChfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBT
bGVlZl9jaW56X2ZhYnNmNF9zc2U0KF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVm
X2NvcHlzaWduZjRfc3NlNChfX20xMjgsIF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNs
ZWVmX2NpbnpfY29weXNpZ25mNF9zc2U0KF9fbTEyOCwgX19tMTI4KTsKK0lNUE9SVCBDT05TVCBf
X20xMjggU2xlZWZfZm1heGY0X3NzZTQoX19tMTI4LCBfX20xMjgpOworSU1QT1JUIENPTlNUIF9f
bTEyOCBTbGVlZl9jaW56X2ZtYXhmNF9zc2U0KF9fbTEyOCwgX19tMTI4KTsKK0lNUE9SVCBDT05T
VCBfX20xMjggU2xlZWZfZm1pbmY0X3NzZTQoX19tMTI4LCBfX20xMjgpOworSU1QT1JUIENPTlNU
IF9fbTEyOCBTbGVlZl9jaW56X2ZtaW5mNF9zc2U0KF9fbTEyOCwgX19tMTI4KTsKK0lNUE9SVCBD
T05TVCBfX20xMjggU2xlZWZfZmRpbWY0X3NzZTQoX19tMTI4LCBfX20xMjgpOworSU1QT1JUIENP
TlNUIF9fbTEyOCBTbGVlZl9jaW56X2ZkaW1mNF9zc2U0KF9fbTEyOCwgX19tMTI4KTsKK0lNUE9S
VCBDT05TVCBfX20xMjggU2xlZWZfdHJ1bmNmNF9zc2U0KF9fbTEyOCk7CitJTVBPUlQgQ09OU1Qg
X19tMTI4IFNsZWVmX2NpbnpfdHJ1bmNmNF9zc2U0KF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19t
MTI4IFNsZWVmX2Zsb29yZjRfc3NlNChfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVl
Zl9jaW56X2Zsb29yZjRfc3NlNChfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9j
ZWlsZjRfc3NlNChfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9jaW56X2NlaWxm
NF9zc2U0KF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX3JvdW5kZjRfc3NlNChf
X20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9jaW56X3JvdW5kZjRfc3NlNChfX20x
MjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9yaW50ZjRfc3NlNChfX20xMjgpOworSU1Q
T1JUIENPTlNUIF9fbTEyOCBTbGVlZl9jaW56X3JpbnRmNF9zc2U0KF9fbTEyOCk7CitJTVBPUlQg
Q09OU1QgX19tMTI4IFNsZWVmX25leHRhZnRlcmY0X3NzZTQoX19tMTI4LCBfX20xMjgpOworSU1Q
T1JUIENPTlNUIF9fbTEyOCBTbGVlZl9jaW56X25leHRhZnRlcmY0X3NzZTQoX19tMTI4LCBfX20x
MjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9mcmZyZXhwZjRfc3NlNChfX20xMjgpOwor
SU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9jaW56X2ZyZnJleHBmNF9zc2U0KF9fbTEyOCk7CitJ
TVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX2Ztb2RmNF9zc2U0KF9fbTEyOCwgX19tMTI4KTsKK0lN
UE9SVCBDT05TVCBfX20xMjggU2xlZWZfY2luel9mbW9kZjRfc3NlNChfX20xMjgsIF9fbTEyOCk7
CitJTVBPUlQgQ09OU1QgU2xlZWZfX19tMTI4XzIgU2xlZWZfbW9kZmY0X3NzZTQoX19tMTI4KTsK
K0lNUE9SVCBDT05TVCBTbGVlZl9fX20xMjhfMiBTbGVlZl9jaW56X21vZGZmNF9zc2U0KF9fbTEy
OCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX2xnYW1tYWY0X3UxMHNzZTQoX19tMTI4KTsK
K0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZfY2luel9sZ2FtbWFmNF91MTBzc2U0KF9fbTEyOCk7
CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX3RnYW1tYWY0X3UxMHNzZTQoX19tMTI4KTsKK0lN
UE9SVCBDT05TVCBfX20xMjggU2xlZWZfY2luel90Z2FtbWFmNF91MTBzc2U0KF9fbTEyOCk7CitJ
TVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX2VyZmY0X3UxMHNzZTQoX19tMTI4KTsKK0lNUE9SVCBD
T05TVCBfX20xMjggU2xlZWZfY2luel9lcmZmNF91MTBzc2U0KF9fbTEyOCk7CitJTVBPUlQgQ09O
U1QgX19tMTI4IFNsZWVmX2VyZmNmNF91MTVzc2U0KF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19t
MTI4IFNsZWVmX2NpbnpfZXJmY2Y0X3UxNXNzZTQoX19tMTI4KTsKK0lNUE9SVCBDT05TVCBpbnQg
U2xlZWZfZ2V0SW50ZjRfc3NlNChpbnQpOworSU1QT1JUIENPTlNUIGludCBTbGVlZl9jaW56X2dl
dEludGY0X3NzZTQoaW50KTsKK0lNUE9SVCBDT05TVCB2b2lkICpTbGVlZl9nZXRQdHJmNF9zc2U0
KGludCk7CitJTVBPUlQgQ09OU1Qgdm9pZCAqU2xlZWZfY2luel9nZXRQdHJmNF9zc2U0KGludCk7
CisjZW5kaWYKKyNpZmRlZiBfX0FWWF9fCisjZGVmaW5lIFNUUlVDVF9LRVlXT1JEX19fQVZYX18g
c3RydWN0CisKKyNpZm5kZWYgU2xlZWZfX19tMjU2ZF8yX0RFRklORUQKK3R5cGVkZWYgU1RSVUNU
X0tFWVdPUkRfX19BVlhfXyB7CisgIF9fbTI1NmQgeCwgeTsKK30gU2xlZWZfX19tMjU2ZF8yOwor
I2RlZmluZSBTbGVlZl9fX20yNTZkXzJfREVGSU5FRAorI2VuZGlmCisKK0lNUE9SVCBDT05TVCBf
X20yNTZkIFNsZWVmX3NpbmQ0X3UzNShfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNs
ZWVmX2Npbnpfc2luZDRfdTM1KF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZf
Y29zZDRfdTM1KF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfY2luel9jb3Nk
NF91MzUoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgU2xlZWZfX19tMjU2ZF8yIFNsZWVmX3NpbmNv
c2Q0X3UzNShfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBTbGVlZl9fX20yNTZkXzIgU2xlZWZfY2lu
el9zaW5jb3NkNF91MzUoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl90YW5k
NF91MzUoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9jaW56X3RhbmQ0X3Uz
NShfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2FzaW5kNF91MzUoX19tMjU2
ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9jaW56X2FzaW5kNF91MzUoX19tMjU2ZCk7
CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9hY29zZDRfdTM1KF9fbTI1NmQpOworSU1QT1JU
IENPTlNUIF9fbTI1NmQgU2xlZWZfY2luel9hY29zZDRfdTM1KF9fbTI1NmQpOworSU1QT1JUIENP
TlNUIF9fbTI1NmQgU2xlZWZfYXRhbmQ0X3UzNShfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20y
NTZkIFNsZWVmX2NpbnpfYXRhbmQ0X3UzNShfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZk
IFNsZWVmX2F0YW4yZDRfdTM1KF9fbTI1NmQsIF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1
NmQgU2xlZWZfY2luel9hdGFuMmQ0X3UzNShfX20yNTZkLCBfX20yNTZkKTsKK0lNUE9SVCBDT05T
VCBfX20yNTZkIFNsZWVmX2xvZ2Q0X3UzNShfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZk
IFNsZWVmX2NpbnpfbG9nZDRfdTM1KF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xl
ZWZfY2JydGQ0X3UzNShfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2Npbnpf
Y2JydGQ0X3UzNShfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX3NpbmQ0X3Ux
MChfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2Npbnpfc2luZDRfdTEwKF9f
bTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfY29zZDRfdTEwKF9fbTI1NmQpOwor
SU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfY2luel9jb3NkNF91MTAoX19tMjU2ZCk7CitJTVBP
UlQgQ09OU1QgU2xlZWZfX19tMjU2ZF8yIFNsZWVmX3NpbmNvc2Q0X3UxMChfX20yNTZkKTsKK0lN
UE9SVCBDT05TVCBTbGVlZl9fX20yNTZkXzIgU2xlZWZfY2luel9zaW5jb3NkNF91MTAoX19tMjU2
ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl90YW5kNF91MTAoX19tMjU2ZCk7CitJTVBP
UlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9jaW56X3RhbmQ0X3UxMChfX20yNTZkKTsKK0lNUE9SVCBD
T05TVCBfX20yNTZkIFNsZWVmX2FzaW5kNF91MTAoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19t
MjU2ZCBTbGVlZl9jaW56X2FzaW5kNF91MTAoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2
ZCBTbGVlZl9hY29zZDRfdTEwKF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZf
Y2luel9hY29zZDRfdTEwKF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfYXRh
bmQ0X3UxMChfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2NpbnpfYXRhbmQ0
X3UxMChfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2F0YW4yZDRfdTEwKF9f
bTI1NmQsIF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfY2luel9hdGFuMmQ0
X3UxMChfX20yNTZkLCBfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2xvZ2Q0
X3UxMChfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2NpbnpfbG9nZDRfdTEw
KF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfY2JydGQ0X3UxMChfX20yNTZk
KTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2NpbnpfY2JydGQ0X3UxMChfX20yNTZkKTsK
K0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2V4cGQ0X3UxMChfX20yNTZkKTsKK0lNUE9SVCBD
T05TVCBfX20yNTZkIFNsZWVmX2NpbnpfZXhwZDRfdTEwKF9fbTI1NmQpOworSU1QT1JUIENPTlNU
IF9fbTI1NmQgU2xlZWZfcG93ZDRfdTEwKF9fbTI1NmQsIF9fbTI1NmQpOworSU1QT1JUIENPTlNU
IF9fbTI1NmQgU2xlZWZfY2luel9wb3dkNF91MTAoX19tMjU2ZCwgX19tMjU2ZCk7CitJTVBPUlQg
Q09OU1QgX19tMjU2ZCBTbGVlZl9zaW5oZDRfdTEwKF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9f
bTI1NmQgU2xlZWZfY2luel9zaW5oZDRfdTEwKF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1
NmQgU2xlZWZfY29zaGQ0X3UxMChfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVm
X2NpbnpfY29zaGQ0X3UxMChfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX3Rh
bmhkNF91MTAoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9jaW56X3Rhbmhk
NF91MTAoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9zaW5oZDRfdTM1KF9f
bTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfY2luel9zaW5oZDRfdTM1KF9fbTI1
NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfY29zaGQ0X3UzNShfX20yNTZkKTsKK0lN
UE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2NpbnpfY29zaGQ0X3UzNShfX20yNTZkKTsKK0lNUE9S
VCBDT05TVCBfX20yNTZkIFNsZWVmX3RhbmhkNF91MzUoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1Qg
X19tMjU2ZCBTbGVlZl9jaW56X3RhbmhkNF91MzUoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19t
MjU2ZCBTbGVlZl9mYXN0c2luZDRfdTM1MDAoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2
ZCBTbGVlZl9jaW56X2Zhc3RzaW5kNF91MzUwMChfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20y
NTZkIFNsZWVmX2Zhc3Rjb3NkNF91MzUwMChfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZk
IFNsZWVmX2NpbnpfZmFzdGNvc2Q0X3UzNTAwKF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1
NmQgU2xlZWZfZmFzdHBvd2Q0X3UzNTAwKF9fbTI1NmQsIF9fbTI1NmQpOworSU1QT1JUIENPTlNU
IF9fbTI1NmQgU2xlZWZfY2luel9mYXN0cG93ZDRfdTM1MDAoX19tMjU2ZCwgX19tMjU2ZCk7CitJ
TVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9hc2luaGQ0X3UxMChfX20yNTZkKTsKK0lNUE9SVCBD
T05TVCBfX20yNTZkIFNsZWVmX2NpbnpfYXNpbmhkNF91MTAoX19tMjU2ZCk7CitJTVBPUlQgQ09O
U1QgX19tMjU2ZCBTbGVlZl9hY29zaGQ0X3UxMChfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20y
NTZkIFNsZWVmX2NpbnpfYWNvc2hkNF91MTAoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2
ZCBTbGVlZl9hdGFuaGQ0X3UxMChfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVm
X2NpbnpfYXRhbmhkNF91MTAoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9l
eHAyZDRfdTEwKF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfY2luel9leHAy
ZDRfdTEwKF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfZXhwMmQ0X3UzNShf
X20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2NpbnpfZXhwMmQ0X3UzNShfX20y
NTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2V4cDEwZDRfdTEwKF9fbTI1NmQpOwor
SU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfY2luel9leHAxMGQ0X3UxMChfX20yNTZkKTsKK0lN
UE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2V4cDEwZDRfdTM1KF9fbTI1NmQpOworSU1QT1JUIENP
TlNUIF9fbTI1NmQgU2xlZWZfY2luel9leHAxMGQ0X3UzNShfX20yNTZkKTsKK0lNUE9SVCBDT05T
VCBfX20yNTZkIFNsZWVmX2V4cG0xZDRfdTEwKF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1
NmQgU2xlZWZfY2luel9leHBtMWQ0X3UxMChfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZk
IFNsZWVmX2xvZzEwZDRfdTEwKF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZf
Y2luel9sb2cxMGQ0X3UxMChfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2xv
ZzJkNF91MTAoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9jaW56X2xvZzJk
NF91MTAoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9sb2cyZDRfdTM1KF9f
bTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfY2luel9sb2cyZDRfdTM1KF9fbTI1
NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfbG9nMXBkNF91MTAoX19tMjU2ZCk7CitJ
TVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9jaW56X2xvZzFwZDRfdTEwKF9fbTI1NmQpOworSU1Q
T1JUIENPTlNUIFNsZWVmX19fbTI1NmRfMiBTbGVlZl9zaW5jb3NwaWQ0X3UwNShfX20yNTZkKTsK
K0lNUE9SVCBDT05TVCBTbGVlZl9fX20yNTZkXzIgU2xlZWZfY2luel9zaW5jb3NwaWQ0X3UwNShf
X20yNTZkKTsKK0lNUE9SVCBDT05TVCBTbGVlZl9fX20yNTZkXzIgU2xlZWZfc2luY29zcGlkNF91
MzUoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgU2xlZWZfX19tMjU2ZF8yIFNsZWVmX2Npbnpfc2lu
Y29zcGlkNF91MzUoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9zaW5waWQ0
X3UwNShfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2Npbnpfc2lucGlkNF91
MDUoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9jb3NwaWQ0X3UwNShfX20y
NTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2NpbnpfY29zcGlkNF91MDUoX19tMjU2
ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9sZGV4cGQ0KF9fbTI1NmQsIF9fbTEyOGkp
OworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfY2luel9sZGV4cGQ0KF9fbTI1NmQsIF9fbTEy
OGkpOworSU1QT1JUIENPTlNUIF9fbTEyOGkgU2xlZWZfaWxvZ2JkNChfX20yNTZkKTsKK0lNUE9S
VCBDT05TVCBfX20xMjhpIFNsZWVmX2NpbnpfaWxvZ2JkNChfX20yNTZkKTsKK0lNUE9SVCBDT05T
VCBfX20yNTZkIFNsZWVmX2ZtYWQ0KF9fbTI1NmQsIF9fbTI1NmQsIF9fbTI1NmQpOworSU1QT1JU
IENPTlNUIF9fbTI1NmQgU2xlZWZfY2luel9mbWFkNChfX20yNTZkLCBfX20yNTZkLCBfX20yNTZk
KTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX3NxcnRkNChfX20yNTZkKTsKK0lNUE9SVCBD
T05TVCBfX20yNTZkIFNsZWVmX2Npbnpfc3FydGQ0KF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9f
bTI1NmQgU2xlZWZfc3FydGQ0X3UwNShfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNs
ZWVmX2Npbnpfc3FydGQ0X3UwNShfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVm
X3NxcnRkNF91MzUoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9jaW56X3Nx
cnRkNF91MzUoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9oeXBvdGQ0X3Uw
NShfX20yNTZkLCBfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2NpbnpfaHlw
b3RkNF91MDUoX19tMjU2ZCwgX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9o
eXBvdGQ0X3UzNShfX20yNTZkLCBfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVm
X2NpbnpfaHlwb3RkNF91MzUoX19tMjU2ZCwgX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2
ZCBTbGVlZl9mYWJzZDQoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9jaW56
X2ZhYnNkNChfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2NvcHlzaWduZDQo
X19tMjU2ZCwgX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9jaW56X2NvcHlz
aWduZDQoX19tMjU2ZCwgX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9mbWF4
ZDQoX19tMjU2ZCwgX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9jaW56X2Zt
YXhkNChfX20yNTZkLCBfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2ZtaW5k
NChfX20yNTZkLCBfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2NpbnpfZm1p
bmQ0KF9fbTI1NmQsIF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfZmRpbWQ0
KF9fbTI1NmQsIF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfY2luel9mZGlt
ZDQoX19tMjU2ZCwgX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl90cnVuY2Q0
KF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfY2luel90cnVuY2Q0KF9fbTI1
NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfZmxvb3JkNChfX20yNTZkKTsKK0lNUE9S
VCBDT05TVCBfX20yNTZkIFNsZWVmX2NpbnpfZmxvb3JkNChfX20yNTZkKTsKK0lNUE9SVCBDT05T
VCBfX20yNTZkIFNsZWVmX2NlaWxkNChfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNs
ZWVmX2NpbnpfY2VpbGQ0KF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfcm91
bmRkNChfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2Npbnpfcm91bmRkNChf
X20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX3JpbnRkNChfX20yNTZkKTsKK0lN
UE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2NpbnpfcmludGQ0KF9fbTI1NmQpOworSU1QT1JUIENP
TlNUIF9fbTI1NmQgU2xlZWZfbmV4dGFmdGVyZDQoX19tMjU2ZCwgX19tMjU2ZCk7CitJTVBPUlQg
Q09OU1QgX19tMjU2ZCBTbGVlZl9jaW56X25leHRhZnRlcmQ0KF9fbTI1NmQsIF9fbTI1NmQpOwor
SU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfZnJmcmV4cGQ0KF9fbTI1NmQpOworSU1QT1JUIENP
TlNUIF9fbTI1NmQgU2xlZWZfY2luel9mcmZyZXhwZDQoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1Qg
X19tMTI4aSBTbGVlZl9leHBmcmV4cGQ0KF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTEyOGkg
U2xlZWZfY2luel9leHBmcmV4cGQ0KF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xl
ZWZfZm1vZGQ0KF9fbTI1NmQsIF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZf
Y2luel9mbW9kZDQoX19tMjU2ZCwgX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgU2xlZWZfX19tMjU2
ZF8yIFNsZWVmX21vZGZkNChfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBTbGVlZl9fX20yNTZkXzIg
U2xlZWZfY2luel9tb2RmZDQoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9s
Z2FtbWFkNF91MTAoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9jaW56X2xn
YW1tYWQ0X3UxMChfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX3RnYW1tYWQ0
X3UxMChfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2NpbnpfdGdhbW1hZDRf
dTEwKF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfZXJmZDRfdTEwKF9fbTI1
NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfY2luel9lcmZkNF91MTAoX19tMjU2ZCk7
CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9lcmZjZDRfdTE1KF9fbTI1NmQpOworSU1QT1JU
IENPTlNUIF9fbTI1NmQgU2xlZWZfY2luel9lcmZjZDRfdTE1KF9fbTI1NmQpOworSU1QT1JUIENP
TlNUIGludCBTbGVlZl9nZXRJbnRkNChpbnQpOworSU1QT1JUIENPTlNUIHZvaWQgKlNsZWVmX2dl
dFB0cmQ0KGludCk7CisKKyNpZm5kZWYgU2xlZWZfX19tMjU2XzJfREVGSU5FRAordHlwZWRlZiBT
VFJVQ1RfS0VZV09SRF9fX0FWWF9fIHsKKyAgX19tMjU2IHgsIHk7Cit9IFNsZWVmX19fbTI1Nl8y
OworI2RlZmluZSBTbGVlZl9fX20yNTZfMl9ERUZJTkVECisjZW5kaWYKKworSU1QT1JUIENPTlNU
IF9fbTI1NiBTbGVlZl9zaW5mOF91MzUoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xl
ZWZfY2luel9zaW5mOF91MzUoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfY29z
ZjhfdTM1KF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2NpbnpfY29zZjhfdTM1
KF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgU2xlZWZfX19tMjU2XzIgU2xlZWZfc2luY29zZjhfdTM1
KF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgU2xlZWZfX19tMjU2XzIgU2xlZWZfY2luel9zaW5jb3Nm
OF91MzUoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfdGFuZjhfdTM1KF9fbTI1
Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2NpbnpfdGFuZjhfdTM1KF9fbTI1Nik7CitJ
TVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2FzaW5mOF91MzUoX19tMjU2KTsKK0lNUE9SVCBDT05T
VCBfX20yNTYgU2xlZWZfY2luel9hc2luZjhfdTM1KF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19t
MjU2IFNsZWVmX2Fjb3NmOF91MzUoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZf
Y2luel9hY29zZjhfdTM1KF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2F0YW5m
OF91MzUoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfY2luel9hdGFuZjhfdTM1
KF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2F0YW4yZjhfdTM1KF9fbTI1Niwg
X19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfY2luel9hdGFuMmY4X3UzNShfX20y
NTYsIF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2xvZ2Y4X3UzNShfX20yNTYp
OworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9jaW56X2xvZ2Y4X3UzNShfX20yNTYpOworSU1Q
T1JUIENPTlNUIF9fbTI1NiBTbGVlZl9jYnJ0ZjhfdTM1KF9fbTI1Nik7CitJTVBPUlQgQ09OU1Qg
X19tMjU2IFNsZWVmX2NpbnpfY2JydGY4X3UzNShfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1
NiBTbGVlZl9zaW5mOF91MTAoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfY2lu
el9zaW5mOF91MTAoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfY29zZjhfdTEw
KF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2NpbnpfY29zZjhfdTEwKF9fbTI1
Nik7CitJTVBPUlQgQ09OU1QgU2xlZWZfX19tMjU2XzIgU2xlZWZfc2luY29zZjhfdTEwKF9fbTI1
Nik7CitJTVBPUlQgQ09OU1QgU2xlZWZfX19tMjU2XzIgU2xlZWZfY2luel9zaW5jb3NmOF91MTAo
X19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfdGFuZjhfdTEwKF9fbTI1Nik7CitJ
TVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2NpbnpfdGFuZjhfdTEwKF9fbTI1Nik7CitJTVBPUlQg
Q09OU1QgX19tMjU2IFNsZWVmX2FzaW5mOF91MTAoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20y
NTYgU2xlZWZfY2luel9hc2luZjhfdTEwKF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNs
ZWVmX2Fjb3NmOF91MTAoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfY2luel9h
Y29zZjhfdTEwKF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2F0YW5mOF91MTAo
X19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfY2luel9hdGFuZjhfdTEwKF9fbTI1
Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2F0YW4yZjhfdTEwKF9fbTI1NiwgX19tMjU2
KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfY2luel9hdGFuMmY4X3UxMChfX20yNTYsIF9f
bTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2xvZ2Y4X3UxMChfX20yNTYpOworSU1Q
T1JUIENPTlNUIF9fbTI1NiBTbGVlZl9jaW56X2xvZ2Y4X3UxMChfX20yNTYpOworSU1QT1JUIENP
TlNUIF9fbTI1NiBTbGVlZl9jYnJ0ZjhfdTEwKF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2
IFNsZWVmX2NpbnpfY2JydGY4X3UxMChfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVl
Zl9leHBmOF91MTAoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfY2luel9leHBm
OF91MTAoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfcG93ZjhfdTEwKF9fbTI1
NiwgX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfY2luel9wb3dmOF91MTAoX19t
MjU2LCBfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9zaW5oZjhfdTEwKF9fbTI1
Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2Npbnpfc2luaGY4X3UxMChfX20yNTYpOwor
SU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9jb3NoZjhfdTEwKF9fbTI1Nik7CitJTVBPUlQgQ09O
U1QgX19tMjU2IFNsZWVmX2NpbnpfY29zaGY4X3UxMChfX20yNTYpOworSU1QT1JUIENPTlNUIF9f
bTI1NiBTbGVlZl90YW5oZjhfdTEwKF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVm
X2NpbnpfdGFuaGY4X3UxMChfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9zaW5o
ZjhfdTM1KF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2Npbnpfc2luaGY4X3Uz
NShfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9jb3NoZjhfdTM1KF9fbTI1Nik7
CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2NpbnpfY29zaGY4X3UzNShfX20yNTYpOworSU1Q
T1JUIENPTlNUIF9fbTI1NiBTbGVlZl90YW5oZjhfdTM1KF9fbTI1Nik7CitJTVBPUlQgQ09OU1Qg
X19tMjU2IFNsZWVmX2NpbnpfdGFuaGY4X3UzNShfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1
NiBTbGVlZl9mYXN0c2luZjhfdTM1MDAoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xl
ZWZfY2luel9mYXN0c2luZjhfdTM1MDAoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xl
ZWZfZmFzdGNvc2Y4X3UzNTAwKF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2Np
bnpfZmFzdGNvc2Y4X3UzNTAwKF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2Zh
c3Rwb3dmOF91MzUwMChfX20yNTYsIF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVm
X2NpbnpfZmFzdHBvd2Y4X3UzNTAwKF9fbTI1NiwgX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20y
NTYgU2xlZWZfYXNpbmhmOF91MTAoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZf
Y2luel9hc2luaGY4X3UxMChfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9hY29z
aGY4X3UxMChfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9jaW56X2Fjb3NoZjhf
dTEwKF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2F0YW5oZjhfdTEwKF9fbTI1
Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2NpbnpfYXRhbmhmOF91MTAoX19tMjU2KTsK
K0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfZXhwMmY4X3UxMChfX20yNTYpOworSU1QT1JUIENP
TlNUIF9fbTI1NiBTbGVlZl9jaW56X2V4cDJmOF91MTAoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBf
X20yNTYgU2xlZWZfZXhwMmY4X3UzNShfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVl
Zl9jaW56X2V4cDJmOF91MzUoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfZXhw
MTBmOF91MTAoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfY2luel9leHAxMGY4
X3UxMChfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9leHAxMGY4X3UzNShfX20y
NTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9jaW56X2V4cDEwZjhfdTM1KF9fbTI1Nik7
CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2V4cG0xZjhfdTEwKF9fbTI1Nik7CitJTVBPUlQg
Q09OU1QgX19tMjU2IFNsZWVmX2NpbnpfZXhwbTFmOF91MTAoX19tMjU2KTsKK0lNUE9SVCBDT05T
VCBfX20yNTYgU2xlZWZfbG9nMTBmOF91MTAoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYg
U2xlZWZfY2luel9sb2cxMGY4X3UxMChfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVl
Zl9sb2cyZjhfdTEwKF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2NpbnpfbG9n
MmY4X3UxMChfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9sb2cyZjhfdTM1KF9f
bTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2NpbnpfbG9nMmY4X3UzNShfX20yNTYp
OworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9sb2cxcGY4X3UxMChfX20yNTYpOworSU1QT1JU
IENPTlNUIF9fbTI1NiBTbGVlZl9jaW56X2xvZzFwZjhfdTEwKF9fbTI1Nik7CitJTVBPUlQgQ09O
U1QgU2xlZWZfX19tMjU2XzIgU2xlZWZfc2luY29zcGlmOF91MDUoX19tMjU2KTsKK0lNUE9SVCBD
T05TVCBTbGVlZl9fX20yNTZfMiBTbGVlZl9jaW56X3NpbmNvc3BpZjhfdTA1KF9fbTI1Nik7CitJ
TVBPUlQgQ09OU1QgU2xlZWZfX19tMjU2XzIgU2xlZWZfc2luY29zcGlmOF91MzUoX19tMjU2KTsK
K0lNUE9SVCBDT05TVCBTbGVlZl9fX20yNTZfMiBTbGVlZl9jaW56X3NpbmNvc3BpZjhfdTM1KF9f
bTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX3NpbnBpZjhfdTA1KF9fbTI1Nik7CitJ
TVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2Npbnpfc2lucGlmOF91MDUoX19tMjU2KTsKK0lNUE9S
VCBDT05TVCBfX20yNTYgU2xlZWZfY29zcGlmOF91MDUoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBf
X20yNTYgU2xlZWZfY2luel9jb3NwaWY4X3UwNShfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1
NiBTbGVlZl9mbWFmOChfX20yNTYsIF9fbTI1NiwgX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20y
NTYgU2xlZWZfY2luel9mbWFmOChfX20yNTYsIF9fbTI1NiwgX19tMjU2KTsKK0lNUE9SVCBDT05T
VCBfX20yNTYgU2xlZWZfc3FydGY4KF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVm
X2Npbnpfc3FydGY4KF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX3NxcnRmOF91
MDUoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfY2luel9zcXJ0ZjhfdTA1KF9f
bTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX3NxcnRmOF91MzUoX19tMjU2KTsKK0lN
UE9SVCBDT05TVCBfX20yNTYgU2xlZWZfY2luel9zcXJ0ZjhfdTM1KF9fbTI1Nik7CitJTVBPUlQg
Q09OU1QgX19tMjU2IFNsZWVmX2h5cG90ZjhfdTA1KF9fbTI1NiwgX19tMjU2KTsKK0lNUE9SVCBD
T05TVCBfX20yNTYgU2xlZWZfY2luel9oeXBvdGY4X3UwNShfX20yNTYsIF9fbTI1Nik7CitJTVBP
UlQgQ09OU1QgX19tMjU2IFNsZWVmX2h5cG90ZjhfdTM1KF9fbTI1NiwgX19tMjU2KTsKK0lNUE9S
VCBDT05TVCBfX20yNTYgU2xlZWZfY2luel9oeXBvdGY4X3UzNShfX20yNTYsIF9fbTI1Nik7CitJ
TVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2ZhYnNmOChfX20yNTYpOworSU1QT1JUIENPTlNUIF9f
bTI1NiBTbGVlZl9jaW56X2ZhYnNmOChfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVl
Zl9jb3B5c2lnbmY4KF9fbTI1NiwgX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZf
Y2luel9jb3B5c2lnbmY4KF9fbTI1NiwgX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xl
ZWZfZm1heGY4KF9fbTI1NiwgX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfY2lu
el9mbWF4ZjgoX19tMjU2LCBfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9mbWlu
ZjgoX19tMjU2LCBfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9jaW56X2ZtaW5m
OChfX20yNTYsIF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2ZkaW1mOChfX20y
NTYsIF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2NpbnpfZmRpbWY4KF9fbTI1
NiwgX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfdHJ1bmNmOChfX20yNTYpOwor
SU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9jaW56X3RydW5jZjgoX19tMjU2KTsKK0lNUE9SVCBD
T05TVCBfX20yNTYgU2xlZWZfZmxvb3JmOChfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBT
bGVlZl9jaW56X2Zsb29yZjgoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfY2Vp
bGY4KF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2NpbnpfY2VpbGY4KF9fbTI1
Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX3JvdW5kZjgoX19tMjU2KTsKK0lNUE9SVCBD
T05TVCBfX20yNTYgU2xlZWZfY2luel9yb3VuZGY4KF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19t
MjU2IFNsZWVmX3JpbnRmOChfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9jaW56
X3JpbnRmOChfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9uZXh0YWZ0ZXJmOChf
X20yNTYsIF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2NpbnpfbmV4dGFmdGVy
ZjgoX19tMjU2LCBfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9mcmZyZXhwZjgo
X19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfY2luel9mcmZyZXhwZjgoX19tMjU2
KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfZm1vZGY4KF9fbTI1NiwgX19tMjU2KTsKK0lN
UE9SVCBDT05TVCBfX20yNTYgU2xlZWZfY2luel9mbW9kZjgoX19tMjU2LCBfX20yNTYpOworSU1Q
T1JUIENPTlNUIFNsZWVmX19fbTI1Nl8yIFNsZWVmX21vZGZmOChfX20yNTYpOworSU1QT1JUIENP
TlNUIFNsZWVmX19fbTI1Nl8yIFNsZWVmX2NpbnpfbW9kZmY4KF9fbTI1Nik7CitJTVBPUlQgQ09O
U1QgX19tMjU2IFNsZWVmX2xnYW1tYWY4X3UxMChfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1
NiBTbGVlZl9jaW56X2xnYW1tYWY4X3UxMChfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBT
bGVlZl90Z2FtbWFmOF91MTAoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfY2lu
el90Z2FtbWFmOF91MTAoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfZXJmZjhf
dTEwKF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2NpbnpfZXJmZjhfdTEwKF9f
bTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2VyZmNmOF91MTUoX19tMjU2KTsKK0lN
UE9SVCBDT05TVCBfX20yNTYgU2xlZWZfY2luel9lcmZjZjhfdTE1KF9fbTI1Nik7CitJTVBPUlQg
Q09OU1QgaW50IFNsZWVmX2dldEludGY4KGludCk7CitJTVBPUlQgQ09OU1QgaW50IFNsZWVmX2Np
bnpfZ2V0SW50ZjgoaW50KTsKK0lNUE9SVCBDT05TVCB2b2lkICpTbGVlZl9nZXRQdHJmOChpbnQp
OworSU1QT1JUIENPTlNUIHZvaWQgKlNsZWVmX2NpbnpfZ2V0UHRyZjgoaW50KTsKKyNlbmRpZgor
I2lmZGVmIF9fQVZYX18KKyNkZWZpbmUgU1RSVUNUX0tFWVdPUkRfX19BVlhfXyBzdHJ1Y3QKKwor
I2lmbmRlZiBTbGVlZl9fX20yNTZkXzJfREVGSU5FRAordHlwZWRlZiBTVFJVQ1RfS0VZV09SRF9f
X0FWWF9fIHsKKyAgX19tMjU2ZCB4LCB5OworfSBTbGVlZl9fX20yNTZkXzI7CisjZGVmaW5lIFNs
ZWVmX19fbTI1NmRfMl9ERUZJTkVECisjZW5kaWYKKworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xl
ZWZfc2luZDRfdTM1YXZ4KF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfY2lu
el9zaW5kNF91MzVhdngoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9jb3Nk
NF91MzVhdngoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9jaW56X2Nvc2Q0
X3UzNWF2eChfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBTbGVlZl9fX20yNTZkXzIgU2xlZWZfc2lu
Y29zZDRfdTM1YXZ4KF9fbTI1NmQpOworSU1QT1JUIENPTlNUIFNsZWVmX19fbTI1NmRfMiBTbGVl
Zl9jaW56X3NpbmNvc2Q0X3UzNWF2eChfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNs
ZWVmX3RhbmQ0X3UzNWF2eChfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2Np
bnpfdGFuZDRfdTM1YXZ4KF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfYXNp
bmQ0X3UzNWF2eChfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2NpbnpfYXNp
bmQ0X3UzNWF2eChfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2Fjb3NkNF91
MzVhdngoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9jaW56X2Fjb3NkNF91
MzVhdngoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9hdGFuZDRfdTM1YXZ4
KF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfY2luel9hdGFuZDRfdTM1YXZ4
KF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfYXRhbjJkNF91MzVhdngoX19t
MjU2ZCwgX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9jaW56X2F0YW4yZDRf
dTM1YXZ4KF9fbTI1NmQsIF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfbG9n
ZDRfdTM1YXZ4KF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfY2luel9sb2dk
NF91MzVhdngoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9jYnJ0ZDRfdTM1
YXZ4KF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfY2luel9jYnJ0ZDRfdTM1
YXZ4KF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfc2luZDRfdTEwYXZ4KF9f
bTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfY2luel9zaW5kNF91MTBhdngoX19t
MjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9jb3NkNF91MTBhdngoX19tMjU2ZCk7
CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9jaW56X2Nvc2Q0X3UxMGF2eChfX20yNTZkKTsK
K0lNUE9SVCBDT05TVCBTbGVlZl9fX20yNTZkXzIgU2xlZWZfc2luY29zZDRfdTEwYXZ4KF9fbTI1
NmQpOworSU1QT1JUIENPTlNUIFNsZWVmX19fbTI1NmRfMiBTbGVlZl9jaW56X3NpbmNvc2Q0X3Ux
MGF2eChfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX3RhbmQ0X3UxMGF2eChf
X20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2NpbnpfdGFuZDRfdTEwYXZ4KF9f
bTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfYXNpbmQ0X3UxMGF2eChfX20yNTZk
KTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2NpbnpfYXNpbmQ0X3UxMGF2eChfX20yNTZk
KTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2Fjb3NkNF91MTBhdngoX19tMjU2ZCk7CitJ
TVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9jaW56X2Fjb3NkNF91MTBhdngoX19tMjU2ZCk7CitJ
TVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9hdGFuZDRfdTEwYXZ4KF9fbTI1NmQpOworSU1QT1JU
IENPTlNUIF9fbTI1NmQgU2xlZWZfY2luel9hdGFuZDRfdTEwYXZ4KF9fbTI1NmQpOworSU1QT1JU
IENPTlNUIF9fbTI1NmQgU2xlZWZfYXRhbjJkNF91MTBhdngoX19tMjU2ZCwgX19tMjU2ZCk7CitJ
TVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9jaW56X2F0YW4yZDRfdTEwYXZ4KF9fbTI1NmQsIF9f
bTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfbG9nZDRfdTEwYXZ4KF9fbTI1NmQp
OworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfY2luel9sb2dkNF91MTBhdngoX19tMjU2ZCk7
CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9jYnJ0ZDRfdTEwYXZ4KF9fbTI1NmQpOworSU1Q
T1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfY2luel9jYnJ0ZDRfdTEwYXZ4KF9fbTI1NmQpOworSU1Q
T1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfZXhwZDRfdTEwYXZ4KF9fbTI1NmQpOworSU1QT1JUIENP
TlNUIF9fbTI1NmQgU2xlZWZfY2luel9leHBkNF91MTBhdngoX19tMjU2ZCk7CitJTVBPUlQgQ09O
U1QgX19tMjU2ZCBTbGVlZl9wb3dkNF91MTBhdngoX19tMjU2ZCwgX19tMjU2ZCk7CitJTVBPUlQg
Q09OU1QgX19tMjU2ZCBTbGVlZl9jaW56X3Bvd2Q0X3UxMGF2eChfX20yNTZkLCBfX20yNTZkKTsK
K0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX3NpbmhkNF91MTBhdngoX19tMjU2ZCk7CitJTVBP
UlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9jaW56X3NpbmhkNF91MTBhdngoX19tMjU2ZCk7CitJTVBP
UlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9jb3NoZDRfdTEwYXZ4KF9fbTI1NmQpOworSU1QT1JUIENP
TlNUIF9fbTI1NmQgU2xlZWZfY2luel9jb3NoZDRfdTEwYXZ4KF9fbTI1NmQpOworSU1QT1JUIENP
TlNUIF9fbTI1NmQgU2xlZWZfdGFuaGQ0X3UxMGF2eChfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBf
X20yNTZkIFNsZWVmX2NpbnpfdGFuaGQ0X3UxMGF2eChfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBf
X20yNTZkIFNsZWVmX3NpbmhkNF91MzVhdngoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2
ZCBTbGVlZl9jaW56X3NpbmhkNF91MzVhdngoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2
ZCBTbGVlZl9jb3NoZDRfdTM1YXZ4KF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xl
ZWZfY2luel9jb3NoZDRfdTM1YXZ4KF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xl
ZWZfdGFuaGQ0X3UzNWF2eChfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2Np
bnpfdGFuaGQ0X3UzNWF2eChfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2Zh
c3RzaW5kNF91MzUwMGF2eChfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2Np
bnpfZmFzdHNpbmQ0X3UzNTAwYXZ4KF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xl
ZWZfZmFzdGNvc2Q0X3UzNTAwYXZ4KF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xl
ZWZfY2luel9mYXN0Y29zZDRfdTM1MDBhdngoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2
ZCBTbGVlZl9mYXN0cG93ZDRfdTM1MDBhdngoX19tMjU2ZCwgX19tMjU2ZCk7CitJTVBPUlQgQ09O
U1QgX19tMjU2ZCBTbGVlZl9jaW56X2Zhc3Rwb3dkNF91MzUwMGF2eChfX20yNTZkLCBfX20yNTZk
KTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2FzaW5oZDRfdTEwYXZ4KF9fbTI1NmQpOwor
SU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfY2luel9hc2luaGQ0X3UxMGF2eChfX20yNTZkKTsK
K0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2Fjb3NoZDRfdTEwYXZ4KF9fbTI1NmQpOworSU1Q
T1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfY2luel9hY29zaGQ0X3UxMGF2eChfX20yNTZkKTsKK0lN
UE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2F0YW5oZDRfdTEwYXZ4KF9fbTI1NmQpOworSU1QT1JU
IENPTlNUIF9fbTI1NmQgU2xlZWZfY2luel9hdGFuaGQ0X3UxMGF2eChfX20yNTZkKTsKK0lNUE9S
VCBDT05TVCBfX20yNTZkIFNsZWVmX2V4cDJkNF91MTBhdngoX19tMjU2ZCk7CitJTVBPUlQgQ09O
U1QgX19tMjU2ZCBTbGVlZl9jaW56X2V4cDJkNF91MTBhdngoX19tMjU2ZCk7CitJTVBPUlQgQ09O
U1QgX19tMjU2ZCBTbGVlZl9leHAyZDRfdTM1YXZ4KF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9f
bTI1NmQgU2xlZWZfY2luel9leHAyZDRfdTM1YXZ4KF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9f
bTI1NmQgU2xlZWZfZXhwMTBkNF91MTBhdngoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2
ZCBTbGVlZl9jaW56X2V4cDEwZDRfdTEwYXZ4KF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1
NmQgU2xlZWZfZXhwMTBkNF91MzVhdngoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBT
bGVlZl9jaW56X2V4cDEwZDRfdTM1YXZ4KF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQg
U2xlZWZfZXhwbTFkNF91MTBhdngoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVl
Zl9jaW56X2V4cG0xZDRfdTEwYXZ4KF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xl
ZWZfbG9nMTBkNF91MTBhdngoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9j
aW56X2xvZzEwZDRfdTEwYXZ4KF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZf
bG9nMmQ0X3UxMGF2eChfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2Npbnpf
bG9nMmQ0X3UxMGF2eChfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2xvZzJk
NF91MzVhdngoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9jaW56X2xvZzJk
NF91MzVhdngoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9sb2cxcGQ0X3Ux
MGF2eChfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2NpbnpfbG9nMXBkNF91
MTBhdngoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgU2xlZWZfX19tMjU2ZF8yIFNsZWVmX3NpbmNv
c3BpZDRfdTA1YXZ4KF9fbTI1NmQpOworSU1QT1JUIENPTlNUIFNsZWVmX19fbTI1NmRfMiBTbGVl
Zl9jaW56X3NpbmNvc3BpZDRfdTA1YXZ4KF9fbTI1NmQpOworSU1QT1JUIENPTlNUIFNsZWVmX19f
bTI1NmRfMiBTbGVlZl9zaW5jb3NwaWQ0X3UzNWF2eChfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBT
bGVlZl9fX20yNTZkXzIgU2xlZWZfY2luel9zaW5jb3NwaWQ0X3UzNWF2eChfX20yNTZkKTsKK0lN
UE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX3NpbnBpZDRfdTA1YXZ4KF9fbTI1NmQpOworSU1QT1JU
IENPTlNUIF9fbTI1NmQgU2xlZWZfY2luel9zaW5waWQ0X3UwNWF2eChfX20yNTZkKTsKK0lNUE9S
VCBDT05TVCBfX20yNTZkIFNsZWVmX2Nvc3BpZDRfdTA1YXZ4KF9fbTI1NmQpOworSU1QT1JUIENP
TlNUIF9fbTI1NmQgU2xlZWZfY2luel9jb3NwaWQ0X3UwNWF2eChfX20yNTZkKTsKK0lNUE9SVCBD
T05TVCBfX20yNTZkIFNsZWVmX2xkZXhwZDRfYXZ4KF9fbTI1NmQsIF9fbTEyOGkpOworSU1QT1JU
IENPTlNUIF9fbTI1NmQgU2xlZWZfY2luel9sZGV4cGQ0X2F2eChfX20yNTZkLCBfX20xMjhpKTsK
K0lNUE9SVCBDT05TVCBfX20xMjhpIFNsZWVmX2lsb2diZDRfYXZ4KF9fbTI1NmQpOworSU1QT1JU
IENPTlNUIF9fbTEyOGkgU2xlZWZfY2luel9pbG9nYmQ0X2F2eChfX20yNTZkKTsKK0lNUE9SVCBD
T05TVCBfX20yNTZkIFNsZWVmX2ZtYWQ0X2F2eChfX20yNTZkLCBfX20yNTZkLCBfX20yNTZkKTsK
K0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2NpbnpfZm1hZDRfYXZ4KF9fbTI1NmQsIF9fbTI1
NmQsIF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfc3FydGQ0X2F2eChfX20y
NTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2Npbnpfc3FydGQ0X2F2eChfX20yNTZk
KTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX3NxcnRkNF91MDVhdngoX19tMjU2ZCk7CitJ
TVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9jaW56X3NxcnRkNF91MDVhdngoX19tMjU2ZCk7CitJ
TVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9zcXJ0ZDRfdTM1YXZ4KF9fbTI1NmQpOworSU1QT1JU
IENPTlNUIF9fbTI1NmQgU2xlZWZfY2luel9zcXJ0ZDRfdTM1YXZ4KF9fbTI1NmQpOworSU1QT1JU
IENPTlNUIF9fbTI1NmQgU2xlZWZfaHlwb3RkNF91MDVhdngoX19tMjU2ZCwgX19tMjU2ZCk7CitJ
TVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9jaW56X2h5cG90ZDRfdTA1YXZ4KF9fbTI1NmQsIF9f
bTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfaHlwb3RkNF91MzVhdngoX19tMjU2
ZCwgX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9jaW56X2h5cG90ZDRfdTM1
YXZ4KF9fbTI1NmQsIF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfZmFic2Q0
X2F2eChfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2NpbnpfZmFic2Q0X2F2
eChfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2NvcHlzaWduZDRfYXZ4KF9f
bTI1NmQsIF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfY2luel9jb3B5c2ln
bmQ0X2F2eChfX20yNTZkLCBfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2Zt
YXhkNF9hdngoX19tMjU2ZCwgX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9j
aW56X2ZtYXhkNF9hdngoX19tMjU2ZCwgX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBT
bGVlZl9mbWluZDRfYXZ4KF9fbTI1NmQsIF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQg
U2xlZWZfY2luel9mbWluZDRfYXZ4KF9fbTI1NmQsIF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9f
bTI1NmQgU2xlZWZfZmRpbWQ0X2F2eChfX20yNTZkLCBfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBf
X20yNTZkIFNsZWVmX2NpbnpfZmRpbWQ0X2F2eChfX20yNTZkLCBfX20yNTZkKTsKK0lNUE9SVCBD
T05TVCBfX20yNTZkIFNsZWVmX3RydW5jZDRfYXZ4KF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9f
bTI1NmQgU2xlZWZfY2luel90cnVuY2Q0X2F2eChfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20y
NTZkIFNsZWVmX2Zsb29yZDRfYXZ4KF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xl
ZWZfY2luel9mbG9vcmQ0X2F2eChfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVm
X2NlaWxkNF9hdngoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9jaW56X2Nl
aWxkNF9hdngoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9yb3VuZGQ0X2F2
eChfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2Npbnpfcm91bmRkNF9hdngo
X19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9yaW50ZDRfYXZ4KF9fbTI1NmQp
OworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfY2luel9yaW50ZDRfYXZ4KF9fbTI1NmQpOwor
SU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfbmV4dGFmdGVyZDRfYXZ4KF9fbTI1NmQsIF9fbTI1
NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfY2luel9uZXh0YWZ0ZXJkNF9hdngoX19t
MjU2ZCwgX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9mcmZyZXhwZDRfYXZ4
KF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfY2luel9mcmZyZXhwZDRfYXZ4
KF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTEyOGkgU2xlZWZfZXhwZnJleHBkNF9hdngoX19t
MjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4aSBTbGVlZl9jaW56X2V4cGZyZXhwZDRfYXZ4KF9f
bTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfZm1vZGQ0X2F2eChfX20yNTZkLCBf
X20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2NpbnpfZm1vZGQ0X2F2eChfX20y
NTZkLCBfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBTbGVlZl9fX20yNTZkXzIgU2xlZWZfbW9kZmQ0
X2F2eChfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBTbGVlZl9fX20yNTZkXzIgU2xlZWZfY2luel9t
b2RmZDRfYXZ4KF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfbGdhbW1hZDRf
dTEwYXZ4KF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfY2luel9sZ2FtbWFk
NF91MTBhdngoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl90Z2FtbWFkNF91
MTBhdngoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9jaW56X3RnYW1tYWQ0
X3UxMGF2eChfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2VyZmQ0X3UxMGF2
eChfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2NpbnpfZXJmZDRfdTEwYXZ4
KF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfZXJmY2Q0X3UxNWF2eChfX20y
NTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2NpbnpfZXJmY2Q0X3UxNWF2eChfX20y
NTZkKTsKK0lNUE9SVCBDT05TVCBpbnQgU2xlZWZfZ2V0SW50ZDRfYXZ4KGludCk7CitJTVBPUlQg
Q09OU1Qgdm9pZCAqU2xlZWZfZ2V0UHRyZDRfYXZ4KGludCk7CisKKyNpZm5kZWYgU2xlZWZfX19t
MjU2XzJfREVGSU5FRAordHlwZWRlZiBTVFJVQ1RfS0VZV09SRF9fX0FWWF9fIHsKKyAgX19tMjU2
IHgsIHk7Cit9IFNsZWVmX19fbTI1Nl8yOworI2RlZmluZSBTbGVlZl9fX20yNTZfMl9ERUZJTkVE
CisjZW5kaWYKKworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9zaW5mOF91MzVhdngoX19tMjU2
KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfY2luel9zaW5mOF91MzVhdngoX19tMjU2KTsK
K0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfY29zZjhfdTM1YXZ4KF9fbTI1Nik7CitJTVBPUlQg
Q09OU1QgX19tMjU2IFNsZWVmX2NpbnpfY29zZjhfdTM1YXZ4KF9fbTI1Nik7CitJTVBPUlQgQ09O
U1QgU2xlZWZfX19tMjU2XzIgU2xlZWZfc2luY29zZjhfdTM1YXZ4KF9fbTI1Nik7CitJTVBPUlQg
Q09OU1QgU2xlZWZfX19tMjU2XzIgU2xlZWZfY2luel9zaW5jb3NmOF91MzVhdngoX19tMjU2KTsK
K0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfdGFuZjhfdTM1YXZ4KF9fbTI1Nik7CitJTVBPUlQg
Q09OU1QgX19tMjU2IFNsZWVmX2NpbnpfdGFuZjhfdTM1YXZ4KF9fbTI1Nik7CitJTVBPUlQgQ09O
U1QgX19tMjU2IFNsZWVmX2FzaW5mOF91MzVhdngoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20y
NTYgU2xlZWZfY2luel9hc2luZjhfdTM1YXZ4KF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2
IFNsZWVmX2Fjb3NmOF91MzVhdngoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZf
Y2luel9hY29zZjhfdTM1YXZ4KF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2F0
YW5mOF91MzVhdngoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfY2luel9hdGFu
ZjhfdTM1YXZ4KF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2F0YW4yZjhfdTM1
YXZ4KF9fbTI1NiwgX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfY2luel9hdGFu
MmY4X3UzNWF2eChfX20yNTYsIF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2xv
Z2Y4X3UzNWF2eChfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9jaW56X2xvZ2Y4
X3UzNWF2eChfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9jYnJ0ZjhfdTM1YXZ4
KF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2NpbnpfY2JydGY4X3UzNWF2eChf
X20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9zaW5mOF91MTBhdngoX19tMjU2KTsK
K0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfY2luel9zaW5mOF91MTBhdngoX19tMjU2KTsKK0lN
UE9SVCBDT05TVCBfX20yNTYgU2xlZWZfY29zZjhfdTEwYXZ4KF9fbTI1Nik7CitJTVBPUlQgQ09O
U1QgX19tMjU2IFNsZWVmX2NpbnpfY29zZjhfdTEwYXZ4KF9fbTI1Nik7CitJTVBPUlQgQ09OU1Qg
U2xlZWZfX19tMjU2XzIgU2xlZWZfc2luY29zZjhfdTEwYXZ4KF9fbTI1Nik7CitJTVBPUlQgQ09O
U1QgU2xlZWZfX19tMjU2XzIgU2xlZWZfY2luel9zaW5jb3NmOF91MTBhdngoX19tMjU2KTsKK0lN
UE9SVCBDT05TVCBfX20yNTYgU2xlZWZfdGFuZjhfdTEwYXZ4KF9fbTI1Nik7CitJTVBPUlQgQ09O
U1QgX19tMjU2IFNsZWVmX2NpbnpfdGFuZjhfdTEwYXZ4KF9fbTI1Nik7CitJTVBPUlQgQ09OU1Qg
X19tMjU2IFNsZWVmX2FzaW5mOF91MTBhdngoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYg
U2xlZWZfY2luel9hc2luZjhfdTEwYXZ4KF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNs
ZWVmX2Fjb3NmOF91MTBhdngoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfY2lu
el9hY29zZjhfdTEwYXZ4KF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2F0YW5m
OF91MTBhdngoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfY2luel9hdGFuZjhf
dTEwYXZ4KF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2F0YW4yZjhfdTEwYXZ4
KF9fbTI1NiwgX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfY2luel9hdGFuMmY4
X3UxMGF2eChfX20yNTYsIF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2xvZ2Y4
X3UxMGF2eChfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9jaW56X2xvZ2Y4X3Ux
MGF2eChfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9jYnJ0ZjhfdTEwYXZ4KF9f
bTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2NpbnpfY2JydGY4X3UxMGF2eChfX20y
NTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9leHBmOF91MTBhdngoX19tMjU2KTsKK0lN
UE9SVCBDT05TVCBfX20yNTYgU2xlZWZfY2luel9leHBmOF91MTBhdngoX19tMjU2KTsKK0lNUE9S
VCBDT05TVCBfX20yNTYgU2xlZWZfcG93ZjhfdTEwYXZ4KF9fbTI1NiwgX19tMjU2KTsKK0lNUE9S
VCBDT05TVCBfX20yNTYgU2xlZWZfY2luel9wb3dmOF91MTBhdngoX19tMjU2LCBfX20yNTYpOwor
SU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9zaW5oZjhfdTEwYXZ4KF9fbTI1Nik7CitJTVBPUlQg
Q09OU1QgX19tMjU2IFNsZWVmX2Npbnpfc2luaGY4X3UxMGF2eChfX20yNTYpOworSU1QT1JUIENP
TlNUIF9fbTI1NiBTbGVlZl9jb3NoZjhfdTEwYXZ4KF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19t
MjU2IFNsZWVmX2NpbnpfY29zaGY4X3UxMGF2eChfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1
NiBTbGVlZl90YW5oZjhfdTEwYXZ4KF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVm
X2NpbnpfdGFuaGY4X3UxMGF2eChfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9z
aW5oZjhfdTM1YXZ4KF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2Npbnpfc2lu
aGY4X3UzNWF2eChfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9jb3NoZjhfdTM1
YXZ4KF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2NpbnpfY29zaGY4X3UzNWF2
eChfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl90YW5oZjhfdTM1YXZ4KF9fbTI1
Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2NpbnpfdGFuaGY4X3UzNWF2eChfX20yNTYp
OworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9mYXN0c2luZjhfdTM1MDBhdngoX19tMjU2KTsK
K0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfY2luel9mYXN0c2luZjhfdTM1MDBhdngoX19tMjU2
KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfZmFzdGNvc2Y4X3UzNTAwYXZ4KF9fbTI1Nik7
CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2NpbnpfZmFzdGNvc2Y4X3UzNTAwYXZ4KF9fbTI1
Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2Zhc3Rwb3dmOF91MzUwMGF2eChfX20yNTYs
IF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2NpbnpfZmFzdHBvd2Y4X3UzNTAw
YXZ4KF9fbTI1NiwgX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfYXNpbmhmOF91
MTBhdngoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfY2luel9hc2luaGY4X3Ux
MGF2eChfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9hY29zaGY4X3UxMGF2eChf
X20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9jaW56X2Fjb3NoZjhfdTEwYXZ4KF9f
bTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2F0YW5oZjhfdTEwYXZ4KF9fbTI1Nik7
CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2NpbnpfYXRhbmhmOF91MTBhdngoX19tMjU2KTsK
K0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfZXhwMmY4X3UxMGF2eChfX20yNTYpOworSU1QT1JU
IENPTlNUIF9fbTI1NiBTbGVlZl9jaW56X2V4cDJmOF91MTBhdngoX19tMjU2KTsKK0lNUE9SVCBD
T05TVCBfX20yNTYgU2xlZWZfZXhwMmY4X3UzNWF2eChfX20yNTYpOworSU1QT1JUIENPTlNUIF9f
bTI1NiBTbGVlZl9jaW56X2V4cDJmOF91MzVhdngoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20y
NTYgU2xlZWZfZXhwMTBmOF91MTBhdngoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xl
ZWZfY2luel9leHAxMGY4X3UxMGF2eChfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVl
Zl9leHAxMGY4X3UzNWF2eChfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9jaW56
X2V4cDEwZjhfdTM1YXZ4KF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2V4cG0x
ZjhfdTEwYXZ4KF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2NpbnpfZXhwbTFm
OF91MTBhdngoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfbG9nMTBmOF91MTBh
dngoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfY2luel9sb2cxMGY4X3UxMGF2
eChfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9sb2cyZjhfdTEwYXZ4KF9fbTI1
Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2NpbnpfbG9nMmY4X3UxMGF2eChfX20yNTYp
OworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9sb2cyZjhfdTM1YXZ4KF9fbTI1Nik7CitJTVBP
UlQgQ09OU1QgX19tMjU2IFNsZWVmX2NpbnpfbG9nMmY4X3UzNWF2eChfX20yNTYpOworSU1QT1JU
IENPTlNUIF9fbTI1NiBTbGVlZl9sb2cxcGY4X3UxMGF2eChfX20yNTYpOworSU1QT1JUIENPTlNU
IF9fbTI1NiBTbGVlZl9jaW56X2xvZzFwZjhfdTEwYXZ4KF9fbTI1Nik7CitJTVBPUlQgQ09OU1Qg
U2xlZWZfX19tMjU2XzIgU2xlZWZfc2luY29zcGlmOF91MDVhdngoX19tMjU2KTsKK0lNUE9SVCBD
T05TVCBTbGVlZl9fX20yNTZfMiBTbGVlZl9jaW56X3NpbmNvc3BpZjhfdTA1YXZ4KF9fbTI1Nik7
CitJTVBPUlQgQ09OU1QgU2xlZWZfX19tMjU2XzIgU2xlZWZfc2luY29zcGlmOF91MzVhdngoX19t
MjU2KTsKK0lNUE9SVCBDT05TVCBTbGVlZl9fX20yNTZfMiBTbGVlZl9jaW56X3NpbmNvc3BpZjhf
dTM1YXZ4KF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX3NpbnBpZjhfdTA1YXZ4
KF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2Npbnpfc2lucGlmOF91MDVhdngo
X19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfY29zcGlmOF91MDVhdngoX19tMjU2
KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfY2luel9jb3NwaWY4X3UwNWF2eChfX20yNTYp
OworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9mbWFmOF9hdngoX19tMjU2LCBfX20yNTYsIF9f
bTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2NpbnpfZm1hZjhfYXZ4KF9fbTI1Niwg
X19tMjU2LCBfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9zcXJ0ZjhfYXZ4KF9f
bTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2Npbnpfc3FydGY4X2F2eChfX20yNTYp
OworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9zcXJ0ZjhfdTA1YXZ4KF9fbTI1Nik7CitJTVBP
UlQgQ09OU1QgX19tMjU2IFNsZWVmX2Npbnpfc3FydGY4X3UwNWF2eChfX20yNTYpOworSU1QT1JU
IENPTlNUIF9fbTI1NiBTbGVlZl9zcXJ0ZjhfdTM1YXZ4KF9fbTI1Nik7CitJTVBPUlQgQ09OU1Qg
X19tMjU2IFNsZWVmX2Npbnpfc3FydGY4X3UzNWF2eChfX20yNTYpOworSU1QT1JUIENPTlNUIF9f
bTI1NiBTbGVlZl9oeXBvdGY4X3UwNWF2eChfX20yNTYsIF9fbTI1Nik7CitJTVBPUlQgQ09OU1Qg
X19tMjU2IFNsZWVmX2NpbnpfaHlwb3RmOF91MDVhdngoX19tMjU2LCBfX20yNTYpOworSU1QT1JU
IENPTlNUIF9fbTI1NiBTbGVlZl9oeXBvdGY4X3UzNWF2eChfX20yNTYsIF9fbTI1Nik7CitJTVBP
UlQgQ09OU1QgX19tMjU2IFNsZWVmX2NpbnpfaHlwb3RmOF91MzVhdngoX19tMjU2LCBfX20yNTYp
OworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9mYWJzZjhfYXZ4KF9fbTI1Nik7CitJTVBPUlQg
Q09OU1QgX19tMjU2IFNsZWVmX2NpbnpfZmFic2Y4X2F2eChfX20yNTYpOworSU1QT1JUIENPTlNU
IF9fbTI1NiBTbGVlZl9jb3B5c2lnbmY4X2F2eChfX20yNTYsIF9fbTI1Nik7CitJTVBPUlQgQ09O
U1QgX19tMjU2IFNsZWVmX2NpbnpfY29weXNpZ25mOF9hdngoX19tMjU2LCBfX20yNTYpOworSU1Q
T1JUIENPTlNUIF9fbTI1NiBTbGVlZl9mbWF4ZjhfYXZ4KF9fbTI1NiwgX19tMjU2KTsKK0lNUE9S
VCBDT05TVCBfX20yNTYgU2xlZWZfY2luel9mbWF4ZjhfYXZ4KF9fbTI1NiwgX19tMjU2KTsKK0lN
UE9SVCBDT05TVCBfX20yNTYgU2xlZWZfZm1pbmY4X2F2eChfX20yNTYsIF9fbTI1Nik7CitJTVBP
UlQgQ09OU1QgX19tMjU2IFNsZWVmX2NpbnpfZm1pbmY4X2F2eChfX20yNTYsIF9fbTI1Nik7CitJ
TVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2ZkaW1mOF9hdngoX19tMjU2LCBfX20yNTYpOworSU1Q
T1JUIENPTlNUIF9fbTI1NiBTbGVlZl9jaW56X2ZkaW1mOF9hdngoX19tMjU2LCBfX20yNTYpOwor
SU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl90cnVuY2Y4X2F2eChfX20yNTYpOworSU1QT1JUIENP
TlNUIF9fbTI1NiBTbGVlZl9jaW56X3RydW5jZjhfYXZ4KF9fbTI1Nik7CitJTVBPUlQgQ09OU1Qg
X19tMjU2IFNsZWVmX2Zsb29yZjhfYXZ4KF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNs
ZWVmX2NpbnpfZmxvb3JmOF9hdngoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZf
Y2VpbGY4X2F2eChfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9jaW56X2NlaWxm
OF9hdngoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfcm91bmRmOF9hdngoX19t
MjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfY2luel9yb3VuZGY4X2F2eChfX20yNTYp
OworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9yaW50ZjhfYXZ4KF9fbTI1Nik7CitJTVBPUlQg
Q09OU1QgX19tMjU2IFNsZWVmX2NpbnpfcmludGY4X2F2eChfX20yNTYpOworSU1QT1JUIENPTlNU
IF9fbTI1NiBTbGVlZl9uZXh0YWZ0ZXJmOF9hdngoX19tMjU2LCBfX20yNTYpOworSU1QT1JUIENP
TlNUIF9fbTI1NiBTbGVlZl9jaW56X25leHRhZnRlcmY4X2F2eChfX20yNTYsIF9fbTI1Nik7CitJ
TVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2ZyZnJleHBmOF9hdngoX19tMjU2KTsKK0lNUE9SVCBD
T05TVCBfX20yNTYgU2xlZWZfY2luel9mcmZyZXhwZjhfYXZ4KF9fbTI1Nik7CitJTVBPUlQgQ09O
U1QgX19tMjU2IFNsZWVmX2Ztb2RmOF9hdngoX19tMjU2LCBfX20yNTYpOworSU1QT1JUIENPTlNU
IF9fbTI1NiBTbGVlZl9jaW56X2Ztb2RmOF9hdngoX19tMjU2LCBfX20yNTYpOworSU1QT1JUIENP
TlNUIFNsZWVmX19fbTI1Nl8yIFNsZWVmX21vZGZmOF9hdngoX19tMjU2KTsKK0lNUE9SVCBDT05T
VCBTbGVlZl9fX20yNTZfMiBTbGVlZl9jaW56X21vZGZmOF9hdngoX19tMjU2KTsKK0lNUE9SVCBD
T05TVCBfX20yNTYgU2xlZWZfbGdhbW1hZjhfdTEwYXZ4KF9fbTI1Nik7CitJTVBPUlQgQ09OU1Qg
X19tMjU2IFNsZWVmX2NpbnpfbGdhbW1hZjhfdTEwYXZ4KF9fbTI1Nik7CitJTVBPUlQgQ09OU1Qg
X19tMjU2IFNsZWVmX3RnYW1tYWY4X3UxMGF2eChfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1
NiBTbGVlZl9jaW56X3RnYW1tYWY4X3UxMGF2eChfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1
NiBTbGVlZl9lcmZmOF91MTBhdngoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZf
Y2luel9lcmZmOF91MTBhdngoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfZXJm
Y2Y4X3UxNWF2eChfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9jaW56X2VyZmNm
OF91MTVhdngoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBpbnQgU2xlZWZfZ2V0SW50ZjhfYXZ4KGlu
dCk7CitJTVBPUlQgQ09OU1QgaW50IFNsZWVmX2NpbnpfZ2V0SW50ZjhfYXZ4KGludCk7CitJTVBP
UlQgQ09OU1Qgdm9pZCAqU2xlZWZfZ2V0UHRyZjhfYXZ4KGludCk7CitJTVBPUlQgQ09OU1Qgdm9p
ZCAqU2xlZWZfY2luel9nZXRQdHJmOF9hdngoaW50KTsKKyNlbmRpZgorI2lmZGVmIF9fQVZYX18K
KyNkZWZpbmUgU1RSVUNUX0tFWVdPUkRfX19BVlhfXyBzdHJ1Y3QKKworI2lmbmRlZiBTbGVlZl9f
X20yNTZkXzJfREVGSU5FRAordHlwZWRlZiBTVFJVQ1RfS0VZV09SRF9fX0FWWF9fIHsKKyAgX19t
MjU2ZCB4LCB5OworfSBTbGVlZl9fX20yNTZkXzI7CisjZGVmaW5lIFNsZWVmX19fbTI1NmRfMl9E
RUZJTkVECisjZW5kaWYKKworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfc2luZDRfdTM1Zm1h
NChfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2Zpbnpfc2luZDRfdTM1Zm1h
NChfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2Nvc2Q0X3UzNWZtYTQoX19t
MjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9maW56X2Nvc2Q0X3UzNWZtYTQoX19t
MjU2ZCk7CitJTVBPUlQgQ09OU1QgU2xlZWZfX19tMjU2ZF8yIFNsZWVmX3NpbmNvc2Q0X3UzNWZt
YTQoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgU2xlZWZfX19tMjU2ZF8yIFNsZWVmX2Zpbnpfc2lu
Y29zZDRfdTM1Zm1hNChfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX3RhbmQ0
X3UzNWZtYTQoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9maW56X3RhbmQ0
X3UzNWZtYTQoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9hc2luZDRfdTM1
Zm1hNChfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2ZpbnpfYXNpbmQ0X3Uz
NWZtYTQoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9hY29zZDRfdTM1Zm1h
NChfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2ZpbnpfYWNvc2Q0X3UzNWZt
YTQoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9hdGFuZDRfdTM1Zm1hNChf
X20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2ZpbnpfYXRhbmQ0X3UzNWZtYTQo
X19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9hdGFuMmQ0X3UzNWZtYTQoX19t
MjU2ZCwgX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9maW56X2F0YW4yZDRf
dTM1Zm1hNChfX20yNTZkLCBfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2xv
Z2Q0X3UzNWZtYTQoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9maW56X2xv
Z2Q0X3UzNWZtYTQoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9jYnJ0ZDRf
dTM1Zm1hNChfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2ZpbnpfY2JydGQ0
X3UzNWZtYTQoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9zaW5kNF91MTBm
bWE0KF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfZmluel9zaW5kNF91MTBm
bWE0KF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfY29zZDRfdTEwZm1hNChf
X20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2ZpbnpfY29zZDRfdTEwZm1hNChf
X20yNTZkKTsKK0lNUE9SVCBDT05TVCBTbGVlZl9fX20yNTZkXzIgU2xlZWZfc2luY29zZDRfdTEw
Zm1hNChfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBTbGVlZl9fX20yNTZkXzIgU2xlZWZfZmluel9z
aW5jb3NkNF91MTBmbWE0KF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfdGFu
ZDRfdTEwZm1hNChfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2ZpbnpfdGFu
ZDRfdTEwZm1hNChfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2FzaW5kNF91
MTBmbWE0KF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfZmluel9hc2luZDRf
dTEwZm1hNChfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2Fjb3NkNF91MTBm
bWE0KF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfZmluel9hY29zZDRfdTEw
Zm1hNChfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2F0YW5kNF91MTBmbWE0
KF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfZmluel9hdGFuZDRfdTEwZm1h
NChfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2F0YW4yZDRfdTEwZm1hNChf
X20yNTZkLCBfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2ZpbnpfYXRhbjJk
NF91MTBmbWE0KF9fbTI1NmQsIF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZf
bG9nZDRfdTEwZm1hNChfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2Zpbnpf
bG9nZDRfdTEwZm1hNChfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2NicnRk
NF91MTBmbWE0KF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfZmluel9jYnJ0
ZDRfdTEwZm1hNChfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2V4cGQ0X3Ux
MGZtYTQoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9maW56X2V4cGQ0X3Ux
MGZtYTQoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9wb3dkNF91MTBmbWE0
KF9fbTI1NmQsIF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfZmluel9wb3dk
NF91MTBmbWE0KF9fbTI1NmQsIF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZf
c2luaGQ0X3UxMGZtYTQoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9maW56
X3NpbmhkNF91MTBmbWE0KF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfY29z
aGQ0X3UxMGZtYTQoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9maW56X2Nv
c2hkNF91MTBmbWE0KF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfdGFuaGQ0
X3UxMGZtYTQoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9maW56X3Rhbmhk
NF91MTBmbWE0KF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfc2luaGQ0X3Uz
NWZtYTQoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9maW56X3NpbmhkNF91
MzVmbWE0KF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfY29zaGQ0X3UzNWZt
YTQoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9maW56X2Nvc2hkNF91MzVm
bWE0KF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfdGFuaGQ0X3UzNWZtYTQo
X19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9maW56X3RhbmhkNF91MzVmbWE0
KF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfZmFzdHNpbmQ0X3UzNTAwZm1h
NChfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2ZpbnpfZmFzdHNpbmQ0X3Uz
NTAwZm1hNChfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2Zhc3Rjb3NkNF91
MzUwMGZtYTQoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9maW56X2Zhc3Rj
b3NkNF91MzUwMGZtYTQoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9mYXN0
cG93ZDRfdTM1MDBmbWE0KF9fbTI1NmQsIF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQg
U2xlZWZfZmluel9mYXN0cG93ZDRfdTM1MDBmbWE0KF9fbTI1NmQsIF9fbTI1NmQpOworSU1QT1JU
IENPTlNUIF9fbTI1NmQgU2xlZWZfYXNpbmhkNF91MTBmbWE0KF9fbTI1NmQpOworSU1QT1JUIENP
TlNUIF9fbTI1NmQgU2xlZWZfZmluel9hc2luaGQ0X3UxMGZtYTQoX19tMjU2ZCk7CitJTVBPUlQg
Q09OU1QgX19tMjU2ZCBTbGVlZl9hY29zaGQ0X3UxMGZtYTQoX19tMjU2ZCk7CitJTVBPUlQgQ09O
U1QgX19tMjU2ZCBTbGVlZl9maW56X2Fjb3NoZDRfdTEwZm1hNChfX20yNTZkKTsKK0lNUE9SVCBD
T05TVCBfX20yNTZkIFNsZWVmX2F0YW5oZDRfdTEwZm1hNChfX20yNTZkKTsKK0lNUE9SVCBDT05T
VCBfX20yNTZkIFNsZWVmX2ZpbnpfYXRhbmhkNF91MTBmbWE0KF9fbTI1NmQpOworSU1QT1JUIENP
TlNUIF9fbTI1NmQgU2xlZWZfZXhwMmQ0X3UxMGZtYTQoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1Qg
X19tMjU2ZCBTbGVlZl9maW56X2V4cDJkNF91MTBmbWE0KF9fbTI1NmQpOworSU1QT1JUIENPTlNU
IF9fbTI1NmQgU2xlZWZfZXhwMmQ0X3UzNWZtYTQoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19t
MjU2ZCBTbGVlZl9maW56X2V4cDJkNF91MzVmbWE0KF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9f
bTI1NmQgU2xlZWZfZXhwMTBkNF91MTBmbWE0KF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1
NmQgU2xlZWZfZmluel9leHAxMGQ0X3UxMGZtYTQoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19t
MjU2ZCBTbGVlZl9leHAxMGQ0X3UzNWZtYTQoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2
ZCBTbGVlZl9maW56X2V4cDEwZDRfdTM1Zm1hNChfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20y
NTZkIFNsZWVmX2V4cG0xZDRfdTEwZm1hNChfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZk
IFNsZWVmX2ZpbnpfZXhwbTFkNF91MTBmbWE0KF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1
NmQgU2xlZWZfbG9nMTBkNF91MTBmbWE0KF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQg
U2xlZWZfZmluel9sb2cxMGQ0X3UxMGZtYTQoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2
ZCBTbGVlZl9sb2cyZDRfdTEwZm1hNChfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNs
ZWVmX2ZpbnpfbG9nMmQ0X3UxMGZtYTQoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBT
bGVlZl9sb2cyZDRfdTM1Zm1hNChfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVm
X2ZpbnpfbG9nMmQ0X3UzNWZtYTQoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVl
Zl9sb2cxcGQ0X3UxMGZtYTQoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9m
aW56X2xvZzFwZDRfdTEwZm1hNChfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBTbGVlZl9fX20yNTZk
XzIgU2xlZWZfc2luY29zcGlkNF91MDVmbWE0KF9fbTI1NmQpOworSU1QT1JUIENPTlNUIFNsZWVm
X19fbTI1NmRfMiBTbGVlZl9maW56X3NpbmNvc3BpZDRfdTA1Zm1hNChfX20yNTZkKTsKK0lNUE9S
VCBDT05TVCBTbGVlZl9fX20yNTZkXzIgU2xlZWZfc2luY29zcGlkNF91MzVmbWE0KF9fbTI1NmQp
OworSU1QT1JUIENPTlNUIFNsZWVmX19fbTI1NmRfMiBTbGVlZl9maW56X3NpbmNvc3BpZDRfdTM1
Zm1hNChfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX3NpbnBpZDRfdTA1Zm1h
NChfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2Zpbnpfc2lucGlkNF91MDVm
bWE0KF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfY29zcGlkNF91MDVmbWE0
KF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfZmluel9jb3NwaWQ0X3UwNWZt
YTQoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9sZGV4cGQ0X2ZtYTQoX19t
MjU2ZCwgX19tMTI4aSk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9maW56X2xkZXhwZDRf
Zm1hNChfX20yNTZkLCBfX20xMjhpKTsKK0lNUE9SVCBDT05TVCBfX20xMjhpIFNsZWVmX2lsb2di
ZDRfZm1hNChfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20xMjhpIFNsZWVmX2ZpbnpfaWxvZ2Jk
NF9mbWE0KF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfZm1hZDRfZm1hNChf
X20yNTZkLCBfX20yNTZkLCBfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2Zp
bnpfZm1hZDRfZm1hNChfX20yNTZkLCBfX20yNTZkLCBfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBf
X20yNTZkIFNsZWVmX3NxcnRkNF9mbWE0KF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQg
U2xlZWZfZmluel9zcXJ0ZDRfZm1hNChfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNs
ZWVmX3NxcnRkNF91MDVmbWE0KF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZf
Zmluel9zcXJ0ZDRfdTA1Zm1hNChfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVm
X3NxcnRkNF91MzVmbWE0KF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfZmlu
el9zcXJ0ZDRfdTM1Zm1hNChfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2h5
cG90ZDRfdTA1Zm1hNChfX20yNTZkLCBfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNs
ZWVmX2ZpbnpfaHlwb3RkNF91MDVmbWE0KF9fbTI1NmQsIF9fbTI1NmQpOworSU1QT1JUIENPTlNU
IF9fbTI1NmQgU2xlZWZfaHlwb3RkNF91MzVmbWE0KF9fbTI1NmQsIF9fbTI1NmQpOworSU1QT1JU
IENPTlNUIF9fbTI1NmQgU2xlZWZfZmluel9oeXBvdGQ0X3UzNWZtYTQoX19tMjU2ZCwgX19tMjU2
ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9mYWJzZDRfZm1hNChfX20yNTZkKTsKK0lN
UE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2ZpbnpfZmFic2Q0X2ZtYTQoX19tMjU2ZCk7CitJTVBP
UlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9jb3B5c2lnbmQ0X2ZtYTQoX19tMjU2ZCwgX19tMjU2ZCk7
CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9maW56X2NvcHlzaWduZDRfZm1hNChfX20yNTZk
LCBfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2ZtYXhkNF9mbWE0KF9fbTI1
NmQsIF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfZmluel9mbWF4ZDRfZm1h
NChfX20yNTZkLCBfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2ZtaW5kNF9m
bWE0KF9fbTI1NmQsIF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfZmluel9m
bWluZDRfZm1hNChfX20yNTZkLCBfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVm
X2ZkaW1kNF9mbWE0KF9fbTI1NmQsIF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xl
ZWZfZmluel9mZGltZDRfZm1hNChfX20yNTZkLCBfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20y
NTZkIFNsZWVmX3RydW5jZDRfZm1hNChfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNs
ZWVmX2ZpbnpfdHJ1bmNkNF9mbWE0KF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xl
ZWZfZmxvb3JkNF9mbWE0KF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfZmlu
el9mbG9vcmQ0X2ZtYTQoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9jZWls
ZDRfZm1hNChfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2ZpbnpfY2VpbGQ0
X2ZtYTQoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9yb3VuZGQ0X2ZtYTQo
X19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9maW56X3JvdW5kZDRfZm1hNChf
X20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX3JpbnRkNF9mbWE0KF9fbTI1NmQp
OworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfZmluel9yaW50ZDRfZm1hNChfX20yNTZkKTsK
K0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX25leHRhZnRlcmQ0X2ZtYTQoX19tMjU2ZCwgX19t
MjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9maW56X25leHRhZnRlcmQ0X2ZtYTQo
X19tMjU2ZCwgX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9mcmZyZXhwZDRf
Zm1hNChfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2ZpbnpfZnJmcmV4cGQ0
X2ZtYTQoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4aSBTbGVlZl9leHBmcmV4cGQ0X2Zt
YTQoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4aSBTbGVlZl9maW56X2V4cGZyZXhwZDRf
Zm1hNChfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2Ztb2RkNF9mbWE0KF9f
bTI1NmQsIF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfZmluel9mbW9kZDRf
Zm1hNChfX20yNTZkLCBfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBTbGVlZl9fX20yNTZkXzIgU2xl
ZWZfbW9kZmQ0X2ZtYTQoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgU2xlZWZfX19tMjU2ZF8yIFNs
ZWVmX2ZpbnpfbW9kZmQ0X2ZtYTQoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVl
Zl9sZ2FtbWFkNF91MTBmbWE0KF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZf
Zmluel9sZ2FtbWFkNF91MTBmbWE0KF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xl
ZWZfdGdhbW1hZDRfdTEwZm1hNChfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVm
X2ZpbnpfdGdhbW1hZDRfdTEwZm1hNChfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNs
ZWVmX2VyZmQ0X3UxMGZtYTQoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9m
aW56X2VyZmQ0X3UxMGZtYTQoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9l
cmZjZDRfdTE1Zm1hNChfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2Zpbnpf
ZXJmY2Q0X3UxNWZtYTQoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgaW50IFNsZWVmX2dldEludGQ0
X2ZtYTQoaW50KTsKK0lNUE9SVCBDT05TVCB2b2lkICpTbGVlZl9nZXRQdHJkNF9mbWE0KGludCk7
CisKKyNpZm5kZWYgU2xlZWZfX19tMjU2XzJfREVGSU5FRAordHlwZWRlZiBTVFJVQ1RfS0VZV09S
RF9fX0FWWF9fIHsKKyAgX19tMjU2IHgsIHk7Cit9IFNsZWVmX19fbTI1Nl8yOworI2RlZmluZSBT
bGVlZl9fX20yNTZfMl9ERUZJTkVECisjZW5kaWYKKworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVl
Zl9zaW5mOF91MzVmbWE0KF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2Zpbnpf
c2luZjhfdTM1Zm1hNChfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9jb3NmOF91
MzVmbWE0KF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2ZpbnpfY29zZjhfdTM1
Zm1hNChfX20yNTYpOworSU1QT1JUIENPTlNUIFNsZWVmX19fbTI1Nl8yIFNsZWVmX3NpbmNvc2Y4
X3UzNWZtYTQoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBTbGVlZl9fX20yNTZfMiBTbGVlZl9maW56
X3NpbmNvc2Y4X3UzNWZtYTQoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfdGFu
ZjhfdTM1Zm1hNChfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9maW56X3RhbmY4
X3UzNWZtYTQoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfYXNpbmY4X3UzNWZt
YTQoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfZmluel9hc2luZjhfdTM1Zm1h
NChfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9hY29zZjhfdTM1Zm1hNChfX20y
NTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9maW56X2Fjb3NmOF91MzVmbWE0KF9fbTI1
Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2F0YW5mOF91MzVmbWE0KF9fbTI1Nik7CitJ
TVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2ZpbnpfYXRhbmY4X3UzNWZtYTQoX19tMjU2KTsKK0lN
UE9SVCBDT05TVCBfX20yNTYgU2xlZWZfYXRhbjJmOF91MzVmbWE0KF9fbTI1NiwgX19tMjU2KTsK
K0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfZmluel9hdGFuMmY4X3UzNWZtYTQoX19tMjU2LCBf
X20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9sb2dmOF91MzVmbWE0KF9fbTI1Nik7
CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2ZpbnpfbG9nZjhfdTM1Zm1hNChfX20yNTYpOwor
SU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9jYnJ0ZjhfdTM1Zm1hNChfX20yNTYpOworSU1QT1JU
IENPTlNUIF9fbTI1NiBTbGVlZl9maW56X2NicnRmOF91MzVmbWE0KF9fbTI1Nik7CitJTVBPUlQg
Q09OU1QgX19tMjU2IFNsZWVmX3NpbmY4X3UxMGZtYTQoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBf
X20yNTYgU2xlZWZfZmluel9zaW5mOF91MTBmbWE0KF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19t
MjU2IFNsZWVmX2Nvc2Y4X3UxMGZtYTQoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xl
ZWZfZmluel9jb3NmOF91MTBmbWE0KF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgU2xlZWZfX19tMjU2
XzIgU2xlZWZfc2luY29zZjhfdTEwZm1hNChfX20yNTYpOworSU1QT1JUIENPTlNUIFNsZWVmX19f
bTI1Nl8yIFNsZWVmX2Zpbnpfc2luY29zZjhfdTEwZm1hNChfX20yNTYpOworSU1QT1JUIENPTlNU
IF9fbTI1NiBTbGVlZl90YW5mOF91MTBmbWE0KF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2
IFNsZWVmX2ZpbnpfdGFuZjhfdTEwZm1hNChfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBT
bGVlZl9hc2luZjhfdTEwZm1hNChfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9m
aW56X2FzaW5mOF91MTBmbWE0KF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2Fj
b3NmOF91MTBmbWE0KF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2ZpbnpfYWNv
c2Y4X3UxMGZtYTQoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfYXRhbmY4X3Ux
MGZtYTQoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfZmluel9hdGFuZjhfdTEw
Zm1hNChfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9hdGFuMmY4X3UxMGZtYTQo
X19tMjU2LCBfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9maW56X2F0YW4yZjhf
dTEwZm1hNChfX20yNTYsIF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2xvZ2Y4
X3UxMGZtYTQoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfZmluel9sb2dmOF91
MTBmbWE0KF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2NicnRmOF91MTBmbWE0
KF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2ZpbnpfY2JydGY4X3UxMGZtYTQo
X19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfZXhwZjhfdTEwZm1hNChfX20yNTYp
OworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9maW56X2V4cGY4X3UxMGZtYTQoX19tMjU2KTsK
K0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfcG93ZjhfdTEwZm1hNChfX20yNTYsIF9fbTI1Nik7
CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2ZpbnpfcG93ZjhfdTEwZm1hNChfX20yNTYsIF9f
bTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX3NpbmhmOF91MTBmbWE0KF9fbTI1Nik7
CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2Zpbnpfc2luaGY4X3UxMGZtYTQoX19tMjU2KTsK
K0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfY29zaGY4X3UxMGZtYTQoX19tMjU2KTsKK0lNUE9S
VCBDT05TVCBfX20yNTYgU2xlZWZfZmluel9jb3NoZjhfdTEwZm1hNChfX20yNTYpOworSU1QT1JU
IENPTlNUIF9fbTI1NiBTbGVlZl90YW5oZjhfdTEwZm1hNChfX20yNTYpOworSU1QT1JUIENPTlNU
IF9fbTI1NiBTbGVlZl9maW56X3RhbmhmOF91MTBmbWE0KF9fbTI1Nik7CitJTVBPUlQgQ09OU1Qg
X19tMjU2IFNsZWVmX3NpbmhmOF91MzVmbWE0KF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2
IFNsZWVmX2Zpbnpfc2luaGY4X3UzNWZtYTQoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYg
U2xlZWZfY29zaGY4X3UzNWZtYTQoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZf
Zmluel9jb3NoZjhfdTM1Zm1hNChfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl90
YW5oZjhfdTM1Zm1hNChfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9maW56X3Rh
bmhmOF91MzVmbWE0KF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2Zhc3RzaW5m
OF91MzUwMGZtYTQoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfZmluel9mYXN0
c2luZjhfdTM1MDBmbWE0KF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2Zhc3Rj
b3NmOF91MzUwMGZtYTQoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfZmluel9m
YXN0Y29zZjhfdTM1MDBmbWE0KF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2Zh
c3Rwb3dmOF91MzUwMGZtYTQoX19tMjU2LCBfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBT
bGVlZl9maW56X2Zhc3Rwb3dmOF91MzUwMGZtYTQoX19tMjU2LCBfX20yNTYpOworSU1QT1JUIENP
TlNUIF9fbTI1NiBTbGVlZl9hc2luaGY4X3UxMGZtYTQoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBf
X20yNTYgU2xlZWZfZmluel9hc2luaGY4X3UxMGZtYTQoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBf
X20yNTYgU2xlZWZfYWNvc2hmOF91MTBmbWE0KF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2
IFNsZWVmX2ZpbnpfYWNvc2hmOF91MTBmbWE0KF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2
IFNsZWVmX2F0YW5oZjhfdTEwZm1hNChfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVl
Zl9maW56X2F0YW5oZjhfdTEwZm1hNChfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVl
Zl9leHAyZjhfdTEwZm1hNChfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9maW56
X2V4cDJmOF91MTBmbWE0KF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2V4cDJm
OF91MzVmbWE0KF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2ZpbnpfZXhwMmY4
X3UzNWZtYTQoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfZXhwMTBmOF91MTBm
bWE0KF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2ZpbnpfZXhwMTBmOF91MTBm
bWE0KF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2V4cDEwZjhfdTM1Zm1hNChf
X20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9maW56X2V4cDEwZjhfdTM1Zm1hNChf
X20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9leHBtMWY4X3UxMGZtYTQoX19tMjU2
KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfZmluel9leHBtMWY4X3UxMGZtYTQoX19tMjU2
KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfbG9nMTBmOF91MTBmbWE0KF9fbTI1Nik7CitJ
TVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2ZpbnpfbG9nMTBmOF91MTBmbWE0KF9fbTI1Nik7CitJ
TVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2xvZzJmOF91MTBmbWE0KF9fbTI1Nik7CitJTVBPUlQg
Q09OU1QgX19tMjU2IFNsZWVmX2ZpbnpfbG9nMmY4X3UxMGZtYTQoX19tMjU2KTsKK0lNUE9SVCBD
T05TVCBfX20yNTYgU2xlZWZfbG9nMmY4X3UzNWZtYTQoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBf
X20yNTYgU2xlZWZfZmluel9sb2cyZjhfdTM1Zm1hNChfX20yNTYpOworSU1QT1JUIENPTlNUIF9f
bTI1NiBTbGVlZl9sb2cxcGY4X3UxMGZtYTQoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYg
U2xlZWZfZmluel9sb2cxcGY4X3UxMGZtYTQoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBTbGVlZl9f
X20yNTZfMiBTbGVlZl9zaW5jb3NwaWY4X3UwNWZtYTQoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBT
bGVlZl9fX20yNTZfMiBTbGVlZl9maW56X3NpbmNvc3BpZjhfdTA1Zm1hNChfX20yNTYpOworSU1Q
T1JUIENPTlNUIFNsZWVmX19fbTI1Nl8yIFNsZWVmX3NpbmNvc3BpZjhfdTM1Zm1hNChfX20yNTYp
OworSU1QT1JUIENPTlNUIFNsZWVmX19fbTI1Nl8yIFNsZWVmX2Zpbnpfc2luY29zcGlmOF91MzVm
bWE0KF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX3NpbnBpZjhfdTA1Zm1hNChf
X20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9maW56X3NpbnBpZjhfdTA1Zm1hNChf
X20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9jb3NwaWY4X3UwNWZtYTQoX19tMjU2
KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfZmluel9jb3NwaWY4X3UwNWZtYTQoX19tMjU2
KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfZm1hZjhfZm1hNChfX20yNTYsIF9fbTI1Niwg
X19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfZmluel9mbWFmOF9mbWE0KF9fbTI1
NiwgX19tMjU2LCBfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9zcXJ0ZjhfZm1h
NChfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9maW56X3NxcnRmOF9mbWE0KF9f
bTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX3NxcnRmOF91MDVmbWE0KF9fbTI1Nik7
CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2Zpbnpfc3FydGY4X3UwNWZtYTQoX19tMjU2KTsK
K0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfc3FydGY4X3UzNWZtYTQoX19tMjU2KTsKK0lNUE9S
VCBDT05TVCBfX20yNTYgU2xlZWZfZmluel9zcXJ0ZjhfdTM1Zm1hNChfX20yNTYpOworSU1QT1JU
IENPTlNUIF9fbTI1NiBTbGVlZl9oeXBvdGY4X3UwNWZtYTQoX19tMjU2LCBfX20yNTYpOworSU1Q
T1JUIENPTlNUIF9fbTI1NiBTbGVlZl9maW56X2h5cG90ZjhfdTA1Zm1hNChfX20yNTYsIF9fbTI1
Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2h5cG90ZjhfdTM1Zm1hNChfX20yNTYsIF9f
bTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2ZpbnpfaHlwb3RmOF91MzVmbWE0KF9f
bTI1NiwgX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfZmFic2Y4X2ZtYTQoX19t
MjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfZmluel9mYWJzZjhfZm1hNChfX20yNTYp
OworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9jb3B5c2lnbmY4X2ZtYTQoX19tMjU2LCBfX20y
NTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9maW56X2NvcHlzaWduZjhfZm1hNChfX20y
NTYsIF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2ZtYXhmOF9mbWE0KF9fbTI1
NiwgX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfZmluel9mbWF4ZjhfZm1hNChf
X20yNTYsIF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2ZtaW5mOF9mbWE0KF9f
bTI1NiwgX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfZmluel9mbWluZjhfZm1h
NChfX20yNTYsIF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2ZkaW1mOF9mbWE0
KF9fbTI1NiwgX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfZmluel9mZGltZjhf
Zm1hNChfX20yNTYsIF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX3RydW5jZjhf
Zm1hNChfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9maW56X3RydW5jZjhfZm1h
NChfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9mbG9vcmY4X2ZtYTQoX19tMjU2
KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfZmluel9mbG9vcmY4X2ZtYTQoX19tMjU2KTsK
K0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfY2VpbGY4X2ZtYTQoX19tMjU2KTsKK0lNUE9SVCBD
T05TVCBfX20yNTYgU2xlZWZfZmluel9jZWlsZjhfZm1hNChfX20yNTYpOworSU1QT1JUIENPTlNU
IF9fbTI1NiBTbGVlZl9yb3VuZGY4X2ZtYTQoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYg
U2xlZWZfZmluel9yb3VuZGY4X2ZtYTQoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xl
ZWZfcmludGY4X2ZtYTQoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfZmluel9y
aW50ZjhfZm1hNChfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9uZXh0YWZ0ZXJm
OF9mbWE0KF9fbTI1NiwgX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfZmluel9u
ZXh0YWZ0ZXJmOF9mbWE0KF9fbTI1NiwgX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xl
ZWZfZnJmcmV4cGY4X2ZtYTQoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfZmlu
el9mcmZyZXhwZjhfZm1hNChfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9mbW9k
ZjhfZm1hNChfX20yNTYsIF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2Zpbnpf
Zm1vZGY4X2ZtYTQoX19tMjU2LCBfX20yNTYpOworSU1QT1JUIENPTlNUIFNsZWVmX19fbTI1Nl8y
IFNsZWVmX21vZGZmOF9mbWE0KF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgU2xlZWZfX19tMjU2XzIg
U2xlZWZfZmluel9tb2RmZjhfZm1hNChfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVl
Zl9sZ2FtbWFmOF91MTBmbWE0KF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2Zp
bnpfbGdhbW1hZjhfdTEwZm1hNChfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl90
Z2FtbWFmOF91MTBmbWE0KF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2Zpbnpf
dGdhbW1hZjhfdTEwZm1hNChfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9lcmZm
OF91MTBmbWE0KF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2ZpbnpfZXJmZjhf
dTEwZm1hNChfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9lcmZjZjhfdTE1Zm1h
NChfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9maW56X2VyZmNmOF91MTVmbWE0
KF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgaW50IFNsZWVmX2dldEludGY4X2ZtYTQoaW50KTsKK0lN
UE9SVCBDT05TVCBpbnQgU2xlZWZfZmluel9nZXRJbnRmOF9mbWE0KGludCk7CitJTVBPUlQgQ09O
U1Qgdm9pZCAqU2xlZWZfZ2V0UHRyZjhfZm1hNChpbnQpOworSU1QT1JUIENPTlNUIHZvaWQgKlNs
ZWVmX2ZpbnpfZ2V0UHRyZjhfZm1hNChpbnQpOworI2VuZGlmCisjaWZkZWYgX19BVlhfXworI2Rl
ZmluZSBTVFJVQ1RfS0VZV09SRF9fX0FWWF9fIHN0cnVjdAorCisjaWZuZGVmIFNsZWVmX19fbTI1
NmRfMl9ERUZJTkVECit0eXBlZGVmIFNUUlVDVF9LRVlXT1JEX19fQVZYX18geworICBfX20yNTZk
IHgsIHk7Cit9IFNsZWVmX19fbTI1NmRfMjsKKyNkZWZpbmUgU2xlZWZfX19tMjU2ZF8yX0RFRklO
RUQKKyNlbmRpZgorCitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9zaW5kNF91MzVhdngyKF9f
bTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfZmluel9zaW5kNF91MzVhdngyKF9f
bTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfY29zZDRfdTM1YXZ4MihfX20yNTZk
KTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2ZpbnpfY29zZDRfdTM1YXZ4MihfX20yNTZk
KTsKK0lNUE9SVCBDT05TVCBTbGVlZl9fX20yNTZkXzIgU2xlZWZfc2luY29zZDRfdTM1YXZ4Mihf
X20yNTZkKTsKK0lNUE9SVCBDT05TVCBTbGVlZl9fX20yNTZkXzIgU2xlZWZfZmluel9zaW5jb3Nk
NF91MzVhdngyKF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfdGFuZDRfdTM1
YXZ4MihfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2ZpbnpfdGFuZDRfdTM1
YXZ4MihfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2FzaW5kNF91MzVhdngy
KF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfZmluel9hc2luZDRfdTM1YXZ4
MihfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2Fjb3NkNF91MzVhdngyKF9f
bTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfZmluel9hY29zZDRfdTM1YXZ4Mihf
X20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2F0YW5kNF91MzVhdngyKF9fbTI1
NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfZmluel9hdGFuZDRfdTM1YXZ4MihfX20y
NTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2F0YW4yZDRfdTM1YXZ4MihfX20yNTZk
LCBfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2ZpbnpfYXRhbjJkNF91MzVh
dngyKF9fbTI1NmQsIF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfbG9nZDRf
dTM1YXZ4MihfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2ZpbnpfbG9nZDRf
dTM1YXZ4MihfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2NicnRkNF91MzVh
dngyKF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfZmluel9jYnJ0ZDRfdTM1
YXZ4MihfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX3NpbmQ0X3UxMGF2eDIo
X19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9maW56X3NpbmQ0X3UxMGF2eDIo
X19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9jb3NkNF91MTBhdngyKF9fbTI1
NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfZmluel9jb3NkNF91MTBhdngyKF9fbTI1
NmQpOworSU1QT1JUIENPTlNUIFNsZWVmX19fbTI1NmRfMiBTbGVlZl9zaW5jb3NkNF91MTBhdngy
KF9fbTI1NmQpOworSU1QT1JUIENPTlNUIFNsZWVmX19fbTI1NmRfMiBTbGVlZl9maW56X3NpbmNv
c2Q0X3UxMGF2eDIoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl90YW5kNF91
MTBhdngyKF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfZmluel90YW5kNF91
MTBhdngyKF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfYXNpbmQ0X3UxMGF2
eDIoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9maW56X2FzaW5kNF91MTBh
dngyKF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfYWNvc2Q0X3UxMGF2eDIo
X19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9maW56X2Fjb3NkNF91MTBhdngy
KF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfYXRhbmQ0X3UxMGF2eDIoX19t
MjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9maW56X2F0YW5kNF91MTBhdngyKF9f
bTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfYXRhbjJkNF91MTBhdngyKF9fbTI1
NmQsIF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfZmluel9hdGFuMmQ0X3Ux
MGF2eDIoX19tMjU2ZCwgX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9sb2dk
NF91MTBhdngyKF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfZmluel9sb2dk
NF91MTBhdngyKF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfY2JydGQ0X3Ux
MGF2eDIoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9maW56X2NicnRkNF91
MTBhdngyKF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfZXhwZDRfdTEwYXZ4
MihfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2ZpbnpfZXhwZDRfdTEwYXZ4
MihfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX3Bvd2Q0X3UxMGF2eDIoX19t
MjU2ZCwgX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9maW56X3Bvd2Q0X3Ux
MGF2eDIoX19tMjU2ZCwgX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9zaW5o
ZDRfdTEwYXZ4MihfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2Zpbnpfc2lu
aGQ0X3UxMGF2eDIoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9jb3NoZDRf
dTEwYXZ4MihfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2ZpbnpfY29zaGQ0
X3UxMGF2eDIoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl90YW5oZDRfdTEw
YXZ4MihfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2ZpbnpfdGFuaGQ0X3Ux
MGF2eDIoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9zaW5oZDRfdTM1YXZ4
MihfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2Zpbnpfc2luaGQ0X3UzNWF2
eDIoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9jb3NoZDRfdTM1YXZ4Mihf
X20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2ZpbnpfY29zaGQ0X3UzNWF2eDIo
X19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl90YW5oZDRfdTM1YXZ4MihfX20y
NTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2ZpbnpfdGFuaGQ0X3UzNWF2eDIoX19t
MjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9mYXN0c2luZDRfdTM1MDBhdngyKF9f
bTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfZmluel9mYXN0c2luZDRfdTM1MDBh
dngyKF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfZmFzdGNvc2Q0X3UzNTAw
YXZ4MihfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2ZpbnpfZmFzdGNvc2Q0
X3UzNTAwYXZ4MihfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2Zhc3Rwb3dk
NF91MzUwMGF2eDIoX19tMjU2ZCwgX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVl
Zl9maW56X2Zhc3Rwb3dkNF91MzUwMGF2eDIoX19tMjU2ZCwgX19tMjU2ZCk7CitJTVBPUlQgQ09O
U1QgX19tMjU2ZCBTbGVlZl9hc2luaGQ0X3UxMGF2eDIoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1Qg
X19tMjU2ZCBTbGVlZl9maW56X2FzaW5oZDRfdTEwYXZ4MihfX20yNTZkKTsKK0lNUE9SVCBDT05T
VCBfX20yNTZkIFNsZWVmX2Fjb3NoZDRfdTEwYXZ4MihfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBf
X20yNTZkIFNsZWVmX2ZpbnpfYWNvc2hkNF91MTBhdngyKF9fbTI1NmQpOworSU1QT1JUIENPTlNU
IF9fbTI1NmQgU2xlZWZfYXRhbmhkNF91MTBhdngyKF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9f
bTI1NmQgU2xlZWZfZmluel9hdGFuaGQ0X3UxMGF2eDIoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1Qg
X19tMjU2ZCBTbGVlZl9leHAyZDRfdTEwYXZ4MihfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20y
NTZkIFNsZWVmX2ZpbnpfZXhwMmQ0X3UxMGF2eDIoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19t
MjU2ZCBTbGVlZl9leHAyZDRfdTM1YXZ4MihfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZk
IFNsZWVmX2ZpbnpfZXhwMmQ0X3UzNWF2eDIoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2
ZCBTbGVlZl9leHAxMGQ0X3UxMGF2eDIoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBT
bGVlZl9maW56X2V4cDEwZDRfdTEwYXZ4MihfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZk
IFNsZWVmX2V4cDEwZDRfdTM1YXZ4MihfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNs
ZWVmX2ZpbnpfZXhwMTBkNF91MzVhdngyKF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQg
U2xlZWZfZXhwbTFkNF91MTBhdngyKF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xl
ZWZfZmluel9leHBtMWQ0X3UxMGF2eDIoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBT
bGVlZl9sb2cxMGQ0X3UxMGF2eDIoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVl
Zl9maW56X2xvZzEwZDRfdTEwYXZ4MihfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNs
ZWVmX2xvZzJkNF91MTBhdngyKF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZf
Zmluel9sb2cyZDRfdTEwYXZ4MihfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVm
X2xvZzJkNF91MzVhdngyKF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfZmlu
el9sb2cyZDRfdTM1YXZ4MihfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2xv
ZzFwZDRfdTEwYXZ4MihfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2Zpbnpf
bG9nMXBkNF91MTBhdngyKF9fbTI1NmQpOworSU1QT1JUIENPTlNUIFNsZWVmX19fbTI1NmRfMiBT
bGVlZl9zaW5jb3NwaWQ0X3UwNWF2eDIoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgU2xlZWZfX19t
MjU2ZF8yIFNsZWVmX2Zpbnpfc2luY29zcGlkNF91MDVhdngyKF9fbTI1NmQpOworSU1QT1JUIENP
TlNUIFNsZWVmX19fbTI1NmRfMiBTbGVlZl9zaW5jb3NwaWQ0X3UzNWF2eDIoX19tMjU2ZCk7CitJ
TVBPUlQgQ09OU1QgU2xlZWZfX19tMjU2ZF8yIFNsZWVmX2Zpbnpfc2luY29zcGlkNF91MzVhdngy
KF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfc2lucGlkNF91MDVhdngyKF9f
bTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfZmluel9zaW5waWQ0X3UwNWF2eDIo
X19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9jb3NwaWQ0X3UwNWF2eDIoX19t
MjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9maW56X2Nvc3BpZDRfdTA1YXZ4Mihf
X20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2xkZXhwZDRfYXZ4MihfX20yNTZk
LCBfX20xMjhpKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2ZpbnpfbGRleHBkNF9hdngy
KF9fbTI1NmQsIF9fbTEyOGkpOworSU1QT1JUIENPTlNUIF9fbTEyOGkgU2xlZWZfaWxvZ2JkNF9h
dngyKF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTEyOGkgU2xlZWZfZmluel9pbG9nYmQ0X2F2
eDIoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9mbWFkNF9hdngyKF9fbTI1
NmQsIF9fbTI1NmQsIF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfZmluel9m
bWFkNF9hdngyKF9fbTI1NmQsIF9fbTI1NmQsIF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1
NmQgU2xlZWZfc3FydGQ0X2F2eDIoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVl
Zl9maW56X3NxcnRkNF9hdngyKF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZf
c3FydGQ0X3UwNWF2eDIoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9maW56
X3NxcnRkNF91MDVhdngyKF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfc3Fy
dGQ0X3UzNWF2eDIoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9maW56X3Nx
cnRkNF91MzVhdngyKF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfaHlwb3Rk
NF91MDVhdngyKF9fbTI1NmQsIF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZf
Zmluel9oeXBvdGQ0X3UwNWF2eDIoX19tMjU2ZCwgX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19t
MjU2ZCBTbGVlZl9oeXBvdGQ0X3UzNWF2eDIoX19tMjU2ZCwgX19tMjU2ZCk7CitJTVBPUlQgQ09O
U1QgX19tMjU2ZCBTbGVlZl9maW56X2h5cG90ZDRfdTM1YXZ4MihfX20yNTZkLCBfX20yNTZkKTsK
K0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2ZhYnNkNF9hdngyKF9fbTI1NmQpOworSU1QT1JU
IENPTlNUIF9fbTI1NmQgU2xlZWZfZmluel9mYWJzZDRfYXZ4MihfX20yNTZkKTsKK0lNUE9SVCBD
T05TVCBfX20yNTZkIFNsZWVmX2NvcHlzaWduZDRfYXZ4MihfX20yNTZkLCBfX20yNTZkKTsKK0lN
UE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2ZpbnpfY29weXNpZ25kNF9hdngyKF9fbTI1NmQsIF9f
bTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfZm1heGQ0X2F2eDIoX19tMjU2ZCwg
X19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9maW56X2ZtYXhkNF9hdngyKF9f
bTI1NmQsIF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfZm1pbmQ0X2F2eDIo
X19tMjU2ZCwgX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9maW56X2ZtaW5k
NF9hdngyKF9fbTI1NmQsIF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfZmRp
bWQ0X2F2eDIoX19tMjU2ZCwgX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9m
aW56X2ZkaW1kNF9hdngyKF9fbTI1NmQsIF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQg
U2xlZWZfdHJ1bmNkNF9hdngyKF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZf
Zmluel90cnVuY2Q0X2F2eDIoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9m
bG9vcmQ0X2F2eDIoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9maW56X2Zs
b29yZDRfYXZ4MihfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2NlaWxkNF9h
dngyKF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfZmluel9jZWlsZDRfYXZ4
MihfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX3JvdW5kZDRfYXZ4MihfX20y
NTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2Zpbnpfcm91bmRkNF9hdngyKF9fbTI1
NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfcmludGQ0X2F2eDIoX19tMjU2ZCk7CitJ
TVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9maW56X3JpbnRkNF9hdngyKF9fbTI1NmQpOworSU1Q
T1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfbmV4dGFmdGVyZDRfYXZ4MihfX20yNTZkLCBfX20yNTZk
KTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2ZpbnpfbmV4dGFmdGVyZDRfYXZ4MihfX20y
NTZkLCBfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2ZyZnJleHBkNF9hdngy
KF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfZmluel9mcmZyZXhwZDRfYXZ4
MihfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20xMjhpIFNsZWVmX2V4cGZyZXhwZDRfYXZ4Mihf
X20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20xMjhpIFNsZWVmX2ZpbnpfZXhwZnJleHBkNF9hdngy
KF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfZm1vZGQ0X2F2eDIoX19tMjU2
ZCwgX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9maW56X2Ztb2RkNF9hdngy
KF9fbTI1NmQsIF9fbTI1NmQpOworSU1QT1JUIENPTlNUIFNsZWVmX19fbTI1NmRfMiBTbGVlZl9t
b2RmZDRfYXZ4MihfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBTbGVlZl9fX20yNTZkXzIgU2xlZWZf
Zmluel9tb2RmZDRfYXZ4MihfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2xn
YW1tYWQ0X3UxMGF2eDIoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl9maW56
X2xnYW1tYWQ0X3UxMGF2eDIoX19tMjU2ZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2ZCBTbGVlZl90
Z2FtbWFkNF91MTBhdngyKF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfZmlu
el90Z2FtbWFkNF91MTBhdngyKF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZf
ZXJmZDRfdTEwYXZ4MihfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2Zpbnpf
ZXJmZDRfdTEwYXZ4MihfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZkIFNsZWVmX2VyZmNk
NF91MTVhdngyKF9fbTI1NmQpOworSU1QT1JUIENPTlNUIF9fbTI1NmQgU2xlZWZfZmluel9lcmZj
ZDRfdTE1YXZ4MihfX20yNTZkKTsKK0lNUE9SVCBDT05TVCBpbnQgU2xlZWZfZ2V0SW50ZDRfYXZ4
MihpbnQpOworSU1QT1JUIENPTlNUIHZvaWQgKlNsZWVmX2dldFB0cmQ0X2F2eDIoaW50KTsKKwor
I2lmbmRlZiBTbGVlZl9fX20yNTZfMl9ERUZJTkVECit0eXBlZGVmIFNUUlVDVF9LRVlXT1JEX19f
QVZYX18geworICBfX20yNTYgeCwgeTsKK30gU2xlZWZfX19tMjU2XzI7CisjZGVmaW5lIFNsZWVm
X19fbTI1Nl8yX0RFRklORUQKKyNlbmRpZgorCitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX3Np
bmY4X3UzNWF2eDIoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfZmluel9zaW5m
OF91MzVhdngyKF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2Nvc2Y4X3UzNWF2
eDIoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfZmluel9jb3NmOF91MzVhdngy
KF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgU2xlZWZfX19tMjU2XzIgU2xlZWZfc2luY29zZjhfdTM1
YXZ4MihfX20yNTYpOworSU1QT1JUIENPTlNUIFNsZWVmX19fbTI1Nl8yIFNsZWVmX2Zpbnpfc2lu
Y29zZjhfdTM1YXZ4MihfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl90YW5mOF91
MzVhdngyKF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2ZpbnpfdGFuZjhfdTM1
YXZ4MihfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9hc2luZjhfdTM1YXZ4Mihf
X20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9maW56X2FzaW5mOF91MzVhdngyKF9f
bTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2Fjb3NmOF91MzVhdngyKF9fbTI1Nik7
CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2ZpbnpfYWNvc2Y4X3UzNWF2eDIoX19tMjU2KTsK
K0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfYXRhbmY4X3UzNWF2eDIoX19tMjU2KTsKK0lNUE9S
VCBDT05TVCBfX20yNTYgU2xlZWZfZmluel9hdGFuZjhfdTM1YXZ4MihfX20yNTYpOworSU1QT1JU
IENPTlNUIF9fbTI1NiBTbGVlZl9hdGFuMmY4X3UzNWF2eDIoX19tMjU2LCBfX20yNTYpOworSU1Q
T1JUIENPTlNUIF9fbTI1NiBTbGVlZl9maW56X2F0YW4yZjhfdTM1YXZ4MihfX20yNTYsIF9fbTI1
Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2xvZ2Y4X3UzNWF2eDIoX19tMjU2KTsKK0lN
UE9SVCBDT05TVCBfX20yNTYgU2xlZWZfZmluel9sb2dmOF91MzVhdngyKF9fbTI1Nik7CitJTVBP
UlQgQ09OU1QgX19tMjU2IFNsZWVmX2NicnRmOF91MzVhdngyKF9fbTI1Nik7CitJTVBPUlQgQ09O
U1QgX19tMjU2IFNsZWVmX2ZpbnpfY2JydGY4X3UzNWF2eDIoX19tMjU2KTsKK0lNUE9SVCBDT05T
VCBfX20yNTYgU2xlZWZfc2luZjhfdTEwYXZ4MihfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1
NiBTbGVlZl9maW56X3NpbmY4X3UxMGF2eDIoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYg
U2xlZWZfY29zZjhfdTEwYXZ4MihfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9m
aW56X2Nvc2Y4X3UxMGF2eDIoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBTbGVlZl9fX20yNTZfMiBT
bGVlZl9zaW5jb3NmOF91MTBhdngyKF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgU2xlZWZfX19tMjU2
XzIgU2xlZWZfZmluel9zaW5jb3NmOF91MTBhdngyKF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19t
MjU2IFNsZWVmX3RhbmY4X3UxMGF2eDIoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xl
ZWZfZmluel90YW5mOF91MTBhdngyKF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVm
X2FzaW5mOF91MTBhdngyKF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2Zpbnpf
YXNpbmY4X3UxMGF2eDIoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfYWNvc2Y4
X3UxMGF2eDIoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfZmluel9hY29zZjhf
dTEwYXZ4MihfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9hdGFuZjhfdTEwYXZ4
MihfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9maW56X2F0YW5mOF91MTBhdngy
KF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2F0YW4yZjhfdTEwYXZ4MihfX20y
NTYsIF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2ZpbnpfYXRhbjJmOF91MTBh
dngyKF9fbTI1NiwgX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfbG9nZjhfdTEw
YXZ4MihfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9maW56X2xvZ2Y4X3UxMGF2
eDIoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfY2JydGY4X3UxMGF2eDIoX19t
MjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfZmluel9jYnJ0ZjhfdTEwYXZ4MihfX20y
NTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9leHBmOF91MTBhdngyKF9fbTI1Nik7CitJ
TVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2ZpbnpfZXhwZjhfdTEwYXZ4MihfX20yNTYpOworSU1Q
T1JUIENPTlNUIF9fbTI1NiBTbGVlZl9wb3dmOF91MTBhdngyKF9fbTI1NiwgX19tMjU2KTsKK0lN
UE9SVCBDT05TVCBfX20yNTYgU2xlZWZfZmluel9wb3dmOF91MTBhdngyKF9fbTI1NiwgX19tMjU2
KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfc2luaGY4X3UxMGF2eDIoX19tMjU2KTsKK0lN
UE9SVCBDT05TVCBfX20yNTYgU2xlZWZfZmluel9zaW5oZjhfdTEwYXZ4MihfX20yNTYpOworSU1Q
T1JUIENPTlNUIF9fbTI1NiBTbGVlZl9jb3NoZjhfdTEwYXZ4MihfX20yNTYpOworSU1QT1JUIENP
TlNUIF9fbTI1NiBTbGVlZl9maW56X2Nvc2hmOF91MTBhdngyKF9fbTI1Nik7CitJTVBPUlQgQ09O
U1QgX19tMjU2IFNsZWVmX3RhbmhmOF91MTBhdngyKF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19t
MjU2IFNsZWVmX2ZpbnpfdGFuaGY4X3UxMGF2eDIoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20y
NTYgU2xlZWZfc2luaGY4X3UzNWF2eDIoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xl
ZWZfZmluel9zaW5oZjhfdTM1YXZ4MihfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVl
Zl9jb3NoZjhfdTM1YXZ4MihfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9maW56
X2Nvc2hmOF91MzVhdngyKF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX3Rhbmhm
OF91MzVhdngyKF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2ZpbnpfdGFuaGY4
X3UzNWF2eDIoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfZmFzdHNpbmY4X3Uz
NTAwYXZ4MihfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9maW56X2Zhc3RzaW5m
OF91MzUwMGF2eDIoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfZmFzdGNvc2Y4
X3UzNTAwYXZ4MihfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9maW56X2Zhc3Rj
b3NmOF91MzUwMGF2eDIoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfZmFzdHBv
d2Y4X3UzNTAwYXZ4MihfX20yNTYsIF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVm
X2ZpbnpfZmFzdHBvd2Y4X3UzNTAwYXZ4MihfX20yNTYsIF9fbTI1Nik7CitJTVBPUlQgQ09OU1Qg
X19tMjU2IFNsZWVmX2FzaW5oZjhfdTEwYXZ4MihfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1
NiBTbGVlZl9maW56X2FzaW5oZjhfdTEwYXZ4MihfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1
NiBTbGVlZl9hY29zaGY4X3UxMGF2eDIoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xl
ZWZfZmluel9hY29zaGY4X3UxMGF2eDIoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xl
ZWZfYXRhbmhmOF91MTBhdngyKF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2Zp
bnpfYXRhbmhmOF91MTBhdngyKF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2V4
cDJmOF91MTBhdngyKF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2ZpbnpfZXhw
MmY4X3UxMGF2eDIoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfZXhwMmY4X3Uz
NWF2eDIoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfZmluel9leHAyZjhfdTM1
YXZ4MihfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9leHAxMGY4X3UxMGF2eDIo
X19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfZmluel9leHAxMGY4X3UxMGF2eDIo
X19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfZXhwMTBmOF91MzVhdngyKF9fbTI1
Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2ZpbnpfZXhwMTBmOF91MzVhdngyKF9fbTI1
Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2V4cG0xZjhfdTEwYXZ4MihfX20yNTYpOwor
SU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9maW56X2V4cG0xZjhfdTEwYXZ4MihfX20yNTYpOwor
SU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9sb2cxMGY4X3UxMGF2eDIoX19tMjU2KTsKK0lNUE9S
VCBDT05TVCBfX20yNTYgU2xlZWZfZmluel9sb2cxMGY4X3UxMGF2eDIoX19tMjU2KTsKK0lNUE9S
VCBDT05TVCBfX20yNTYgU2xlZWZfbG9nMmY4X3UxMGF2eDIoX19tMjU2KTsKK0lNUE9SVCBDT05T
VCBfX20yNTYgU2xlZWZfZmluel9sb2cyZjhfdTEwYXZ4MihfX20yNTYpOworSU1QT1JUIENPTlNU
IF9fbTI1NiBTbGVlZl9sb2cyZjhfdTM1YXZ4MihfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1
NiBTbGVlZl9maW56X2xvZzJmOF91MzVhdngyKF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2
IFNsZWVmX2xvZzFwZjhfdTEwYXZ4MihfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVl
Zl9maW56X2xvZzFwZjhfdTEwYXZ4MihfX20yNTYpOworSU1QT1JUIENPTlNUIFNsZWVmX19fbTI1
Nl8yIFNsZWVmX3NpbmNvc3BpZjhfdTA1YXZ4MihfX20yNTYpOworSU1QT1JUIENPTlNUIFNsZWVm
X19fbTI1Nl8yIFNsZWVmX2Zpbnpfc2luY29zcGlmOF91MDVhdngyKF9fbTI1Nik7CitJTVBPUlQg
Q09OU1QgU2xlZWZfX19tMjU2XzIgU2xlZWZfc2luY29zcGlmOF91MzVhdngyKF9fbTI1Nik7CitJ
TVBPUlQgQ09OU1QgU2xlZWZfX19tMjU2XzIgU2xlZWZfZmluel9zaW5jb3NwaWY4X3UzNWF2eDIo
X19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfc2lucGlmOF91MDVhdngyKF9fbTI1
Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2Zpbnpfc2lucGlmOF91MDVhdngyKF9fbTI1
Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2Nvc3BpZjhfdTA1YXZ4MihfX20yNTYpOwor
SU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9maW56X2Nvc3BpZjhfdTA1YXZ4MihfX20yNTYpOwor
SU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9mbWFmOF9hdngyKF9fbTI1NiwgX19tMjU2LCBfX20y
NTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9maW56X2ZtYWY4X2F2eDIoX19tMjU2LCBf
X20yNTYsIF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX3NxcnRmOF9hdngyKF9f
bTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2Zpbnpfc3FydGY4X2F2eDIoX19tMjU2
KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfc3FydGY4X3UwNWF2eDIoX19tMjU2KTsKK0lN
UE9SVCBDT05TVCBfX20yNTYgU2xlZWZfZmluel9zcXJ0ZjhfdTA1YXZ4MihfX20yNTYpOworSU1Q
T1JUIENPTlNUIF9fbTI1NiBTbGVlZl9zcXJ0ZjhfdTM1YXZ4MihfX20yNTYpOworSU1QT1JUIENP
TlNUIF9fbTI1NiBTbGVlZl9maW56X3NxcnRmOF91MzVhdngyKF9fbTI1Nik7CitJTVBPUlQgQ09O
U1QgX19tMjU2IFNsZWVmX2h5cG90ZjhfdTA1YXZ4MihfX20yNTYsIF9fbTI1Nik7CitJTVBPUlQg
Q09OU1QgX19tMjU2IFNsZWVmX2ZpbnpfaHlwb3RmOF91MDVhdngyKF9fbTI1NiwgX19tMjU2KTsK
K0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfaHlwb3RmOF91MzVhdngyKF9fbTI1NiwgX19tMjU2
KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfZmluel9oeXBvdGY4X3UzNWF2eDIoX19tMjU2
LCBfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9mYWJzZjhfYXZ4MihfX20yNTYp
OworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9maW56X2ZhYnNmOF9hdngyKF9fbTI1Nik7CitJ
TVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2NvcHlzaWduZjhfYXZ4MihfX20yNTYsIF9fbTI1Nik7
CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2ZpbnpfY29weXNpZ25mOF9hdngyKF9fbTI1Niwg
X19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfZm1heGY4X2F2eDIoX19tMjU2LCBf
X20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9maW56X2ZtYXhmOF9hdngyKF9fbTI1
NiwgX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfZm1pbmY4X2F2eDIoX19tMjU2
LCBfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9maW56X2ZtaW5mOF9hdngyKF9f
bTI1NiwgX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfZmRpbWY4X2F2eDIoX19t
MjU2LCBfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9maW56X2ZkaW1mOF9hdngy
KF9fbTI1NiwgX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfdHJ1bmNmOF9hdngy
KF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2ZpbnpfdHJ1bmNmOF9hdngyKF9f
bTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2Zsb29yZjhfYXZ4MihfX20yNTYpOwor
SU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9maW56X2Zsb29yZjhfYXZ4MihfX20yNTYpOworSU1Q
T1JUIENPTlNUIF9fbTI1NiBTbGVlZl9jZWlsZjhfYXZ4MihfX20yNTYpOworSU1QT1JUIENPTlNU
IF9fbTI1NiBTbGVlZl9maW56X2NlaWxmOF9hdngyKF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19t
MjU2IFNsZWVmX3JvdW5kZjhfYXZ4MihfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVl
Zl9maW56X3JvdW5kZjhfYXZ4MihfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9y
aW50ZjhfYXZ4MihfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9maW56X3JpbnRm
OF9hdngyKF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX25leHRhZnRlcmY4X2F2
eDIoX19tMjU2LCBfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9maW56X25leHRh
ZnRlcmY4X2F2eDIoX19tMjU2LCBfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9m
cmZyZXhwZjhfYXZ4MihfX20yNTYpOworSU1QT1JUIENPTlNUIF9fbTI1NiBTbGVlZl9maW56X2Zy
ZnJleHBmOF9hdngyKF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2Ztb2RmOF9h
dngyKF9fbTI1NiwgX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfZmluel9mbW9k
ZjhfYXZ4MihfX20yNTYsIF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgU2xlZWZfX19tMjU2XzIgU2xl
ZWZfbW9kZmY4X2F2eDIoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBTbGVlZl9fX20yNTZfMiBTbGVl
Zl9maW56X21vZGZmOF9hdngyKF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2xn
YW1tYWY4X3UxMGF2eDIoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfZmluel9s
Z2FtbWFmOF91MTBhdngyKF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX3RnYW1t
YWY4X3UxMGF2eDIoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfZmluel90Z2Ft
bWFmOF91MTBhdngyKF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2VyZmY4X3Ux
MGF2eDIoX19tMjU2KTsKK0lNUE9SVCBDT05TVCBfX20yNTYgU2xlZWZfZmluel9lcmZmOF91MTBh
dngyKF9fbTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2VyZmNmOF91MTVhdngyKF9f
bTI1Nik7CitJTVBPUlQgQ09OU1QgX19tMjU2IFNsZWVmX2ZpbnpfZXJmY2Y4X3UxNWF2eDIoX19t
MjU2KTsKK0lNUE9SVCBDT05TVCBpbnQgU2xlZWZfZ2V0SW50ZjhfYXZ4MihpbnQpOworSU1QT1JU
IENPTlNUIGludCBTbGVlZl9maW56X2dldEludGY4X2F2eDIoaW50KTsKK0lNUE9SVCBDT05TVCB2
b2lkICpTbGVlZl9nZXRQdHJmOF9hdngyKGludCk7CitJTVBPUlQgQ09OU1Qgdm9pZCAqU2xlZWZf
Zmluel9nZXRQdHJmOF9hdngyKGludCk7CisjZW5kaWYKKyNpZmRlZiBfX1NTRTJfXworI2RlZmlu
ZSBTVFJVQ1RfS0VZV09SRF9fX1NTRTJfXyBzdHJ1Y3QKKworI2lmbmRlZiBTbGVlZl9fX20xMjhk
XzJfREVGSU5FRAordHlwZWRlZiBTVFJVQ1RfS0VZV09SRF9fX1NTRTJfXyB7CisgIF9fbTEyOGQg
eCwgeTsKK30gU2xlZWZfX19tMTI4ZF8yOworI2RlZmluZSBTbGVlZl9fX20xMjhkXzJfREVGSU5F
RAorI2VuZGlmCisKK0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX3NpbmQyX3UzNWF2eDIxMjgo
X19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9maW56X3NpbmQyX3UzNWF2eDIx
MjgoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9jb3NkMl91MzVhdngyMTI4
KF9fbTEyOGQpOworSU1QT1JUIENPTlNUIF9fbTEyOGQgU2xlZWZfZmluel9jb3NkMl91MzVhdngy
MTI4KF9fbTEyOGQpOworSU1QT1JUIENPTlNUIFNsZWVmX19fbTEyOGRfMiBTbGVlZl9zaW5jb3Nk
Ml91MzVhdngyMTI4KF9fbTEyOGQpOworSU1QT1JUIENPTlNUIFNsZWVmX19fbTEyOGRfMiBTbGVl
Zl9maW56X3NpbmNvc2QyX3UzNWF2eDIxMjgoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4
ZCBTbGVlZl90YW5kMl91MzVhdngyMTI4KF9fbTEyOGQpOworSU1QT1JUIENPTlNUIF9fbTEyOGQg
U2xlZWZfZmluel90YW5kMl91MzVhdngyMTI4KF9fbTEyOGQpOworSU1QT1JUIENPTlNUIF9fbTEy
OGQgU2xlZWZfYXNpbmQyX3UzNWF2eDIxMjgoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4
ZCBTbGVlZl9maW56X2FzaW5kMl91MzVhdngyMTI4KF9fbTEyOGQpOworSU1QT1JUIENPTlNUIF9f
bTEyOGQgU2xlZWZfYWNvc2QyX3UzNWF2eDIxMjgoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19t
MTI4ZCBTbGVlZl9maW56X2Fjb3NkMl91MzVhdngyMTI4KF9fbTEyOGQpOworSU1QT1JUIENPTlNU
IF9fbTEyOGQgU2xlZWZfYXRhbmQyX3UzNWF2eDIxMjgoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1Qg
X19tMTI4ZCBTbGVlZl9maW56X2F0YW5kMl91MzVhdngyMTI4KF9fbTEyOGQpOworSU1QT1JUIENP
TlNUIF9fbTEyOGQgU2xlZWZfYXRhbjJkMl91MzVhdngyMTI4KF9fbTEyOGQsIF9fbTEyOGQpOwor
SU1QT1JUIENPTlNUIF9fbTEyOGQgU2xlZWZfZmluel9hdGFuMmQyX3UzNWF2eDIxMjgoX19tMTI4
ZCwgX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9sb2dkMl91MzVhdngyMTI4
KF9fbTEyOGQpOworSU1QT1JUIENPTlNUIF9fbTEyOGQgU2xlZWZfZmluel9sb2dkMl91MzVhdngy
MTI4KF9fbTEyOGQpOworSU1QT1JUIENPTlNUIF9fbTEyOGQgU2xlZWZfY2JydGQyX3UzNWF2eDIx
MjgoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9maW56X2NicnRkMl91MzVh
dngyMTI4KF9fbTEyOGQpOworSU1QT1JUIENPTlNUIF9fbTEyOGQgU2xlZWZfc2luZDJfdTEwYXZ4
MjEyOChfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2Zpbnpfc2luZDJfdTEw
YXZ4MjEyOChfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2Nvc2QyX3UxMGF2
eDIxMjgoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9maW56X2Nvc2QyX3Ux
MGF2eDIxMjgoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgU2xlZWZfX19tMTI4ZF8yIFNsZWVmX3Np
bmNvc2QyX3UxMGF2eDIxMjgoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgU2xlZWZfX19tMTI4ZF8y
IFNsZWVmX2Zpbnpfc2luY29zZDJfdTEwYXZ4MjEyOChfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBf
X20xMjhkIFNsZWVmX3RhbmQyX3UxMGF2eDIxMjgoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19t
MTI4ZCBTbGVlZl9maW56X3RhbmQyX3UxMGF2eDIxMjgoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1Qg
X19tMTI4ZCBTbGVlZl9hc2luZDJfdTEwYXZ4MjEyOChfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBf
X20xMjhkIFNsZWVmX2ZpbnpfYXNpbmQyX3UxMGF2eDIxMjgoX19tMTI4ZCk7CitJTVBPUlQgQ09O
U1QgX19tMTI4ZCBTbGVlZl9hY29zZDJfdTEwYXZ4MjEyOChfX20xMjhkKTsKK0lNUE9SVCBDT05T
VCBfX20xMjhkIFNsZWVmX2ZpbnpfYWNvc2QyX3UxMGF2eDIxMjgoX19tMTI4ZCk7CitJTVBPUlQg
Q09OU1QgX19tMTI4ZCBTbGVlZl9hdGFuZDJfdTEwYXZ4MjEyOChfX20xMjhkKTsKK0lNUE9SVCBD
T05TVCBfX20xMjhkIFNsZWVmX2ZpbnpfYXRhbmQyX3UxMGF2eDIxMjgoX19tMTI4ZCk7CitJTVBP
UlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9hdGFuMmQyX3UxMGF2eDIxMjgoX19tMTI4ZCwgX19tMTI4
ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9maW56X2F0YW4yZDJfdTEwYXZ4MjEyOChf
X20xMjhkLCBfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2xvZ2QyX3UxMGF2
eDIxMjgoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9maW56X2xvZ2QyX3Ux
MGF2eDIxMjgoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9jYnJ0ZDJfdTEw
YXZ4MjEyOChfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2ZpbnpfY2JydGQy
X3UxMGF2eDIxMjgoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9leHBkMl91
MTBhdngyMTI4KF9fbTEyOGQpOworSU1QT1JUIENPTlNUIF9fbTEyOGQgU2xlZWZfZmluel9leHBk
Ml91MTBhdngyMTI4KF9fbTEyOGQpOworSU1QT1JUIENPTlNUIF9fbTEyOGQgU2xlZWZfcG93ZDJf
dTEwYXZ4MjEyOChfX20xMjhkLCBfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVm
X2ZpbnpfcG93ZDJfdTEwYXZ4MjEyOChfX20xMjhkLCBfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBf
X20xMjhkIFNsZWVmX3NpbmhkMl91MTBhdngyMTI4KF9fbTEyOGQpOworSU1QT1JUIENPTlNUIF9f
bTEyOGQgU2xlZWZfZmluel9zaW5oZDJfdTEwYXZ4MjEyOChfX20xMjhkKTsKK0lNUE9SVCBDT05T
VCBfX20xMjhkIFNsZWVmX2Nvc2hkMl91MTBhdngyMTI4KF9fbTEyOGQpOworSU1QT1JUIENPTlNU
IF9fbTEyOGQgU2xlZWZfZmluel9jb3NoZDJfdTEwYXZ4MjEyOChfX20xMjhkKTsKK0lNUE9SVCBD
T05TVCBfX20xMjhkIFNsZWVmX3RhbmhkMl91MTBhdngyMTI4KF9fbTEyOGQpOworSU1QT1JUIENP
TlNUIF9fbTEyOGQgU2xlZWZfZmluel90YW5oZDJfdTEwYXZ4MjEyOChfX20xMjhkKTsKK0lNUE9S
VCBDT05TVCBfX20xMjhkIFNsZWVmX3NpbmhkMl91MzVhdngyMTI4KF9fbTEyOGQpOworSU1QT1JU
IENPTlNUIF9fbTEyOGQgU2xlZWZfZmluel9zaW5oZDJfdTM1YXZ4MjEyOChfX20xMjhkKTsKK0lN
UE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2Nvc2hkMl91MzVhdngyMTI4KF9fbTEyOGQpOworSU1Q
T1JUIENPTlNUIF9fbTEyOGQgU2xlZWZfZmluel9jb3NoZDJfdTM1YXZ4MjEyOChfX20xMjhkKTsK
K0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX3RhbmhkMl91MzVhdngyMTI4KF9fbTEyOGQpOwor
SU1QT1JUIENPTlNUIF9fbTEyOGQgU2xlZWZfZmluel90YW5oZDJfdTM1YXZ4MjEyOChfX20xMjhk
KTsKK0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2Zhc3RzaW5kMl91MzUwMGF2eDIxMjgoX19t
MTI4ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9maW56X2Zhc3RzaW5kMl91MzUwMGF2
eDIxMjgoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9mYXN0Y29zZDJfdTM1
MDBhdngyMTI4KF9fbTEyOGQpOworSU1QT1JUIENPTlNUIF9fbTEyOGQgU2xlZWZfZmluel9mYXN0
Y29zZDJfdTM1MDBhdngyMTI4KF9fbTEyOGQpOworSU1QT1JUIENPTlNUIF9fbTEyOGQgU2xlZWZf
ZmFzdHBvd2QyX3UzNTAwYXZ4MjEyOChfX20xMjhkLCBfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBf
X20xMjhkIFNsZWVmX2ZpbnpfZmFzdHBvd2QyX3UzNTAwYXZ4MjEyOChfX20xMjhkLCBfX20xMjhk
KTsKK0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2FzaW5oZDJfdTEwYXZ4MjEyOChfX20xMjhk
KTsKK0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2ZpbnpfYXNpbmhkMl91MTBhdngyMTI4KF9f
bTEyOGQpOworSU1QT1JUIENPTlNUIF9fbTEyOGQgU2xlZWZfYWNvc2hkMl91MTBhdngyMTI4KF9f
bTEyOGQpOworSU1QT1JUIENPTlNUIF9fbTEyOGQgU2xlZWZfZmluel9hY29zaGQyX3UxMGF2eDIx
MjgoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9hdGFuaGQyX3UxMGF2eDIx
MjgoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9maW56X2F0YW5oZDJfdTEw
YXZ4MjEyOChfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2V4cDJkMl91MTBh
dngyMTI4KF9fbTEyOGQpOworSU1QT1JUIENPTlNUIF9fbTEyOGQgU2xlZWZfZmluel9leHAyZDJf
dTEwYXZ4MjEyOChfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2V4cDJkMl91
MzVhdngyMTI4KF9fbTEyOGQpOworSU1QT1JUIENPTlNUIF9fbTEyOGQgU2xlZWZfZmluel9leHAy
ZDJfdTM1YXZ4MjEyOChfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2V4cDEw
ZDJfdTEwYXZ4MjEyOChfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2Zpbnpf
ZXhwMTBkMl91MTBhdngyMTI4KF9fbTEyOGQpOworSU1QT1JUIENPTlNUIF9fbTEyOGQgU2xlZWZf
ZXhwMTBkMl91MzVhdngyMTI4KF9fbTEyOGQpOworSU1QT1JUIENPTlNUIF9fbTEyOGQgU2xlZWZf
Zmluel9leHAxMGQyX3UzNWF2eDIxMjgoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBT
bGVlZl9leHBtMWQyX3UxMGF2eDIxMjgoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBT
bGVlZl9maW56X2V4cG0xZDJfdTEwYXZ4MjEyOChfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBfX20x
MjhkIFNsZWVmX2xvZzEwZDJfdTEwYXZ4MjEyOChfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBfX20x
MjhkIFNsZWVmX2ZpbnpfbG9nMTBkMl91MTBhdngyMTI4KF9fbTEyOGQpOworSU1QT1JUIENPTlNU
IF9fbTEyOGQgU2xlZWZfbG9nMmQyX3UxMGF2eDIxMjgoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1Qg
X19tMTI4ZCBTbGVlZl9maW56X2xvZzJkMl91MTBhdngyMTI4KF9fbTEyOGQpOworSU1QT1JUIENP
TlNUIF9fbTEyOGQgU2xlZWZfbG9nMmQyX3UzNWF2eDIxMjgoX19tMTI4ZCk7CitJTVBPUlQgQ09O
U1QgX19tMTI4ZCBTbGVlZl9maW56X2xvZzJkMl91MzVhdngyMTI4KF9fbTEyOGQpOworSU1QT1JU
IENPTlNUIF9fbTEyOGQgU2xlZWZfbG9nMXBkMl91MTBhdngyMTI4KF9fbTEyOGQpOworSU1QT1JU
IENPTlNUIF9fbTEyOGQgU2xlZWZfZmluel9sb2cxcGQyX3UxMGF2eDIxMjgoX19tMTI4ZCk7CitJ
TVBPUlQgQ09OU1QgU2xlZWZfX19tMTI4ZF8yIFNsZWVmX3NpbmNvc3BpZDJfdTA1YXZ4MjEyOChf
X20xMjhkKTsKK0lNUE9SVCBDT05TVCBTbGVlZl9fX20xMjhkXzIgU2xlZWZfZmluel9zaW5jb3Nw
aWQyX3UwNWF2eDIxMjgoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgU2xlZWZfX19tMTI4ZF8yIFNs
ZWVmX3NpbmNvc3BpZDJfdTM1YXZ4MjEyOChfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBTbGVlZl9f
X20xMjhkXzIgU2xlZWZfZmluel9zaW5jb3NwaWQyX3UzNWF2eDIxMjgoX19tMTI4ZCk7CitJTVBP
UlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9zaW5waWQyX3UwNWF2eDIxMjgoX19tMTI4ZCk7CitJTVBP
UlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9maW56X3NpbnBpZDJfdTA1YXZ4MjEyOChfX20xMjhkKTsK
K0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2Nvc3BpZDJfdTA1YXZ4MjEyOChfX20xMjhkKTsK
K0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2ZpbnpfY29zcGlkMl91MDVhdngyMTI4KF9fbTEy
OGQpOworSU1QT1JUIENPTlNUIF9fbTEyOGQgU2xlZWZfbGRleHBkMl9hdngyMTI4KF9fbTEyOGQs
IF9fbTEyOGkpOworSU1QT1JUIENPTlNUIF9fbTEyOGQgU2xlZWZfZmluel9sZGV4cGQyX2F2eDIx
MjgoX19tMTI4ZCwgX19tMTI4aSk7CitJTVBPUlQgQ09OU1QgX19tMTI4aSBTbGVlZl9pbG9nYmQy
X2F2eDIxMjgoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4aSBTbGVlZl9maW56X2lsb2di
ZDJfYXZ4MjEyOChfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2ZtYWQyX2F2
eDIxMjgoX19tMTI4ZCwgX19tMTI4ZCwgX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBT
bGVlZl9maW56X2ZtYWQyX2F2eDIxMjgoX19tMTI4ZCwgX19tMTI4ZCwgX19tMTI4ZCk7CitJTVBP
UlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9zcXJ0ZDJfYXZ4MjEyOChfX20xMjhkKTsKK0lNUE9SVCBD
T05TVCBfX20xMjhkIFNsZWVmX2Zpbnpfc3FydGQyX2F2eDIxMjgoX19tMTI4ZCk7CitJTVBPUlQg
Q09OU1QgX19tMTI4ZCBTbGVlZl9zcXJ0ZDJfdTA1YXZ4MjEyOChfX20xMjhkKTsKK0lNUE9SVCBD
T05TVCBfX20xMjhkIFNsZWVmX2Zpbnpfc3FydGQyX3UwNWF2eDIxMjgoX19tMTI4ZCk7CitJTVBP
UlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9zcXJ0ZDJfdTM1YXZ4MjEyOChfX20xMjhkKTsKK0lNUE9S
VCBDT05TVCBfX20xMjhkIFNsZWVmX2Zpbnpfc3FydGQyX3UzNWF2eDIxMjgoX19tMTI4ZCk7CitJ
TVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9oeXBvdGQyX3UwNWF2eDIxMjgoX19tMTI4ZCwgX19t
MTI4ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9maW56X2h5cG90ZDJfdTA1YXZ4MjEy
OChfX20xMjhkLCBfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2h5cG90ZDJf
dTM1YXZ4MjEyOChfX20xMjhkLCBfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVm
X2ZpbnpfaHlwb3RkMl91MzVhdngyMTI4KF9fbTEyOGQsIF9fbTEyOGQpOworSU1QT1JUIENPTlNU
IF9fbTEyOGQgU2xlZWZfZmFic2QyX2F2eDIxMjgoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19t
MTI4ZCBTbGVlZl9maW56X2ZhYnNkMl9hdngyMTI4KF9fbTEyOGQpOworSU1QT1JUIENPTlNUIF9f
bTEyOGQgU2xlZWZfY29weXNpZ25kMl9hdngyMTI4KF9fbTEyOGQsIF9fbTEyOGQpOworSU1QT1JU
IENPTlNUIF9fbTEyOGQgU2xlZWZfZmluel9jb3B5c2lnbmQyX2F2eDIxMjgoX19tMTI4ZCwgX19t
MTI4ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9mbWF4ZDJfYXZ4MjEyOChfX20xMjhk
LCBfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2ZpbnpfZm1heGQyX2F2eDIx
MjgoX19tMTI4ZCwgX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9mbWluZDJf
YXZ4MjEyOChfX20xMjhkLCBfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2Zp
bnpfZm1pbmQyX2F2eDIxMjgoX19tMTI4ZCwgX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4
ZCBTbGVlZl9mZGltZDJfYXZ4MjEyOChfX20xMjhkLCBfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBf
X20xMjhkIFNsZWVmX2ZpbnpfZmRpbWQyX2F2eDIxMjgoX19tMTI4ZCwgX19tMTI4ZCk7CitJTVBP
UlQgQ09OU1QgX19tMTI4ZCBTbGVlZl90cnVuY2QyX2F2eDIxMjgoX19tMTI4ZCk7CitJTVBPUlQg
Q09OU1QgX19tMTI4ZCBTbGVlZl9maW56X3RydW5jZDJfYXZ4MjEyOChfX20xMjhkKTsKK0lNUE9S
VCBDT05TVCBfX20xMjhkIFNsZWVmX2Zsb29yZDJfYXZ4MjEyOChfX20xMjhkKTsKK0lNUE9SVCBD
T05TVCBfX20xMjhkIFNsZWVmX2ZpbnpfZmxvb3JkMl9hdngyMTI4KF9fbTEyOGQpOworSU1QT1JU
IENPTlNUIF9fbTEyOGQgU2xlZWZfY2VpbGQyX2F2eDIxMjgoX19tMTI4ZCk7CitJTVBPUlQgQ09O
U1QgX19tMTI4ZCBTbGVlZl9maW56X2NlaWxkMl9hdngyMTI4KF9fbTEyOGQpOworSU1QT1JUIENP
TlNUIF9fbTEyOGQgU2xlZWZfcm91bmRkMl9hdngyMTI4KF9fbTEyOGQpOworSU1QT1JUIENPTlNU
IF9fbTEyOGQgU2xlZWZfZmluel9yb3VuZGQyX2F2eDIxMjgoX19tMTI4ZCk7CitJTVBPUlQgQ09O
U1QgX19tMTI4ZCBTbGVlZl9yaW50ZDJfYXZ4MjEyOChfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBf
X20xMjhkIFNsZWVmX2ZpbnpfcmludGQyX2F2eDIxMjgoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1Qg
X19tMTI4ZCBTbGVlZl9uZXh0YWZ0ZXJkMl9hdngyMTI4KF9fbTEyOGQsIF9fbTEyOGQpOworSU1Q
T1JUIENPTlNUIF9fbTEyOGQgU2xlZWZfZmluel9uZXh0YWZ0ZXJkMl9hdngyMTI4KF9fbTEyOGQs
IF9fbTEyOGQpOworSU1QT1JUIENPTlNUIF9fbTEyOGQgU2xlZWZfZnJmcmV4cGQyX2F2eDIxMjgo
X19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9maW56X2ZyZnJleHBkMl9hdngy
MTI4KF9fbTEyOGQpOworSU1QT1JUIENPTlNUIF9fbTEyOGkgU2xlZWZfZXhwZnJleHBkMl9hdngy
MTI4KF9fbTEyOGQpOworSU1QT1JUIENPTlNUIF9fbTEyOGkgU2xlZWZfZmluel9leHBmcmV4cGQy
X2F2eDIxMjgoX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9mbW9kZDJfYXZ4
MjEyOChfX20xMjhkLCBfX20xMjhkKTsKK0lNUE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX2Zpbnpf
Zm1vZGQyX2F2eDIxMjgoX19tMTI4ZCwgX19tMTI4ZCk7CitJTVBPUlQgQ09OU1QgU2xlZWZfX19t
MTI4ZF8yIFNsZWVmX21vZGZkMl9hdngyMTI4KF9fbTEyOGQpOworSU1QT1JUIENPTlNUIFNsZWVm
X19fbTEyOGRfMiBTbGVlZl9maW56X21vZGZkMl9hdngyMTI4KF9fbTEyOGQpOworSU1QT1JUIENP
TlNUIF9fbTEyOGQgU2xlZWZfbGdhbW1hZDJfdTEwYXZ4MjEyOChfX20xMjhkKTsKK0lNUE9SVCBD
T05TVCBfX20xMjhkIFNsZWVmX2ZpbnpfbGdhbW1hZDJfdTEwYXZ4MjEyOChfX20xMjhkKTsKK0lN
UE9SVCBDT05TVCBfX20xMjhkIFNsZWVmX3RnYW1tYWQyX3UxMGF2eDIxMjgoX19tMTI4ZCk7CitJ
TVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9maW56X3RnYW1tYWQyX3UxMGF2eDIxMjgoX19tMTI4
ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9lcmZkMl91MTBhdngyMTI4KF9fbTEyOGQp
OworSU1QT1JUIENPTlNUIF9fbTEyOGQgU2xlZWZfZmluel9lcmZkMl91MTBhdngyMTI4KF9fbTEy
OGQpOworSU1QT1JUIENPTlNUIF9fbTEyOGQgU2xlZWZfZXJmY2QyX3UxNWF2eDIxMjgoX19tMTI4
ZCk7CitJTVBPUlQgQ09OU1QgX19tMTI4ZCBTbGVlZl9maW56X2VyZmNkMl91MTVhdngyMTI4KF9f
bTEyOGQpOworSU1QT1JUIENPTlNUIGludCBTbGVlZl9nZXRJbnRkMl9hdngyMTI4KGludCk7CitJ
TVBPUlQgQ09OU1Qgdm9pZCAqU2xlZWZfZ2V0UHRyZDJfYXZ4MjEyOChpbnQpOworCisjaWZuZGVm
IFNsZWVmX19fbTEyOF8yX0RFRklORUQKK3R5cGVkZWYgU1RSVUNUX0tFWVdPUkRfX19TU0UyX18g
eworICBfX20xMjggeCwgeTsKK30gU2xlZWZfX19tMTI4XzI7CisjZGVmaW5lIFNsZWVmX19fbTEy
OF8yX0RFRklORUQKKyNlbmRpZgorCitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX3NpbmY0X3Uz
NWF2eDIxMjgoX19tMTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZfZmluel9zaW5mNF91
MzVhdngyMTI4KF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX2Nvc2Y0X3UzNWF2
eDIxMjgoX19tMTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZfZmluel9jb3NmNF91MzVh
dngyMTI4KF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgU2xlZWZfX19tMTI4XzIgU2xlZWZfc2luY29z
ZjRfdTM1YXZ4MjEyOChfX20xMjgpOworSU1QT1JUIENPTlNUIFNsZWVmX19fbTEyOF8yIFNsZWVm
X2Zpbnpfc2luY29zZjRfdTM1YXZ4MjEyOChfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBT
bGVlZl90YW5mNF91MzVhdngyMTI4KF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVm
X2ZpbnpfdGFuZjRfdTM1YXZ4MjEyOChfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVl
Zl9hc2luZjRfdTM1YXZ4MjEyOChfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9m
aW56X2FzaW5mNF91MzVhdngyMTI4KF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVm
X2Fjb3NmNF91MzVhdngyMTI4KF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX2Zp
bnpfYWNvc2Y0X3UzNWF2eDIxMjgoX19tMTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZf
YXRhbmY0X3UzNWF2eDIxMjgoX19tMTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZfZmlu
el9hdGFuZjRfdTM1YXZ4MjEyOChfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9h
dGFuMmY0X3UzNWF2eDIxMjgoX19tMTI4LCBfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBT
bGVlZl9maW56X2F0YW4yZjRfdTM1YXZ4MjEyOChfX20xMjgsIF9fbTEyOCk7CitJTVBPUlQgQ09O
U1QgX19tMTI4IFNsZWVmX2xvZ2Y0X3UzNWF2eDIxMjgoX19tMTI4KTsKK0lNUE9SVCBDT05TVCBf
X20xMjggU2xlZWZfZmluel9sb2dmNF91MzVhdngyMTI4KF9fbTEyOCk7CitJTVBPUlQgQ09OU1Qg
X19tMTI4IFNsZWVmX2NicnRmNF91MzVhdngyMTI4KF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19t
MTI4IFNsZWVmX2ZpbnpfY2JydGY0X3UzNWF2eDIxMjgoX19tMTI4KTsKK0lNUE9SVCBDT05TVCBf
X20xMjggU2xlZWZfc2luZjRfdTEwYXZ4MjEyOChfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEy
OCBTbGVlZl9maW56X3NpbmY0X3UxMGF2eDIxMjgoX19tMTI4KTsKK0lNUE9SVCBDT05TVCBfX20x
MjggU2xlZWZfY29zZjRfdTEwYXZ4MjEyOChfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBT
bGVlZl9maW56X2Nvc2Y0X3UxMGF2eDIxMjgoX19tMTI4KTsKK0lNUE9SVCBDT05TVCBTbGVlZl9f
X20xMjhfMiBTbGVlZl9zaW5jb3NmNF91MTBhdngyMTI4KF9fbTEyOCk7CitJTVBPUlQgQ09OU1Qg
U2xlZWZfX19tMTI4XzIgU2xlZWZfZmluel9zaW5jb3NmNF91MTBhdngyMTI4KF9fbTEyOCk7CitJ
TVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX3RhbmY0X3UxMGF2eDIxMjgoX19tMTI4KTsKK0lNUE9S
VCBDT05TVCBfX20xMjggU2xlZWZfZmluel90YW5mNF91MTBhdngyMTI4KF9fbTEyOCk7CitJTVBP
UlQgQ09OU1QgX19tMTI4IFNsZWVmX2FzaW5mNF91MTBhdngyMTI4KF9fbTEyOCk7CitJTVBPUlQg
Q09OU1QgX19tMTI4IFNsZWVmX2ZpbnpfYXNpbmY0X3UxMGF2eDIxMjgoX19tMTI4KTsKK0lNUE9S
VCBDT05TVCBfX20xMjggU2xlZWZfYWNvc2Y0X3UxMGF2eDIxMjgoX19tMTI4KTsKK0lNUE9SVCBD
T05TVCBfX20xMjggU2xlZWZfZmluel9hY29zZjRfdTEwYXZ4MjEyOChfX20xMjgpOworSU1QT1JU
IENPTlNUIF9fbTEyOCBTbGVlZl9hdGFuZjRfdTEwYXZ4MjEyOChfX20xMjgpOworSU1QT1JUIENP
TlNUIF9fbTEyOCBTbGVlZl9maW56X2F0YW5mNF91MTBhdngyMTI4KF9fbTEyOCk7CitJTVBPUlQg
Q09OU1QgX19tMTI4IFNsZWVmX2F0YW4yZjRfdTEwYXZ4MjEyOChfX20xMjgsIF9fbTEyOCk7CitJ
TVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX2ZpbnpfYXRhbjJmNF91MTBhdngyMTI4KF9fbTEyOCwg
X19tMTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZfbG9nZjRfdTEwYXZ4MjEyOChfX20x
MjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9maW56X2xvZ2Y0X3UxMGF2eDIxMjgoX19t
MTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZfY2JydGY0X3UxMGF2eDIxMjgoX19tMTI4
KTsKK0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZfZmluel9jYnJ0ZjRfdTEwYXZ4MjEyOChfX20x
MjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9leHBmNF91MTBhdngyMTI4KF9fbTEyOCk7
CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX2ZpbnpfZXhwZjRfdTEwYXZ4MjEyOChfX20xMjgp
OworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9wb3dmNF91MTBhdngyMTI4KF9fbTEyOCwgX19t
MTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZfZmluel9wb3dmNF91MTBhdngyMTI4KF9f
bTEyOCwgX19tMTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZfc2luaGY0X3UxMGF2eDIx
MjgoX19tMTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZfZmluel9zaW5oZjRfdTEwYXZ4
MjEyOChfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9jb3NoZjRfdTEwYXZ4MjEy
OChfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9maW56X2Nvc2hmNF91MTBhdngy
MTI4KF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX3RhbmhmNF91MTBhdngyMTI4
KF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX2ZpbnpfdGFuaGY0X3UxMGF2eDIx
MjgoX19tMTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZfc2luaGY0X3UzNWF2eDIxMjgo
X19tMTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZfZmluel9zaW5oZjRfdTM1YXZ4MjEy
OChfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9jb3NoZjRfdTM1YXZ4MjEyOChf
X20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9maW56X2Nvc2hmNF91MzVhdngyMTI4
KF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX3RhbmhmNF91MzVhdngyMTI4KF9f
bTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX2ZpbnpfdGFuaGY0X3UzNWF2eDIxMjgo
X19tMTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZfZmFzdHNpbmY0X3UzNTAwYXZ4MjEy
OChfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9maW56X2Zhc3RzaW5mNF91MzUw
MGF2eDIxMjgoX19tMTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZfZmFzdGNvc2Y0X3Uz
NTAwYXZ4MjEyOChfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9maW56X2Zhc3Rj
b3NmNF91MzUwMGF2eDIxMjgoX19tMTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZfZmFz
dHBvd2Y0X3UzNTAwYXZ4MjEyOChfX20xMjgsIF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4
IFNsZWVmX2ZpbnpfZmFzdHBvd2Y0X3UzNTAwYXZ4MjEyOChfX20xMjgsIF9fbTEyOCk7CitJTVBP
UlQgQ09OU1QgX19tMTI4IFNsZWVmX2FzaW5oZjRfdTEwYXZ4MjEyOChfX20xMjgpOworSU1QT1JU
IENPTlNUIF9fbTEyOCBTbGVlZl9maW56X2FzaW5oZjRfdTEwYXZ4MjEyOChfX20xMjgpOworSU1Q
T1JUIENPTlNUIF9fbTEyOCBTbGVlZl9hY29zaGY0X3UxMGF2eDIxMjgoX19tMTI4KTsKK0lNUE9S
VCBDT05TVCBfX20xMjggU2xlZWZfZmluel9hY29zaGY0X3UxMGF2eDIxMjgoX19tMTI4KTsKK0lN
UE9SVCBDT05TVCBfX20xMjggU2xlZWZfYXRhbmhmNF91MTBhdngyMTI4KF9fbTEyOCk7CitJTVBP
UlQgQ09OU1QgX19tMTI4IFNsZWVmX2ZpbnpfYXRhbmhmNF91MTBhdngyMTI4KF9fbTEyOCk7CitJ
TVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX2V4cDJmNF91MTBhdngyMTI4KF9fbTEyOCk7CitJTVBP
UlQgQ09OU1QgX19tMTI4IFNsZWVmX2ZpbnpfZXhwMmY0X3UxMGF2eDIxMjgoX19tMTI4KTsKK0lN
UE9SVCBDT05TVCBfX20xMjggU2xlZWZfZXhwMmY0X3UzNWF2eDIxMjgoX19tMTI4KTsKK0lNUE9S
VCBDT05TVCBfX20xMjggU2xlZWZfZmluel9leHAyZjRfdTM1YXZ4MjEyOChfX20xMjgpOworSU1Q
T1JUIENPTlNUIF9fbTEyOCBTbGVlZl9leHAxMGY0X3UxMGF2eDIxMjgoX19tMTI4KTsKK0lNUE9S
VCBDT05TVCBfX20xMjggU2xlZWZfZmluel9leHAxMGY0X3UxMGF2eDIxMjgoX19tMTI4KTsKK0lN
UE9SVCBDT05TVCBfX20xMjggU2xlZWZfZXhwMTBmNF91MzVhdngyMTI4KF9fbTEyOCk7CitJTVBP
UlQgQ09OU1QgX19tMTI4IFNsZWVmX2ZpbnpfZXhwMTBmNF91MzVhdngyMTI4KF9fbTEyOCk7CitJ
TVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX2V4cG0xZjRfdTEwYXZ4MjEyOChfX20xMjgpOworSU1Q
T1JUIENPTlNUIF9fbTEyOCBTbGVlZl9maW56X2V4cG0xZjRfdTEwYXZ4MjEyOChfX20xMjgpOwor
SU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9sb2cxMGY0X3UxMGF2eDIxMjgoX19tMTI4KTsKK0lN
UE9SVCBDT05TVCBfX20xMjggU2xlZWZfZmluel9sb2cxMGY0X3UxMGF2eDIxMjgoX19tMTI4KTsK
K0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZfbG9nMmY0X3UxMGF2eDIxMjgoX19tMTI4KTsKK0lN
UE9SVCBDT05TVCBfX20xMjggU2xlZWZfZmluel9sb2cyZjRfdTEwYXZ4MjEyOChfX20xMjgpOwor
SU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9sb2cyZjRfdTM1YXZ4MjEyOChfX20xMjgpOworSU1Q
T1JUIENPTlNUIF9fbTEyOCBTbGVlZl9maW56X2xvZzJmNF91MzVhdngyMTI4KF9fbTEyOCk7CitJ
TVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX2xvZzFwZjRfdTEwYXZ4MjEyOChfX20xMjgpOworSU1Q
T1JUIENPTlNUIF9fbTEyOCBTbGVlZl9maW56X2xvZzFwZjRfdTEwYXZ4MjEyOChfX20xMjgpOwor
SU1QT1JUIENPTlNUIFNsZWVmX19fbTEyOF8yIFNsZWVmX3NpbmNvc3BpZjRfdTA1YXZ4MjEyOChf
X20xMjgpOworSU1QT1JUIENPTlNUIFNsZWVmX19fbTEyOF8yIFNsZWVmX2Zpbnpfc2luY29zcGlm
NF91MDVhdngyMTI4KF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgU2xlZWZfX19tMTI4XzIgU2xlZWZf
c2luY29zcGlmNF91MzVhdngyMTI4KF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgU2xlZWZfX19tMTI4
XzIgU2xlZWZfZmluel9zaW5jb3NwaWY0X3UzNWF2eDIxMjgoX19tMTI4KTsKK0lNUE9SVCBDT05T
VCBfX20xMjggU2xlZWZfc2lucGlmNF91MDVhdngyMTI4KF9fbTEyOCk7CitJTVBPUlQgQ09OU1Qg
X19tMTI4IFNsZWVmX2Zpbnpfc2lucGlmNF91MDVhdngyMTI4KF9fbTEyOCk7CitJTVBPUlQgQ09O
U1QgX19tMTI4IFNsZWVmX2Nvc3BpZjRfdTA1YXZ4MjEyOChfX20xMjgpOworSU1QT1JUIENPTlNU
IF9fbTEyOCBTbGVlZl9maW56X2Nvc3BpZjRfdTA1YXZ4MjEyOChfX20xMjgpOworSU1QT1JUIENP
TlNUIF9fbTEyOCBTbGVlZl9mbWFmNF9hdngyMTI4KF9fbTEyOCwgX19tMTI4LCBfX20xMjgpOwor
SU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9maW56X2ZtYWY0X2F2eDIxMjgoX19tMTI4LCBfX20x
MjgsIF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX3NxcnRmNF9hdngyMTI4KF9f
bTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX2Zpbnpfc3FydGY0X2F2eDIxMjgoX19t
MTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZfc3FydGY0X3UwNWF2eDIxMjgoX19tMTI4
KTsKK0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZfZmluel9zcXJ0ZjRfdTA1YXZ4MjEyOChfX20x
MjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9zcXJ0ZjRfdTM1YXZ4MjEyOChfX20xMjgp
OworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9maW56X3NxcnRmNF91MzVhdngyMTI4KF9fbTEy
OCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX2h5cG90ZjRfdTA1YXZ4MjEyOChfX20xMjgs
IF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX2ZpbnpfaHlwb3RmNF91MDVhdngy
MTI4KF9fbTEyOCwgX19tMTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZfaHlwb3RmNF91
MzVhdngyMTI4KF9fbTEyOCwgX19tMTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZfZmlu
el9oeXBvdGY0X3UzNWF2eDIxMjgoX19tMTI4LCBfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEy
OCBTbGVlZl9mYWJzZjRfYXZ4MjEyOChfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVl
Zl9maW56X2ZhYnNmNF9hdngyMTI4KF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVm
X2NvcHlzaWduZjRfYXZ4MjEyOChfX20xMjgsIF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4
IFNsZWVmX2ZpbnpfY29weXNpZ25mNF9hdngyMTI4KF9fbTEyOCwgX19tMTI4KTsKK0lNUE9SVCBD
T05TVCBfX20xMjggU2xlZWZfZm1heGY0X2F2eDIxMjgoX19tMTI4LCBfX20xMjgpOworSU1QT1JU
IENPTlNUIF9fbTEyOCBTbGVlZl9maW56X2ZtYXhmNF9hdngyMTI4KF9fbTEyOCwgX19tMTI4KTsK
K0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZfZm1pbmY0X2F2eDIxMjgoX19tMTI4LCBfX20xMjgp
OworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9maW56X2ZtaW5mNF9hdngyMTI4KF9fbTEyOCwg
X19tMTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZfZmRpbWY0X2F2eDIxMjgoX19tMTI4
LCBfX20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9maW56X2ZkaW1mNF9hdngyMTI4
KF9fbTEyOCwgX19tMTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZfdHJ1bmNmNF9hdngy
MTI4KF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX2ZpbnpfdHJ1bmNmNF9hdngy
MTI4KF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX2Zsb29yZjRfYXZ4MjEyOChf
X20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9maW56X2Zsb29yZjRfYXZ4MjEyOChf
X20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9jZWlsZjRfYXZ4MjEyOChfX20xMjgp
OworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9maW56X2NlaWxmNF9hdngyMTI4KF9fbTEyOCk7
CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX3JvdW5kZjRfYXZ4MjEyOChfX20xMjgpOworSU1Q
T1JUIENPTlNUIF9fbTEyOCBTbGVlZl9maW56X3JvdW5kZjRfYXZ4MjEyOChfX20xMjgpOworSU1Q
T1JUIENPTlNUIF9fbTEyOCBTbGVlZl9yaW50ZjRfYXZ4MjEyOChfX20xMjgpOworSU1QT1JUIENP
TlNUIF9fbTEyOCBTbGVlZl9maW56X3JpbnRmNF9hdngyMTI4KF9fbTEyOCk7CitJTVBPUlQgQ09O
U1QgX19tMTI4IFNsZWVmX25leHRhZnRlcmY0X2F2eDIxMjgoX19tMTI4LCBfX20xMjgpOworSU1Q
T1JUIENPTlNUIF9fbTEyOCBTbGVlZl9maW56X25leHRhZnRlcmY0X2F2eDIxMjgoX19tMTI4LCBf
X20xMjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9mcmZyZXhwZjRfYXZ4MjEyOChfX20x
MjgpOworSU1QT1JUIENPTlNUIF9fbTEyOCBTbGVlZl9maW56X2ZyZnJleHBmNF9hdngyMTI4KF9f
bTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX2Ztb2RmNF9hdngyMTI4KF9fbTEyOCwg
X19tMTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZfZmluel9mbW9kZjRfYXZ4MjEyOChf
X20xMjgsIF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgU2xlZWZfX19tMTI4XzIgU2xlZWZfbW9kZmY0
X2F2eDIxMjgoX19tMTI4KTsKK0lNUE9SVCBDT05TVCBTbGVlZl9fX20xMjhfMiBTbGVlZl9maW56
X21vZGZmNF9hdngyMTI4KF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX2xnYW1t
YWY0X3UxMGF2eDIxMjgoX19tMTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZfZmluel9s
Z2FtbWFmNF91MTBhdngyMTI4KF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX3Rn
YW1tYWY0X3UxMGF2eDIxMjgoX19tMTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZfZmlu
el90Z2FtbWFmNF91MTBhdngyMTI4KF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVm
X2VyZmY0X3UxMGF2eDIxMjgoX19tMTI4KTsKK0lNUE9SVCBDT05TVCBfX20xMjggU2xlZWZfZmlu
el9lcmZmNF91MTBhdngyMTI4KF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX2Vy
ZmNmNF91MTVhdngyMTI4KF9fbTEyOCk7CitJTVBPUlQgQ09OU1QgX19tMTI4IFNsZWVmX2Zpbnpf
ZXJmY2Y0X3UxNWF2eDIxMjgoX19tMTI4KTsKK0lNUE9SVCBDT05TVCBpbnQgU2xlZWZfZ2V0SW50
ZjRfYXZ4MjEyOChpbnQpOworSU1QT1JUIENPTlNUIGludCBTbGVlZl9maW56X2dldEludGY0X2F2
eDIxMjgoaW50KTsKK0lNUE9SVCBDT05TVCB2b2lkICpTbGVlZl9nZXRQdHJmNF9hdngyMTI4KGlu
dCk7CitJTVBPUlQgQ09OU1Qgdm9pZCAqU2xlZWZfZmluel9nZXRQdHJmNF9hdngyMTI4KGludCk7
CisjZW5kaWYKKyNpZmRlZiBfX0FWWDUxMkZfXworI2RlZmluZSBTVFJVQ1RfS0VZV09SRF9fX0FW
WDUxMkZfXyBzdHJ1Y3QKKworI2lmbmRlZiBTbGVlZl9fX201MTJkXzJfREVGSU5FRAordHlwZWRl
ZiBTVFJVQ1RfS0VZV09SRF9fX0FWWDUxMkZfXyB7CisgIF9fbTUxMmQgeCwgeTsKK30gU2xlZWZf
X19tNTEyZF8yOworI2RlZmluZSBTbGVlZl9fX201MTJkXzJfREVGSU5FRAorI2VuZGlmCisKK0lN
UE9SVCBDT05TVCBfX201MTJkIFNsZWVmX3NpbmQ4X3UzNShfX201MTJkKTsKK0lNUE9SVCBDT05T
VCBfX201MTJkIFNsZWVmX2Zpbnpfc2luZDhfdTM1KF9fbTUxMmQpOworSU1QT1JUIENPTlNUIF9f
bTUxMmQgU2xlZWZfY29zZDhfdTM1KF9fbTUxMmQpOworSU1QT1JUIENPTlNUIF9fbTUxMmQgU2xl
ZWZfZmluel9jb3NkOF91MzUoX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgU2xlZWZfX19tNTEyZF8y
IFNsZWVmX3NpbmNvc2Q4X3UzNShfX201MTJkKTsKK0lNUE9SVCBDT05TVCBTbGVlZl9fX201MTJk
XzIgU2xlZWZfZmluel9zaW5jb3NkOF91MzUoX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEy
ZCBTbGVlZl90YW5kOF91MzUoX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBTbGVlZl9m
aW56X3RhbmQ4X3UzNShfX201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVmX2FzaW5k
OF91MzUoX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBTbGVlZl9maW56X2FzaW5kOF91
MzUoX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBTbGVlZl9hY29zZDhfdTM1KF9fbTUx
MmQpOworSU1QT1JUIENPTlNUIF9fbTUxMmQgU2xlZWZfZmluel9hY29zZDhfdTM1KF9fbTUxMmQp
OworSU1QT1JUIENPTlNUIF9fbTUxMmQgU2xlZWZfYXRhbmQ4X3UzNShfX201MTJkKTsKK0lNUE9S
VCBDT05TVCBfX201MTJkIFNsZWVmX2ZpbnpfYXRhbmQ4X3UzNShfX201MTJkKTsKK0lNUE9SVCBD
T05TVCBfX201MTJkIFNsZWVmX2F0YW4yZDhfdTM1KF9fbTUxMmQsIF9fbTUxMmQpOworSU1QT1JU
IENPTlNUIF9fbTUxMmQgU2xlZWZfZmluel9hdGFuMmQ4X3UzNShfX201MTJkLCBfX201MTJkKTsK
K0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVmX2xvZ2Q4X3UzNShfX201MTJkKTsKK0lNUE9SVCBD
T05TVCBfX201MTJkIFNsZWVmX2ZpbnpfbG9nZDhfdTM1KF9fbTUxMmQpOworSU1QT1JUIENPTlNU
IF9fbTUxMmQgU2xlZWZfY2JydGQ4X3UzNShfX201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJk
IFNsZWVmX2ZpbnpfY2JydGQ4X3UzNShfX201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNs
ZWVmX3NpbmQ4X3UxMChfX201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVmX2Zpbnpf
c2luZDhfdTEwKF9fbTUxMmQpOworSU1QT1JUIENPTlNUIF9fbTUxMmQgU2xlZWZfY29zZDhfdTEw
KF9fbTUxMmQpOworSU1QT1JUIENPTlNUIF9fbTUxMmQgU2xlZWZfZmluel9jb3NkOF91MTAoX19t
NTEyZCk7CitJTVBPUlQgQ09OU1QgU2xlZWZfX19tNTEyZF8yIFNsZWVmX3NpbmNvc2Q4X3UxMChf
X201MTJkKTsKK0lNUE9SVCBDT05TVCBTbGVlZl9fX201MTJkXzIgU2xlZWZfZmluel9zaW5jb3Nk
OF91MTAoX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBTbGVlZl90YW5kOF91MTAoX19t
NTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBTbGVlZl9maW56X3RhbmQ4X3UxMChfX201MTJk
KTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVmX2FzaW5kOF91MTAoX19tNTEyZCk7CitJTVBP
UlQgQ09OU1QgX19tNTEyZCBTbGVlZl9maW56X2FzaW5kOF91MTAoX19tNTEyZCk7CitJTVBPUlQg
Q09OU1QgX19tNTEyZCBTbGVlZl9hY29zZDhfdTEwKF9fbTUxMmQpOworSU1QT1JUIENPTlNUIF9f
bTUxMmQgU2xlZWZfZmluel9hY29zZDhfdTEwKF9fbTUxMmQpOworSU1QT1JUIENPTlNUIF9fbTUx
MmQgU2xlZWZfYXRhbmQ4X3UxMChfX201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVm
X2ZpbnpfYXRhbmQ4X3UxMChfX201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVmX2F0
YW4yZDhfdTEwKF9fbTUxMmQsIF9fbTUxMmQpOworSU1QT1JUIENPTlNUIF9fbTUxMmQgU2xlZWZf
Zmluel9hdGFuMmQ4X3UxMChfX201MTJkLCBfX201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJk
IFNsZWVmX2xvZ2Q4X3UxMChfX201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVmX2Zp
bnpfbG9nZDhfdTEwKF9fbTUxMmQpOworSU1QT1JUIENPTlNUIF9fbTUxMmQgU2xlZWZfY2JydGQ4
X3UxMChfX201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVmX2ZpbnpfY2JydGQ4X3Ux
MChfX201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVmX2V4cGQ4X3UxMChfX201MTJk
KTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVmX2ZpbnpfZXhwZDhfdTEwKF9fbTUxMmQpOwor
SU1QT1JUIENPTlNUIF9fbTUxMmQgU2xlZWZfcG93ZDhfdTEwKF9fbTUxMmQsIF9fbTUxMmQpOwor
SU1QT1JUIENPTlNUIF9fbTUxMmQgU2xlZWZfZmluel9wb3dkOF91MTAoX19tNTEyZCwgX19tNTEy
ZCk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBTbGVlZl9zaW5oZDhfdTEwKF9fbTUxMmQpOworSU1Q
T1JUIENPTlNUIF9fbTUxMmQgU2xlZWZfZmluel9zaW5oZDhfdTEwKF9fbTUxMmQpOworSU1QT1JU
IENPTlNUIF9fbTUxMmQgU2xlZWZfY29zaGQ4X3UxMChfX201MTJkKTsKK0lNUE9SVCBDT05TVCBf
X201MTJkIFNsZWVmX2ZpbnpfY29zaGQ4X3UxMChfX201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201
MTJkIFNsZWVmX3RhbmhkOF91MTAoX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBTbGVl
Zl9maW56X3RhbmhkOF91MTAoX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBTbGVlZl9z
aW5oZDhfdTM1KF9fbTUxMmQpOworSU1QT1JUIENPTlNUIF9fbTUxMmQgU2xlZWZfZmluel9zaW5o
ZDhfdTM1KF9fbTUxMmQpOworSU1QT1JUIENPTlNUIF9fbTUxMmQgU2xlZWZfY29zaGQ4X3UzNShf
X201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVmX2ZpbnpfY29zaGQ4X3UzNShfX201
MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVmX3RhbmhkOF91MzUoX19tNTEyZCk7CitJ
TVBPUlQgQ09OU1QgX19tNTEyZCBTbGVlZl9maW56X3RhbmhkOF91MzUoX19tNTEyZCk7CitJTVBP
UlQgQ09OU1QgX19tNTEyZCBTbGVlZl9mYXN0c2luZDhfdTM1MDAoX19tNTEyZCk7CitJTVBPUlQg
Q09OU1QgX19tNTEyZCBTbGVlZl9maW56X2Zhc3RzaW5kOF91MzUwMChfX201MTJkKTsKK0lNUE9S
VCBDT05TVCBfX201MTJkIFNsZWVmX2Zhc3Rjb3NkOF91MzUwMChfX201MTJkKTsKK0lNUE9SVCBD
T05TVCBfX201MTJkIFNsZWVmX2ZpbnpfZmFzdGNvc2Q4X3UzNTAwKF9fbTUxMmQpOworSU1QT1JU
IENPTlNUIF9fbTUxMmQgU2xlZWZfZmFzdHBvd2Q4X3UzNTAwKF9fbTUxMmQsIF9fbTUxMmQpOwor
SU1QT1JUIENPTlNUIF9fbTUxMmQgU2xlZWZfZmluel9mYXN0cG93ZDhfdTM1MDAoX19tNTEyZCwg
X19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBTbGVlZl9hc2luaGQ4X3UxMChfX201MTJk
KTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVmX2ZpbnpfYXNpbmhkOF91MTAoX19tNTEyZCk7
CitJTVBPUlQgQ09OU1QgX19tNTEyZCBTbGVlZl9hY29zaGQ4X3UxMChfX201MTJkKTsKK0lNUE9S
VCBDT05TVCBfX201MTJkIFNsZWVmX2ZpbnpfYWNvc2hkOF91MTAoX19tNTEyZCk7CitJTVBPUlQg
Q09OU1QgX19tNTEyZCBTbGVlZl9hdGFuaGQ4X3UxMChfX201MTJkKTsKK0lNUE9SVCBDT05TVCBf
X201MTJkIFNsZWVmX2ZpbnpfYXRhbmhkOF91MTAoX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19t
NTEyZCBTbGVlZl9leHAyZDhfdTEwKF9fbTUxMmQpOworSU1QT1JUIENPTlNUIF9fbTUxMmQgU2xl
ZWZfZmluel9leHAyZDhfdTEwKF9fbTUxMmQpOworSU1QT1JUIENPTlNUIF9fbTUxMmQgU2xlZWZf
ZXhwMmQ4X3UzNShfX201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVmX2ZpbnpfZXhw
MmQ4X3UzNShfX201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVmX2V4cDEwZDhfdTEw
KF9fbTUxMmQpOworSU1QT1JUIENPTlNUIF9fbTUxMmQgU2xlZWZfZmluel9leHAxMGQ4X3UxMChf
X201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVmX2V4cDEwZDhfdTM1KF9fbTUxMmQp
OworSU1QT1JUIENPTlNUIF9fbTUxMmQgU2xlZWZfZmluel9leHAxMGQ4X3UzNShfX201MTJkKTsK
K0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVmX2V4cG0xZDhfdTEwKF9fbTUxMmQpOworSU1QT1JU
IENPTlNUIF9fbTUxMmQgU2xlZWZfZmluel9leHBtMWQ4X3UxMChfX201MTJkKTsKK0lNUE9SVCBD
T05TVCBfX201MTJkIFNsZWVmX2xvZzEwZDhfdTEwKF9fbTUxMmQpOworSU1QT1JUIENPTlNUIF9f
bTUxMmQgU2xlZWZfZmluel9sb2cxMGQ4X3UxMChfX201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201
MTJkIFNsZWVmX2xvZzJkOF91MTAoX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBTbGVl
Zl9maW56X2xvZzJkOF91MTAoX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBTbGVlZl9s
b2cyZDhfdTM1KF9fbTUxMmQpOworSU1QT1JUIENPTlNUIF9fbTUxMmQgU2xlZWZfZmluel9sb2cy
ZDhfdTM1KF9fbTUxMmQpOworSU1QT1JUIENPTlNUIF9fbTUxMmQgU2xlZWZfbG9nMXBkOF91MTAo
X19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBTbGVlZl9maW56X2xvZzFwZDhfdTEwKF9f
bTUxMmQpOworSU1QT1JUIENPTlNUIFNsZWVmX19fbTUxMmRfMiBTbGVlZl9zaW5jb3NwaWQ4X3Uw
NShfX201MTJkKTsKK0lNUE9SVCBDT05TVCBTbGVlZl9fX201MTJkXzIgU2xlZWZfZmluel9zaW5j
b3NwaWQ4X3UwNShfX201MTJkKTsKK0lNUE9SVCBDT05TVCBTbGVlZl9fX201MTJkXzIgU2xlZWZf
c2luY29zcGlkOF91MzUoX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgU2xlZWZfX19tNTEyZF8yIFNs
ZWVmX2Zpbnpfc2luY29zcGlkOF91MzUoX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBT
bGVlZl9zaW5waWQ4X3UwNShfX201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVmX2Zp
bnpfc2lucGlkOF91MDUoX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBTbGVlZl9jb3Nw
aWQ4X3UwNShfX201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVmX2ZpbnpfY29zcGlk
OF91MDUoX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBTbGVlZl9sZGV4cGQ4KF9fbTUx
MmQsIF9fbTI1NmkpOworSU1QT1JUIENPTlNUIF9fbTUxMmQgU2xlZWZfZmluel9sZGV4cGQ4KF9f
bTUxMmQsIF9fbTI1NmkpOworSU1QT1JUIENPTlNUIF9fbTI1NmkgU2xlZWZfaWxvZ2JkOChfX201
MTJkKTsKK0lNUE9SVCBDT05TVCBfX20yNTZpIFNsZWVmX2ZpbnpfaWxvZ2JkOChfX201MTJkKTsK
K0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVmX2ZtYWQ4KF9fbTUxMmQsIF9fbTUxMmQsIF9fbTUx
MmQpOworSU1QT1JUIENPTlNUIF9fbTUxMmQgU2xlZWZfZmluel9mbWFkOChfX201MTJkLCBfX201
MTJkLCBfX201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVmX3NxcnRkOChfX201MTJk
KTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVmX2Zpbnpfc3FydGQ4KF9fbTUxMmQpOworSU1Q
T1JUIENPTlNUIF9fbTUxMmQgU2xlZWZfc3FydGQ4X3UwNShfX201MTJkKTsKK0lNUE9SVCBDT05T
VCBfX201MTJkIFNsZWVmX2Zpbnpfc3FydGQ4X3UwNShfX201MTJkKTsKK0lNUE9SVCBDT05TVCBf
X201MTJkIFNsZWVmX3NxcnRkOF91MzUoX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBT
bGVlZl9maW56X3NxcnRkOF91MzUoX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBTbGVl
Zl9oeXBvdGQ4X3UwNShfX201MTJkLCBfX201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNs
ZWVmX2ZpbnpfaHlwb3RkOF91MDUoX19tNTEyZCwgX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19t
NTEyZCBTbGVlZl9oeXBvdGQ4X3UzNShfX201MTJkLCBfX201MTJkKTsKK0lNUE9SVCBDT05TVCBf
X201MTJkIFNsZWVmX2ZpbnpfaHlwb3RkOF91MzUoX19tNTEyZCwgX19tNTEyZCk7CitJTVBPUlQg
Q09OU1QgX19tNTEyZCBTbGVlZl9mYWJzZDgoX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEy
ZCBTbGVlZl9maW56X2ZhYnNkOChfX201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVm
X2NvcHlzaWduZDgoX19tNTEyZCwgX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBTbGVl
Zl9maW56X2NvcHlzaWduZDgoX19tNTEyZCwgX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEy
ZCBTbGVlZl9mbWF4ZDgoX19tNTEyZCwgX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBT
bGVlZl9maW56X2ZtYXhkOChfX201MTJkLCBfX201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJk
IFNsZWVmX2ZtaW5kOChfX201MTJkLCBfX201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNs
ZWVmX2ZpbnpfZm1pbmQ4KF9fbTUxMmQsIF9fbTUxMmQpOworSU1QT1JUIENPTlNUIF9fbTUxMmQg
U2xlZWZfZmRpbWQ4KF9fbTUxMmQsIF9fbTUxMmQpOworSU1QT1JUIENPTlNUIF9fbTUxMmQgU2xl
ZWZfZmluel9mZGltZDgoX19tNTEyZCwgX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBT
bGVlZl90cnVuY2Q4KF9fbTUxMmQpOworSU1QT1JUIENPTlNUIF9fbTUxMmQgU2xlZWZfZmluel90
cnVuY2Q4KF9fbTUxMmQpOworSU1QT1JUIENPTlNUIF9fbTUxMmQgU2xlZWZfZmxvb3JkOChfX201
MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVmX2ZpbnpfZmxvb3JkOChfX201MTJkKTsK
K0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVmX2NlaWxkOChfX201MTJkKTsKK0lNUE9SVCBDT05T
VCBfX201MTJkIFNsZWVmX2ZpbnpfY2VpbGQ4KF9fbTUxMmQpOworSU1QT1JUIENPTlNUIF9fbTUx
MmQgU2xlZWZfcm91bmRkOChfX201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVmX2Zp
bnpfcm91bmRkOChfX201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVmX3JpbnRkOChf
X201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVmX2ZpbnpfcmludGQ4KF9fbTUxMmQp
OworSU1QT1JUIENPTlNUIF9fbTUxMmQgU2xlZWZfbmV4dGFmdGVyZDgoX19tNTEyZCwgX19tNTEy
ZCk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBTbGVlZl9maW56X25leHRhZnRlcmQ4KF9fbTUxMmQs
IF9fbTUxMmQpOworSU1QT1JUIENPTlNUIF9fbTUxMmQgU2xlZWZfZnJmcmV4cGQ4KF9fbTUxMmQp
OworSU1QT1JUIENPTlNUIF9fbTUxMmQgU2xlZWZfZmluel9mcmZyZXhwZDgoX19tNTEyZCk7CitJ
TVBPUlQgQ09OU1QgX19tMjU2aSBTbGVlZl9leHBmcmV4cGQ4KF9fbTUxMmQpOworSU1QT1JUIENP
TlNUIF9fbTI1NmkgU2xlZWZfZmluel9leHBmcmV4cGQ4KF9fbTUxMmQpOworSU1QT1JUIENPTlNU
IF9fbTUxMmQgU2xlZWZfZm1vZGQ4KF9fbTUxMmQsIF9fbTUxMmQpOworSU1QT1JUIENPTlNUIF9f
bTUxMmQgU2xlZWZfZmluel9mbW9kZDgoX19tNTEyZCwgX19tNTEyZCk7CitJTVBPUlQgQ09OU1Qg
U2xlZWZfX19tNTEyZF8yIFNsZWVmX21vZGZkOChfX201MTJkKTsKK0lNUE9SVCBDT05TVCBTbGVl
Zl9fX201MTJkXzIgU2xlZWZfZmluel9tb2RmZDgoX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19t
NTEyZCBTbGVlZl9sZ2FtbWFkOF91MTAoX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBT
bGVlZl9maW56X2xnYW1tYWQ4X3UxMChfX201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNs
ZWVmX3RnYW1tYWQ4X3UxMChfX201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVmX2Zp
bnpfdGdhbW1hZDhfdTEwKF9fbTUxMmQpOworSU1QT1JUIENPTlNUIF9fbTUxMmQgU2xlZWZfZXJm
ZDhfdTEwKF9fbTUxMmQpOworSU1QT1JUIENPTlNUIF9fbTUxMmQgU2xlZWZfZmluel9lcmZkOF91
MTAoX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBTbGVlZl9lcmZjZDhfdTE1KF9fbTUx
MmQpOworSU1QT1JUIENPTlNUIF9fbTUxMmQgU2xlZWZfZmluel9lcmZjZDhfdTE1KF9fbTUxMmQp
OworSU1QT1JUIENPTlNUIGludCBTbGVlZl9nZXRJbnRkOChpbnQpOworSU1QT1JUIENPTlNUIHZv
aWQgKlNsZWVmX2dldFB0cmQ4KGludCk7CisKKyNpZm5kZWYgU2xlZWZfX19tNTEyXzJfREVGSU5F
RAordHlwZWRlZiBTVFJVQ1RfS0VZV09SRF9fX0FWWDUxMkZfXyB7CisgIF9fbTUxMiB4LCB5Owor
fSBTbGVlZl9fX201MTJfMjsKKyNkZWZpbmUgU2xlZWZfX19tNTEyXzJfREVGSU5FRAorI2VuZGlm
CisKK0lNUE9SVCBDT05TVCBfX201MTIgU2xlZWZfc2luZjE2X3UzNShfX201MTIpOworSU1QT1JU
IENPTlNUIF9fbTUxMiBTbGVlZl9maW56X3NpbmYxNl91MzUoX19tNTEyKTsKK0lNUE9SVCBDT05T
VCBfX201MTIgU2xlZWZfY29zZjE2X3UzNShfX201MTIpOworSU1QT1JUIENPTlNUIF9fbTUxMiBT
bGVlZl9maW56X2Nvc2YxNl91MzUoX19tNTEyKTsKK0lNUE9SVCBDT05TVCBTbGVlZl9fX201MTJf
MiBTbGVlZl9zaW5jb3NmMTZfdTM1KF9fbTUxMik7CitJTVBPUlQgQ09OU1QgU2xlZWZfX19tNTEy
XzIgU2xlZWZfZmluel9zaW5jb3NmMTZfdTM1KF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19tNTEy
IFNsZWVmX3RhbmYxNl91MzUoX19tNTEyKTsKK0lNUE9SVCBDT05TVCBfX201MTIgU2xlZWZfZmlu
el90YW5mMTZfdTM1KF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19tNTEyIFNsZWVmX2FzaW5mMTZf
dTM1KF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19tNTEyIFNsZWVmX2ZpbnpfYXNpbmYxNl91MzUo
X19tNTEyKTsKK0lNUE9SVCBDT05TVCBfX201MTIgU2xlZWZfYWNvc2YxNl91MzUoX19tNTEyKTsK
K0lNUE9SVCBDT05TVCBfX201MTIgU2xlZWZfZmluel9hY29zZjE2X3UzNShfX201MTIpOworSU1Q
T1JUIENPTlNUIF9fbTUxMiBTbGVlZl9hdGFuZjE2X3UzNShfX201MTIpOworSU1QT1JUIENPTlNU
IF9fbTUxMiBTbGVlZl9maW56X2F0YW5mMTZfdTM1KF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19t
NTEyIFNsZWVmX2F0YW4yZjE2X3UzNShfX201MTIsIF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19t
NTEyIFNsZWVmX2ZpbnpfYXRhbjJmMTZfdTM1KF9fbTUxMiwgX19tNTEyKTsKK0lNUE9SVCBDT05T
VCBfX201MTIgU2xlZWZfbG9nZjE2X3UzNShfX201MTIpOworSU1QT1JUIENPTlNUIF9fbTUxMiBT
bGVlZl9maW56X2xvZ2YxNl91MzUoX19tNTEyKTsKK0lNUE9SVCBDT05TVCBfX201MTIgU2xlZWZf
Y2JydGYxNl91MzUoX19tNTEyKTsKK0lNUE9SVCBDT05TVCBfX201MTIgU2xlZWZfZmluel9jYnJ0
ZjE2X3UzNShfX201MTIpOworSU1QT1JUIENPTlNUIF9fbTUxMiBTbGVlZl9zaW5mMTZfdTEwKF9f
bTUxMik7CitJTVBPUlQgQ09OU1QgX19tNTEyIFNsZWVmX2Zpbnpfc2luZjE2X3UxMChfX201MTIp
OworSU1QT1JUIENPTlNUIF9fbTUxMiBTbGVlZl9jb3NmMTZfdTEwKF9fbTUxMik7CitJTVBPUlQg
Q09OU1QgX19tNTEyIFNsZWVmX2ZpbnpfY29zZjE2X3UxMChfX201MTIpOworSU1QT1JUIENPTlNU
IFNsZWVmX19fbTUxMl8yIFNsZWVmX3NpbmNvc2YxNl91MTAoX19tNTEyKTsKK0lNUE9SVCBDT05T
VCBTbGVlZl9fX201MTJfMiBTbGVlZl9maW56X3NpbmNvc2YxNl91MTAoX19tNTEyKTsKK0lNUE9S
VCBDT05TVCBfX201MTIgU2xlZWZfdGFuZjE2X3UxMChfX201MTIpOworSU1QT1JUIENPTlNUIF9f
bTUxMiBTbGVlZl9maW56X3RhbmYxNl91MTAoX19tNTEyKTsKK0lNUE9SVCBDT05TVCBfX201MTIg
U2xlZWZfYXNpbmYxNl91MTAoX19tNTEyKTsKK0lNUE9SVCBDT05TVCBfX201MTIgU2xlZWZfZmlu
el9hc2luZjE2X3UxMChfX201MTIpOworSU1QT1JUIENPTlNUIF9fbTUxMiBTbGVlZl9hY29zZjE2
X3UxMChfX201MTIpOworSU1QT1JUIENPTlNUIF9fbTUxMiBTbGVlZl9maW56X2Fjb3NmMTZfdTEw
KF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19tNTEyIFNsZWVmX2F0YW5mMTZfdTEwKF9fbTUxMik7
CitJTVBPUlQgQ09OU1QgX19tNTEyIFNsZWVmX2ZpbnpfYXRhbmYxNl91MTAoX19tNTEyKTsKK0lN
UE9SVCBDT05TVCBfX201MTIgU2xlZWZfYXRhbjJmMTZfdTEwKF9fbTUxMiwgX19tNTEyKTsKK0lN
UE9SVCBDT05TVCBfX201MTIgU2xlZWZfZmluel9hdGFuMmYxNl91MTAoX19tNTEyLCBfX201MTIp
OworSU1QT1JUIENPTlNUIF9fbTUxMiBTbGVlZl9sb2dmMTZfdTEwKF9fbTUxMik7CitJTVBPUlQg
Q09OU1QgX19tNTEyIFNsZWVmX2ZpbnpfbG9nZjE2X3UxMChfX201MTIpOworSU1QT1JUIENPTlNU
IF9fbTUxMiBTbGVlZl9jYnJ0ZjE2X3UxMChfX201MTIpOworSU1QT1JUIENPTlNUIF9fbTUxMiBT
bGVlZl9maW56X2NicnRmMTZfdTEwKF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19tNTEyIFNsZWVm
X2V4cGYxNl91MTAoX19tNTEyKTsKK0lNUE9SVCBDT05TVCBfX201MTIgU2xlZWZfZmluel9leHBm
MTZfdTEwKF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19tNTEyIFNsZWVmX3Bvd2YxNl91MTAoX19t
NTEyLCBfX201MTIpOworSU1QT1JUIENPTlNUIF9fbTUxMiBTbGVlZl9maW56X3Bvd2YxNl91MTAo
X19tNTEyLCBfX201MTIpOworSU1QT1JUIENPTlNUIF9fbTUxMiBTbGVlZl9zaW5oZjE2X3UxMChf
X201MTIpOworSU1QT1JUIENPTlNUIF9fbTUxMiBTbGVlZl9maW56X3NpbmhmMTZfdTEwKF9fbTUx
Mik7CitJTVBPUlQgQ09OU1QgX19tNTEyIFNsZWVmX2Nvc2hmMTZfdTEwKF9fbTUxMik7CitJTVBP
UlQgQ09OU1QgX19tNTEyIFNsZWVmX2ZpbnpfY29zaGYxNl91MTAoX19tNTEyKTsKK0lNUE9SVCBD
T05TVCBfX201MTIgU2xlZWZfdGFuaGYxNl91MTAoX19tNTEyKTsKK0lNUE9SVCBDT05TVCBfX201
MTIgU2xlZWZfZmluel90YW5oZjE2X3UxMChfX201MTIpOworSU1QT1JUIENPTlNUIF9fbTUxMiBT
bGVlZl9zaW5oZjE2X3UzNShfX201MTIpOworSU1QT1JUIENPTlNUIF9fbTUxMiBTbGVlZl9maW56
X3NpbmhmMTZfdTM1KF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19tNTEyIFNsZWVmX2Nvc2hmMTZf
dTM1KF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19tNTEyIFNsZWVmX2ZpbnpfY29zaGYxNl91MzUo
X19tNTEyKTsKK0lNUE9SVCBDT05TVCBfX201MTIgU2xlZWZfdGFuaGYxNl91MzUoX19tNTEyKTsK
K0lNUE9SVCBDT05TVCBfX201MTIgU2xlZWZfZmluel90YW5oZjE2X3UzNShfX201MTIpOworSU1Q
T1JUIENPTlNUIF9fbTUxMiBTbGVlZl9mYXN0c2luZjE2X3UzNTAwKF9fbTUxMik7CitJTVBPUlQg
Q09OU1QgX19tNTEyIFNsZWVmX2ZpbnpfZmFzdHNpbmYxNl91MzUwMChfX201MTIpOworSU1QT1JU
IENPTlNUIF9fbTUxMiBTbGVlZl9mYXN0Y29zZjE2X3UzNTAwKF9fbTUxMik7CitJTVBPUlQgQ09O
U1QgX19tNTEyIFNsZWVmX2ZpbnpfZmFzdGNvc2YxNl91MzUwMChfX201MTIpOworSU1QT1JUIENP
TlNUIF9fbTUxMiBTbGVlZl9mYXN0cG93ZjE2X3UzNTAwKF9fbTUxMiwgX19tNTEyKTsKK0lNUE9S
VCBDT05TVCBfX201MTIgU2xlZWZfZmluel9mYXN0cG93ZjE2X3UzNTAwKF9fbTUxMiwgX19tNTEy
KTsKK0lNUE9SVCBDT05TVCBfX201MTIgU2xlZWZfYXNpbmhmMTZfdTEwKF9fbTUxMik7CitJTVBP
UlQgQ09OU1QgX19tNTEyIFNsZWVmX2ZpbnpfYXNpbmhmMTZfdTEwKF9fbTUxMik7CitJTVBPUlQg
Q09OU1QgX19tNTEyIFNsZWVmX2Fjb3NoZjE2X3UxMChfX201MTIpOworSU1QT1JUIENPTlNUIF9f
bTUxMiBTbGVlZl9maW56X2Fjb3NoZjE2X3UxMChfX201MTIpOworSU1QT1JUIENPTlNUIF9fbTUx
MiBTbGVlZl9hdGFuaGYxNl91MTAoX19tNTEyKTsKK0lNUE9SVCBDT05TVCBfX201MTIgU2xlZWZf
Zmluel9hdGFuaGYxNl91MTAoX19tNTEyKTsKK0lNUE9SVCBDT05TVCBfX201MTIgU2xlZWZfZXhw
MmYxNl91MTAoX19tNTEyKTsKK0lNUE9SVCBDT05TVCBfX201MTIgU2xlZWZfZmluel9leHAyZjE2
X3UxMChfX201MTIpOworSU1QT1JUIENPTlNUIF9fbTUxMiBTbGVlZl9leHAyZjE2X3UzNShfX201
MTIpOworSU1QT1JUIENPTlNUIF9fbTUxMiBTbGVlZl9maW56X2V4cDJmMTZfdTM1KF9fbTUxMik7
CitJTVBPUlQgQ09OU1QgX19tNTEyIFNsZWVmX2V4cDEwZjE2X3UxMChfX201MTIpOworSU1QT1JU
IENPTlNUIF9fbTUxMiBTbGVlZl9maW56X2V4cDEwZjE2X3UxMChfX201MTIpOworSU1QT1JUIENP
TlNUIF9fbTUxMiBTbGVlZl9leHAxMGYxNl91MzUoX19tNTEyKTsKK0lNUE9SVCBDT05TVCBfX201
MTIgU2xlZWZfZmluel9leHAxMGYxNl91MzUoX19tNTEyKTsKK0lNUE9SVCBDT05TVCBfX201MTIg
U2xlZWZfZXhwbTFmMTZfdTEwKF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19tNTEyIFNsZWVmX2Zp
bnpfZXhwbTFmMTZfdTEwKF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19tNTEyIFNsZWVmX2xvZzEw
ZjE2X3UxMChfX201MTIpOworSU1QT1JUIENPTlNUIF9fbTUxMiBTbGVlZl9maW56X2xvZzEwZjE2
X3UxMChfX201MTIpOworSU1QT1JUIENPTlNUIF9fbTUxMiBTbGVlZl9sb2cyZjE2X3UxMChfX201
MTIpOworSU1QT1JUIENPTlNUIF9fbTUxMiBTbGVlZl9maW56X2xvZzJmMTZfdTEwKF9fbTUxMik7
CitJTVBPUlQgQ09OU1QgX19tNTEyIFNsZWVmX2xvZzJmMTZfdTM1KF9fbTUxMik7CitJTVBPUlQg
Q09OU1QgX19tNTEyIFNsZWVmX2ZpbnpfbG9nMmYxNl91MzUoX19tNTEyKTsKK0lNUE9SVCBDT05T
VCBfX201MTIgU2xlZWZfbG9nMXBmMTZfdTEwKF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19tNTEy
IFNsZWVmX2ZpbnpfbG9nMXBmMTZfdTEwKF9fbTUxMik7CitJTVBPUlQgQ09OU1QgU2xlZWZfX19t
NTEyXzIgU2xlZWZfc2luY29zcGlmMTZfdTA1KF9fbTUxMik7CitJTVBPUlQgQ09OU1QgU2xlZWZf
X19tNTEyXzIgU2xlZWZfZmluel9zaW5jb3NwaWYxNl91MDUoX19tNTEyKTsKK0lNUE9SVCBDT05T
VCBTbGVlZl9fX201MTJfMiBTbGVlZl9zaW5jb3NwaWYxNl91MzUoX19tNTEyKTsKK0lNUE9SVCBD
T05TVCBTbGVlZl9fX201MTJfMiBTbGVlZl9maW56X3NpbmNvc3BpZjE2X3UzNShfX201MTIpOwor
SU1QT1JUIENPTlNUIF9fbTUxMiBTbGVlZl9zaW5waWYxNl91MDUoX19tNTEyKTsKK0lNUE9SVCBD
T05TVCBfX201MTIgU2xlZWZfZmluel9zaW5waWYxNl91MDUoX19tNTEyKTsKK0lNUE9SVCBDT05T
VCBfX201MTIgU2xlZWZfY29zcGlmMTZfdTA1KF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19tNTEy
IFNsZWVmX2ZpbnpfY29zcGlmMTZfdTA1KF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19tNTEyIFNs
ZWVmX2ZtYWYxNihfX201MTIsIF9fbTUxMiwgX19tNTEyKTsKK0lNUE9SVCBDT05TVCBfX201MTIg
U2xlZWZfZmluel9mbWFmMTYoX19tNTEyLCBfX201MTIsIF9fbTUxMik7CitJTVBPUlQgQ09OU1Qg
X19tNTEyIFNsZWVmX3NxcnRmMTYoX19tNTEyKTsKK0lNUE9SVCBDT05TVCBfX201MTIgU2xlZWZf
Zmluel9zcXJ0ZjE2KF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19tNTEyIFNsZWVmX3NxcnRmMTZf
dTA1KF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19tNTEyIFNsZWVmX2Zpbnpfc3FydGYxNl91MDUo
X19tNTEyKTsKK0lNUE9SVCBDT05TVCBfX201MTIgU2xlZWZfc3FydGYxNl91MzUoX19tNTEyKTsK
K0lNUE9SVCBDT05TVCBfX201MTIgU2xlZWZfZmluel9zcXJ0ZjE2X3UzNShfX201MTIpOworSU1Q
T1JUIENPTlNUIF9fbTUxMiBTbGVlZl9oeXBvdGYxNl91MDUoX19tNTEyLCBfX201MTIpOworSU1Q
T1JUIENPTlNUIF9fbTUxMiBTbGVlZl9maW56X2h5cG90ZjE2X3UwNShfX201MTIsIF9fbTUxMik7
CitJTVBPUlQgQ09OU1QgX19tNTEyIFNsZWVmX2h5cG90ZjE2X3UzNShfX201MTIsIF9fbTUxMik7
CitJTVBPUlQgQ09OU1QgX19tNTEyIFNsZWVmX2ZpbnpfaHlwb3RmMTZfdTM1KF9fbTUxMiwgX19t
NTEyKTsKK0lNUE9SVCBDT05TVCBfX201MTIgU2xlZWZfZmFic2YxNihfX201MTIpOworSU1QT1JU
IENPTlNUIF9fbTUxMiBTbGVlZl9maW56X2ZhYnNmMTYoX19tNTEyKTsKK0lNUE9SVCBDT05TVCBf
X201MTIgU2xlZWZfY29weXNpZ25mMTYoX19tNTEyLCBfX201MTIpOworSU1QT1JUIENPTlNUIF9f
bTUxMiBTbGVlZl9maW56X2NvcHlzaWduZjE2KF9fbTUxMiwgX19tNTEyKTsKK0lNUE9SVCBDT05T
VCBfX201MTIgU2xlZWZfZm1heGYxNihfX201MTIsIF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19t
NTEyIFNsZWVmX2ZpbnpfZm1heGYxNihfX201MTIsIF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19t
NTEyIFNsZWVmX2ZtaW5mMTYoX19tNTEyLCBfX201MTIpOworSU1QT1JUIENPTlNUIF9fbTUxMiBT
bGVlZl9maW56X2ZtaW5mMTYoX19tNTEyLCBfX201MTIpOworSU1QT1JUIENPTlNUIF9fbTUxMiBT
bGVlZl9mZGltZjE2KF9fbTUxMiwgX19tNTEyKTsKK0lNUE9SVCBDT05TVCBfX201MTIgU2xlZWZf
Zmluel9mZGltZjE2KF9fbTUxMiwgX19tNTEyKTsKK0lNUE9SVCBDT05TVCBfX201MTIgU2xlZWZf
dHJ1bmNmMTYoX19tNTEyKTsKK0lNUE9SVCBDT05TVCBfX201MTIgU2xlZWZfZmluel90cnVuY2Yx
NihfX201MTIpOworSU1QT1JUIENPTlNUIF9fbTUxMiBTbGVlZl9mbG9vcmYxNihfX201MTIpOwor
SU1QT1JUIENPTlNUIF9fbTUxMiBTbGVlZl9maW56X2Zsb29yZjE2KF9fbTUxMik7CitJTVBPUlQg
Q09OU1QgX19tNTEyIFNsZWVmX2NlaWxmMTYoX19tNTEyKTsKK0lNUE9SVCBDT05TVCBfX201MTIg
U2xlZWZfZmluel9jZWlsZjE2KF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19tNTEyIFNsZWVmX3Jv
dW5kZjE2KF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19tNTEyIFNsZWVmX2Zpbnpfcm91bmRmMTYo
X19tNTEyKTsKK0lNUE9SVCBDT05TVCBfX201MTIgU2xlZWZfcmludGYxNihfX201MTIpOworSU1Q
T1JUIENPTlNUIF9fbTUxMiBTbGVlZl9maW56X3JpbnRmMTYoX19tNTEyKTsKK0lNUE9SVCBDT05T
VCBfX201MTIgU2xlZWZfbmV4dGFmdGVyZjE2KF9fbTUxMiwgX19tNTEyKTsKK0lNUE9SVCBDT05T
VCBfX201MTIgU2xlZWZfZmluel9uZXh0YWZ0ZXJmMTYoX19tNTEyLCBfX201MTIpOworSU1QT1JU
IENPTlNUIF9fbTUxMiBTbGVlZl9mcmZyZXhwZjE2KF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19t
NTEyIFNsZWVmX2ZpbnpfZnJmcmV4cGYxNihfX201MTIpOworSU1QT1JUIENPTlNUIF9fbTUxMiBT
bGVlZl9mbW9kZjE2KF9fbTUxMiwgX19tNTEyKTsKK0lNUE9SVCBDT05TVCBfX201MTIgU2xlZWZf
Zmluel9mbW9kZjE2KF9fbTUxMiwgX19tNTEyKTsKK0lNUE9SVCBDT05TVCBTbGVlZl9fX201MTJf
MiBTbGVlZl9tb2RmZjE2KF9fbTUxMik7CitJTVBPUlQgQ09OU1QgU2xlZWZfX19tNTEyXzIgU2xl
ZWZfZmluel9tb2RmZjE2KF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19tNTEyIFNsZWVmX2xnYW1t
YWYxNl91MTAoX19tNTEyKTsKK0lNUE9SVCBDT05TVCBfX201MTIgU2xlZWZfZmluel9sZ2FtbWFm
MTZfdTEwKF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19tNTEyIFNsZWVmX3RnYW1tYWYxNl91MTAo
X19tNTEyKTsKK0lNUE9SVCBDT05TVCBfX201MTIgU2xlZWZfZmluel90Z2FtbWFmMTZfdTEwKF9f
bTUxMik7CitJTVBPUlQgQ09OU1QgX19tNTEyIFNsZWVmX2VyZmYxNl91MTAoX19tNTEyKTsKK0lN
UE9SVCBDT05TVCBfX201MTIgU2xlZWZfZmluel9lcmZmMTZfdTEwKF9fbTUxMik7CitJTVBPUlQg
Q09OU1QgX19tNTEyIFNsZWVmX2VyZmNmMTZfdTE1KF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19t
NTEyIFNsZWVmX2ZpbnpfZXJmY2YxNl91MTUoX19tNTEyKTsKK0lNUE9SVCBDT05TVCBpbnQgU2xl
ZWZfZ2V0SW50ZjE2KGludCk7CitJTVBPUlQgQ09OU1QgaW50IFNsZWVmX2ZpbnpfZ2V0SW50ZjE2
KGludCk7CitJTVBPUlQgQ09OU1Qgdm9pZCAqU2xlZWZfZ2V0UHRyZjE2KGludCk7CitJTVBPUlQg
Q09OU1Qgdm9pZCAqU2xlZWZfZmluel9nZXRQdHJmMTYoaW50KTsKKyNlbmRpZgorI2lmZGVmIF9f
QVZYNTEyRl9fCisjZGVmaW5lIFNUUlVDVF9LRVlXT1JEX19fQVZYNTEyRl9fIHN0cnVjdAorCisj
aWZuZGVmIFNsZWVmX19fbTUxMmRfMl9ERUZJTkVECit0eXBlZGVmIFNUUlVDVF9LRVlXT1JEX19f
QVZYNTEyRl9fIHsKKyAgX19tNTEyZCB4LCB5OworfSBTbGVlZl9fX201MTJkXzI7CisjZGVmaW5l
IFNsZWVmX19fbTUxMmRfMl9ERUZJTkVECisjZW5kaWYKKworSU1QT1JUIENPTlNUIF9fbTUxMmQg
U2xlZWZfc2luZDhfdTM1YXZ4NTEyZihfX201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNs
ZWVmX2Zpbnpfc2luZDhfdTM1YXZ4NTEyZihfX201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJk
IFNsZWVmX2Nvc2Q4X3UzNWF2eDUxMmYoX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBT
bGVlZl9maW56X2Nvc2Q4X3UzNWF2eDUxMmYoX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgU2xlZWZf
X19tNTEyZF8yIFNsZWVmX3NpbmNvc2Q4X3UzNWF2eDUxMmYoX19tNTEyZCk7CitJTVBPUlQgQ09O
U1QgU2xlZWZfX19tNTEyZF8yIFNsZWVmX2Zpbnpfc2luY29zZDhfdTM1YXZ4NTEyZihfX201MTJk
KTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVmX3RhbmQ4X3UzNWF2eDUxMmYoX19tNTEyZCk7
CitJTVBPUlQgQ09OU1QgX19tNTEyZCBTbGVlZl9maW56X3RhbmQ4X3UzNWF2eDUxMmYoX19tNTEy
ZCk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBTbGVlZl9hc2luZDhfdTM1YXZ4NTEyZihfX201MTJk
KTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVmX2ZpbnpfYXNpbmQ4X3UzNWF2eDUxMmYoX19t
NTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBTbGVlZl9hY29zZDhfdTM1YXZ4NTEyZihfX201
MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVmX2ZpbnpfYWNvc2Q4X3UzNWF2eDUxMmYo
X19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBTbGVlZl9hdGFuZDhfdTM1YXZ4NTEyZihf
X201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVmX2ZpbnpfYXRhbmQ4X3UzNWF2eDUx
MmYoX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBTbGVlZl9hdGFuMmQ4X3UzNWF2eDUx
MmYoX19tNTEyZCwgX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBTbGVlZl9maW56X2F0
YW4yZDhfdTM1YXZ4NTEyZihfX201MTJkLCBfX201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJk
IFNsZWVmX2xvZ2Q4X3UzNWF2eDUxMmYoX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBT
bGVlZl9maW56X2xvZ2Q4X3UzNWF2eDUxMmYoX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEy
ZCBTbGVlZl9jYnJ0ZDhfdTM1YXZ4NTEyZihfX201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJk
IFNsZWVmX2ZpbnpfY2JydGQ4X3UzNWF2eDUxMmYoX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19t
NTEyZCBTbGVlZl9zaW5kOF91MTBhdng1MTJmKF9fbTUxMmQpOworSU1QT1JUIENPTlNUIF9fbTUx
MmQgU2xlZWZfZmluel9zaW5kOF91MTBhdng1MTJmKF9fbTUxMmQpOworSU1QT1JUIENPTlNUIF9f
bTUxMmQgU2xlZWZfY29zZDhfdTEwYXZ4NTEyZihfX201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201
MTJkIFNsZWVmX2ZpbnpfY29zZDhfdTEwYXZ4NTEyZihfX201MTJkKTsKK0lNUE9SVCBDT05TVCBT
bGVlZl9fX201MTJkXzIgU2xlZWZfc2luY29zZDhfdTEwYXZ4NTEyZihfX201MTJkKTsKK0lNUE9S
VCBDT05TVCBTbGVlZl9fX201MTJkXzIgU2xlZWZfZmluel9zaW5jb3NkOF91MTBhdng1MTJmKF9f
bTUxMmQpOworSU1QT1JUIENPTlNUIF9fbTUxMmQgU2xlZWZfdGFuZDhfdTEwYXZ4NTEyZihfX201
MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVmX2ZpbnpfdGFuZDhfdTEwYXZ4NTEyZihf
X201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVmX2FzaW5kOF91MTBhdng1MTJmKF9f
bTUxMmQpOworSU1QT1JUIENPTlNUIF9fbTUxMmQgU2xlZWZfZmluel9hc2luZDhfdTEwYXZ4NTEy
ZihfX201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVmX2Fjb3NkOF91MTBhdng1MTJm
KF9fbTUxMmQpOworSU1QT1JUIENPTlNUIF9fbTUxMmQgU2xlZWZfZmluel9hY29zZDhfdTEwYXZ4
NTEyZihfX201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVmX2F0YW5kOF91MTBhdng1
MTJmKF9fbTUxMmQpOworSU1QT1JUIENPTlNUIF9fbTUxMmQgU2xlZWZfZmluel9hdGFuZDhfdTEw
YXZ4NTEyZihfX201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVmX2F0YW4yZDhfdTEw
YXZ4NTEyZihfX201MTJkLCBfX201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVmX2Zp
bnpfYXRhbjJkOF91MTBhdng1MTJmKF9fbTUxMmQsIF9fbTUxMmQpOworSU1QT1JUIENPTlNUIF9f
bTUxMmQgU2xlZWZfbG9nZDhfdTEwYXZ4NTEyZihfX201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201
MTJkIFNsZWVmX2ZpbnpfbG9nZDhfdTEwYXZ4NTEyZihfX201MTJkKTsKK0lNUE9SVCBDT05TVCBf
X201MTJkIFNsZWVmX2NicnRkOF91MTBhdng1MTJmKF9fbTUxMmQpOworSU1QT1JUIENPTlNUIF9f
bTUxMmQgU2xlZWZfZmluel9jYnJ0ZDhfdTEwYXZ4NTEyZihfX201MTJkKTsKK0lNUE9SVCBDT05T
VCBfX201MTJkIFNsZWVmX2V4cGQ4X3UxMGF2eDUxMmYoX19tNTEyZCk7CitJTVBPUlQgQ09OU1Qg
X19tNTEyZCBTbGVlZl9maW56X2V4cGQ4X3UxMGF2eDUxMmYoX19tNTEyZCk7CitJTVBPUlQgQ09O
U1QgX19tNTEyZCBTbGVlZl9wb3dkOF91MTBhdng1MTJmKF9fbTUxMmQsIF9fbTUxMmQpOworSU1Q
T1JUIENPTlNUIF9fbTUxMmQgU2xlZWZfZmluel9wb3dkOF91MTBhdng1MTJmKF9fbTUxMmQsIF9f
bTUxMmQpOworSU1QT1JUIENPTlNUIF9fbTUxMmQgU2xlZWZfc2luaGQ4X3UxMGF2eDUxMmYoX19t
NTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBTbGVlZl9maW56X3NpbmhkOF91MTBhdng1MTJm
KF9fbTUxMmQpOworSU1QT1JUIENPTlNUIF9fbTUxMmQgU2xlZWZfY29zaGQ4X3UxMGF2eDUxMmYo
X19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBTbGVlZl9maW56X2Nvc2hkOF91MTBhdng1
MTJmKF9fbTUxMmQpOworSU1QT1JUIENPTlNUIF9fbTUxMmQgU2xlZWZfdGFuaGQ4X3UxMGF2eDUx
MmYoX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBTbGVlZl9maW56X3RhbmhkOF91MTBh
dng1MTJmKF9fbTUxMmQpOworSU1QT1JUIENPTlNUIF9fbTUxMmQgU2xlZWZfc2luaGQ4X3UzNWF2
eDUxMmYoX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBTbGVlZl9maW56X3NpbmhkOF91
MzVhdng1MTJmKF9fbTUxMmQpOworSU1QT1JUIENPTlNUIF9fbTUxMmQgU2xlZWZfY29zaGQ4X3Uz
NWF2eDUxMmYoX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBTbGVlZl9maW56X2Nvc2hk
OF91MzVhdng1MTJmKF9fbTUxMmQpOworSU1QT1JUIENPTlNUIF9fbTUxMmQgU2xlZWZfdGFuaGQ4
X3UzNWF2eDUxMmYoX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBTbGVlZl9maW56X3Rh
bmhkOF91MzVhdng1MTJmKF9fbTUxMmQpOworSU1QT1JUIENPTlNUIF9fbTUxMmQgU2xlZWZfZmFz
dHNpbmQ4X3UzNTAwYXZ4NTEyZihfX201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVm
X2ZpbnpfZmFzdHNpbmQ4X3UzNTAwYXZ4NTEyZihfX201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201
MTJkIFNsZWVmX2Zhc3Rjb3NkOF91MzUwMGF2eDUxMmYoX19tNTEyZCk7CitJTVBPUlQgQ09OU1Qg
X19tNTEyZCBTbGVlZl9maW56X2Zhc3Rjb3NkOF91MzUwMGF2eDUxMmYoX19tNTEyZCk7CitJTVBP
UlQgQ09OU1QgX19tNTEyZCBTbGVlZl9mYXN0cG93ZDhfdTM1MDBhdng1MTJmKF9fbTUxMmQsIF9f
bTUxMmQpOworSU1QT1JUIENPTlNUIF9fbTUxMmQgU2xlZWZfZmluel9mYXN0cG93ZDhfdTM1MDBh
dng1MTJmKF9fbTUxMmQsIF9fbTUxMmQpOworSU1QT1JUIENPTlNUIF9fbTUxMmQgU2xlZWZfYXNp
bmhkOF91MTBhdng1MTJmKF9fbTUxMmQpOworSU1QT1JUIENPTlNUIF9fbTUxMmQgU2xlZWZfZmlu
el9hc2luaGQ4X3UxMGF2eDUxMmYoX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBTbGVl
Zl9hY29zaGQ4X3UxMGF2eDUxMmYoX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBTbGVl
Zl9maW56X2Fjb3NoZDhfdTEwYXZ4NTEyZihfX201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJk
IFNsZWVmX2F0YW5oZDhfdTEwYXZ4NTEyZihfX201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJk
IFNsZWVmX2ZpbnpfYXRhbmhkOF91MTBhdng1MTJmKF9fbTUxMmQpOworSU1QT1JUIENPTlNUIF9f
bTUxMmQgU2xlZWZfZXhwMmQ4X3UxMGF2eDUxMmYoX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19t
NTEyZCBTbGVlZl9maW56X2V4cDJkOF91MTBhdng1MTJmKF9fbTUxMmQpOworSU1QT1JUIENPTlNU
IF9fbTUxMmQgU2xlZWZfZXhwMmQ4X3UzNWF2eDUxMmYoX19tNTEyZCk7CitJTVBPUlQgQ09OU1Qg
X19tNTEyZCBTbGVlZl9maW56X2V4cDJkOF91MzVhdng1MTJmKF9fbTUxMmQpOworSU1QT1JUIENP
TlNUIF9fbTUxMmQgU2xlZWZfZXhwMTBkOF91MTBhdng1MTJmKF9fbTUxMmQpOworSU1QT1JUIENP
TlNUIF9fbTUxMmQgU2xlZWZfZmluel9leHAxMGQ4X3UxMGF2eDUxMmYoX19tNTEyZCk7CitJTVBP
UlQgQ09OU1QgX19tNTEyZCBTbGVlZl9leHAxMGQ4X3UzNWF2eDUxMmYoX19tNTEyZCk7CitJTVBP
UlQgQ09OU1QgX19tNTEyZCBTbGVlZl9maW56X2V4cDEwZDhfdTM1YXZ4NTEyZihfX201MTJkKTsK
K0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVmX2V4cG0xZDhfdTEwYXZ4NTEyZihfX201MTJkKTsK
K0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVmX2ZpbnpfZXhwbTFkOF91MTBhdng1MTJmKF9fbTUx
MmQpOworSU1QT1JUIENPTlNUIF9fbTUxMmQgU2xlZWZfbG9nMTBkOF91MTBhdng1MTJmKF9fbTUx
MmQpOworSU1QT1JUIENPTlNUIF9fbTUxMmQgU2xlZWZfZmluel9sb2cxMGQ4X3UxMGF2eDUxMmYo
X19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBTbGVlZl9sb2cyZDhfdTEwYXZ4NTEyZihf
X201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVmX2ZpbnpfbG9nMmQ4X3UxMGF2eDUx
MmYoX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBTbGVlZl9sb2cyZDhfdTM1YXZ4NTEy
ZihfX201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVmX2ZpbnpfbG9nMmQ4X3UzNWF2
eDUxMmYoX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBTbGVlZl9sb2cxcGQ4X3UxMGF2
eDUxMmYoX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBTbGVlZl9maW56X2xvZzFwZDhf
dTEwYXZ4NTEyZihfX201MTJkKTsKK0lNUE9SVCBDT05TVCBTbGVlZl9fX201MTJkXzIgU2xlZWZf
c2luY29zcGlkOF91MDVhdng1MTJmKF9fbTUxMmQpOworSU1QT1JUIENPTlNUIFNsZWVmX19fbTUx
MmRfMiBTbGVlZl9maW56X3NpbmNvc3BpZDhfdTA1YXZ4NTEyZihfX201MTJkKTsKK0lNUE9SVCBD
T05TVCBTbGVlZl9fX201MTJkXzIgU2xlZWZfc2luY29zcGlkOF91MzVhdng1MTJmKF9fbTUxMmQp
OworSU1QT1JUIENPTlNUIFNsZWVmX19fbTUxMmRfMiBTbGVlZl9maW56X3NpbmNvc3BpZDhfdTM1
YXZ4NTEyZihfX201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVmX3NpbnBpZDhfdTA1
YXZ4NTEyZihfX201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVmX2Zpbnpfc2lucGlk
OF91MDVhdng1MTJmKF9fbTUxMmQpOworSU1QT1JUIENPTlNUIF9fbTUxMmQgU2xlZWZfY29zcGlk
OF91MDVhdng1MTJmKF9fbTUxMmQpOworSU1QT1JUIENPTlNUIF9fbTUxMmQgU2xlZWZfZmluel9j
b3NwaWQ4X3UwNWF2eDUxMmYoX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBTbGVlZl9s
ZGV4cGQ4X2F2eDUxMmYoX19tNTEyZCwgX19tMjU2aSk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBT
bGVlZl9maW56X2xkZXhwZDhfYXZ4NTEyZihfX201MTJkLCBfX20yNTZpKTsKK0lNUE9SVCBDT05T
VCBfX20yNTZpIFNsZWVmX2lsb2diZDhfYXZ4NTEyZihfX201MTJkKTsKK0lNUE9SVCBDT05TVCBf
X20yNTZpIFNsZWVmX2ZpbnpfaWxvZ2JkOF9hdng1MTJmKF9fbTUxMmQpOworSU1QT1JUIENPTlNU
IF9fbTUxMmQgU2xlZWZfZm1hZDhfYXZ4NTEyZihfX201MTJkLCBfX201MTJkLCBfX201MTJkKTsK
K0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVmX2ZpbnpfZm1hZDhfYXZ4NTEyZihfX201MTJkLCBf
X201MTJkLCBfX201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVmX3NxcnRkOF9hdng1
MTJmKF9fbTUxMmQpOworSU1QT1JUIENPTlNUIF9fbTUxMmQgU2xlZWZfZmluel9zcXJ0ZDhfYXZ4
NTEyZihfX201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVmX3NxcnRkOF91MDVhdng1
MTJmKF9fbTUxMmQpOworSU1QT1JUIENPTlNUIF9fbTUxMmQgU2xlZWZfZmluel9zcXJ0ZDhfdTA1
YXZ4NTEyZihfX201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVmX3NxcnRkOF91MzVh
dng1MTJmKF9fbTUxMmQpOworSU1QT1JUIENPTlNUIF9fbTUxMmQgU2xlZWZfZmluel9zcXJ0ZDhf
dTM1YXZ4NTEyZihfX201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVmX2h5cG90ZDhf
dTA1YXZ4NTEyZihfX201MTJkLCBfX201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVm
X2ZpbnpfaHlwb3RkOF91MDVhdng1MTJmKF9fbTUxMmQsIF9fbTUxMmQpOworSU1QT1JUIENPTlNU
IF9fbTUxMmQgU2xlZWZfaHlwb3RkOF91MzVhdng1MTJmKF9fbTUxMmQsIF9fbTUxMmQpOworSU1Q
T1JUIENPTlNUIF9fbTUxMmQgU2xlZWZfZmluel9oeXBvdGQ4X3UzNWF2eDUxMmYoX19tNTEyZCwg
X19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBTbGVlZl9mYWJzZDhfYXZ4NTEyZihfX201
MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVmX2ZpbnpfZmFic2Q4X2F2eDUxMmYoX19t
NTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBTbGVlZl9jb3B5c2lnbmQ4X2F2eDUxMmYoX19t
NTEyZCwgX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBTbGVlZl9maW56X2NvcHlzaWdu
ZDhfYXZ4NTEyZihfX201MTJkLCBfX201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVm
X2ZtYXhkOF9hdng1MTJmKF9fbTUxMmQsIF9fbTUxMmQpOworSU1QT1JUIENPTlNUIF9fbTUxMmQg
U2xlZWZfZmluel9mbWF4ZDhfYXZ4NTEyZihfX201MTJkLCBfX201MTJkKTsKK0lNUE9SVCBDT05T
VCBfX201MTJkIFNsZWVmX2ZtaW5kOF9hdng1MTJmKF9fbTUxMmQsIF9fbTUxMmQpOworSU1QT1JU
IENPTlNUIF9fbTUxMmQgU2xlZWZfZmluel9mbWluZDhfYXZ4NTEyZihfX201MTJkLCBfX201MTJk
KTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVmX2ZkaW1kOF9hdng1MTJmKF9fbTUxMmQsIF9f
bTUxMmQpOworSU1QT1JUIENPTlNUIF9fbTUxMmQgU2xlZWZfZmluel9mZGltZDhfYXZ4NTEyZihf
X201MTJkLCBfX201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVmX3RydW5jZDhfYXZ4
NTEyZihfX201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVmX2ZpbnpfdHJ1bmNkOF9h
dng1MTJmKF9fbTUxMmQpOworSU1QT1JUIENPTlNUIF9fbTUxMmQgU2xlZWZfZmxvb3JkOF9hdng1
MTJmKF9fbTUxMmQpOworSU1QT1JUIENPTlNUIF9fbTUxMmQgU2xlZWZfZmluel9mbG9vcmQ4X2F2
eDUxMmYoX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBTbGVlZl9jZWlsZDhfYXZ4NTEy
ZihfX201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVmX2ZpbnpfY2VpbGQ4X2F2eDUx
MmYoX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBTbGVlZl9yb3VuZGQ4X2F2eDUxMmYo
X19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBTbGVlZl9maW56X3JvdW5kZDhfYXZ4NTEy
ZihfX201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVmX3JpbnRkOF9hdng1MTJmKF9f
bTUxMmQpOworSU1QT1JUIENPTlNUIF9fbTUxMmQgU2xlZWZfZmluel9yaW50ZDhfYXZ4NTEyZihf
X201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVmX25leHRhZnRlcmQ4X2F2eDUxMmYo
X19tNTEyZCwgX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBTbGVlZl9maW56X25leHRh
ZnRlcmQ4X2F2eDUxMmYoX19tNTEyZCwgX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBT
bGVlZl9mcmZyZXhwZDhfYXZ4NTEyZihfX201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNs
ZWVmX2ZpbnpfZnJmcmV4cGQ4X2F2eDUxMmYoX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2
aSBTbGVlZl9leHBmcmV4cGQ4X2F2eDUxMmYoX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2
aSBTbGVlZl9maW56X2V4cGZyZXhwZDhfYXZ4NTEyZihfX201MTJkKTsKK0lNUE9SVCBDT05TVCBf
X201MTJkIFNsZWVmX2Ztb2RkOF9hdng1MTJmKF9fbTUxMmQsIF9fbTUxMmQpOworSU1QT1JUIENP
TlNUIF9fbTUxMmQgU2xlZWZfZmluel9mbW9kZDhfYXZ4NTEyZihfX201MTJkLCBfX201MTJkKTsK
K0lNUE9SVCBDT05TVCBTbGVlZl9fX201MTJkXzIgU2xlZWZfbW9kZmQ4X2F2eDUxMmYoX19tNTEy
ZCk7CitJTVBPUlQgQ09OU1QgU2xlZWZfX19tNTEyZF8yIFNsZWVmX2ZpbnpfbW9kZmQ4X2F2eDUx
MmYoX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBTbGVlZl9sZ2FtbWFkOF91MTBhdng1
MTJmKF9fbTUxMmQpOworSU1QT1JUIENPTlNUIF9fbTUxMmQgU2xlZWZfZmluel9sZ2FtbWFkOF91
MTBhdng1MTJmKF9fbTUxMmQpOworSU1QT1JUIENPTlNUIF9fbTUxMmQgU2xlZWZfdGdhbW1hZDhf
dTEwYXZ4NTEyZihfX201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVmX2ZpbnpfdGdh
bW1hZDhfdTEwYXZ4NTEyZihfX201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVmX2Vy
ZmQ4X3UxMGF2eDUxMmYoX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBTbGVlZl9maW56
X2VyZmQ4X3UxMGF2eDUxMmYoX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBTbGVlZl9l
cmZjZDhfdTE1YXZ4NTEyZihfX201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVmX2Zp
bnpfZXJmY2Q4X3UxNWF2eDUxMmYoX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgaW50IFNsZWVmX2dl
dEludGQ4X2F2eDUxMmYoaW50KTsKK0lNUE9SVCBDT05TVCB2b2lkICpTbGVlZl9nZXRQdHJkOF9h
dng1MTJmKGludCk7CisKKyNpZm5kZWYgU2xlZWZfX19tNTEyXzJfREVGSU5FRAordHlwZWRlZiBT
VFJVQ1RfS0VZV09SRF9fX0FWWDUxMkZfXyB7CisgIF9fbTUxMiB4LCB5OworfSBTbGVlZl9fX201
MTJfMjsKKyNkZWZpbmUgU2xlZWZfX19tNTEyXzJfREVGSU5FRAorI2VuZGlmCisKK0lNUE9SVCBD
T05TVCBfX201MTIgU2xlZWZfc2luZjE2X3UzNWF2eDUxMmYoX19tNTEyKTsKK0lNUE9SVCBDT05T
VCBfX201MTIgU2xlZWZfZmluel9zaW5mMTZfdTM1YXZ4NTEyZihfX201MTIpOworSU1QT1JUIENP
TlNUIF9fbTUxMiBTbGVlZl9jb3NmMTZfdTM1YXZ4NTEyZihfX201MTIpOworSU1QT1JUIENPTlNU
IF9fbTUxMiBTbGVlZl9maW56X2Nvc2YxNl91MzVhdng1MTJmKF9fbTUxMik7CitJTVBPUlQgQ09O
U1QgU2xlZWZfX19tNTEyXzIgU2xlZWZfc2luY29zZjE2X3UzNWF2eDUxMmYoX19tNTEyKTsKK0lN
UE9SVCBDT05TVCBTbGVlZl9fX201MTJfMiBTbGVlZl9maW56X3NpbmNvc2YxNl91MzVhdng1MTJm
KF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19tNTEyIFNsZWVmX3RhbmYxNl91MzVhdng1MTJmKF9f
bTUxMik7CitJTVBPUlQgQ09OU1QgX19tNTEyIFNsZWVmX2ZpbnpfdGFuZjE2X3UzNWF2eDUxMmYo
X19tNTEyKTsKK0lNUE9SVCBDT05TVCBfX201MTIgU2xlZWZfYXNpbmYxNl91MzVhdng1MTJmKF9f
bTUxMik7CitJTVBPUlQgQ09OU1QgX19tNTEyIFNsZWVmX2ZpbnpfYXNpbmYxNl91MzVhdng1MTJm
KF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19tNTEyIFNsZWVmX2Fjb3NmMTZfdTM1YXZ4NTEyZihf
X201MTIpOworSU1QT1JUIENPTlNUIF9fbTUxMiBTbGVlZl9maW56X2Fjb3NmMTZfdTM1YXZ4NTEy
ZihfX201MTIpOworSU1QT1JUIENPTlNUIF9fbTUxMiBTbGVlZl9hdGFuZjE2X3UzNWF2eDUxMmYo
X19tNTEyKTsKK0lNUE9SVCBDT05TVCBfX201MTIgU2xlZWZfZmluel9hdGFuZjE2X3UzNWF2eDUx
MmYoX19tNTEyKTsKK0lNUE9SVCBDT05TVCBfX201MTIgU2xlZWZfYXRhbjJmMTZfdTM1YXZ4NTEy
ZihfX201MTIsIF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19tNTEyIFNsZWVmX2ZpbnpfYXRhbjJm
MTZfdTM1YXZ4NTEyZihfX201MTIsIF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19tNTEyIFNsZWVm
X2xvZ2YxNl91MzVhdng1MTJmKF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19tNTEyIFNsZWVmX2Zp
bnpfbG9nZjE2X3UzNWF2eDUxMmYoX19tNTEyKTsKK0lNUE9SVCBDT05TVCBfX201MTIgU2xlZWZf
Y2JydGYxNl91MzVhdng1MTJmKF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19tNTEyIFNsZWVmX2Zp
bnpfY2JydGYxNl91MzVhdng1MTJmKF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19tNTEyIFNsZWVm
X3NpbmYxNl91MTBhdng1MTJmKF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19tNTEyIFNsZWVmX2Zp
bnpfc2luZjE2X3UxMGF2eDUxMmYoX19tNTEyKTsKK0lNUE9SVCBDT05TVCBfX201MTIgU2xlZWZf
Y29zZjE2X3UxMGF2eDUxMmYoX19tNTEyKTsKK0lNUE9SVCBDT05TVCBfX201MTIgU2xlZWZfZmlu
el9jb3NmMTZfdTEwYXZ4NTEyZihfX201MTIpOworSU1QT1JUIENPTlNUIFNsZWVmX19fbTUxMl8y
IFNsZWVmX3NpbmNvc2YxNl91MTBhdng1MTJmKF9fbTUxMik7CitJTVBPUlQgQ09OU1QgU2xlZWZf
X19tNTEyXzIgU2xlZWZfZmluel9zaW5jb3NmMTZfdTEwYXZ4NTEyZihfX201MTIpOworSU1QT1JU
IENPTlNUIF9fbTUxMiBTbGVlZl90YW5mMTZfdTEwYXZ4NTEyZihfX201MTIpOworSU1QT1JUIENP
TlNUIF9fbTUxMiBTbGVlZl9maW56X3RhbmYxNl91MTBhdng1MTJmKF9fbTUxMik7CitJTVBPUlQg
Q09OU1QgX19tNTEyIFNsZWVmX2FzaW5mMTZfdTEwYXZ4NTEyZihfX201MTIpOworSU1QT1JUIENP
TlNUIF9fbTUxMiBTbGVlZl9maW56X2FzaW5mMTZfdTEwYXZ4NTEyZihfX201MTIpOworSU1QT1JU
IENPTlNUIF9fbTUxMiBTbGVlZl9hY29zZjE2X3UxMGF2eDUxMmYoX19tNTEyKTsKK0lNUE9SVCBD
T05TVCBfX201MTIgU2xlZWZfZmluel9hY29zZjE2X3UxMGF2eDUxMmYoX19tNTEyKTsKK0lNUE9S
VCBDT05TVCBfX201MTIgU2xlZWZfYXRhbmYxNl91MTBhdng1MTJmKF9fbTUxMik7CitJTVBPUlQg
Q09OU1QgX19tNTEyIFNsZWVmX2ZpbnpfYXRhbmYxNl91MTBhdng1MTJmKF9fbTUxMik7CitJTVBP
UlQgQ09OU1QgX19tNTEyIFNsZWVmX2F0YW4yZjE2X3UxMGF2eDUxMmYoX19tNTEyLCBfX201MTIp
OworSU1QT1JUIENPTlNUIF9fbTUxMiBTbGVlZl9maW56X2F0YW4yZjE2X3UxMGF2eDUxMmYoX19t
NTEyLCBfX201MTIpOworSU1QT1JUIENPTlNUIF9fbTUxMiBTbGVlZl9sb2dmMTZfdTEwYXZ4NTEy
ZihfX201MTIpOworSU1QT1JUIENPTlNUIF9fbTUxMiBTbGVlZl9maW56X2xvZ2YxNl91MTBhdng1
MTJmKF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19tNTEyIFNsZWVmX2NicnRmMTZfdTEwYXZ4NTEy
ZihfX201MTIpOworSU1QT1JUIENPTlNUIF9fbTUxMiBTbGVlZl9maW56X2NicnRmMTZfdTEwYXZ4
NTEyZihfX201MTIpOworSU1QT1JUIENPTlNUIF9fbTUxMiBTbGVlZl9leHBmMTZfdTEwYXZ4NTEy
ZihfX201MTIpOworSU1QT1JUIENPTlNUIF9fbTUxMiBTbGVlZl9maW56X2V4cGYxNl91MTBhdng1
MTJmKF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19tNTEyIFNsZWVmX3Bvd2YxNl91MTBhdng1MTJm
KF9fbTUxMiwgX19tNTEyKTsKK0lNUE9SVCBDT05TVCBfX201MTIgU2xlZWZfZmluel9wb3dmMTZf
dTEwYXZ4NTEyZihfX201MTIsIF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19tNTEyIFNsZWVmX3Np
bmhmMTZfdTEwYXZ4NTEyZihfX201MTIpOworSU1QT1JUIENPTlNUIF9fbTUxMiBTbGVlZl9maW56
X3NpbmhmMTZfdTEwYXZ4NTEyZihfX201MTIpOworSU1QT1JUIENPTlNUIF9fbTUxMiBTbGVlZl9j
b3NoZjE2X3UxMGF2eDUxMmYoX19tNTEyKTsKK0lNUE9SVCBDT05TVCBfX201MTIgU2xlZWZfZmlu
el9jb3NoZjE2X3UxMGF2eDUxMmYoX19tNTEyKTsKK0lNUE9SVCBDT05TVCBfX201MTIgU2xlZWZf
dGFuaGYxNl91MTBhdng1MTJmKF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19tNTEyIFNsZWVmX2Zp
bnpfdGFuaGYxNl91MTBhdng1MTJmKF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19tNTEyIFNsZWVm
X3NpbmhmMTZfdTM1YXZ4NTEyZihfX201MTIpOworSU1QT1JUIENPTlNUIF9fbTUxMiBTbGVlZl9m
aW56X3NpbmhmMTZfdTM1YXZ4NTEyZihfX201MTIpOworSU1QT1JUIENPTlNUIF9fbTUxMiBTbGVl
Zl9jb3NoZjE2X3UzNWF2eDUxMmYoX19tNTEyKTsKK0lNUE9SVCBDT05TVCBfX201MTIgU2xlZWZf
Zmluel9jb3NoZjE2X3UzNWF2eDUxMmYoX19tNTEyKTsKK0lNUE9SVCBDT05TVCBfX201MTIgU2xl
ZWZfdGFuaGYxNl91MzVhdng1MTJmKF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19tNTEyIFNsZWVm
X2ZpbnpfdGFuaGYxNl91MzVhdng1MTJmKF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19tNTEyIFNs
ZWVmX2Zhc3RzaW5mMTZfdTM1MDBhdng1MTJmKF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19tNTEy
IFNsZWVmX2ZpbnpfZmFzdHNpbmYxNl91MzUwMGF2eDUxMmYoX19tNTEyKTsKK0lNUE9SVCBDT05T
VCBfX201MTIgU2xlZWZfZmFzdGNvc2YxNl91MzUwMGF2eDUxMmYoX19tNTEyKTsKK0lNUE9SVCBD
T05TVCBfX201MTIgU2xlZWZfZmluel9mYXN0Y29zZjE2X3UzNTAwYXZ4NTEyZihfX201MTIpOwor
SU1QT1JUIENPTlNUIF9fbTUxMiBTbGVlZl9mYXN0cG93ZjE2X3UzNTAwYXZ4NTEyZihfX201MTIs
IF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19tNTEyIFNsZWVmX2ZpbnpfZmFzdHBvd2YxNl91MzUw
MGF2eDUxMmYoX19tNTEyLCBfX201MTIpOworSU1QT1JUIENPTlNUIF9fbTUxMiBTbGVlZl9hc2lu
aGYxNl91MTBhdng1MTJmKF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19tNTEyIFNsZWVmX2Zpbnpf
YXNpbmhmMTZfdTEwYXZ4NTEyZihfX201MTIpOworSU1QT1JUIENPTlNUIF9fbTUxMiBTbGVlZl9h
Y29zaGYxNl91MTBhdng1MTJmKF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19tNTEyIFNsZWVmX2Zp
bnpfYWNvc2hmMTZfdTEwYXZ4NTEyZihfX201MTIpOworSU1QT1JUIENPTlNUIF9fbTUxMiBTbGVl
Zl9hdGFuaGYxNl91MTBhdng1MTJmKF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19tNTEyIFNsZWVm
X2ZpbnpfYXRhbmhmMTZfdTEwYXZ4NTEyZihfX201MTIpOworSU1QT1JUIENPTlNUIF9fbTUxMiBT
bGVlZl9leHAyZjE2X3UxMGF2eDUxMmYoX19tNTEyKTsKK0lNUE9SVCBDT05TVCBfX201MTIgU2xl
ZWZfZmluel9leHAyZjE2X3UxMGF2eDUxMmYoX19tNTEyKTsKK0lNUE9SVCBDT05TVCBfX201MTIg
U2xlZWZfZXhwMmYxNl91MzVhdng1MTJmKF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19tNTEyIFNs
ZWVmX2ZpbnpfZXhwMmYxNl91MzVhdng1MTJmKF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19tNTEy
IFNsZWVmX2V4cDEwZjE2X3UxMGF2eDUxMmYoX19tNTEyKTsKK0lNUE9SVCBDT05TVCBfX201MTIg
U2xlZWZfZmluel9leHAxMGYxNl91MTBhdng1MTJmKF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19t
NTEyIFNsZWVmX2V4cDEwZjE2X3UzNWF2eDUxMmYoX19tNTEyKTsKK0lNUE9SVCBDT05TVCBfX201
MTIgU2xlZWZfZmluel9leHAxMGYxNl91MzVhdng1MTJmKF9fbTUxMik7CitJTVBPUlQgQ09OU1Qg
X19tNTEyIFNsZWVmX2V4cG0xZjE2X3UxMGF2eDUxMmYoX19tNTEyKTsKK0lNUE9SVCBDT05TVCBf
X201MTIgU2xlZWZfZmluel9leHBtMWYxNl91MTBhdng1MTJmKF9fbTUxMik7CitJTVBPUlQgQ09O
U1QgX19tNTEyIFNsZWVmX2xvZzEwZjE2X3UxMGF2eDUxMmYoX19tNTEyKTsKK0lNUE9SVCBDT05T
VCBfX201MTIgU2xlZWZfZmluel9sb2cxMGYxNl91MTBhdng1MTJmKF9fbTUxMik7CitJTVBPUlQg
Q09OU1QgX19tNTEyIFNsZWVmX2xvZzJmMTZfdTEwYXZ4NTEyZihfX201MTIpOworSU1QT1JUIENP
TlNUIF9fbTUxMiBTbGVlZl9maW56X2xvZzJmMTZfdTEwYXZ4NTEyZihfX201MTIpOworSU1QT1JU
IENPTlNUIF9fbTUxMiBTbGVlZl9sb2cyZjE2X3UzNWF2eDUxMmYoX19tNTEyKTsKK0lNUE9SVCBD
T05TVCBfX201MTIgU2xlZWZfZmluel9sb2cyZjE2X3UzNWF2eDUxMmYoX19tNTEyKTsKK0lNUE9S
VCBDT05TVCBfX201MTIgU2xlZWZfbG9nMXBmMTZfdTEwYXZ4NTEyZihfX201MTIpOworSU1QT1JU
IENPTlNUIF9fbTUxMiBTbGVlZl9maW56X2xvZzFwZjE2X3UxMGF2eDUxMmYoX19tNTEyKTsKK0lN
UE9SVCBDT05TVCBTbGVlZl9fX201MTJfMiBTbGVlZl9zaW5jb3NwaWYxNl91MDVhdng1MTJmKF9f
bTUxMik7CitJTVBPUlQgQ09OU1QgU2xlZWZfX19tNTEyXzIgU2xlZWZfZmluel9zaW5jb3NwaWYx
Nl91MDVhdng1MTJmKF9fbTUxMik7CitJTVBPUlQgQ09OU1QgU2xlZWZfX19tNTEyXzIgU2xlZWZf
c2luY29zcGlmMTZfdTM1YXZ4NTEyZihfX201MTIpOworSU1QT1JUIENPTlNUIFNsZWVmX19fbTUx
Ml8yIFNsZWVmX2Zpbnpfc2luY29zcGlmMTZfdTM1YXZ4NTEyZihfX201MTIpOworSU1QT1JUIENP
TlNUIF9fbTUxMiBTbGVlZl9zaW5waWYxNl91MDVhdng1MTJmKF9fbTUxMik7CitJTVBPUlQgQ09O
U1QgX19tNTEyIFNsZWVmX2Zpbnpfc2lucGlmMTZfdTA1YXZ4NTEyZihfX201MTIpOworSU1QT1JU
IENPTlNUIF9fbTUxMiBTbGVlZl9jb3NwaWYxNl91MDVhdng1MTJmKF9fbTUxMik7CitJTVBPUlQg
Q09OU1QgX19tNTEyIFNsZWVmX2ZpbnpfY29zcGlmMTZfdTA1YXZ4NTEyZihfX201MTIpOworSU1Q
T1JUIENPTlNUIF9fbTUxMiBTbGVlZl9mbWFmMTZfYXZ4NTEyZihfX201MTIsIF9fbTUxMiwgX19t
NTEyKTsKK0lNUE9SVCBDT05TVCBfX201MTIgU2xlZWZfZmluel9mbWFmMTZfYXZ4NTEyZihfX201
MTIsIF9fbTUxMiwgX19tNTEyKTsKK0lNUE9SVCBDT05TVCBfX201MTIgU2xlZWZfc3FydGYxNl9h
dng1MTJmKF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19tNTEyIFNsZWVmX2Zpbnpfc3FydGYxNl9h
dng1MTJmKF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19tNTEyIFNsZWVmX3NxcnRmMTZfdTA1YXZ4
NTEyZihfX201MTIpOworSU1QT1JUIENPTlNUIF9fbTUxMiBTbGVlZl9maW56X3NxcnRmMTZfdTA1
YXZ4NTEyZihfX201MTIpOworSU1QT1JUIENPTlNUIF9fbTUxMiBTbGVlZl9zcXJ0ZjE2X3UzNWF2
eDUxMmYoX19tNTEyKTsKK0lNUE9SVCBDT05TVCBfX201MTIgU2xlZWZfZmluel9zcXJ0ZjE2X3Uz
NWF2eDUxMmYoX19tNTEyKTsKK0lNUE9SVCBDT05TVCBfX201MTIgU2xlZWZfaHlwb3RmMTZfdTA1
YXZ4NTEyZihfX201MTIsIF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19tNTEyIFNsZWVmX2Zpbnpf
aHlwb3RmMTZfdTA1YXZ4NTEyZihfX201MTIsIF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19tNTEy
IFNsZWVmX2h5cG90ZjE2X3UzNWF2eDUxMmYoX19tNTEyLCBfX201MTIpOworSU1QT1JUIENPTlNU
IF9fbTUxMiBTbGVlZl9maW56X2h5cG90ZjE2X3UzNWF2eDUxMmYoX19tNTEyLCBfX201MTIpOwor
SU1QT1JUIENPTlNUIF9fbTUxMiBTbGVlZl9mYWJzZjE2X2F2eDUxMmYoX19tNTEyKTsKK0lNUE9S
VCBDT05TVCBfX201MTIgU2xlZWZfZmluel9mYWJzZjE2X2F2eDUxMmYoX19tNTEyKTsKK0lNUE9S
VCBDT05TVCBfX201MTIgU2xlZWZfY29weXNpZ25mMTZfYXZ4NTEyZihfX201MTIsIF9fbTUxMik7
CitJTVBPUlQgQ09OU1QgX19tNTEyIFNsZWVmX2ZpbnpfY29weXNpZ25mMTZfYXZ4NTEyZihfX201
MTIsIF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19tNTEyIFNsZWVmX2ZtYXhmMTZfYXZ4NTEyZihf
X201MTIsIF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19tNTEyIFNsZWVmX2ZpbnpfZm1heGYxNl9h
dng1MTJmKF9fbTUxMiwgX19tNTEyKTsKK0lNUE9SVCBDT05TVCBfX201MTIgU2xlZWZfZm1pbmYx
Nl9hdng1MTJmKF9fbTUxMiwgX19tNTEyKTsKK0lNUE9SVCBDT05TVCBfX201MTIgU2xlZWZfZmlu
el9mbWluZjE2X2F2eDUxMmYoX19tNTEyLCBfX201MTIpOworSU1QT1JUIENPTlNUIF9fbTUxMiBT
bGVlZl9mZGltZjE2X2F2eDUxMmYoX19tNTEyLCBfX201MTIpOworSU1QT1JUIENPTlNUIF9fbTUx
MiBTbGVlZl9maW56X2ZkaW1mMTZfYXZ4NTEyZihfX201MTIsIF9fbTUxMik7CitJTVBPUlQgQ09O
U1QgX19tNTEyIFNsZWVmX3RydW5jZjE2X2F2eDUxMmYoX19tNTEyKTsKK0lNUE9SVCBDT05TVCBf
X201MTIgU2xlZWZfZmluel90cnVuY2YxNl9hdng1MTJmKF9fbTUxMik7CitJTVBPUlQgQ09OU1Qg
X19tNTEyIFNsZWVmX2Zsb29yZjE2X2F2eDUxMmYoX19tNTEyKTsKK0lNUE9SVCBDT05TVCBfX201
MTIgU2xlZWZfZmluel9mbG9vcmYxNl9hdng1MTJmKF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19t
NTEyIFNsZWVmX2NlaWxmMTZfYXZ4NTEyZihfX201MTIpOworSU1QT1JUIENPTlNUIF9fbTUxMiBT
bGVlZl9maW56X2NlaWxmMTZfYXZ4NTEyZihfX201MTIpOworSU1QT1JUIENPTlNUIF9fbTUxMiBT
bGVlZl9yb3VuZGYxNl9hdng1MTJmKF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19tNTEyIFNsZWVm
X2Zpbnpfcm91bmRmMTZfYXZ4NTEyZihfX201MTIpOworSU1QT1JUIENPTlNUIF9fbTUxMiBTbGVl
Zl9yaW50ZjE2X2F2eDUxMmYoX19tNTEyKTsKK0lNUE9SVCBDT05TVCBfX201MTIgU2xlZWZfZmlu
el9yaW50ZjE2X2F2eDUxMmYoX19tNTEyKTsKK0lNUE9SVCBDT05TVCBfX201MTIgU2xlZWZfbmV4
dGFmdGVyZjE2X2F2eDUxMmYoX19tNTEyLCBfX201MTIpOworSU1QT1JUIENPTlNUIF9fbTUxMiBT
bGVlZl9maW56X25leHRhZnRlcmYxNl9hdng1MTJmKF9fbTUxMiwgX19tNTEyKTsKK0lNUE9SVCBD
T05TVCBfX201MTIgU2xlZWZfZnJmcmV4cGYxNl9hdng1MTJmKF9fbTUxMik7CitJTVBPUlQgQ09O
U1QgX19tNTEyIFNsZWVmX2ZpbnpfZnJmcmV4cGYxNl9hdng1MTJmKF9fbTUxMik7CitJTVBPUlQg
Q09OU1QgX19tNTEyIFNsZWVmX2Ztb2RmMTZfYXZ4NTEyZihfX201MTIsIF9fbTUxMik7CitJTVBP
UlQgQ09OU1QgX19tNTEyIFNsZWVmX2ZpbnpfZm1vZGYxNl9hdng1MTJmKF9fbTUxMiwgX19tNTEy
KTsKK0lNUE9SVCBDT05TVCBTbGVlZl9fX201MTJfMiBTbGVlZl9tb2RmZjE2X2F2eDUxMmYoX19t
NTEyKTsKK0lNUE9SVCBDT05TVCBTbGVlZl9fX201MTJfMiBTbGVlZl9maW56X21vZGZmMTZfYXZ4
NTEyZihfX201MTIpOworSU1QT1JUIENPTlNUIF9fbTUxMiBTbGVlZl9sZ2FtbWFmMTZfdTEwYXZ4
NTEyZihfX201MTIpOworSU1QT1JUIENPTlNUIF9fbTUxMiBTbGVlZl9maW56X2xnYW1tYWYxNl91
MTBhdng1MTJmKF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19tNTEyIFNsZWVmX3RnYW1tYWYxNl91
MTBhdng1MTJmKF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19tNTEyIFNsZWVmX2ZpbnpfdGdhbW1h
ZjE2X3UxMGF2eDUxMmYoX19tNTEyKTsKK0lNUE9SVCBDT05TVCBfX201MTIgU2xlZWZfZXJmZjE2
X3UxMGF2eDUxMmYoX19tNTEyKTsKK0lNUE9SVCBDT05TVCBfX201MTIgU2xlZWZfZmluel9lcmZm
MTZfdTEwYXZ4NTEyZihfX201MTIpOworSU1QT1JUIENPTlNUIF9fbTUxMiBTbGVlZl9lcmZjZjE2
X3UxNWF2eDUxMmYoX19tNTEyKTsKK0lNUE9SVCBDT05TVCBfX201MTIgU2xlZWZfZmluel9lcmZj
ZjE2X3UxNWF2eDUxMmYoX19tNTEyKTsKK0lNUE9SVCBDT05TVCBpbnQgU2xlZWZfZ2V0SW50ZjE2
X2F2eDUxMmYoaW50KTsKK0lNUE9SVCBDT05TVCBpbnQgU2xlZWZfZmluel9nZXRJbnRmMTZfYXZ4
NTEyZihpbnQpOworSU1QT1JUIENPTlNUIHZvaWQgKlNsZWVmX2dldFB0cmYxNl9hdng1MTJmKGlu
dCk7CitJTVBPUlQgQ09OU1Qgdm9pZCAqU2xlZWZfZmluel9nZXRQdHJmMTZfYXZ4NTEyZihpbnQp
OworI2VuZGlmCisjaWZkZWYgX19BVlg1MTJGX18KKyNkZWZpbmUgU1RSVUNUX0tFWVdPUkRfX19B
Vlg1MTJGX18gc3RydWN0CisKKyNpZm5kZWYgU2xlZWZfX19tNTEyZF8yX0RFRklORUQKK3R5cGVk
ZWYgU1RSVUNUX0tFWVdPUkRfX19BVlg1MTJGX18geworICBfX201MTJkIHgsIHk7Cit9IFNsZWVm
X19fbTUxMmRfMjsKKyNkZWZpbmUgU2xlZWZfX19tNTEyZF8yX0RFRklORUQKKyNlbmRpZgorCitJ
TVBPUlQgQ09OU1QgX19tNTEyZCBTbGVlZl9zaW5kOF91MzVhdng1MTJmbm9mbWEoX19tNTEyZCk7
CitJTVBPUlQgQ09OU1QgX19tNTEyZCBTbGVlZl9jaW56X3NpbmQ4X3UzNWF2eDUxMmZub2ZtYShf
X201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVmX2Nvc2Q4X3UzNWF2eDUxMmZub2Zt
YShfX201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVmX2NpbnpfY29zZDhfdTM1YXZ4
NTEyZm5vZm1hKF9fbTUxMmQpOworSU1QT1JUIENPTlNUIFNsZWVmX19fbTUxMmRfMiBTbGVlZl9z
aW5jb3NkOF91MzVhdng1MTJmbm9mbWEoX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgU2xlZWZfX19t
NTEyZF8yIFNsZWVmX2Npbnpfc2luY29zZDhfdTM1YXZ4NTEyZm5vZm1hKF9fbTUxMmQpOworSU1Q
T1JUIENPTlNUIF9fbTUxMmQgU2xlZWZfdGFuZDhfdTM1YXZ4NTEyZm5vZm1hKF9fbTUxMmQpOwor
SU1QT1JUIENPTlNUIF9fbTUxMmQgU2xlZWZfY2luel90YW5kOF91MzVhdng1MTJmbm9mbWEoX19t
NTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBTbGVlZl9hc2luZDhfdTM1YXZ4NTEyZm5vZm1h
KF9fbTUxMmQpOworSU1QT1JUIENPTlNUIF9fbTUxMmQgU2xlZWZfY2luel9hc2luZDhfdTM1YXZ4
NTEyZm5vZm1hKF9fbTUxMmQpOworSU1QT1JUIENPTlNUIF9fbTUxMmQgU2xlZWZfYWNvc2Q4X3Uz
NWF2eDUxMmZub2ZtYShfX201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVmX2Npbnpf
YWNvc2Q4X3UzNWF2eDUxMmZub2ZtYShfX201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNs
ZWVmX2F0YW5kOF91MzVhdng1MTJmbm9mbWEoX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEy
ZCBTbGVlZl9jaW56X2F0YW5kOF91MzVhdng1MTJmbm9mbWEoX19tNTEyZCk7CitJTVBPUlQgQ09O
U1QgX19tNTEyZCBTbGVlZl9hdGFuMmQ4X3UzNWF2eDUxMmZub2ZtYShfX201MTJkLCBfX201MTJk
KTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVmX2NpbnpfYXRhbjJkOF91MzVhdng1MTJmbm9m
bWEoX19tNTEyZCwgX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBTbGVlZl9sb2dkOF91
MzVhdng1MTJmbm9mbWEoX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBTbGVlZl9jaW56
X2xvZ2Q4X3UzNWF2eDUxMmZub2ZtYShfX201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNs
ZWVmX2NicnRkOF91MzVhdng1MTJmbm9mbWEoX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEy
ZCBTbGVlZl9jaW56X2NicnRkOF91MzVhdng1MTJmbm9mbWEoX19tNTEyZCk7CitJTVBPUlQgQ09O
U1QgX19tNTEyZCBTbGVlZl9zaW5kOF91MTBhdng1MTJmbm9mbWEoX19tNTEyZCk7CitJTVBPUlQg
Q09OU1QgX19tNTEyZCBTbGVlZl9jaW56X3NpbmQ4X3UxMGF2eDUxMmZub2ZtYShfX201MTJkKTsK
K0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVmX2Nvc2Q4X3UxMGF2eDUxMmZub2ZtYShfX201MTJk
KTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVmX2NpbnpfY29zZDhfdTEwYXZ4NTEyZm5vZm1h
KF9fbTUxMmQpOworSU1QT1JUIENPTlNUIFNsZWVmX19fbTUxMmRfMiBTbGVlZl9zaW5jb3NkOF91
MTBhdng1MTJmbm9mbWEoX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgU2xlZWZfX19tNTEyZF8yIFNs
ZWVmX2Npbnpfc2luY29zZDhfdTEwYXZ4NTEyZm5vZm1hKF9fbTUxMmQpOworSU1QT1JUIENPTlNU
IF9fbTUxMmQgU2xlZWZfdGFuZDhfdTEwYXZ4NTEyZm5vZm1hKF9fbTUxMmQpOworSU1QT1JUIENP
TlNUIF9fbTUxMmQgU2xlZWZfY2luel90YW5kOF91MTBhdng1MTJmbm9mbWEoX19tNTEyZCk7CitJ
TVBPUlQgQ09OU1QgX19tNTEyZCBTbGVlZl9hc2luZDhfdTEwYXZ4NTEyZm5vZm1hKF9fbTUxMmQp
OworSU1QT1JUIENPTlNUIF9fbTUxMmQgU2xlZWZfY2luel9hc2luZDhfdTEwYXZ4NTEyZm5vZm1h
KF9fbTUxMmQpOworSU1QT1JUIENPTlNUIF9fbTUxMmQgU2xlZWZfYWNvc2Q4X3UxMGF2eDUxMmZu
b2ZtYShfX201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVmX2NpbnpfYWNvc2Q4X3Ux
MGF2eDUxMmZub2ZtYShfX201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVmX2F0YW5k
OF91MTBhdng1MTJmbm9mbWEoX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBTbGVlZl9j
aW56X2F0YW5kOF91MTBhdng1MTJmbm9mbWEoX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEy
ZCBTbGVlZl9hdGFuMmQ4X3UxMGF2eDUxMmZub2ZtYShfX201MTJkLCBfX201MTJkKTsKK0lNUE9S
VCBDT05TVCBfX201MTJkIFNsZWVmX2NpbnpfYXRhbjJkOF91MTBhdng1MTJmbm9mbWEoX19tNTEy
ZCwgX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBTbGVlZl9sb2dkOF91MTBhdng1MTJm
bm9mbWEoX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBTbGVlZl9jaW56X2xvZ2Q4X3Ux
MGF2eDUxMmZub2ZtYShfX201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVmX2NicnRk
OF91MTBhdng1MTJmbm9mbWEoX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBTbGVlZl9j
aW56X2NicnRkOF91MTBhdng1MTJmbm9mbWEoX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEy
ZCBTbGVlZl9leHBkOF91MTBhdng1MTJmbm9mbWEoX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19t
NTEyZCBTbGVlZl9jaW56X2V4cGQ4X3UxMGF2eDUxMmZub2ZtYShfX201MTJkKTsKK0lNUE9SVCBD
T05TVCBfX201MTJkIFNsZWVmX3Bvd2Q4X3UxMGF2eDUxMmZub2ZtYShfX201MTJkLCBfX201MTJk
KTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVmX2NpbnpfcG93ZDhfdTEwYXZ4NTEyZm5vZm1h
KF9fbTUxMmQsIF9fbTUxMmQpOworSU1QT1JUIENPTlNUIF9fbTUxMmQgU2xlZWZfc2luaGQ4X3Ux
MGF2eDUxMmZub2ZtYShfX201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVmX2Npbnpf
c2luaGQ4X3UxMGF2eDUxMmZub2ZtYShfX201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNs
ZWVmX2Nvc2hkOF91MTBhdng1MTJmbm9mbWEoX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEy
ZCBTbGVlZl9jaW56X2Nvc2hkOF91MTBhdng1MTJmbm9mbWEoX19tNTEyZCk7CitJTVBPUlQgQ09O
U1QgX19tNTEyZCBTbGVlZl90YW5oZDhfdTEwYXZ4NTEyZm5vZm1hKF9fbTUxMmQpOworSU1QT1JU
IENPTlNUIF9fbTUxMmQgU2xlZWZfY2luel90YW5oZDhfdTEwYXZ4NTEyZm5vZm1hKF9fbTUxMmQp
OworSU1QT1JUIENPTlNUIF9fbTUxMmQgU2xlZWZfc2luaGQ4X3UzNWF2eDUxMmZub2ZtYShfX201
MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVmX2Npbnpfc2luaGQ4X3UzNWF2eDUxMmZu
b2ZtYShfX201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVmX2Nvc2hkOF91MzVhdng1
MTJmbm9mbWEoX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBTbGVlZl9jaW56X2Nvc2hk
OF91MzVhdng1MTJmbm9mbWEoX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBTbGVlZl90
YW5oZDhfdTM1YXZ4NTEyZm5vZm1hKF9fbTUxMmQpOworSU1QT1JUIENPTlNUIF9fbTUxMmQgU2xl
ZWZfY2luel90YW5oZDhfdTM1YXZ4NTEyZm5vZm1hKF9fbTUxMmQpOworSU1QT1JUIENPTlNUIF9f
bTUxMmQgU2xlZWZfZmFzdHNpbmQ4X3UzNTAwYXZ4NTEyZm5vZm1hKF9fbTUxMmQpOworSU1QT1JU
IENPTlNUIF9fbTUxMmQgU2xlZWZfY2luel9mYXN0c2luZDhfdTM1MDBhdng1MTJmbm9mbWEoX19t
NTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBTbGVlZl9mYXN0Y29zZDhfdTM1MDBhdng1MTJm
bm9mbWEoX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBTbGVlZl9jaW56X2Zhc3Rjb3Nk
OF91MzUwMGF2eDUxMmZub2ZtYShfX201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVm
X2Zhc3Rwb3dkOF91MzUwMGF2eDUxMmZub2ZtYShfX201MTJkLCBfX201MTJkKTsKK0lNUE9SVCBD
T05TVCBfX201MTJkIFNsZWVmX2NpbnpfZmFzdHBvd2Q4X3UzNTAwYXZ4NTEyZm5vZm1hKF9fbTUx
MmQsIF9fbTUxMmQpOworSU1QT1JUIENPTlNUIF9fbTUxMmQgU2xlZWZfYXNpbmhkOF91MTBhdng1
MTJmbm9mbWEoX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBTbGVlZl9jaW56X2FzaW5o
ZDhfdTEwYXZ4NTEyZm5vZm1hKF9fbTUxMmQpOworSU1QT1JUIENPTlNUIF9fbTUxMmQgU2xlZWZf
YWNvc2hkOF91MTBhdng1MTJmbm9mbWEoX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBT
bGVlZl9jaW56X2Fjb3NoZDhfdTEwYXZ4NTEyZm5vZm1hKF9fbTUxMmQpOworSU1QT1JUIENPTlNU
IF9fbTUxMmQgU2xlZWZfYXRhbmhkOF91MTBhdng1MTJmbm9mbWEoX19tNTEyZCk7CitJTVBPUlQg
Q09OU1QgX19tNTEyZCBTbGVlZl9jaW56X2F0YW5oZDhfdTEwYXZ4NTEyZm5vZm1hKF9fbTUxMmQp
OworSU1QT1JUIENPTlNUIF9fbTUxMmQgU2xlZWZfZXhwMmQ4X3UxMGF2eDUxMmZub2ZtYShfX201
MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVmX2NpbnpfZXhwMmQ4X3UxMGF2eDUxMmZu
b2ZtYShfX201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVmX2V4cDJkOF91MzVhdng1
MTJmbm9mbWEoX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBTbGVlZl9jaW56X2V4cDJk
OF91MzVhdng1MTJmbm9mbWEoX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBTbGVlZl9l
eHAxMGQ4X3UxMGF2eDUxMmZub2ZtYShfX201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNs
ZWVmX2NpbnpfZXhwMTBkOF91MTBhdng1MTJmbm9mbWEoX19tNTEyZCk7CitJTVBPUlQgQ09OU1Qg
X19tNTEyZCBTbGVlZl9leHAxMGQ4X3UzNWF2eDUxMmZub2ZtYShfX201MTJkKTsKK0lNUE9SVCBD
T05TVCBfX201MTJkIFNsZWVmX2NpbnpfZXhwMTBkOF91MzVhdng1MTJmbm9mbWEoX19tNTEyZCk7
CitJTVBPUlQgQ09OU1QgX19tNTEyZCBTbGVlZl9leHBtMWQ4X3UxMGF2eDUxMmZub2ZtYShfX201
MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVmX2NpbnpfZXhwbTFkOF91MTBhdng1MTJm
bm9mbWEoX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBTbGVlZl9sb2cxMGQ4X3UxMGF2
eDUxMmZub2ZtYShfX201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVmX2NpbnpfbG9n
MTBkOF91MTBhdng1MTJmbm9mbWEoX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBTbGVl
Zl9sb2cyZDhfdTEwYXZ4NTEyZm5vZm1hKF9fbTUxMmQpOworSU1QT1JUIENPTlNUIF9fbTUxMmQg
U2xlZWZfY2luel9sb2cyZDhfdTEwYXZ4NTEyZm5vZm1hKF9fbTUxMmQpOworSU1QT1JUIENPTlNU
IF9fbTUxMmQgU2xlZWZfbG9nMmQ4X3UzNWF2eDUxMmZub2ZtYShfX201MTJkKTsKK0lNUE9SVCBD
T05TVCBfX201MTJkIFNsZWVmX2NpbnpfbG9nMmQ4X3UzNWF2eDUxMmZub2ZtYShfX201MTJkKTsK
K0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVmX2xvZzFwZDhfdTEwYXZ4NTEyZm5vZm1hKF9fbTUx
MmQpOworSU1QT1JUIENPTlNUIF9fbTUxMmQgU2xlZWZfY2luel9sb2cxcGQ4X3UxMGF2eDUxMmZu
b2ZtYShfX201MTJkKTsKK0lNUE9SVCBDT05TVCBTbGVlZl9fX201MTJkXzIgU2xlZWZfc2luY29z
cGlkOF91MDVhdng1MTJmbm9mbWEoX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgU2xlZWZfX19tNTEy
ZF8yIFNsZWVmX2Npbnpfc2luY29zcGlkOF91MDVhdng1MTJmbm9mbWEoX19tNTEyZCk7CitJTVBP
UlQgQ09OU1QgU2xlZWZfX19tNTEyZF8yIFNsZWVmX3NpbmNvc3BpZDhfdTM1YXZ4NTEyZm5vZm1h
KF9fbTUxMmQpOworSU1QT1JUIENPTlNUIFNsZWVmX19fbTUxMmRfMiBTbGVlZl9jaW56X3NpbmNv
c3BpZDhfdTM1YXZ4NTEyZm5vZm1hKF9fbTUxMmQpOworSU1QT1JUIENPTlNUIF9fbTUxMmQgU2xl
ZWZfc2lucGlkOF91MDVhdng1MTJmbm9mbWEoX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEy
ZCBTbGVlZl9jaW56X3NpbnBpZDhfdTA1YXZ4NTEyZm5vZm1hKF9fbTUxMmQpOworSU1QT1JUIENP
TlNUIF9fbTUxMmQgU2xlZWZfY29zcGlkOF91MDVhdng1MTJmbm9mbWEoX19tNTEyZCk7CitJTVBP
UlQgQ09OU1QgX19tNTEyZCBTbGVlZl9jaW56X2Nvc3BpZDhfdTA1YXZ4NTEyZm5vZm1hKF9fbTUx
MmQpOworSU1QT1JUIENPTlNUIF9fbTUxMmQgU2xlZWZfbGRleHBkOF9hdng1MTJmbm9mbWEoX19t
NTEyZCwgX19tMjU2aSk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBTbGVlZl9jaW56X2xkZXhwZDhf
YXZ4NTEyZm5vZm1hKF9fbTUxMmQsIF9fbTI1NmkpOworSU1QT1JUIENPTlNUIF9fbTI1NmkgU2xl
ZWZfaWxvZ2JkOF9hdng1MTJmbm9mbWEoX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tMjU2aSBT
bGVlZl9jaW56X2lsb2diZDhfYXZ4NTEyZm5vZm1hKF9fbTUxMmQpOworSU1QT1JUIENPTlNUIF9f
bTUxMmQgU2xlZWZfZm1hZDhfYXZ4NTEyZm5vZm1hKF9fbTUxMmQsIF9fbTUxMmQsIF9fbTUxMmQp
OworSU1QT1JUIENPTlNUIF9fbTUxMmQgU2xlZWZfY2luel9mbWFkOF9hdng1MTJmbm9mbWEoX19t
NTEyZCwgX19tNTEyZCwgX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBTbGVlZl9zcXJ0
ZDhfYXZ4NTEyZm5vZm1hKF9fbTUxMmQpOworSU1QT1JUIENPTlNUIF9fbTUxMmQgU2xlZWZfY2lu
el9zcXJ0ZDhfYXZ4NTEyZm5vZm1hKF9fbTUxMmQpOworSU1QT1JUIENPTlNUIF9fbTUxMmQgU2xl
ZWZfc3FydGQ4X3UwNWF2eDUxMmZub2ZtYShfX201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJk
IFNsZWVmX2Npbnpfc3FydGQ4X3UwNWF2eDUxMmZub2ZtYShfX201MTJkKTsKK0lNUE9SVCBDT05T
VCBfX201MTJkIFNsZWVmX3NxcnRkOF91MzVhdng1MTJmbm9mbWEoX19tNTEyZCk7CitJTVBPUlQg
Q09OU1QgX19tNTEyZCBTbGVlZl9jaW56X3NxcnRkOF91MzVhdng1MTJmbm9mbWEoX19tNTEyZCk7
CitJTVBPUlQgQ09OU1QgX19tNTEyZCBTbGVlZl9oeXBvdGQ4X3UwNWF2eDUxMmZub2ZtYShfX201
MTJkLCBfX201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVmX2NpbnpfaHlwb3RkOF91
MDVhdng1MTJmbm9mbWEoX19tNTEyZCwgX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBT
bGVlZl9oeXBvdGQ4X3UzNWF2eDUxMmZub2ZtYShfX201MTJkLCBfX201MTJkKTsKK0lNUE9SVCBD
T05TVCBfX201MTJkIFNsZWVmX2NpbnpfaHlwb3RkOF91MzVhdng1MTJmbm9mbWEoX19tNTEyZCwg
X19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBTbGVlZl9mYWJzZDhfYXZ4NTEyZm5vZm1h
KF9fbTUxMmQpOworSU1QT1JUIENPTlNUIF9fbTUxMmQgU2xlZWZfY2luel9mYWJzZDhfYXZ4NTEy
Zm5vZm1hKF9fbTUxMmQpOworSU1QT1JUIENPTlNUIF9fbTUxMmQgU2xlZWZfY29weXNpZ25kOF9h
dng1MTJmbm9mbWEoX19tNTEyZCwgX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBTbGVl
Zl9jaW56X2NvcHlzaWduZDhfYXZ4NTEyZm5vZm1hKF9fbTUxMmQsIF9fbTUxMmQpOworSU1QT1JU
IENPTlNUIF9fbTUxMmQgU2xlZWZfZm1heGQ4X2F2eDUxMmZub2ZtYShfX201MTJkLCBfX201MTJk
KTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVmX2NpbnpfZm1heGQ4X2F2eDUxMmZub2ZtYShf
X201MTJkLCBfX201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVmX2ZtaW5kOF9hdng1
MTJmbm9mbWEoX19tNTEyZCwgX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBTbGVlZl9j
aW56X2ZtaW5kOF9hdng1MTJmbm9mbWEoX19tNTEyZCwgX19tNTEyZCk7CitJTVBPUlQgQ09OU1Qg
X19tNTEyZCBTbGVlZl9mZGltZDhfYXZ4NTEyZm5vZm1hKF9fbTUxMmQsIF9fbTUxMmQpOworSU1Q
T1JUIENPTlNUIF9fbTUxMmQgU2xlZWZfY2luel9mZGltZDhfYXZ4NTEyZm5vZm1hKF9fbTUxMmQs
IF9fbTUxMmQpOworSU1QT1JUIENPTlNUIF9fbTUxMmQgU2xlZWZfdHJ1bmNkOF9hdng1MTJmbm9m
bWEoX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBTbGVlZl9jaW56X3RydW5jZDhfYXZ4
NTEyZm5vZm1hKF9fbTUxMmQpOworSU1QT1JUIENPTlNUIF9fbTUxMmQgU2xlZWZfZmxvb3JkOF9h
dng1MTJmbm9mbWEoX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBTbGVlZl9jaW56X2Zs
b29yZDhfYXZ4NTEyZm5vZm1hKF9fbTUxMmQpOworSU1QT1JUIENPTlNUIF9fbTUxMmQgU2xlZWZf
Y2VpbGQ4X2F2eDUxMmZub2ZtYShfX201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVm
X2NpbnpfY2VpbGQ4X2F2eDUxMmZub2ZtYShfX201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJk
IFNsZWVmX3JvdW5kZDhfYXZ4NTEyZm5vZm1hKF9fbTUxMmQpOworSU1QT1JUIENPTlNUIF9fbTUx
MmQgU2xlZWZfY2luel9yb3VuZGQ4X2F2eDUxMmZub2ZtYShfX201MTJkKTsKK0lNUE9SVCBDT05T
VCBfX201MTJkIFNsZWVmX3JpbnRkOF9hdng1MTJmbm9mbWEoX19tNTEyZCk7CitJTVBPUlQgQ09O
U1QgX19tNTEyZCBTbGVlZl9jaW56X3JpbnRkOF9hdng1MTJmbm9mbWEoX19tNTEyZCk7CitJTVBP
UlQgQ09OU1QgX19tNTEyZCBTbGVlZl9uZXh0YWZ0ZXJkOF9hdng1MTJmbm9mbWEoX19tNTEyZCwg
X19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBTbGVlZl9jaW56X25leHRhZnRlcmQ4X2F2
eDUxMmZub2ZtYShfX201MTJkLCBfX201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVm
X2ZyZnJleHBkOF9hdng1MTJmbm9mbWEoX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEyZCBT
bGVlZl9jaW56X2ZyZnJleHBkOF9hdng1MTJmbm9mbWEoX19tNTEyZCk7CitJTVBPUlQgQ09OU1Qg
X19tMjU2aSBTbGVlZl9leHBmcmV4cGQ4X2F2eDUxMmZub2ZtYShfX201MTJkKTsKK0lNUE9SVCBD
T05TVCBfX20yNTZpIFNsZWVmX2NpbnpfZXhwZnJleHBkOF9hdng1MTJmbm9mbWEoX19tNTEyZCk7
CitJTVBPUlQgQ09OU1QgX19tNTEyZCBTbGVlZl9mbW9kZDhfYXZ4NTEyZm5vZm1hKF9fbTUxMmQs
IF9fbTUxMmQpOworSU1QT1JUIENPTlNUIF9fbTUxMmQgU2xlZWZfY2luel9mbW9kZDhfYXZ4NTEy
Zm5vZm1hKF9fbTUxMmQsIF9fbTUxMmQpOworSU1QT1JUIENPTlNUIFNsZWVmX19fbTUxMmRfMiBT
bGVlZl9tb2RmZDhfYXZ4NTEyZm5vZm1hKF9fbTUxMmQpOworSU1QT1JUIENPTlNUIFNsZWVmX19f
bTUxMmRfMiBTbGVlZl9jaW56X21vZGZkOF9hdng1MTJmbm9mbWEoX19tNTEyZCk7CitJTVBPUlQg
Q09OU1QgX19tNTEyZCBTbGVlZl9sZ2FtbWFkOF91MTBhdng1MTJmbm9mbWEoX19tNTEyZCk7CitJ
TVBPUlQgQ09OU1QgX19tNTEyZCBTbGVlZl9jaW56X2xnYW1tYWQ4X3UxMGF2eDUxMmZub2ZtYShf
X201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVmX3RnYW1tYWQ4X3UxMGF2eDUxMmZu
b2ZtYShfX201MTJkKTsKK0lNUE9SVCBDT05TVCBfX201MTJkIFNsZWVmX2NpbnpfdGdhbW1hZDhf
dTEwYXZ4NTEyZm5vZm1hKF9fbTUxMmQpOworSU1QT1JUIENPTlNUIF9fbTUxMmQgU2xlZWZfZXJm
ZDhfdTEwYXZ4NTEyZm5vZm1hKF9fbTUxMmQpOworSU1QT1JUIENPTlNUIF9fbTUxMmQgU2xlZWZf
Y2luel9lcmZkOF91MTBhdng1MTJmbm9mbWEoX19tNTEyZCk7CitJTVBPUlQgQ09OU1QgX19tNTEy
ZCBTbGVlZl9lcmZjZDhfdTE1YXZ4NTEyZm5vZm1hKF9fbTUxMmQpOworSU1QT1JUIENPTlNUIF9f
bTUxMmQgU2xlZWZfY2luel9lcmZjZDhfdTE1YXZ4NTEyZm5vZm1hKF9fbTUxMmQpOworSU1QT1JU
IENPTlNUIGludCBTbGVlZl9nZXRJbnRkOF9hdng1MTJmbm9mbWEoaW50KTsKK0lNUE9SVCBDT05T
VCB2b2lkICpTbGVlZl9nZXRQdHJkOF9hdng1MTJmbm9mbWEoaW50KTsKKworI2lmbmRlZiBTbGVl
Zl9fX201MTJfMl9ERUZJTkVECit0eXBlZGVmIFNUUlVDVF9LRVlXT1JEX19fQVZYNTEyRl9fIHsK
KyAgX19tNTEyIHgsIHk7Cit9IFNsZWVmX19fbTUxMl8yOworI2RlZmluZSBTbGVlZl9fX201MTJf
Ml9ERUZJTkVECisjZW5kaWYKKworSU1QT1JUIENPTlNUIF9fbTUxMiBTbGVlZl9zaW5mMTZfdTM1
YXZ4NTEyZm5vZm1hKF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19tNTEyIFNsZWVmX2Npbnpfc2lu
ZjE2X3UzNWF2eDUxMmZub2ZtYShfX201MTIpOworSU1QT1JUIENPTlNUIF9fbTUxMiBTbGVlZl9j
b3NmMTZfdTM1YXZ4NTEyZm5vZm1hKF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19tNTEyIFNsZWVm
X2NpbnpfY29zZjE2X3UzNWF2eDUxMmZub2ZtYShfX201MTIpOworSU1QT1JUIENPTlNUIFNsZWVm
X19fbTUxMl8yIFNsZWVmX3NpbmNvc2YxNl91MzVhdng1MTJmbm9mbWEoX19tNTEyKTsKK0lNUE9S
VCBDT05TVCBTbGVlZl9fX201MTJfMiBTbGVlZl9jaW56X3NpbmNvc2YxNl91MzVhdng1MTJmbm9m
bWEoX19tNTEyKTsKK0lNUE9SVCBDT05TVCBfX201MTIgU2xlZWZfdGFuZjE2X3UzNWF2eDUxMmZu
b2ZtYShfX201MTIpOworSU1QT1JUIENPTlNUIF9fbTUxMiBTbGVlZl9jaW56X3RhbmYxNl91MzVh
dng1MTJmbm9mbWEoX19tNTEyKTsKK0lNUE9SVCBDT05TVCBfX201MTIgU2xlZWZfYXNpbmYxNl91
MzVhdng1MTJmbm9mbWEoX19tNTEyKTsKK0lNUE9SVCBDT05TVCBfX201MTIgU2xlZWZfY2luel9h
c2luZjE2X3UzNWF2eDUxMmZub2ZtYShfX201MTIpOworSU1QT1JUIENPTlNUIF9fbTUxMiBTbGVl
Zl9hY29zZjE2X3UzNWF2eDUxMmZub2ZtYShfX201MTIpOworSU1QT1JUIENPTlNUIF9fbTUxMiBT
bGVlZl9jaW56X2Fjb3NmMTZfdTM1YXZ4NTEyZm5vZm1hKF9fbTUxMik7CitJTVBPUlQgQ09OU1Qg
X19tNTEyIFNsZWVmX2F0YW5mMTZfdTM1YXZ4NTEyZm5vZm1hKF9fbTUxMik7CitJTVBPUlQgQ09O
U1QgX19tNTEyIFNsZWVmX2NpbnpfYXRhbmYxNl91MzVhdng1MTJmbm9mbWEoX19tNTEyKTsKK0lN
UE9SVCBDT05TVCBfX201MTIgU2xlZWZfYXRhbjJmMTZfdTM1YXZ4NTEyZm5vZm1hKF9fbTUxMiwg
X19tNTEyKTsKK0lNUE9SVCBDT05TVCBfX201MTIgU2xlZWZfY2luel9hdGFuMmYxNl91MzVhdng1
MTJmbm9mbWEoX19tNTEyLCBfX201MTIpOworSU1QT1JUIENPTlNUIF9fbTUxMiBTbGVlZl9sb2dm
MTZfdTM1YXZ4NTEyZm5vZm1hKF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19tNTEyIFNsZWVmX2Np
bnpfbG9nZjE2X3UzNWF2eDUxMmZub2ZtYShfX201MTIpOworSU1QT1JUIENPTlNUIF9fbTUxMiBT
bGVlZl9jYnJ0ZjE2X3UzNWF2eDUxMmZub2ZtYShfX201MTIpOworSU1QT1JUIENPTlNUIF9fbTUx
MiBTbGVlZl9jaW56X2NicnRmMTZfdTM1YXZ4NTEyZm5vZm1hKF9fbTUxMik7CitJTVBPUlQgQ09O
U1QgX19tNTEyIFNsZWVmX3NpbmYxNl91MTBhdng1MTJmbm9mbWEoX19tNTEyKTsKK0lNUE9SVCBD
T05TVCBfX201MTIgU2xlZWZfY2luel9zaW5mMTZfdTEwYXZ4NTEyZm5vZm1hKF9fbTUxMik7CitJ
TVBPUlQgQ09OU1QgX19tNTEyIFNsZWVmX2Nvc2YxNl91MTBhdng1MTJmbm9mbWEoX19tNTEyKTsK
K0lNUE9SVCBDT05TVCBfX201MTIgU2xlZWZfY2luel9jb3NmMTZfdTEwYXZ4NTEyZm5vZm1hKF9f
bTUxMik7CitJTVBPUlQgQ09OU1QgU2xlZWZfX19tNTEyXzIgU2xlZWZfc2luY29zZjE2X3UxMGF2
eDUxMmZub2ZtYShfX201MTIpOworSU1QT1JUIENPTlNUIFNsZWVmX19fbTUxMl8yIFNsZWVmX2Np
bnpfc2luY29zZjE2X3UxMGF2eDUxMmZub2ZtYShfX201MTIpOworSU1QT1JUIENPTlNUIF9fbTUx
MiBTbGVlZl90YW5mMTZfdTEwYXZ4NTEyZm5vZm1hKF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19t
NTEyIFNsZWVmX2NpbnpfdGFuZjE2X3UxMGF2eDUxMmZub2ZtYShfX201MTIpOworSU1QT1JUIENP
TlNUIF9fbTUxMiBTbGVlZl9hc2luZjE2X3UxMGF2eDUxMmZub2ZtYShfX201MTIpOworSU1QT1JU
IENPTlNUIF9fbTUxMiBTbGVlZl9jaW56X2FzaW5mMTZfdTEwYXZ4NTEyZm5vZm1hKF9fbTUxMik7
CitJTVBPUlQgQ09OU1QgX19tNTEyIFNsZWVmX2Fjb3NmMTZfdTEwYXZ4NTEyZm5vZm1hKF9fbTUx
Mik7CitJTVBPUlQgQ09OU1QgX19tNTEyIFNsZWVmX2NpbnpfYWNvc2YxNl91MTBhdng1MTJmbm9m
bWEoX19tNTEyKTsKK0lNUE9SVCBDT05TVCBfX201MTIgU2xlZWZfYXRhbmYxNl91MTBhdng1MTJm
bm9mbWEoX19tNTEyKTsKK0lNUE9SVCBDT05TVCBfX201MTIgU2xlZWZfY2luel9hdGFuZjE2X3Ux
MGF2eDUxMmZub2ZtYShfX201MTIpOworSU1QT1JUIENPTlNUIF9fbTUxMiBTbGVlZl9hdGFuMmYx
Nl91MTBhdng1MTJmbm9mbWEoX19tNTEyLCBfX201MTIpOworSU1QT1JUIENPTlNUIF9fbTUxMiBT
bGVlZl9jaW56X2F0YW4yZjE2X3UxMGF2eDUxMmZub2ZtYShfX201MTIsIF9fbTUxMik7CitJTVBP
UlQgQ09OU1QgX19tNTEyIFNsZWVmX2xvZ2YxNl91MTBhdng1MTJmbm9mbWEoX19tNTEyKTsKK0lN
UE9SVCBDT05TVCBfX201MTIgU2xlZWZfY2luel9sb2dmMTZfdTEwYXZ4NTEyZm5vZm1hKF9fbTUx
Mik7CitJTVBPUlQgQ09OU1QgX19tNTEyIFNsZWVmX2NicnRmMTZfdTEwYXZ4NTEyZm5vZm1hKF9f
bTUxMik7CitJTVBPUlQgQ09OU1QgX19tNTEyIFNsZWVmX2NpbnpfY2JydGYxNl91MTBhdng1MTJm
bm9mbWEoX19tNTEyKTsKK0lNUE9SVCBDT05TVCBfX201MTIgU2xlZWZfZXhwZjE2X3UxMGF2eDUx
MmZub2ZtYShfX201MTIpOworSU1QT1JUIENPTlNUIF9fbTUxMiBTbGVlZl9jaW56X2V4cGYxNl91
MTBhdng1MTJmbm9mbWEoX19tNTEyKTsKK0lNUE9SVCBDT05TVCBfX201MTIgU2xlZWZfcG93ZjE2
X3UxMGF2eDUxMmZub2ZtYShfX201MTIsIF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19tNTEyIFNs
ZWVmX2NpbnpfcG93ZjE2X3UxMGF2eDUxMmZub2ZtYShfX201MTIsIF9fbTUxMik7CitJTVBPUlQg
Q09OU1QgX19tNTEyIFNsZWVmX3NpbmhmMTZfdTEwYXZ4NTEyZm5vZm1hKF9fbTUxMik7CitJTVBP
UlQgQ09OU1QgX19tNTEyIFNsZWVmX2Npbnpfc2luaGYxNl91MTBhdng1MTJmbm9mbWEoX19tNTEy
KTsKK0lNUE9SVCBDT05TVCBfX201MTIgU2xlZWZfY29zaGYxNl91MTBhdng1MTJmbm9mbWEoX19t
NTEyKTsKK0lNUE9SVCBDT05TVCBfX201MTIgU2xlZWZfY2luel9jb3NoZjE2X3UxMGF2eDUxMmZu
b2ZtYShfX201MTIpOworSU1QT1JUIENPTlNUIF9fbTUxMiBTbGVlZl90YW5oZjE2X3UxMGF2eDUx
MmZub2ZtYShfX201MTIpOworSU1QT1JUIENPTlNUIF9fbTUxMiBTbGVlZl9jaW56X3RhbmhmMTZf
dTEwYXZ4NTEyZm5vZm1hKF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19tNTEyIFNsZWVmX3Npbmhm
MTZfdTM1YXZ4NTEyZm5vZm1hKF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19tNTEyIFNsZWVmX2Np
bnpfc2luaGYxNl91MzVhdng1MTJmbm9mbWEoX19tNTEyKTsKK0lNUE9SVCBDT05TVCBfX201MTIg
U2xlZWZfY29zaGYxNl91MzVhdng1MTJmbm9mbWEoX19tNTEyKTsKK0lNUE9SVCBDT05TVCBfX201
MTIgU2xlZWZfY2luel9jb3NoZjE2X3UzNWF2eDUxMmZub2ZtYShfX201MTIpOworSU1QT1JUIENP
TlNUIF9fbTUxMiBTbGVlZl90YW5oZjE2X3UzNWF2eDUxMmZub2ZtYShfX201MTIpOworSU1QT1JU
IENPTlNUIF9fbTUxMiBTbGVlZl9jaW56X3RhbmhmMTZfdTM1YXZ4NTEyZm5vZm1hKF9fbTUxMik7
CitJTVBPUlQgQ09OU1QgX19tNTEyIFNsZWVmX2Zhc3RzaW5mMTZfdTM1MDBhdng1MTJmbm9mbWEo
X19tNTEyKTsKK0lNUE9SVCBDT05TVCBfX201MTIgU2xlZWZfY2luel9mYXN0c2luZjE2X3UzNTAw
YXZ4NTEyZm5vZm1hKF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19tNTEyIFNsZWVmX2Zhc3Rjb3Nm
MTZfdTM1MDBhdng1MTJmbm9mbWEoX19tNTEyKTsKK0lNUE9SVCBDT05TVCBfX201MTIgU2xlZWZf
Y2luel9mYXN0Y29zZjE2X3UzNTAwYXZ4NTEyZm5vZm1hKF9fbTUxMik7CitJTVBPUlQgQ09OU1Qg
X19tNTEyIFNsZWVmX2Zhc3Rwb3dmMTZfdTM1MDBhdng1MTJmbm9mbWEoX19tNTEyLCBfX201MTIp
OworSU1QT1JUIENPTlNUIF9fbTUxMiBTbGVlZl9jaW56X2Zhc3Rwb3dmMTZfdTM1MDBhdng1MTJm
bm9mbWEoX19tNTEyLCBfX201MTIpOworSU1QT1JUIENPTlNUIF9fbTUxMiBTbGVlZl9hc2luaGYx
Nl91MTBhdng1MTJmbm9mbWEoX19tNTEyKTsKK0lNUE9SVCBDT05TVCBfX201MTIgU2xlZWZfY2lu
el9hc2luaGYxNl91MTBhdng1MTJmbm9mbWEoX19tNTEyKTsKK0lNUE9SVCBDT05TVCBfX201MTIg
U2xlZWZfYWNvc2hmMTZfdTEwYXZ4NTEyZm5vZm1hKF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19t
NTEyIFNsZWVmX2NpbnpfYWNvc2hmMTZfdTEwYXZ4NTEyZm5vZm1hKF9fbTUxMik7CitJTVBPUlQg
Q09OU1QgX19tNTEyIFNsZWVmX2F0YW5oZjE2X3UxMGF2eDUxMmZub2ZtYShfX201MTIpOworSU1Q
T1JUIENPTlNUIF9fbTUxMiBTbGVlZl9jaW56X2F0YW5oZjE2X3UxMGF2eDUxMmZub2ZtYShfX201
MTIpOworSU1QT1JUIENPTlNUIF9fbTUxMiBTbGVlZl9leHAyZjE2X3UxMGF2eDUxMmZub2ZtYShf
X201MTIpOworSU1QT1JUIENPTlNUIF9fbTUxMiBTbGVlZl9jaW56X2V4cDJmMTZfdTEwYXZ4NTEy
Zm5vZm1hKF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19tNTEyIFNsZWVmX2V4cDJmMTZfdTM1YXZ4
NTEyZm5vZm1hKF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19tNTEyIFNsZWVmX2NpbnpfZXhwMmYx
Nl91MzVhdng1MTJmbm9mbWEoX19tNTEyKTsKK0lNUE9SVCBDT05TVCBfX201MTIgU2xlZWZfZXhw
MTBmMTZfdTEwYXZ4NTEyZm5vZm1hKF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19tNTEyIFNsZWVm
X2NpbnpfZXhwMTBmMTZfdTEwYXZ4NTEyZm5vZm1hKF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19t
NTEyIFNsZWVmX2V4cDEwZjE2X3UzNWF2eDUxMmZub2ZtYShfX201MTIpOworSU1QT1JUIENPTlNU
IF9fbTUxMiBTbGVlZl9jaW56X2V4cDEwZjE2X3UzNWF2eDUxMmZub2ZtYShfX201MTIpOworSU1Q
T1JUIENPTlNUIF9fbTUxMiBTbGVlZl9leHBtMWYxNl91MTBhdng1MTJmbm9mbWEoX19tNTEyKTsK
K0lNUE9SVCBDT05TVCBfX201MTIgU2xlZWZfY2luel9leHBtMWYxNl91MTBhdng1MTJmbm9mbWEo
X19tNTEyKTsKK0lNUE9SVCBDT05TVCBfX201MTIgU2xlZWZfbG9nMTBmMTZfdTEwYXZ4NTEyZm5v
Zm1hKF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19tNTEyIFNsZWVmX2NpbnpfbG9nMTBmMTZfdTEw
YXZ4NTEyZm5vZm1hKF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19tNTEyIFNsZWVmX2xvZzJmMTZf
dTEwYXZ4NTEyZm5vZm1hKF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19tNTEyIFNsZWVmX2Npbnpf
bG9nMmYxNl91MTBhdng1MTJmbm9mbWEoX19tNTEyKTsKK0lNUE9SVCBDT05TVCBfX201MTIgU2xl
ZWZfbG9nMmYxNl91MzVhdng1MTJmbm9mbWEoX19tNTEyKTsKK0lNUE9SVCBDT05TVCBfX201MTIg
U2xlZWZfY2luel9sb2cyZjE2X3UzNWF2eDUxMmZub2ZtYShfX201MTIpOworSU1QT1JUIENPTlNU
IF9fbTUxMiBTbGVlZl9sb2cxcGYxNl91MTBhdng1MTJmbm9mbWEoX19tNTEyKTsKK0lNUE9SVCBD
T05TVCBfX201MTIgU2xlZWZfY2luel9sb2cxcGYxNl91MTBhdng1MTJmbm9mbWEoX19tNTEyKTsK
K0lNUE9SVCBDT05TVCBTbGVlZl9fX201MTJfMiBTbGVlZl9zaW5jb3NwaWYxNl91MDVhdng1MTJm
bm9mbWEoX19tNTEyKTsKK0lNUE9SVCBDT05TVCBTbGVlZl9fX201MTJfMiBTbGVlZl9jaW56X3Np
bmNvc3BpZjE2X3UwNWF2eDUxMmZub2ZtYShfX201MTIpOworSU1QT1JUIENPTlNUIFNsZWVmX19f
bTUxMl8yIFNsZWVmX3NpbmNvc3BpZjE2X3UzNWF2eDUxMmZub2ZtYShfX201MTIpOworSU1QT1JU
IENPTlNUIFNsZWVmX19fbTUxMl8yIFNsZWVmX2Npbnpfc2luY29zcGlmMTZfdTM1YXZ4NTEyZm5v
Zm1hKF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19tNTEyIFNsZWVmX3NpbnBpZjE2X3UwNWF2eDUx
MmZub2ZtYShfX201MTIpOworSU1QT1JUIENPTlNUIF9fbTUxMiBTbGVlZl9jaW56X3NpbnBpZjE2
X3UwNWF2eDUxMmZub2ZtYShfX201MTIpOworSU1QT1JUIENPTlNUIF9fbTUxMiBTbGVlZl9jb3Nw
aWYxNl91MDVhdng1MTJmbm9mbWEoX19tNTEyKTsKK0lNUE9SVCBDT05TVCBfX201MTIgU2xlZWZf
Y2luel9jb3NwaWYxNl91MDVhdng1MTJmbm9mbWEoX19tNTEyKTsKK0lNUE9SVCBDT05TVCBfX201
MTIgU2xlZWZfZm1hZjE2X2F2eDUxMmZub2ZtYShfX201MTIsIF9fbTUxMiwgX19tNTEyKTsKK0lN
UE9SVCBDT05TVCBfX201MTIgU2xlZWZfY2luel9mbWFmMTZfYXZ4NTEyZm5vZm1hKF9fbTUxMiwg
X19tNTEyLCBfX201MTIpOworSU1QT1JUIENPTlNUIF9fbTUxMiBTbGVlZl9zcXJ0ZjE2X2F2eDUx
MmZub2ZtYShfX201MTIpOworSU1QT1JUIENPTlNUIF9fbTUxMiBTbGVlZl9jaW56X3NxcnRmMTZf
YXZ4NTEyZm5vZm1hKF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19tNTEyIFNsZWVmX3NxcnRmMTZf
dTA1YXZ4NTEyZm5vZm1hKF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19tNTEyIFNsZWVmX2Npbnpf
c3FydGYxNl91MDVhdng1MTJmbm9mbWEoX19tNTEyKTsKK0lNUE9SVCBDT05TVCBfX201MTIgU2xl
ZWZfc3FydGYxNl91MzVhdng1MTJmbm9mbWEoX19tNTEyKTsKK0lNUE9SVCBDT05TVCBfX201MTIg
U2xlZWZfY2luel9zcXJ0ZjE2X3UzNWF2eDUxMmZub2ZtYShfX201MTIpOworSU1QT1JUIENPTlNU
IF9fbTUxMiBTbGVlZl9oeXBvdGYxNl91MDVhdng1MTJmbm9mbWEoX19tNTEyLCBfX201MTIpOwor
SU1QT1JUIENPTlNUIF9fbTUxMiBTbGVlZl9jaW56X2h5cG90ZjE2X3UwNWF2eDUxMmZub2ZtYShf
X201MTIsIF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19tNTEyIFNsZWVmX2h5cG90ZjE2X3UzNWF2
eDUxMmZub2ZtYShfX201MTIsIF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19tNTEyIFNsZWVmX2Np
bnpfaHlwb3RmMTZfdTM1YXZ4NTEyZm5vZm1hKF9fbTUxMiwgX19tNTEyKTsKK0lNUE9SVCBDT05T
VCBfX201MTIgU2xlZWZfZmFic2YxNl9hdng1MTJmbm9mbWEoX19tNTEyKTsKK0lNUE9SVCBDT05T
VCBfX201MTIgU2xlZWZfY2luel9mYWJzZjE2X2F2eDUxMmZub2ZtYShfX201MTIpOworSU1QT1JU
IENPTlNUIF9fbTUxMiBTbGVlZl9jb3B5c2lnbmYxNl9hdng1MTJmbm9mbWEoX19tNTEyLCBfX201
MTIpOworSU1QT1JUIENPTlNUIF9fbTUxMiBTbGVlZl9jaW56X2NvcHlzaWduZjE2X2F2eDUxMmZu
b2ZtYShfX201MTIsIF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19tNTEyIFNsZWVmX2ZtYXhmMTZf
YXZ4NTEyZm5vZm1hKF9fbTUxMiwgX19tNTEyKTsKK0lNUE9SVCBDT05TVCBfX201MTIgU2xlZWZf
Y2luel9mbWF4ZjE2X2F2eDUxMmZub2ZtYShfX201MTIsIF9fbTUxMik7CitJTVBPUlQgQ09OU1Qg
X19tNTEyIFNsZWVmX2ZtaW5mMTZfYXZ4NTEyZm5vZm1hKF9fbTUxMiwgX19tNTEyKTsKK0lNUE9S
VCBDT05TVCBfX201MTIgU2xlZWZfY2luel9mbWluZjE2X2F2eDUxMmZub2ZtYShfX201MTIsIF9f
bTUxMik7CitJTVBPUlQgQ09OU1QgX19tNTEyIFNsZWVmX2ZkaW1mMTZfYXZ4NTEyZm5vZm1hKF9f
bTUxMiwgX19tNTEyKTsKK0lNUE9SVCBDT05TVCBfX201MTIgU2xlZWZfY2luel9mZGltZjE2X2F2
eDUxMmZub2ZtYShfX201MTIsIF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19tNTEyIFNsZWVmX3Ry
dW5jZjE2X2F2eDUxMmZub2ZtYShfX201MTIpOworSU1QT1JUIENPTlNUIF9fbTUxMiBTbGVlZl9j
aW56X3RydW5jZjE2X2F2eDUxMmZub2ZtYShfX201MTIpOworSU1QT1JUIENPTlNUIF9fbTUxMiBT
bGVlZl9mbG9vcmYxNl9hdng1MTJmbm9mbWEoX19tNTEyKTsKK0lNUE9SVCBDT05TVCBfX201MTIg
U2xlZWZfY2luel9mbG9vcmYxNl9hdng1MTJmbm9mbWEoX19tNTEyKTsKK0lNUE9SVCBDT05TVCBf
X201MTIgU2xlZWZfY2VpbGYxNl9hdng1MTJmbm9mbWEoX19tNTEyKTsKK0lNUE9SVCBDT05TVCBf
X201MTIgU2xlZWZfY2luel9jZWlsZjE2X2F2eDUxMmZub2ZtYShfX201MTIpOworSU1QT1JUIENP
TlNUIF9fbTUxMiBTbGVlZl9yb3VuZGYxNl9hdng1MTJmbm9mbWEoX19tNTEyKTsKK0lNUE9SVCBD
T05TVCBfX201MTIgU2xlZWZfY2luel9yb3VuZGYxNl9hdng1MTJmbm9mbWEoX19tNTEyKTsKK0lN
UE9SVCBDT05TVCBfX201MTIgU2xlZWZfcmludGYxNl9hdng1MTJmbm9mbWEoX19tNTEyKTsKK0lN
UE9SVCBDT05TVCBfX201MTIgU2xlZWZfY2luel9yaW50ZjE2X2F2eDUxMmZub2ZtYShfX201MTIp
OworSU1QT1JUIENPTlNUIF9fbTUxMiBTbGVlZl9uZXh0YWZ0ZXJmMTZfYXZ4NTEyZm5vZm1hKF9f
bTUxMiwgX19tNTEyKTsKK0lNUE9SVCBDT05TVCBfX201MTIgU2xlZWZfY2luel9uZXh0YWZ0ZXJm
MTZfYXZ4NTEyZm5vZm1hKF9fbTUxMiwgX19tNTEyKTsKK0lNUE9SVCBDT05TVCBfX201MTIgU2xl
ZWZfZnJmcmV4cGYxNl9hdng1MTJmbm9mbWEoX19tNTEyKTsKK0lNUE9SVCBDT05TVCBfX201MTIg
U2xlZWZfY2luel9mcmZyZXhwZjE2X2F2eDUxMmZub2ZtYShfX201MTIpOworSU1QT1JUIENPTlNU
IF9fbTUxMiBTbGVlZl9mbW9kZjE2X2F2eDUxMmZub2ZtYShfX201MTIsIF9fbTUxMik7CitJTVBP
UlQgQ09OU1QgX19tNTEyIFNsZWVmX2NpbnpfZm1vZGYxNl9hdng1MTJmbm9mbWEoX19tNTEyLCBf
X201MTIpOworSU1QT1JUIENPTlNUIFNsZWVmX19fbTUxMl8yIFNsZWVmX21vZGZmMTZfYXZ4NTEy
Zm5vZm1hKF9fbTUxMik7CitJTVBPUlQgQ09OU1QgU2xlZWZfX19tNTEyXzIgU2xlZWZfY2luel9t
b2RmZjE2X2F2eDUxMmZub2ZtYShfX201MTIpOworSU1QT1JUIENPTlNUIF9fbTUxMiBTbGVlZl9s
Z2FtbWFmMTZfdTEwYXZ4NTEyZm5vZm1hKF9fbTUxMik7CitJTVBPUlQgQ09OU1QgX19tNTEyIFNs
ZWVmX2NpbnpfbGdhbW1hZjE2X3UxMGF2eDUxMmZub2ZtYShfX201MTIpOworSU1QT1JUIENPTlNU
IF9fbTUxMiBTbGVlZl90Z2FtbWFmMTZfdTEwYXZ4NTEyZm5vZm1hKF9fbTUxMik7CitJTVBPUlQg
Q09OU1QgX19tNTEyIFNsZWVmX2NpbnpfdGdhbW1hZjE2X3UxMGF2eDUxMmZub2ZtYShfX201MTIp
OworSU1QT1JUIENPTlNUIF9fbTUxMiBTbGVlZl9lcmZmMTZfdTEwYXZ4NTEyZm5vZm1hKF9fbTUx
Mik7CitJTVBPUlQgQ09OU1QgX19tNTEyIFNsZWVmX2NpbnpfZXJmZjE2X3UxMGF2eDUxMmZub2Zt
YShfX201MTIpOworSU1QT1JUIENPTlNUIF9fbTUxMiBTbGVlZl9lcmZjZjE2X3UxNWF2eDUxMmZu
b2ZtYShfX201MTIpOworSU1QT1JUIENPTlNUIF9fbTUxMiBTbGVlZl9jaW56X2VyZmNmMTZfdTE1
YXZ4NTEyZm5vZm1hKF9fbTUxMik7CitJTVBPUlQgQ09OU1QgaW50IFNsZWVmX2dldEludGYxNl9h
dng1MTJmbm9mbWEoaW50KTsKK0lNUE9SVCBDT05TVCBpbnQgU2xlZWZfY2luel9nZXRJbnRmMTZf
YXZ4NTEyZm5vZm1hKGludCk7CitJTVBPUlQgQ09OU1Qgdm9pZCAqU2xlZWZfZ2V0UHRyZjE2X2F2
eDUxMmZub2ZtYShpbnQpOworSU1QT1JUIENPTlNUIHZvaWQgKlNsZWVmX2NpbnpfZ2V0UHRyZjE2
X2F2eDUxMmZub2ZtYShpbnQpOworI2VuZGlmCisjaWZkZWYgX19TVERDX18KKyNkZWZpbmUgU1RS
VUNUX0tFWVdPUkRfX19TVERDX18gc3RydWN0CisKKyNpZm5kZWYgU2xlZWZfZG91YmxlXzJfREVG
SU5FRAordHlwZWRlZiBTVFJVQ1RfS0VZV09SRF9fX1NURENfXyB7CisgIGRvdWJsZSB4LCB5Owor
fSBTbGVlZl9kb3VibGVfMjsKKyNkZWZpbmUgU2xlZWZfZG91YmxlXzJfREVGSU5FRAorI2VuZGlm
CisKK0lNUE9SVCBDT05TVCBkb3VibGUgU2xlZWZfc2luZDFfdTM1cHVyZWMoZG91YmxlKTsKK0lN
UE9SVCBDT05TVCBkb3VibGUgU2xlZWZfY2luel9zaW5kMV91MzVwdXJlYyhkb3VibGUpOworSU1Q
T1JUIENPTlNUIGRvdWJsZSBTbGVlZl9jb3NkMV91MzVwdXJlYyhkb3VibGUpOworSU1QT1JUIENP
TlNUIGRvdWJsZSBTbGVlZl9jaW56X2Nvc2QxX3UzNXB1cmVjKGRvdWJsZSk7CitJTVBPUlQgQ09O
U1QgU2xlZWZfZG91YmxlXzIgU2xlZWZfc2luY29zZDFfdTM1cHVyZWMoZG91YmxlKTsKK0lNUE9S
VCBDT05TVCBTbGVlZl9kb3VibGVfMiBTbGVlZl9jaW56X3NpbmNvc2QxX3UzNXB1cmVjKGRvdWJs
ZSk7CitJTVBPUlQgQ09OU1QgZG91YmxlIFNsZWVmX3RhbmQxX3UzNXB1cmVjKGRvdWJsZSk7CitJ
TVBPUlQgQ09OU1QgZG91YmxlIFNsZWVmX2NpbnpfdGFuZDFfdTM1cHVyZWMoZG91YmxlKTsKK0lN
UE9SVCBDT05TVCBkb3VibGUgU2xlZWZfYXNpbmQxX3UzNXB1cmVjKGRvdWJsZSk7CitJTVBPUlQg
Q09OU1QgZG91YmxlIFNsZWVmX2NpbnpfYXNpbmQxX3UzNXB1cmVjKGRvdWJsZSk7CitJTVBPUlQg
Q09OU1QgZG91YmxlIFNsZWVmX2Fjb3NkMV91MzVwdXJlYyhkb3VibGUpOworSU1QT1JUIENPTlNU
IGRvdWJsZSBTbGVlZl9jaW56X2Fjb3NkMV91MzVwdXJlYyhkb3VibGUpOworSU1QT1JUIENPTlNU
IGRvdWJsZSBTbGVlZl9hdGFuZDFfdTM1cHVyZWMoZG91YmxlKTsKK0lNUE9SVCBDT05TVCBkb3Vi
bGUgU2xlZWZfY2luel9hdGFuZDFfdTM1cHVyZWMoZG91YmxlKTsKK0lNUE9SVCBDT05TVCBkb3Vi
bGUgU2xlZWZfYXRhbjJkMV91MzVwdXJlYyhkb3VibGUsIGRvdWJsZSk7CitJTVBPUlQgQ09OU1Qg
ZG91YmxlIFNsZWVmX2NpbnpfYXRhbjJkMV91MzVwdXJlYyhkb3VibGUsIGRvdWJsZSk7CitJTVBP
UlQgQ09OU1QgZG91YmxlIFNsZWVmX2xvZ2QxX3UzNXB1cmVjKGRvdWJsZSk7CitJTVBPUlQgQ09O
U1QgZG91YmxlIFNsZWVmX2NpbnpfbG9nZDFfdTM1cHVyZWMoZG91YmxlKTsKK0lNUE9SVCBDT05T
VCBkb3VibGUgU2xlZWZfY2JydGQxX3UzNXB1cmVjKGRvdWJsZSk7CitJTVBPUlQgQ09OU1QgZG91
YmxlIFNsZWVmX2NpbnpfY2JydGQxX3UzNXB1cmVjKGRvdWJsZSk7CitJTVBPUlQgQ09OU1QgZG91
YmxlIFNsZWVmX3NpbmQxX3UxMHB1cmVjKGRvdWJsZSk7CitJTVBPUlQgQ09OU1QgZG91YmxlIFNs
ZWVmX2Npbnpfc2luZDFfdTEwcHVyZWMoZG91YmxlKTsKK0lNUE9SVCBDT05TVCBkb3VibGUgU2xl
ZWZfY29zZDFfdTEwcHVyZWMoZG91YmxlKTsKK0lNUE9SVCBDT05TVCBkb3VibGUgU2xlZWZfY2lu
el9jb3NkMV91MTBwdXJlYyhkb3VibGUpOworSU1QT1JUIENPTlNUIFNsZWVmX2RvdWJsZV8yIFNs
ZWVmX3NpbmNvc2QxX3UxMHB1cmVjKGRvdWJsZSk7CitJTVBPUlQgQ09OU1QgU2xlZWZfZG91Ymxl
XzIgU2xlZWZfY2luel9zaW5jb3NkMV91MTBwdXJlYyhkb3VibGUpOworSU1QT1JUIENPTlNUIGRv
dWJsZSBTbGVlZl90YW5kMV91MTBwdXJlYyhkb3VibGUpOworSU1QT1JUIENPTlNUIGRvdWJsZSBT
bGVlZl9jaW56X3RhbmQxX3UxMHB1cmVjKGRvdWJsZSk7CitJTVBPUlQgQ09OU1QgZG91YmxlIFNs
ZWVmX2FzaW5kMV91MTBwdXJlYyhkb3VibGUpOworSU1QT1JUIENPTlNUIGRvdWJsZSBTbGVlZl9j
aW56X2FzaW5kMV91MTBwdXJlYyhkb3VibGUpOworSU1QT1JUIENPTlNUIGRvdWJsZSBTbGVlZl9h
Y29zZDFfdTEwcHVyZWMoZG91YmxlKTsKK0lNUE9SVCBDT05TVCBkb3VibGUgU2xlZWZfY2luel9h
Y29zZDFfdTEwcHVyZWMoZG91YmxlKTsKK0lNUE9SVCBDT05TVCBkb3VibGUgU2xlZWZfYXRhbmQx
X3UxMHB1cmVjKGRvdWJsZSk7CitJTVBPUlQgQ09OU1QgZG91YmxlIFNsZWVmX2NpbnpfYXRhbmQx
X3UxMHB1cmVjKGRvdWJsZSk7CitJTVBPUlQgQ09OU1QgZG91YmxlIFNsZWVmX2F0YW4yZDFfdTEw
cHVyZWMoZG91YmxlLCBkb3VibGUpOworSU1QT1JUIENPTlNUIGRvdWJsZSBTbGVlZl9jaW56X2F0
YW4yZDFfdTEwcHVyZWMoZG91YmxlLCBkb3VibGUpOworSU1QT1JUIENPTlNUIGRvdWJsZSBTbGVl
Zl9sb2dkMV91MTBwdXJlYyhkb3VibGUpOworSU1QT1JUIENPTlNUIGRvdWJsZSBTbGVlZl9jaW56
X2xvZ2QxX3UxMHB1cmVjKGRvdWJsZSk7CitJTVBPUlQgQ09OU1QgZG91YmxlIFNsZWVmX2NicnRk
MV91MTBwdXJlYyhkb3VibGUpOworSU1QT1JUIENPTlNUIGRvdWJsZSBTbGVlZl9jaW56X2NicnRk
MV91MTBwdXJlYyhkb3VibGUpOworSU1QT1JUIENPTlNUIGRvdWJsZSBTbGVlZl9leHBkMV91MTBw
dXJlYyhkb3VibGUpOworSU1QT1JUIENPTlNUIGRvdWJsZSBTbGVlZl9jaW56X2V4cGQxX3UxMHB1
cmVjKGRvdWJsZSk7CitJTVBPUlQgQ09OU1QgZG91YmxlIFNsZWVmX3Bvd2QxX3UxMHB1cmVjKGRv
dWJsZSwgZG91YmxlKTsKK0lNUE9SVCBDT05TVCBkb3VibGUgU2xlZWZfY2luel9wb3dkMV91MTBw
dXJlYyhkb3VibGUsIGRvdWJsZSk7CitJTVBPUlQgQ09OU1QgZG91YmxlIFNsZWVmX3NpbmhkMV91
MTBwdXJlYyhkb3VibGUpOworSU1QT1JUIENPTlNUIGRvdWJsZSBTbGVlZl9jaW56X3NpbmhkMV91
MTBwdXJlYyhkb3VibGUpOworSU1QT1JUIENPTlNUIGRvdWJsZSBTbGVlZl9jb3NoZDFfdTEwcHVy
ZWMoZG91YmxlKTsKK0lNUE9SVCBDT05TVCBkb3VibGUgU2xlZWZfY2luel9jb3NoZDFfdTEwcHVy
ZWMoZG91YmxlKTsKK0lNUE9SVCBDT05TVCBkb3VibGUgU2xlZWZfdGFuaGQxX3UxMHB1cmVjKGRv
dWJsZSk7CitJTVBPUlQgQ09OU1QgZG91YmxlIFNsZWVmX2NpbnpfdGFuaGQxX3UxMHB1cmVjKGRv
dWJsZSk7CitJTVBPUlQgQ09OU1QgZG91YmxlIFNsZWVmX3NpbmhkMV91MzVwdXJlYyhkb3VibGUp
OworSU1QT1JUIENPTlNUIGRvdWJsZSBTbGVlZl9jaW56X3NpbmhkMV91MzVwdXJlYyhkb3VibGUp
OworSU1QT1JUIENPTlNUIGRvdWJsZSBTbGVlZl9jb3NoZDFfdTM1cHVyZWMoZG91YmxlKTsKK0lN
UE9SVCBDT05TVCBkb3VibGUgU2xlZWZfY2luel9jb3NoZDFfdTM1cHVyZWMoZG91YmxlKTsKK0lN
UE9SVCBDT05TVCBkb3VibGUgU2xlZWZfdGFuaGQxX3UzNXB1cmVjKGRvdWJsZSk7CitJTVBPUlQg
Q09OU1QgZG91YmxlIFNsZWVmX2NpbnpfdGFuaGQxX3UzNXB1cmVjKGRvdWJsZSk7CitJTVBPUlQg
Q09OU1QgZG91YmxlIFNsZWVmX2Zhc3RzaW5kMV91MzUwMHB1cmVjKGRvdWJsZSk7CitJTVBPUlQg
Q09OU1QgZG91YmxlIFNsZWVmX2NpbnpfZmFzdHNpbmQxX3UzNTAwcHVyZWMoZG91YmxlKTsKK0lN
UE9SVCBDT05TVCBkb3VibGUgU2xlZWZfZmFzdGNvc2QxX3UzNTAwcHVyZWMoZG91YmxlKTsKK0lN
UE9SVCBDT05TVCBkb3VibGUgU2xlZWZfY2luel9mYXN0Y29zZDFfdTM1MDBwdXJlYyhkb3VibGUp
OworSU1QT1JUIENPTlNUIGRvdWJsZSBTbGVlZl9mYXN0cG93ZDFfdTM1MDBwdXJlYyhkb3VibGUs
IGRvdWJsZSk7CitJTVBPUlQgQ09OU1QgZG91YmxlIFNsZWVmX2NpbnpfZmFzdHBvd2QxX3UzNTAw
cHVyZWMoZG91YmxlLCBkb3VibGUpOworSU1QT1JUIENPTlNUIGRvdWJsZSBTbGVlZl9hc2luaGQx
X3UxMHB1cmVjKGRvdWJsZSk7CitJTVBPUlQgQ09OU1QgZG91YmxlIFNsZWVmX2NpbnpfYXNpbmhk
MV91MTBwdXJlYyhkb3VibGUpOworSU1QT1JUIENPTlNUIGRvdWJsZSBTbGVlZl9hY29zaGQxX3Ux
MHB1cmVjKGRvdWJsZSk7CitJTVBPUlQgQ09OU1QgZG91YmxlIFNsZWVmX2NpbnpfYWNvc2hkMV91
MTBwdXJlYyhkb3VibGUpOworSU1QT1JUIENPTlNUIGRvdWJsZSBTbGVlZl9hdGFuaGQxX3UxMHB1
cmVjKGRvdWJsZSk7CitJTVBPUlQgQ09OU1QgZG91YmxlIFNsZWVmX2NpbnpfYXRhbmhkMV91MTBw
dXJlYyhkb3VibGUpOworSU1QT1JUIENPTlNUIGRvdWJsZSBTbGVlZl9leHAyZDFfdTEwcHVyZWMo
ZG91YmxlKTsKK0lNUE9SVCBDT05TVCBkb3VibGUgU2xlZWZfY2luel9leHAyZDFfdTEwcHVyZWMo
ZG91YmxlKTsKK0lNUE9SVCBDT05TVCBkb3VibGUgU2xlZWZfZXhwMmQxX3UzNXB1cmVjKGRvdWJs
ZSk7CitJTVBPUlQgQ09OU1QgZG91YmxlIFNsZWVmX2NpbnpfZXhwMmQxX3UzNXB1cmVjKGRvdWJs
ZSk7CitJTVBPUlQgQ09OU1QgZG91YmxlIFNsZWVmX2V4cDEwZDFfdTEwcHVyZWMoZG91YmxlKTsK
K0lNUE9SVCBDT05TVCBkb3VibGUgU2xlZWZfY2luel9leHAxMGQxX3UxMHB1cmVjKGRvdWJsZSk7
CitJTVBPUlQgQ09OU1QgZG91YmxlIFNsZWVmX2V4cDEwZDFfdTM1cHVyZWMoZG91YmxlKTsKK0lN
UE9SVCBDT05TVCBkb3VibGUgU2xlZWZfY2luel9leHAxMGQxX3UzNXB1cmVjKGRvdWJsZSk7CitJ
TVBPUlQgQ09OU1QgZG91YmxlIFNsZWVmX2V4cG0xZDFfdTEwcHVyZWMoZG91YmxlKTsKK0lNUE9S
VCBDT05TVCBkb3VibGUgU2xlZWZfY2luel9leHBtMWQxX3UxMHB1cmVjKGRvdWJsZSk7CitJTVBP
UlQgQ09OU1QgZG91YmxlIFNsZWVmX2xvZzEwZDFfdTEwcHVyZWMoZG91YmxlKTsKK0lNUE9SVCBD
T05TVCBkb3VibGUgU2xlZWZfY2luel9sb2cxMGQxX3UxMHB1cmVjKGRvdWJsZSk7CitJTVBPUlQg
Q09OU1QgZG91YmxlIFNsZWVmX2xvZzJkMV91MTBwdXJlYyhkb3VibGUpOworSU1QT1JUIENPTlNU
IGRvdWJsZSBTbGVlZl9jaW56X2xvZzJkMV91MTBwdXJlYyhkb3VibGUpOworSU1QT1JUIENPTlNU
IGRvdWJsZSBTbGVlZl9sb2cyZDFfdTM1cHVyZWMoZG91YmxlKTsKK0lNUE9SVCBDT05TVCBkb3Vi
bGUgU2xlZWZfY2luel9sb2cyZDFfdTM1cHVyZWMoZG91YmxlKTsKK0lNUE9SVCBDT05TVCBkb3Vi
bGUgU2xlZWZfbG9nMXBkMV91MTBwdXJlYyhkb3VibGUpOworSU1QT1JUIENPTlNUIGRvdWJsZSBT
bGVlZl9jaW56X2xvZzFwZDFfdTEwcHVyZWMoZG91YmxlKTsKK0lNUE9SVCBDT05TVCBTbGVlZl9k
b3VibGVfMiBTbGVlZl9zaW5jb3NwaWQxX3UwNXB1cmVjKGRvdWJsZSk7CitJTVBPUlQgQ09OU1Qg
U2xlZWZfZG91YmxlXzIgU2xlZWZfY2luel9zaW5jb3NwaWQxX3UwNXB1cmVjKGRvdWJsZSk7CitJ
TVBPUlQgQ09OU1QgU2xlZWZfZG91YmxlXzIgU2xlZWZfc2luY29zcGlkMV91MzVwdXJlYyhkb3Vi
bGUpOworSU1QT1JUIENPTlNUIFNsZWVmX2RvdWJsZV8yIFNsZWVmX2Npbnpfc2luY29zcGlkMV91
MzVwdXJlYyhkb3VibGUpOworSU1QT1JUIENPTlNUIGRvdWJsZSBTbGVlZl9zaW5waWQxX3UwNXB1
cmVjKGRvdWJsZSk7CitJTVBPUlQgQ09OU1QgZG91YmxlIFNsZWVmX2Npbnpfc2lucGlkMV91MDVw
dXJlYyhkb3VibGUpOworSU1QT1JUIENPTlNUIGRvdWJsZSBTbGVlZl9jb3NwaWQxX3UwNXB1cmVj
KGRvdWJsZSk7CitJTVBPUlQgQ09OU1QgZG91YmxlIFNsZWVmX2NpbnpfY29zcGlkMV91MDVwdXJl
Yyhkb3VibGUpOworSU1QT1JUIENPTlNUIGRvdWJsZSBTbGVlZl9sZGV4cGQxX3B1cmVjKGRvdWJs
ZSwgaW50MzJfdCk7CitJTVBPUlQgQ09OU1QgZG91YmxlIFNsZWVmX2NpbnpfbGRleHBkMV9wdXJl
Yyhkb3VibGUsIGludDMyX3QpOworSU1QT1JUIENPTlNUIGludDMyX3QgU2xlZWZfaWxvZ2JkMV9w
dXJlYyhkb3VibGUpOworSU1QT1JUIENPTlNUIGludDMyX3QgU2xlZWZfY2luel9pbG9nYmQxX3B1
cmVjKGRvdWJsZSk7CitJTVBPUlQgQ09OU1QgZG91YmxlIFNsZWVmX2ZtYWQxX3B1cmVjKGRvdWJs
ZSwgZG91YmxlLCBkb3VibGUpOworSU1QT1JUIENPTlNUIGRvdWJsZSBTbGVlZl9jaW56X2ZtYWQx
X3B1cmVjKGRvdWJsZSwgZG91YmxlLCBkb3VibGUpOworSU1QT1JUIENPTlNUIGRvdWJsZSBTbGVl
Zl9zcXJ0ZDFfcHVyZWMoZG91YmxlKTsKK0lNUE9SVCBDT05TVCBkb3VibGUgU2xlZWZfY2luel9z
cXJ0ZDFfcHVyZWMoZG91YmxlKTsKK0lNUE9SVCBDT05TVCBkb3VibGUgU2xlZWZfc3FydGQxX3Uw
NXB1cmVjKGRvdWJsZSk7CitJTVBPUlQgQ09OU1QgZG91YmxlIFNsZWVmX2Npbnpfc3FydGQxX3Uw
NXB1cmVjKGRvdWJsZSk7CitJTVBPUlQgQ09OU1QgZG91YmxlIFNsZWVmX3NxcnRkMV91MzVwdXJl
Yyhkb3VibGUpOworSU1QT1JUIENPTlNUIGRvdWJsZSBTbGVlZl9jaW56X3NxcnRkMV91MzVwdXJl
Yyhkb3VibGUpOworSU1QT1JUIENPTlNUIGRvdWJsZSBTbGVlZl9oeXBvdGQxX3UwNXB1cmVjKGRv
dWJsZSwgZG91YmxlKTsKK0lNUE9SVCBDT05TVCBkb3VibGUgU2xlZWZfY2luel9oeXBvdGQxX3Uw
NXB1cmVjKGRvdWJsZSwgZG91YmxlKTsKK0lNUE9SVCBDT05TVCBkb3VibGUgU2xlZWZfaHlwb3Rk
MV91MzVwdXJlYyhkb3VibGUsIGRvdWJsZSk7CitJTVBPUlQgQ09OU1QgZG91YmxlIFNsZWVmX2Np
bnpfaHlwb3RkMV91MzVwdXJlYyhkb3VibGUsIGRvdWJsZSk7CitJTVBPUlQgQ09OU1QgZG91Ymxl
IFNsZWVmX2ZhYnNkMV9wdXJlYyhkb3VibGUpOworSU1QT1JUIENPTlNUIGRvdWJsZSBTbGVlZl9j
aW56X2ZhYnNkMV9wdXJlYyhkb3VibGUpOworSU1QT1JUIENPTlNUIGRvdWJsZSBTbGVlZl9jb3B5
c2lnbmQxX3B1cmVjKGRvdWJsZSwgZG91YmxlKTsKK0lNUE9SVCBDT05TVCBkb3VibGUgU2xlZWZf
Y2luel9jb3B5c2lnbmQxX3B1cmVjKGRvdWJsZSwgZG91YmxlKTsKK0lNUE9SVCBDT05TVCBkb3Vi
bGUgU2xlZWZfZm1heGQxX3B1cmVjKGRvdWJsZSwgZG91YmxlKTsKK0lNUE9SVCBDT05TVCBkb3Vi
bGUgU2xlZWZfY2luel9mbWF4ZDFfcHVyZWMoZG91YmxlLCBkb3VibGUpOworSU1QT1JUIENPTlNU
IGRvdWJsZSBTbGVlZl9mbWluZDFfcHVyZWMoZG91YmxlLCBkb3VibGUpOworSU1QT1JUIENPTlNU
IGRvdWJsZSBTbGVlZl9jaW56X2ZtaW5kMV9wdXJlYyhkb3VibGUsIGRvdWJsZSk7CitJTVBPUlQg
Q09OU1QgZG91YmxlIFNsZWVmX2ZkaW1kMV9wdXJlYyhkb3VibGUsIGRvdWJsZSk7CitJTVBPUlQg
Q09OU1QgZG91YmxlIFNsZWVmX2NpbnpfZmRpbWQxX3B1cmVjKGRvdWJsZSwgZG91YmxlKTsKK0lN
UE9SVCBDT05TVCBkb3VibGUgU2xlZWZfdHJ1bmNkMV9wdXJlYyhkb3VibGUpOworSU1QT1JUIENP
TlNUIGRvdWJsZSBTbGVlZl9jaW56X3RydW5jZDFfcHVyZWMoZG91YmxlKTsKK0lNUE9SVCBDT05T
VCBkb3VibGUgU2xlZWZfZmxvb3JkMV9wdXJlYyhkb3VibGUpOworSU1QT1JUIENPTlNUIGRvdWJs
ZSBTbGVlZl9jaW56X2Zsb29yZDFfcHVyZWMoZG91YmxlKTsKK0lNUE9SVCBDT05TVCBkb3VibGUg
U2xlZWZfY2VpbGQxX3B1cmVjKGRvdWJsZSk7CitJTVBPUlQgQ09OU1QgZG91YmxlIFNsZWVmX2Np
bnpfY2VpbGQxX3B1cmVjKGRvdWJsZSk7CitJTVBPUlQgQ09OU1QgZG91YmxlIFNsZWVmX3JvdW5k
ZDFfcHVyZWMoZG91YmxlKTsKK0lNUE9SVCBDT05TVCBkb3VibGUgU2xlZWZfY2luel9yb3VuZGQx
X3B1cmVjKGRvdWJsZSk7CitJTVBPUlQgQ09OU1QgZG91YmxlIFNsZWVmX3JpbnRkMV9wdXJlYyhk
b3VibGUpOworSU1QT1JUIENPTlNUIGRvdWJsZSBTbGVlZl9jaW56X3JpbnRkMV9wdXJlYyhkb3Vi
bGUpOworSU1QT1JUIENPTlNUIGRvdWJsZSBTbGVlZl9uZXh0YWZ0ZXJkMV9wdXJlYyhkb3VibGUs
IGRvdWJsZSk7CitJTVBPUlQgQ09OU1QgZG91YmxlIFNsZWVmX2NpbnpfbmV4dGFmdGVyZDFfcHVy
ZWMoZG91YmxlLCBkb3VibGUpOworSU1QT1JUIENPTlNUIGRvdWJsZSBTbGVlZl9mcmZyZXhwZDFf
cHVyZWMoZG91YmxlKTsKK0lNUE9SVCBDT05TVCBkb3VibGUgU2xlZWZfY2luel9mcmZyZXhwZDFf
cHVyZWMoZG91YmxlKTsKK0lNUE9SVCBDT05TVCBpbnQzMl90IFNsZWVmX2V4cGZyZXhwZDFfcHVy
ZWMoZG91YmxlKTsKK0lNUE9SVCBDT05TVCBpbnQzMl90IFNsZWVmX2NpbnpfZXhwZnJleHBkMV9w
dXJlYyhkb3VibGUpOworSU1QT1JUIENPTlNUIGRvdWJsZSBTbGVlZl9mbW9kZDFfcHVyZWMoZG91
YmxlLCBkb3VibGUpOworSU1QT1JUIENPTlNUIGRvdWJsZSBTbGVlZl9jaW56X2Ztb2RkMV9wdXJl
Yyhkb3VibGUsIGRvdWJsZSk7CitJTVBPUlQgQ09OU1QgU2xlZWZfZG91YmxlXzIgU2xlZWZfbW9k
ZmQxX3B1cmVjKGRvdWJsZSk7CitJTVBPUlQgQ09OU1QgU2xlZWZfZG91YmxlXzIgU2xlZWZfY2lu
el9tb2RmZDFfcHVyZWMoZG91YmxlKTsKK0lNUE9SVCBDT05TVCBkb3VibGUgU2xlZWZfbGdhbW1h
ZDFfdTEwcHVyZWMoZG91YmxlKTsKK0lNUE9SVCBDT05TVCBkb3VibGUgU2xlZWZfY2luel9sZ2Ft
bWFkMV91MTBwdXJlYyhkb3VibGUpOworSU1QT1JUIENPTlNUIGRvdWJsZSBTbGVlZl90Z2FtbWFk
MV91MTBwdXJlYyhkb3VibGUpOworSU1QT1JUIENPTlNUIGRvdWJsZSBTbGVlZl9jaW56X3RnYW1t
YWQxX3UxMHB1cmVjKGRvdWJsZSk7CitJTVBPUlQgQ09OU1QgZG91YmxlIFNsZWVmX2VyZmQxX3Ux
MHB1cmVjKGRvdWJsZSk7CitJTVBPUlQgQ09OU1QgZG91YmxlIFNsZWVmX2NpbnpfZXJmZDFfdTEw
cHVyZWMoZG91YmxlKTsKK0lNUE9SVCBDT05TVCBkb3VibGUgU2xlZWZfZXJmY2QxX3UxNXB1cmVj
KGRvdWJsZSk7CitJTVBPUlQgQ09OU1QgZG91YmxlIFNsZWVmX2NpbnpfZXJmY2QxX3UxNXB1cmVj
KGRvdWJsZSk7CitJTVBPUlQgQ09OU1QgaW50IFNsZWVmX2dldEludGQxX3B1cmVjKGludCk7CitJ
TVBPUlQgQ09OU1Qgdm9pZCAqU2xlZWZfZ2V0UHRyZDFfcHVyZWMoaW50KTsKKworI2lmbmRlZiBT
bGVlZl9mbG9hdF8yX0RFRklORUQKK3R5cGVkZWYgU1RSVUNUX0tFWVdPUkRfX19TVERDX18gewor
ICBmbG9hdCB4LCB5OworfSBTbGVlZl9mbG9hdF8yOworI2RlZmluZSBTbGVlZl9mbG9hdF8yX0RF
RklORUQKKyNlbmRpZgorCitJTVBPUlQgQ09OU1QgZmxvYXQgU2xlZWZfc2luZjFfdTM1cHVyZWMo
ZmxvYXQpOworSU1QT1JUIENPTlNUIGZsb2F0IFNsZWVmX2Npbnpfc2luZjFfdTM1cHVyZWMoZmxv
YXQpOworSU1QT1JUIENPTlNUIGZsb2F0IFNsZWVmX2Nvc2YxX3UzNXB1cmVjKGZsb2F0KTsKK0lN
UE9SVCBDT05TVCBmbG9hdCBTbGVlZl9jaW56X2Nvc2YxX3UzNXB1cmVjKGZsb2F0KTsKK0lNUE9S
VCBDT05TVCBTbGVlZl9mbG9hdF8yIFNsZWVmX3NpbmNvc2YxX3UzNXB1cmVjKGZsb2F0KTsKK0lN
UE9SVCBDT05TVCBTbGVlZl9mbG9hdF8yIFNsZWVmX2Npbnpfc2luY29zZjFfdTM1cHVyZWMoZmxv
YXQpOworSU1QT1JUIENPTlNUIGZsb2F0IFNsZWVmX3RhbmYxX3UzNXB1cmVjKGZsb2F0KTsKK0lN
UE9SVCBDT05TVCBmbG9hdCBTbGVlZl9jaW56X3RhbmYxX3UzNXB1cmVjKGZsb2F0KTsKK0lNUE9S
VCBDT05TVCBmbG9hdCBTbGVlZl9hc2luZjFfdTM1cHVyZWMoZmxvYXQpOworSU1QT1JUIENPTlNU
IGZsb2F0IFNsZWVmX2NpbnpfYXNpbmYxX3UzNXB1cmVjKGZsb2F0KTsKK0lNUE9SVCBDT05TVCBm
bG9hdCBTbGVlZl9hY29zZjFfdTM1cHVyZWMoZmxvYXQpOworSU1QT1JUIENPTlNUIGZsb2F0IFNs
ZWVmX2NpbnpfYWNvc2YxX3UzNXB1cmVjKGZsb2F0KTsKK0lNUE9SVCBDT05TVCBmbG9hdCBTbGVl
Zl9hdGFuZjFfdTM1cHVyZWMoZmxvYXQpOworSU1QT1JUIENPTlNUIGZsb2F0IFNsZWVmX2Npbnpf
YXRhbmYxX3UzNXB1cmVjKGZsb2F0KTsKK0lNUE9SVCBDT05TVCBmbG9hdCBTbGVlZl9hdGFuMmYx
X3UzNXB1cmVjKGZsb2F0LCBmbG9hdCk7CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xlZWZfY2luel9h
dGFuMmYxX3UzNXB1cmVjKGZsb2F0LCBmbG9hdCk7CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xlZWZf
bG9nZjFfdTM1cHVyZWMoZmxvYXQpOworSU1QT1JUIENPTlNUIGZsb2F0IFNsZWVmX2NpbnpfbG9n
ZjFfdTM1cHVyZWMoZmxvYXQpOworSU1QT1JUIENPTlNUIGZsb2F0IFNsZWVmX2NicnRmMV91MzVw
dXJlYyhmbG9hdCk7CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xlZWZfY2luel9jYnJ0ZjFfdTM1cHVy
ZWMoZmxvYXQpOworSU1QT1JUIENPTlNUIGZsb2F0IFNsZWVmX3NpbmYxX3UxMHB1cmVjKGZsb2F0
KTsKK0lNUE9SVCBDT05TVCBmbG9hdCBTbGVlZl9jaW56X3NpbmYxX3UxMHB1cmVjKGZsb2F0KTsK
K0lNUE9SVCBDT05TVCBmbG9hdCBTbGVlZl9jb3NmMV91MTBwdXJlYyhmbG9hdCk7CitJTVBPUlQg
Q09OU1QgZmxvYXQgU2xlZWZfY2luel9jb3NmMV91MTBwdXJlYyhmbG9hdCk7CitJTVBPUlQgQ09O
U1QgU2xlZWZfZmxvYXRfMiBTbGVlZl9zaW5jb3NmMV91MTBwdXJlYyhmbG9hdCk7CitJTVBPUlQg
Q09OU1QgU2xlZWZfZmxvYXRfMiBTbGVlZl9jaW56X3NpbmNvc2YxX3UxMHB1cmVjKGZsb2F0KTsK
K0lNUE9SVCBDT05TVCBmbG9hdCBTbGVlZl90YW5mMV91MTBwdXJlYyhmbG9hdCk7CitJTVBPUlQg
Q09OU1QgZmxvYXQgU2xlZWZfY2luel90YW5mMV91MTBwdXJlYyhmbG9hdCk7CitJTVBPUlQgQ09O
U1QgZmxvYXQgU2xlZWZfYXNpbmYxX3UxMHB1cmVjKGZsb2F0KTsKK0lNUE9SVCBDT05TVCBmbG9h
dCBTbGVlZl9jaW56X2FzaW5mMV91MTBwdXJlYyhmbG9hdCk7CitJTVBPUlQgQ09OU1QgZmxvYXQg
U2xlZWZfYWNvc2YxX3UxMHB1cmVjKGZsb2F0KTsKK0lNUE9SVCBDT05TVCBmbG9hdCBTbGVlZl9j
aW56X2Fjb3NmMV91MTBwdXJlYyhmbG9hdCk7CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xlZWZfYXRh
bmYxX3UxMHB1cmVjKGZsb2F0KTsKK0lNUE9SVCBDT05TVCBmbG9hdCBTbGVlZl9jaW56X2F0YW5m
MV91MTBwdXJlYyhmbG9hdCk7CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xlZWZfYXRhbjJmMV91MTBw
dXJlYyhmbG9hdCwgZmxvYXQpOworSU1QT1JUIENPTlNUIGZsb2F0IFNsZWVmX2NpbnpfYXRhbjJm
MV91MTBwdXJlYyhmbG9hdCwgZmxvYXQpOworSU1QT1JUIENPTlNUIGZsb2F0IFNsZWVmX2xvZ2Yx
X3UxMHB1cmVjKGZsb2F0KTsKK0lNUE9SVCBDT05TVCBmbG9hdCBTbGVlZl9jaW56X2xvZ2YxX3Ux
MHB1cmVjKGZsb2F0KTsKK0lNUE9SVCBDT05TVCBmbG9hdCBTbGVlZl9jYnJ0ZjFfdTEwcHVyZWMo
ZmxvYXQpOworSU1QT1JUIENPTlNUIGZsb2F0IFNsZWVmX2NpbnpfY2JydGYxX3UxMHB1cmVjKGZs
b2F0KTsKK0lNUE9SVCBDT05TVCBmbG9hdCBTbGVlZl9leHBmMV91MTBwdXJlYyhmbG9hdCk7CitJ
TVBPUlQgQ09OU1QgZmxvYXQgU2xlZWZfY2luel9leHBmMV91MTBwdXJlYyhmbG9hdCk7CitJTVBP
UlQgQ09OU1QgZmxvYXQgU2xlZWZfcG93ZjFfdTEwcHVyZWMoZmxvYXQsIGZsb2F0KTsKK0lNUE9S
VCBDT05TVCBmbG9hdCBTbGVlZl9jaW56X3Bvd2YxX3UxMHB1cmVjKGZsb2F0LCBmbG9hdCk7CitJ
TVBPUlQgQ09OU1QgZmxvYXQgU2xlZWZfc2luaGYxX3UxMHB1cmVjKGZsb2F0KTsKK0lNUE9SVCBD
T05TVCBmbG9hdCBTbGVlZl9jaW56X3NpbmhmMV91MTBwdXJlYyhmbG9hdCk7CitJTVBPUlQgQ09O
U1QgZmxvYXQgU2xlZWZfY29zaGYxX3UxMHB1cmVjKGZsb2F0KTsKK0lNUE9SVCBDT05TVCBmbG9h
dCBTbGVlZl9jaW56X2Nvc2hmMV91MTBwdXJlYyhmbG9hdCk7CitJTVBPUlQgQ09OU1QgZmxvYXQg
U2xlZWZfdGFuaGYxX3UxMHB1cmVjKGZsb2F0KTsKK0lNUE9SVCBDT05TVCBmbG9hdCBTbGVlZl9j
aW56X3RhbmhmMV91MTBwdXJlYyhmbG9hdCk7CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xlZWZfc2lu
aGYxX3UzNXB1cmVjKGZsb2F0KTsKK0lNUE9SVCBDT05TVCBmbG9hdCBTbGVlZl9jaW56X3Npbmhm
MV91MzVwdXJlYyhmbG9hdCk7CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xlZWZfY29zaGYxX3UzNXB1
cmVjKGZsb2F0KTsKK0lNUE9SVCBDT05TVCBmbG9hdCBTbGVlZl9jaW56X2Nvc2hmMV91MzVwdXJl
YyhmbG9hdCk7CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xlZWZfdGFuaGYxX3UzNXB1cmVjKGZsb2F0
KTsKK0lNUE9SVCBDT05TVCBmbG9hdCBTbGVlZl9jaW56X3RhbmhmMV91MzVwdXJlYyhmbG9hdCk7
CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xlZWZfZmFzdHNpbmYxX3UzNTAwcHVyZWMoZmxvYXQpOwor
SU1QT1JUIENPTlNUIGZsb2F0IFNsZWVmX2NpbnpfZmFzdHNpbmYxX3UzNTAwcHVyZWMoZmxvYXQp
OworSU1QT1JUIENPTlNUIGZsb2F0IFNsZWVmX2Zhc3Rjb3NmMV91MzUwMHB1cmVjKGZsb2F0KTsK
K0lNUE9SVCBDT05TVCBmbG9hdCBTbGVlZl9jaW56X2Zhc3Rjb3NmMV91MzUwMHB1cmVjKGZsb2F0
KTsKK0lNUE9SVCBDT05TVCBmbG9hdCBTbGVlZl9mYXN0cG93ZjFfdTM1MDBwdXJlYyhmbG9hdCwg
ZmxvYXQpOworSU1QT1JUIENPTlNUIGZsb2F0IFNsZWVmX2NpbnpfZmFzdHBvd2YxX3UzNTAwcHVy
ZWMoZmxvYXQsIGZsb2F0KTsKK0lNUE9SVCBDT05TVCBmbG9hdCBTbGVlZl9hc2luaGYxX3UxMHB1
cmVjKGZsb2F0KTsKK0lNUE9SVCBDT05TVCBmbG9hdCBTbGVlZl9jaW56X2FzaW5oZjFfdTEwcHVy
ZWMoZmxvYXQpOworSU1QT1JUIENPTlNUIGZsb2F0IFNsZWVmX2Fjb3NoZjFfdTEwcHVyZWMoZmxv
YXQpOworSU1QT1JUIENPTlNUIGZsb2F0IFNsZWVmX2NpbnpfYWNvc2hmMV91MTBwdXJlYyhmbG9h
dCk7CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xlZWZfYXRhbmhmMV91MTBwdXJlYyhmbG9hdCk7CitJ
TVBPUlQgQ09OU1QgZmxvYXQgU2xlZWZfY2luel9hdGFuaGYxX3UxMHB1cmVjKGZsb2F0KTsKK0lN
UE9SVCBDT05TVCBmbG9hdCBTbGVlZl9leHAyZjFfdTEwcHVyZWMoZmxvYXQpOworSU1QT1JUIENP
TlNUIGZsb2F0IFNsZWVmX2NpbnpfZXhwMmYxX3UxMHB1cmVjKGZsb2F0KTsKK0lNUE9SVCBDT05T
VCBmbG9hdCBTbGVlZl9leHAyZjFfdTM1cHVyZWMoZmxvYXQpOworSU1QT1JUIENPTlNUIGZsb2F0
IFNsZWVmX2NpbnpfZXhwMmYxX3UzNXB1cmVjKGZsb2F0KTsKK0lNUE9SVCBDT05TVCBmbG9hdCBT
bGVlZl9leHAxMGYxX3UxMHB1cmVjKGZsb2F0KTsKK0lNUE9SVCBDT05TVCBmbG9hdCBTbGVlZl9j
aW56X2V4cDEwZjFfdTEwcHVyZWMoZmxvYXQpOworSU1QT1JUIENPTlNUIGZsb2F0IFNsZWVmX2V4
cDEwZjFfdTM1cHVyZWMoZmxvYXQpOworSU1QT1JUIENPTlNUIGZsb2F0IFNsZWVmX2NpbnpfZXhw
MTBmMV91MzVwdXJlYyhmbG9hdCk7CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xlZWZfZXhwbTFmMV91
MTBwdXJlYyhmbG9hdCk7CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xlZWZfY2luel9leHBtMWYxX3Ux
MHB1cmVjKGZsb2F0KTsKK0lNUE9SVCBDT05TVCBmbG9hdCBTbGVlZl9sb2cxMGYxX3UxMHB1cmVj
KGZsb2F0KTsKK0lNUE9SVCBDT05TVCBmbG9hdCBTbGVlZl9jaW56X2xvZzEwZjFfdTEwcHVyZWMo
ZmxvYXQpOworSU1QT1JUIENPTlNUIGZsb2F0IFNsZWVmX2xvZzJmMV91MTBwdXJlYyhmbG9hdCk7
CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xlZWZfY2luel9sb2cyZjFfdTEwcHVyZWMoZmxvYXQpOwor
SU1QT1JUIENPTlNUIGZsb2F0IFNsZWVmX2xvZzJmMV91MzVwdXJlYyhmbG9hdCk7CitJTVBPUlQg
Q09OU1QgZmxvYXQgU2xlZWZfY2luel9sb2cyZjFfdTM1cHVyZWMoZmxvYXQpOworSU1QT1JUIENP
TlNUIGZsb2F0IFNsZWVmX2xvZzFwZjFfdTEwcHVyZWMoZmxvYXQpOworSU1QT1JUIENPTlNUIGZs
b2F0IFNsZWVmX2NpbnpfbG9nMXBmMV91MTBwdXJlYyhmbG9hdCk7CitJTVBPUlQgQ09OU1QgU2xl
ZWZfZmxvYXRfMiBTbGVlZl9zaW5jb3NwaWYxX3UwNXB1cmVjKGZsb2F0KTsKK0lNUE9SVCBDT05T
VCBTbGVlZl9mbG9hdF8yIFNsZWVmX2Npbnpfc2luY29zcGlmMV91MDVwdXJlYyhmbG9hdCk7CitJ
TVBPUlQgQ09OU1QgU2xlZWZfZmxvYXRfMiBTbGVlZl9zaW5jb3NwaWYxX3UzNXB1cmVjKGZsb2F0
KTsKK0lNUE9SVCBDT05TVCBTbGVlZl9mbG9hdF8yIFNsZWVmX2Npbnpfc2luY29zcGlmMV91MzVw
dXJlYyhmbG9hdCk7CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xlZWZfc2lucGlmMV91MDVwdXJlYyhm
bG9hdCk7CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xlZWZfY2luel9zaW5waWYxX3UwNXB1cmVjKGZs
b2F0KTsKK0lNUE9SVCBDT05TVCBmbG9hdCBTbGVlZl9jb3NwaWYxX3UwNXB1cmVjKGZsb2F0KTsK
K0lNUE9SVCBDT05TVCBmbG9hdCBTbGVlZl9jaW56X2Nvc3BpZjFfdTA1cHVyZWMoZmxvYXQpOwor
SU1QT1JUIENPTlNUIGZsb2F0IFNsZWVmX2ZtYWYxX3B1cmVjKGZsb2F0LCBmbG9hdCwgZmxvYXQp
OworSU1QT1JUIENPTlNUIGZsb2F0IFNsZWVmX2NpbnpfZm1hZjFfcHVyZWMoZmxvYXQsIGZsb2F0
LCBmbG9hdCk7CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xlZWZfc3FydGYxX3B1cmVjKGZsb2F0KTsK
K0lNUE9SVCBDT05TVCBmbG9hdCBTbGVlZl9jaW56X3NxcnRmMV9wdXJlYyhmbG9hdCk7CitJTVBP
UlQgQ09OU1QgZmxvYXQgU2xlZWZfc3FydGYxX3UwNXB1cmVjKGZsb2F0KTsKK0lNUE9SVCBDT05T
VCBmbG9hdCBTbGVlZl9jaW56X3NxcnRmMV91MDVwdXJlYyhmbG9hdCk7CitJTVBPUlQgQ09OU1Qg
ZmxvYXQgU2xlZWZfc3FydGYxX3UzNXB1cmVjKGZsb2F0KTsKK0lNUE9SVCBDT05TVCBmbG9hdCBT
bGVlZl9jaW56X3NxcnRmMV91MzVwdXJlYyhmbG9hdCk7CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xl
ZWZfaHlwb3RmMV91MDVwdXJlYyhmbG9hdCwgZmxvYXQpOworSU1QT1JUIENPTlNUIGZsb2F0IFNs
ZWVmX2NpbnpfaHlwb3RmMV91MDVwdXJlYyhmbG9hdCwgZmxvYXQpOworSU1QT1JUIENPTlNUIGZs
b2F0IFNsZWVmX2h5cG90ZjFfdTM1cHVyZWMoZmxvYXQsIGZsb2F0KTsKK0lNUE9SVCBDT05TVCBm
bG9hdCBTbGVlZl9jaW56X2h5cG90ZjFfdTM1cHVyZWMoZmxvYXQsIGZsb2F0KTsKK0lNUE9SVCBD
T05TVCBmbG9hdCBTbGVlZl9mYWJzZjFfcHVyZWMoZmxvYXQpOworSU1QT1JUIENPTlNUIGZsb2F0
IFNsZWVmX2NpbnpfZmFic2YxX3B1cmVjKGZsb2F0KTsKK0lNUE9SVCBDT05TVCBmbG9hdCBTbGVl
Zl9jb3B5c2lnbmYxX3B1cmVjKGZsb2F0LCBmbG9hdCk7CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xl
ZWZfY2luel9jb3B5c2lnbmYxX3B1cmVjKGZsb2F0LCBmbG9hdCk7CitJTVBPUlQgQ09OU1QgZmxv
YXQgU2xlZWZfZm1heGYxX3B1cmVjKGZsb2F0LCBmbG9hdCk7CitJTVBPUlQgQ09OU1QgZmxvYXQg
U2xlZWZfY2luel9mbWF4ZjFfcHVyZWMoZmxvYXQsIGZsb2F0KTsKK0lNUE9SVCBDT05TVCBmbG9h
dCBTbGVlZl9mbWluZjFfcHVyZWMoZmxvYXQsIGZsb2F0KTsKK0lNUE9SVCBDT05TVCBmbG9hdCBT
bGVlZl9jaW56X2ZtaW5mMV9wdXJlYyhmbG9hdCwgZmxvYXQpOworSU1QT1JUIENPTlNUIGZsb2F0
IFNsZWVmX2ZkaW1mMV9wdXJlYyhmbG9hdCwgZmxvYXQpOworSU1QT1JUIENPTlNUIGZsb2F0IFNs
ZWVmX2NpbnpfZmRpbWYxX3B1cmVjKGZsb2F0LCBmbG9hdCk7CitJTVBPUlQgQ09OU1QgZmxvYXQg
U2xlZWZfdHJ1bmNmMV9wdXJlYyhmbG9hdCk7CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xlZWZfY2lu
el90cnVuY2YxX3B1cmVjKGZsb2F0KTsKK0lNUE9SVCBDT05TVCBmbG9hdCBTbGVlZl9mbG9vcmYx
X3B1cmVjKGZsb2F0KTsKK0lNUE9SVCBDT05TVCBmbG9hdCBTbGVlZl9jaW56X2Zsb29yZjFfcHVy
ZWMoZmxvYXQpOworSU1QT1JUIENPTlNUIGZsb2F0IFNsZWVmX2NlaWxmMV9wdXJlYyhmbG9hdCk7
CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xlZWZfY2luel9jZWlsZjFfcHVyZWMoZmxvYXQpOworSU1Q
T1JUIENPTlNUIGZsb2F0IFNsZWVmX3JvdW5kZjFfcHVyZWMoZmxvYXQpOworSU1QT1JUIENPTlNU
IGZsb2F0IFNsZWVmX2Npbnpfcm91bmRmMV9wdXJlYyhmbG9hdCk7CitJTVBPUlQgQ09OU1QgZmxv
YXQgU2xlZWZfcmludGYxX3B1cmVjKGZsb2F0KTsKK0lNUE9SVCBDT05TVCBmbG9hdCBTbGVlZl9j
aW56X3JpbnRmMV9wdXJlYyhmbG9hdCk7CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xlZWZfbmV4dGFm
dGVyZjFfcHVyZWMoZmxvYXQsIGZsb2F0KTsKK0lNUE9SVCBDT05TVCBmbG9hdCBTbGVlZl9jaW56
X25leHRhZnRlcmYxX3B1cmVjKGZsb2F0LCBmbG9hdCk7CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xl
ZWZfZnJmcmV4cGYxX3B1cmVjKGZsb2F0KTsKK0lNUE9SVCBDT05TVCBmbG9hdCBTbGVlZl9jaW56
X2ZyZnJleHBmMV9wdXJlYyhmbG9hdCk7CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xlZWZfZm1vZGYx
X3B1cmVjKGZsb2F0LCBmbG9hdCk7CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xlZWZfY2luel9mbW9k
ZjFfcHVyZWMoZmxvYXQsIGZsb2F0KTsKK0lNUE9SVCBDT05TVCBTbGVlZl9mbG9hdF8yIFNsZWVm
X21vZGZmMV9wdXJlYyhmbG9hdCk7CitJTVBPUlQgQ09OU1QgU2xlZWZfZmxvYXRfMiBTbGVlZl9j
aW56X21vZGZmMV9wdXJlYyhmbG9hdCk7CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xlZWZfbGdhbW1h
ZjFfdTEwcHVyZWMoZmxvYXQpOworSU1QT1JUIENPTlNUIGZsb2F0IFNsZWVmX2NpbnpfbGdhbW1h
ZjFfdTEwcHVyZWMoZmxvYXQpOworSU1QT1JUIENPTlNUIGZsb2F0IFNsZWVmX3RnYW1tYWYxX3Ux
MHB1cmVjKGZsb2F0KTsKK0lNUE9SVCBDT05TVCBmbG9hdCBTbGVlZl9jaW56X3RnYW1tYWYxX3Ux
MHB1cmVjKGZsb2F0KTsKK0lNUE9SVCBDT05TVCBmbG9hdCBTbGVlZl9lcmZmMV91MTBwdXJlYyhm
bG9hdCk7CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xlZWZfY2luel9lcmZmMV91MTBwdXJlYyhmbG9h
dCk7CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xlZWZfZXJmY2YxX3UxNXB1cmVjKGZsb2F0KTsKK0lN
UE9SVCBDT05TVCBmbG9hdCBTbGVlZl9jaW56X2VyZmNmMV91MTVwdXJlYyhmbG9hdCk7CitJTVBP
UlQgQ09OU1QgaW50IFNsZWVmX2dldEludGYxX3B1cmVjKGludCk7CitJTVBPUlQgQ09OU1QgaW50
IFNsZWVmX2NpbnpfZ2V0SW50ZjFfcHVyZWMoaW50KTsKK0lNUE9SVCBDT05TVCB2b2lkICpTbGVl
Zl9nZXRQdHJmMV9wdXJlYyhpbnQpOworSU1QT1JUIENPTlNUIHZvaWQgKlNsZWVmX2NpbnpfZ2V0
UHRyZjFfcHVyZWMoaW50KTsKKyNlbmRpZgorI2lmZGVmIEZQX0ZBU1RfRk1BCisjZGVmaW5lIFNU
UlVDVF9LRVlXT1JEX0ZQX0ZBU1RfRk1BIHN0cnVjdAorCisjaWZuZGVmIFNsZWVmX2RvdWJsZV8y
X0RFRklORUQKK3R5cGVkZWYgU1RSVUNUX0tFWVdPUkRfRlBfRkFTVF9GTUEgeworICBkb3VibGUg
eCwgeTsKK30gU2xlZWZfZG91YmxlXzI7CisjZGVmaW5lIFNsZWVmX2RvdWJsZV8yX0RFRklORUQK
KyNlbmRpZgorCitJTVBPUlQgQ09OU1QgZG91YmxlIFNsZWVmX3NpbmQxX3UzNXB1cmVjZm1hKGRv
dWJsZSk7CitJTVBPUlQgQ09OU1QgZG91YmxlIFNsZWVmX2Zpbnpfc2luZDFfdTM1cHVyZWNmbWEo
ZG91YmxlKTsKK0lNUE9SVCBDT05TVCBkb3VibGUgU2xlZWZfY29zZDFfdTM1cHVyZWNmbWEoZG91
YmxlKTsKK0lNUE9SVCBDT05TVCBkb3VibGUgU2xlZWZfZmluel9jb3NkMV91MzVwdXJlY2ZtYShk
b3VibGUpOworSU1QT1JUIENPTlNUIFNsZWVmX2RvdWJsZV8yIFNsZWVmX3NpbmNvc2QxX3UzNXB1
cmVjZm1hKGRvdWJsZSk7CitJTVBPUlQgQ09OU1QgU2xlZWZfZG91YmxlXzIgU2xlZWZfZmluel9z
aW5jb3NkMV91MzVwdXJlY2ZtYShkb3VibGUpOworSU1QT1JUIENPTlNUIGRvdWJsZSBTbGVlZl90
YW5kMV91MzVwdXJlY2ZtYShkb3VibGUpOworSU1QT1JUIENPTlNUIGRvdWJsZSBTbGVlZl9maW56
X3RhbmQxX3UzNXB1cmVjZm1hKGRvdWJsZSk7CitJTVBPUlQgQ09OU1QgZG91YmxlIFNsZWVmX2Fz
aW5kMV91MzVwdXJlY2ZtYShkb3VibGUpOworSU1QT1JUIENPTlNUIGRvdWJsZSBTbGVlZl9maW56
X2FzaW5kMV91MzVwdXJlY2ZtYShkb3VibGUpOworSU1QT1JUIENPTlNUIGRvdWJsZSBTbGVlZl9h
Y29zZDFfdTM1cHVyZWNmbWEoZG91YmxlKTsKK0lNUE9SVCBDT05TVCBkb3VibGUgU2xlZWZfZmlu
el9hY29zZDFfdTM1cHVyZWNmbWEoZG91YmxlKTsKK0lNUE9SVCBDT05TVCBkb3VibGUgU2xlZWZf
YXRhbmQxX3UzNXB1cmVjZm1hKGRvdWJsZSk7CitJTVBPUlQgQ09OU1QgZG91YmxlIFNsZWVmX2Zp
bnpfYXRhbmQxX3UzNXB1cmVjZm1hKGRvdWJsZSk7CitJTVBPUlQgQ09OU1QgZG91YmxlIFNsZWVm
X2F0YW4yZDFfdTM1cHVyZWNmbWEoZG91YmxlLCBkb3VibGUpOworSU1QT1JUIENPTlNUIGRvdWJs
ZSBTbGVlZl9maW56X2F0YW4yZDFfdTM1cHVyZWNmbWEoZG91YmxlLCBkb3VibGUpOworSU1QT1JU
IENPTlNUIGRvdWJsZSBTbGVlZl9sb2dkMV91MzVwdXJlY2ZtYShkb3VibGUpOworSU1QT1JUIENP
TlNUIGRvdWJsZSBTbGVlZl9maW56X2xvZ2QxX3UzNXB1cmVjZm1hKGRvdWJsZSk7CitJTVBPUlQg
Q09OU1QgZG91YmxlIFNsZWVmX2NicnRkMV91MzVwdXJlY2ZtYShkb3VibGUpOworSU1QT1JUIENP
TlNUIGRvdWJsZSBTbGVlZl9maW56X2NicnRkMV91MzVwdXJlY2ZtYShkb3VibGUpOworSU1QT1JU
IENPTlNUIGRvdWJsZSBTbGVlZl9zaW5kMV91MTBwdXJlY2ZtYShkb3VibGUpOworSU1QT1JUIENP
TlNUIGRvdWJsZSBTbGVlZl9maW56X3NpbmQxX3UxMHB1cmVjZm1hKGRvdWJsZSk7CitJTVBPUlQg
Q09OU1QgZG91YmxlIFNsZWVmX2Nvc2QxX3UxMHB1cmVjZm1hKGRvdWJsZSk7CitJTVBPUlQgQ09O
U1QgZG91YmxlIFNsZWVmX2ZpbnpfY29zZDFfdTEwcHVyZWNmbWEoZG91YmxlKTsKK0lNUE9SVCBD
T05TVCBTbGVlZl9kb3VibGVfMiBTbGVlZl9zaW5jb3NkMV91MTBwdXJlY2ZtYShkb3VibGUpOwor
SU1QT1JUIENPTlNUIFNsZWVmX2RvdWJsZV8yIFNsZWVmX2Zpbnpfc2luY29zZDFfdTEwcHVyZWNm
bWEoZG91YmxlKTsKK0lNUE9SVCBDT05TVCBkb3VibGUgU2xlZWZfdGFuZDFfdTEwcHVyZWNmbWEo
ZG91YmxlKTsKK0lNUE9SVCBDT05TVCBkb3VibGUgU2xlZWZfZmluel90YW5kMV91MTBwdXJlY2Zt
YShkb3VibGUpOworSU1QT1JUIENPTlNUIGRvdWJsZSBTbGVlZl9hc2luZDFfdTEwcHVyZWNmbWEo
ZG91YmxlKTsKK0lNUE9SVCBDT05TVCBkb3VibGUgU2xlZWZfZmluel9hc2luZDFfdTEwcHVyZWNm
bWEoZG91YmxlKTsKK0lNUE9SVCBDT05TVCBkb3VibGUgU2xlZWZfYWNvc2QxX3UxMHB1cmVjZm1h
KGRvdWJsZSk7CitJTVBPUlQgQ09OU1QgZG91YmxlIFNsZWVmX2ZpbnpfYWNvc2QxX3UxMHB1cmVj
Zm1hKGRvdWJsZSk7CitJTVBPUlQgQ09OU1QgZG91YmxlIFNsZWVmX2F0YW5kMV91MTBwdXJlY2Zt
YShkb3VibGUpOworSU1QT1JUIENPTlNUIGRvdWJsZSBTbGVlZl9maW56X2F0YW5kMV91MTBwdXJl
Y2ZtYShkb3VibGUpOworSU1QT1JUIENPTlNUIGRvdWJsZSBTbGVlZl9hdGFuMmQxX3UxMHB1cmVj
Zm1hKGRvdWJsZSwgZG91YmxlKTsKK0lNUE9SVCBDT05TVCBkb3VibGUgU2xlZWZfZmluel9hdGFu
MmQxX3UxMHB1cmVjZm1hKGRvdWJsZSwgZG91YmxlKTsKK0lNUE9SVCBDT05TVCBkb3VibGUgU2xl
ZWZfbG9nZDFfdTEwcHVyZWNmbWEoZG91YmxlKTsKK0lNUE9SVCBDT05TVCBkb3VibGUgU2xlZWZf
Zmluel9sb2dkMV91MTBwdXJlY2ZtYShkb3VibGUpOworSU1QT1JUIENPTlNUIGRvdWJsZSBTbGVl
Zl9jYnJ0ZDFfdTEwcHVyZWNmbWEoZG91YmxlKTsKK0lNUE9SVCBDT05TVCBkb3VibGUgU2xlZWZf
Zmluel9jYnJ0ZDFfdTEwcHVyZWNmbWEoZG91YmxlKTsKK0lNUE9SVCBDT05TVCBkb3VibGUgU2xl
ZWZfZXhwZDFfdTEwcHVyZWNmbWEoZG91YmxlKTsKK0lNUE9SVCBDT05TVCBkb3VibGUgU2xlZWZf
Zmluel9leHBkMV91MTBwdXJlY2ZtYShkb3VibGUpOworSU1QT1JUIENPTlNUIGRvdWJsZSBTbGVl
Zl9wb3dkMV91MTBwdXJlY2ZtYShkb3VibGUsIGRvdWJsZSk7CitJTVBPUlQgQ09OU1QgZG91Ymxl
IFNsZWVmX2ZpbnpfcG93ZDFfdTEwcHVyZWNmbWEoZG91YmxlLCBkb3VibGUpOworSU1QT1JUIENP
TlNUIGRvdWJsZSBTbGVlZl9zaW5oZDFfdTEwcHVyZWNmbWEoZG91YmxlKTsKK0lNUE9SVCBDT05T
VCBkb3VibGUgU2xlZWZfZmluel9zaW5oZDFfdTEwcHVyZWNmbWEoZG91YmxlKTsKK0lNUE9SVCBD
T05TVCBkb3VibGUgU2xlZWZfY29zaGQxX3UxMHB1cmVjZm1hKGRvdWJsZSk7CitJTVBPUlQgQ09O
U1QgZG91YmxlIFNsZWVmX2ZpbnpfY29zaGQxX3UxMHB1cmVjZm1hKGRvdWJsZSk7CitJTVBPUlQg
Q09OU1QgZG91YmxlIFNsZWVmX3RhbmhkMV91MTBwdXJlY2ZtYShkb3VibGUpOworSU1QT1JUIENP
TlNUIGRvdWJsZSBTbGVlZl9maW56X3RhbmhkMV91MTBwdXJlY2ZtYShkb3VibGUpOworSU1QT1JU
IENPTlNUIGRvdWJsZSBTbGVlZl9zaW5oZDFfdTM1cHVyZWNmbWEoZG91YmxlKTsKK0lNUE9SVCBD
T05TVCBkb3VibGUgU2xlZWZfZmluel9zaW5oZDFfdTM1cHVyZWNmbWEoZG91YmxlKTsKK0lNUE9S
VCBDT05TVCBkb3VibGUgU2xlZWZfY29zaGQxX3UzNXB1cmVjZm1hKGRvdWJsZSk7CitJTVBPUlQg
Q09OU1QgZG91YmxlIFNsZWVmX2ZpbnpfY29zaGQxX3UzNXB1cmVjZm1hKGRvdWJsZSk7CitJTVBP
UlQgQ09OU1QgZG91YmxlIFNsZWVmX3RhbmhkMV91MzVwdXJlY2ZtYShkb3VibGUpOworSU1QT1JU
IENPTlNUIGRvdWJsZSBTbGVlZl9maW56X3RhbmhkMV91MzVwdXJlY2ZtYShkb3VibGUpOworSU1Q
T1JUIENPTlNUIGRvdWJsZSBTbGVlZl9mYXN0c2luZDFfdTM1MDBwdXJlY2ZtYShkb3VibGUpOwor
SU1QT1JUIENPTlNUIGRvdWJsZSBTbGVlZl9maW56X2Zhc3RzaW5kMV91MzUwMHB1cmVjZm1hKGRv
dWJsZSk7CitJTVBPUlQgQ09OU1QgZG91YmxlIFNsZWVmX2Zhc3Rjb3NkMV91MzUwMHB1cmVjZm1h
KGRvdWJsZSk7CitJTVBPUlQgQ09OU1QgZG91YmxlIFNsZWVmX2ZpbnpfZmFzdGNvc2QxX3UzNTAw
cHVyZWNmbWEoZG91YmxlKTsKK0lNUE9SVCBDT05TVCBkb3VibGUgU2xlZWZfZmFzdHBvd2QxX3Uz
NTAwcHVyZWNmbWEoZG91YmxlLCBkb3VibGUpOworSU1QT1JUIENPTlNUIGRvdWJsZSBTbGVlZl9m
aW56X2Zhc3Rwb3dkMV91MzUwMHB1cmVjZm1hKGRvdWJsZSwgZG91YmxlKTsKK0lNUE9SVCBDT05T
VCBkb3VibGUgU2xlZWZfYXNpbmhkMV91MTBwdXJlY2ZtYShkb3VibGUpOworSU1QT1JUIENPTlNU
IGRvdWJsZSBTbGVlZl9maW56X2FzaW5oZDFfdTEwcHVyZWNmbWEoZG91YmxlKTsKK0lNUE9SVCBD
T05TVCBkb3VibGUgU2xlZWZfYWNvc2hkMV91MTBwdXJlY2ZtYShkb3VibGUpOworSU1QT1JUIENP
TlNUIGRvdWJsZSBTbGVlZl9maW56X2Fjb3NoZDFfdTEwcHVyZWNmbWEoZG91YmxlKTsKK0lNUE9S
VCBDT05TVCBkb3VibGUgU2xlZWZfYXRhbmhkMV91MTBwdXJlY2ZtYShkb3VibGUpOworSU1QT1JU
IENPTlNUIGRvdWJsZSBTbGVlZl9maW56X2F0YW5oZDFfdTEwcHVyZWNmbWEoZG91YmxlKTsKK0lN
UE9SVCBDT05TVCBkb3VibGUgU2xlZWZfZXhwMmQxX3UxMHB1cmVjZm1hKGRvdWJsZSk7CitJTVBP
UlQgQ09OU1QgZG91YmxlIFNsZWVmX2ZpbnpfZXhwMmQxX3UxMHB1cmVjZm1hKGRvdWJsZSk7CitJ
TVBPUlQgQ09OU1QgZG91YmxlIFNsZWVmX2V4cDJkMV91MzVwdXJlY2ZtYShkb3VibGUpOworSU1Q
T1JUIENPTlNUIGRvdWJsZSBTbGVlZl9maW56X2V4cDJkMV91MzVwdXJlY2ZtYShkb3VibGUpOwor
SU1QT1JUIENPTlNUIGRvdWJsZSBTbGVlZl9leHAxMGQxX3UxMHB1cmVjZm1hKGRvdWJsZSk7CitJ
TVBPUlQgQ09OU1QgZG91YmxlIFNsZWVmX2ZpbnpfZXhwMTBkMV91MTBwdXJlY2ZtYShkb3VibGUp
OworSU1QT1JUIENPTlNUIGRvdWJsZSBTbGVlZl9leHAxMGQxX3UzNXB1cmVjZm1hKGRvdWJsZSk7
CitJTVBPUlQgQ09OU1QgZG91YmxlIFNsZWVmX2ZpbnpfZXhwMTBkMV91MzVwdXJlY2ZtYShkb3Vi
bGUpOworSU1QT1JUIENPTlNUIGRvdWJsZSBTbGVlZl9leHBtMWQxX3UxMHB1cmVjZm1hKGRvdWJs
ZSk7CitJTVBPUlQgQ09OU1QgZG91YmxlIFNsZWVmX2ZpbnpfZXhwbTFkMV91MTBwdXJlY2ZtYShk
b3VibGUpOworSU1QT1JUIENPTlNUIGRvdWJsZSBTbGVlZl9sb2cxMGQxX3UxMHB1cmVjZm1hKGRv
dWJsZSk7CitJTVBPUlQgQ09OU1QgZG91YmxlIFNsZWVmX2ZpbnpfbG9nMTBkMV91MTBwdXJlY2Zt
YShkb3VibGUpOworSU1QT1JUIENPTlNUIGRvdWJsZSBTbGVlZl9sb2cyZDFfdTEwcHVyZWNmbWEo
ZG91YmxlKTsKK0lNUE9SVCBDT05TVCBkb3VibGUgU2xlZWZfZmluel9sb2cyZDFfdTEwcHVyZWNm
bWEoZG91YmxlKTsKK0lNUE9SVCBDT05TVCBkb3VibGUgU2xlZWZfbG9nMmQxX3UzNXB1cmVjZm1h
KGRvdWJsZSk7CitJTVBPUlQgQ09OU1QgZG91YmxlIFNsZWVmX2ZpbnpfbG9nMmQxX3UzNXB1cmVj
Zm1hKGRvdWJsZSk7CitJTVBPUlQgQ09OU1QgZG91YmxlIFNsZWVmX2xvZzFwZDFfdTEwcHVyZWNm
bWEoZG91YmxlKTsKK0lNUE9SVCBDT05TVCBkb3VibGUgU2xlZWZfZmluel9sb2cxcGQxX3UxMHB1
cmVjZm1hKGRvdWJsZSk7CitJTVBPUlQgQ09OU1QgU2xlZWZfZG91YmxlXzIgU2xlZWZfc2luY29z
cGlkMV91MDVwdXJlY2ZtYShkb3VibGUpOworSU1QT1JUIENPTlNUIFNsZWVmX2RvdWJsZV8yIFNs
ZWVmX2Zpbnpfc2luY29zcGlkMV91MDVwdXJlY2ZtYShkb3VibGUpOworSU1QT1JUIENPTlNUIFNs
ZWVmX2RvdWJsZV8yIFNsZWVmX3NpbmNvc3BpZDFfdTM1cHVyZWNmbWEoZG91YmxlKTsKK0lNUE9S
VCBDT05TVCBTbGVlZl9kb3VibGVfMiBTbGVlZl9maW56X3NpbmNvc3BpZDFfdTM1cHVyZWNmbWEo
ZG91YmxlKTsKK0lNUE9SVCBDT05TVCBkb3VibGUgU2xlZWZfc2lucGlkMV91MDVwdXJlY2ZtYShk
b3VibGUpOworSU1QT1JUIENPTlNUIGRvdWJsZSBTbGVlZl9maW56X3NpbnBpZDFfdTA1cHVyZWNm
bWEoZG91YmxlKTsKK0lNUE9SVCBDT05TVCBkb3VibGUgU2xlZWZfY29zcGlkMV91MDVwdXJlY2Zt
YShkb3VibGUpOworSU1QT1JUIENPTlNUIGRvdWJsZSBTbGVlZl9maW56X2Nvc3BpZDFfdTA1cHVy
ZWNmbWEoZG91YmxlKTsKK0lNUE9SVCBDT05TVCBkb3VibGUgU2xlZWZfbGRleHBkMV9wdXJlY2Zt
YShkb3VibGUsIGludDMyX3QpOworSU1QT1JUIENPTlNUIGRvdWJsZSBTbGVlZl9maW56X2xkZXhw
ZDFfcHVyZWNmbWEoZG91YmxlLCBpbnQzMl90KTsKK0lNUE9SVCBDT05TVCBpbnQzMl90IFNsZWVm
X2lsb2diZDFfcHVyZWNmbWEoZG91YmxlKTsKK0lNUE9SVCBDT05TVCBpbnQzMl90IFNsZWVmX2Zp
bnpfaWxvZ2JkMV9wdXJlY2ZtYShkb3VibGUpOworSU1QT1JUIENPTlNUIGRvdWJsZSBTbGVlZl9m
bWFkMV9wdXJlY2ZtYShkb3VibGUsIGRvdWJsZSwgZG91YmxlKTsKK0lNUE9SVCBDT05TVCBkb3Vi
bGUgU2xlZWZfZmluel9mbWFkMV9wdXJlY2ZtYShkb3VibGUsIGRvdWJsZSwgZG91YmxlKTsKK0lN
UE9SVCBDT05TVCBkb3VibGUgU2xlZWZfc3FydGQxX3B1cmVjZm1hKGRvdWJsZSk7CitJTVBPUlQg
Q09OU1QgZG91YmxlIFNsZWVmX2Zpbnpfc3FydGQxX3B1cmVjZm1hKGRvdWJsZSk7CitJTVBPUlQg
Q09OU1QgZG91YmxlIFNsZWVmX3NxcnRkMV91MDVwdXJlY2ZtYShkb3VibGUpOworSU1QT1JUIENP
TlNUIGRvdWJsZSBTbGVlZl9maW56X3NxcnRkMV91MDVwdXJlY2ZtYShkb3VibGUpOworSU1QT1JU
IENPTlNUIGRvdWJsZSBTbGVlZl9zcXJ0ZDFfdTM1cHVyZWNmbWEoZG91YmxlKTsKK0lNUE9SVCBD
T05TVCBkb3VibGUgU2xlZWZfZmluel9zcXJ0ZDFfdTM1cHVyZWNmbWEoZG91YmxlKTsKK0lNUE9S
VCBDT05TVCBkb3VibGUgU2xlZWZfaHlwb3RkMV91MDVwdXJlY2ZtYShkb3VibGUsIGRvdWJsZSk7
CitJTVBPUlQgQ09OU1QgZG91YmxlIFNsZWVmX2ZpbnpfaHlwb3RkMV91MDVwdXJlY2ZtYShkb3Vi
bGUsIGRvdWJsZSk7CitJTVBPUlQgQ09OU1QgZG91YmxlIFNsZWVmX2h5cG90ZDFfdTM1cHVyZWNm
bWEoZG91YmxlLCBkb3VibGUpOworSU1QT1JUIENPTlNUIGRvdWJsZSBTbGVlZl9maW56X2h5cG90
ZDFfdTM1cHVyZWNmbWEoZG91YmxlLCBkb3VibGUpOworSU1QT1JUIENPTlNUIGRvdWJsZSBTbGVl
Zl9mYWJzZDFfcHVyZWNmbWEoZG91YmxlKTsKK0lNUE9SVCBDT05TVCBkb3VibGUgU2xlZWZfZmlu
el9mYWJzZDFfcHVyZWNmbWEoZG91YmxlKTsKK0lNUE9SVCBDT05TVCBkb3VibGUgU2xlZWZfY29w
eXNpZ25kMV9wdXJlY2ZtYShkb3VibGUsIGRvdWJsZSk7CitJTVBPUlQgQ09OU1QgZG91YmxlIFNs
ZWVmX2ZpbnpfY29weXNpZ25kMV9wdXJlY2ZtYShkb3VibGUsIGRvdWJsZSk7CitJTVBPUlQgQ09O
U1QgZG91YmxlIFNsZWVmX2ZtYXhkMV9wdXJlY2ZtYShkb3VibGUsIGRvdWJsZSk7CitJTVBPUlQg
Q09OU1QgZG91YmxlIFNsZWVmX2ZpbnpfZm1heGQxX3B1cmVjZm1hKGRvdWJsZSwgZG91YmxlKTsK
K0lNUE9SVCBDT05TVCBkb3VibGUgU2xlZWZfZm1pbmQxX3B1cmVjZm1hKGRvdWJsZSwgZG91Ymxl
KTsKK0lNUE9SVCBDT05TVCBkb3VibGUgU2xlZWZfZmluel9mbWluZDFfcHVyZWNmbWEoZG91Ymxl
LCBkb3VibGUpOworSU1QT1JUIENPTlNUIGRvdWJsZSBTbGVlZl9mZGltZDFfcHVyZWNmbWEoZG91
YmxlLCBkb3VibGUpOworSU1QT1JUIENPTlNUIGRvdWJsZSBTbGVlZl9maW56X2ZkaW1kMV9wdXJl
Y2ZtYShkb3VibGUsIGRvdWJsZSk7CitJTVBPUlQgQ09OU1QgZG91YmxlIFNsZWVmX3RydW5jZDFf
cHVyZWNmbWEoZG91YmxlKTsKK0lNUE9SVCBDT05TVCBkb3VibGUgU2xlZWZfZmluel90cnVuY2Qx
X3B1cmVjZm1hKGRvdWJsZSk7CitJTVBPUlQgQ09OU1QgZG91YmxlIFNsZWVmX2Zsb29yZDFfcHVy
ZWNmbWEoZG91YmxlKTsKK0lNUE9SVCBDT05TVCBkb3VibGUgU2xlZWZfZmluel9mbG9vcmQxX3B1
cmVjZm1hKGRvdWJsZSk7CitJTVBPUlQgQ09OU1QgZG91YmxlIFNsZWVmX2NlaWxkMV9wdXJlY2Zt
YShkb3VibGUpOworSU1QT1JUIENPTlNUIGRvdWJsZSBTbGVlZl9maW56X2NlaWxkMV9wdXJlY2Zt
YShkb3VibGUpOworSU1QT1JUIENPTlNUIGRvdWJsZSBTbGVlZl9yb3VuZGQxX3B1cmVjZm1hKGRv
dWJsZSk7CitJTVBPUlQgQ09OU1QgZG91YmxlIFNsZWVmX2Zpbnpfcm91bmRkMV9wdXJlY2ZtYShk
b3VibGUpOworSU1QT1JUIENPTlNUIGRvdWJsZSBTbGVlZl9yaW50ZDFfcHVyZWNmbWEoZG91Ymxl
KTsKK0lNUE9SVCBDT05TVCBkb3VibGUgU2xlZWZfZmluel9yaW50ZDFfcHVyZWNmbWEoZG91Ymxl
KTsKK0lNUE9SVCBDT05TVCBkb3VibGUgU2xlZWZfbmV4dGFmdGVyZDFfcHVyZWNmbWEoZG91Ymxl
LCBkb3VibGUpOworSU1QT1JUIENPTlNUIGRvdWJsZSBTbGVlZl9maW56X25leHRhZnRlcmQxX3B1
cmVjZm1hKGRvdWJsZSwgZG91YmxlKTsKK0lNUE9SVCBDT05TVCBkb3VibGUgU2xlZWZfZnJmcmV4
cGQxX3B1cmVjZm1hKGRvdWJsZSk7CitJTVBPUlQgQ09OU1QgZG91YmxlIFNsZWVmX2ZpbnpfZnJm
cmV4cGQxX3B1cmVjZm1hKGRvdWJsZSk7CitJTVBPUlQgQ09OU1QgaW50MzJfdCBTbGVlZl9leHBm
cmV4cGQxX3B1cmVjZm1hKGRvdWJsZSk7CitJTVBPUlQgQ09OU1QgaW50MzJfdCBTbGVlZl9maW56
X2V4cGZyZXhwZDFfcHVyZWNmbWEoZG91YmxlKTsKK0lNUE9SVCBDT05TVCBkb3VibGUgU2xlZWZf
Zm1vZGQxX3B1cmVjZm1hKGRvdWJsZSwgZG91YmxlKTsKK0lNUE9SVCBDT05TVCBkb3VibGUgU2xl
ZWZfZmluel9mbW9kZDFfcHVyZWNmbWEoZG91YmxlLCBkb3VibGUpOworSU1QT1JUIENPTlNUIFNs
ZWVmX2RvdWJsZV8yIFNsZWVmX21vZGZkMV9wdXJlY2ZtYShkb3VibGUpOworSU1QT1JUIENPTlNU
IFNsZWVmX2RvdWJsZV8yIFNsZWVmX2ZpbnpfbW9kZmQxX3B1cmVjZm1hKGRvdWJsZSk7CitJTVBP
UlQgQ09OU1QgZG91YmxlIFNsZWVmX2xnYW1tYWQxX3UxMHB1cmVjZm1hKGRvdWJsZSk7CitJTVBP
UlQgQ09OU1QgZG91YmxlIFNsZWVmX2ZpbnpfbGdhbW1hZDFfdTEwcHVyZWNmbWEoZG91YmxlKTsK
K0lNUE9SVCBDT05TVCBkb3VibGUgU2xlZWZfdGdhbW1hZDFfdTEwcHVyZWNmbWEoZG91YmxlKTsK
K0lNUE9SVCBDT05TVCBkb3VibGUgU2xlZWZfZmluel90Z2FtbWFkMV91MTBwdXJlY2ZtYShkb3Vi
bGUpOworSU1QT1JUIENPTlNUIGRvdWJsZSBTbGVlZl9lcmZkMV91MTBwdXJlY2ZtYShkb3VibGUp
OworSU1QT1JUIENPTlNUIGRvdWJsZSBTbGVlZl9maW56X2VyZmQxX3UxMHB1cmVjZm1hKGRvdWJs
ZSk7CitJTVBPUlQgQ09OU1QgZG91YmxlIFNsZWVmX2VyZmNkMV91MTVwdXJlY2ZtYShkb3VibGUp
OworSU1QT1JUIENPTlNUIGRvdWJsZSBTbGVlZl9maW56X2VyZmNkMV91MTVwdXJlY2ZtYShkb3Vi
bGUpOworSU1QT1JUIENPTlNUIGludCBTbGVlZl9nZXRJbnRkMV9wdXJlY2ZtYShpbnQpOworSU1Q
T1JUIENPTlNUIHZvaWQgKlNsZWVmX2dldFB0cmQxX3B1cmVjZm1hKGludCk7CisKKyNpZm5kZWYg
U2xlZWZfZmxvYXRfMl9ERUZJTkVECit0eXBlZGVmIFNUUlVDVF9LRVlXT1JEX0ZQX0ZBU1RfRk1B
IHsKKyAgZmxvYXQgeCwgeTsKK30gU2xlZWZfZmxvYXRfMjsKKyNkZWZpbmUgU2xlZWZfZmxvYXRf
Ml9ERUZJTkVECisjZW5kaWYKKworSU1QT1JUIENPTlNUIGZsb2F0IFNsZWVmX3NpbmYxX3UzNXB1
cmVjZm1hKGZsb2F0KTsKK0lNUE9SVCBDT05TVCBmbG9hdCBTbGVlZl9maW56X3NpbmYxX3UzNXB1
cmVjZm1hKGZsb2F0KTsKK0lNUE9SVCBDT05TVCBmbG9hdCBTbGVlZl9jb3NmMV91MzVwdXJlY2Zt
YShmbG9hdCk7CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xlZWZfZmluel9jb3NmMV91MzVwdXJlY2Zt
YShmbG9hdCk7CitJTVBPUlQgQ09OU1QgU2xlZWZfZmxvYXRfMiBTbGVlZl9zaW5jb3NmMV91MzVw
dXJlY2ZtYShmbG9hdCk7CitJTVBPUlQgQ09OU1QgU2xlZWZfZmxvYXRfMiBTbGVlZl9maW56X3Np
bmNvc2YxX3UzNXB1cmVjZm1hKGZsb2F0KTsKK0lNUE9SVCBDT05TVCBmbG9hdCBTbGVlZl90YW5m
MV91MzVwdXJlY2ZtYShmbG9hdCk7CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xlZWZfZmluel90YW5m
MV91MzVwdXJlY2ZtYShmbG9hdCk7CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xlZWZfYXNpbmYxX3Uz
NXB1cmVjZm1hKGZsb2F0KTsKK0lNUE9SVCBDT05TVCBmbG9hdCBTbGVlZl9maW56X2FzaW5mMV91
MzVwdXJlY2ZtYShmbG9hdCk7CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xlZWZfYWNvc2YxX3UzNXB1
cmVjZm1hKGZsb2F0KTsKK0lNUE9SVCBDT05TVCBmbG9hdCBTbGVlZl9maW56X2Fjb3NmMV91MzVw
dXJlY2ZtYShmbG9hdCk7CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xlZWZfYXRhbmYxX3UzNXB1cmVj
Zm1hKGZsb2F0KTsKK0lNUE9SVCBDT05TVCBmbG9hdCBTbGVlZl9maW56X2F0YW5mMV91MzVwdXJl
Y2ZtYShmbG9hdCk7CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xlZWZfYXRhbjJmMV91MzVwdXJlY2Zt
YShmbG9hdCwgZmxvYXQpOworSU1QT1JUIENPTlNUIGZsb2F0IFNsZWVmX2ZpbnpfYXRhbjJmMV91
MzVwdXJlY2ZtYShmbG9hdCwgZmxvYXQpOworSU1QT1JUIENPTlNUIGZsb2F0IFNsZWVmX2xvZ2Yx
X3UzNXB1cmVjZm1hKGZsb2F0KTsKK0lNUE9SVCBDT05TVCBmbG9hdCBTbGVlZl9maW56X2xvZ2Yx
X3UzNXB1cmVjZm1hKGZsb2F0KTsKK0lNUE9SVCBDT05TVCBmbG9hdCBTbGVlZl9jYnJ0ZjFfdTM1
cHVyZWNmbWEoZmxvYXQpOworSU1QT1JUIENPTlNUIGZsb2F0IFNsZWVmX2ZpbnpfY2JydGYxX3Uz
NXB1cmVjZm1hKGZsb2F0KTsKK0lNUE9SVCBDT05TVCBmbG9hdCBTbGVlZl9zaW5mMV91MTBwdXJl
Y2ZtYShmbG9hdCk7CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xlZWZfZmluel9zaW5mMV91MTBwdXJl
Y2ZtYShmbG9hdCk7CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xlZWZfY29zZjFfdTEwcHVyZWNmbWEo
ZmxvYXQpOworSU1QT1JUIENPTlNUIGZsb2F0IFNsZWVmX2ZpbnpfY29zZjFfdTEwcHVyZWNmbWEo
ZmxvYXQpOworSU1QT1JUIENPTlNUIFNsZWVmX2Zsb2F0XzIgU2xlZWZfc2luY29zZjFfdTEwcHVy
ZWNmbWEoZmxvYXQpOworSU1QT1JUIENPTlNUIFNsZWVmX2Zsb2F0XzIgU2xlZWZfZmluel9zaW5j
b3NmMV91MTBwdXJlY2ZtYShmbG9hdCk7CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xlZWZfdGFuZjFf
dTEwcHVyZWNmbWEoZmxvYXQpOworSU1QT1JUIENPTlNUIGZsb2F0IFNsZWVmX2ZpbnpfdGFuZjFf
dTEwcHVyZWNmbWEoZmxvYXQpOworSU1QT1JUIENPTlNUIGZsb2F0IFNsZWVmX2FzaW5mMV91MTBw
dXJlY2ZtYShmbG9hdCk7CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xlZWZfZmluel9hc2luZjFfdTEw
cHVyZWNmbWEoZmxvYXQpOworSU1QT1JUIENPTlNUIGZsb2F0IFNsZWVmX2Fjb3NmMV91MTBwdXJl
Y2ZtYShmbG9hdCk7CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xlZWZfZmluel9hY29zZjFfdTEwcHVy
ZWNmbWEoZmxvYXQpOworSU1QT1JUIENPTlNUIGZsb2F0IFNsZWVmX2F0YW5mMV91MTBwdXJlY2Zt
YShmbG9hdCk7CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xlZWZfZmluel9hdGFuZjFfdTEwcHVyZWNm
bWEoZmxvYXQpOworSU1QT1JUIENPTlNUIGZsb2F0IFNsZWVmX2F0YW4yZjFfdTEwcHVyZWNmbWEo
ZmxvYXQsIGZsb2F0KTsKK0lNUE9SVCBDT05TVCBmbG9hdCBTbGVlZl9maW56X2F0YW4yZjFfdTEw
cHVyZWNmbWEoZmxvYXQsIGZsb2F0KTsKK0lNUE9SVCBDT05TVCBmbG9hdCBTbGVlZl9sb2dmMV91
MTBwdXJlY2ZtYShmbG9hdCk7CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xlZWZfZmluel9sb2dmMV91
MTBwdXJlY2ZtYShmbG9hdCk7CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xlZWZfY2JydGYxX3UxMHB1
cmVjZm1hKGZsb2F0KTsKK0lNUE9SVCBDT05TVCBmbG9hdCBTbGVlZl9maW56X2NicnRmMV91MTBw
dXJlY2ZtYShmbG9hdCk7CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xlZWZfZXhwZjFfdTEwcHVyZWNm
bWEoZmxvYXQpOworSU1QT1JUIENPTlNUIGZsb2F0IFNsZWVmX2ZpbnpfZXhwZjFfdTEwcHVyZWNm
bWEoZmxvYXQpOworSU1QT1JUIENPTlNUIGZsb2F0IFNsZWVmX3Bvd2YxX3UxMHB1cmVjZm1hKGZs
b2F0LCBmbG9hdCk7CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xlZWZfZmluel9wb3dmMV91MTBwdXJl
Y2ZtYShmbG9hdCwgZmxvYXQpOworSU1QT1JUIENPTlNUIGZsb2F0IFNsZWVmX3NpbmhmMV91MTBw
dXJlY2ZtYShmbG9hdCk7CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xlZWZfZmluel9zaW5oZjFfdTEw
cHVyZWNmbWEoZmxvYXQpOworSU1QT1JUIENPTlNUIGZsb2F0IFNsZWVmX2Nvc2hmMV91MTBwdXJl
Y2ZtYShmbG9hdCk7CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xlZWZfZmluel9jb3NoZjFfdTEwcHVy
ZWNmbWEoZmxvYXQpOworSU1QT1JUIENPTlNUIGZsb2F0IFNsZWVmX3RhbmhmMV91MTBwdXJlY2Zt
YShmbG9hdCk7CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xlZWZfZmluel90YW5oZjFfdTEwcHVyZWNm
bWEoZmxvYXQpOworSU1QT1JUIENPTlNUIGZsb2F0IFNsZWVmX3NpbmhmMV91MzVwdXJlY2ZtYShm
bG9hdCk7CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xlZWZfZmluel9zaW5oZjFfdTM1cHVyZWNmbWEo
ZmxvYXQpOworSU1QT1JUIENPTlNUIGZsb2F0IFNsZWVmX2Nvc2hmMV91MzVwdXJlY2ZtYShmbG9h
dCk7CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xlZWZfZmluel9jb3NoZjFfdTM1cHVyZWNmbWEoZmxv
YXQpOworSU1QT1JUIENPTlNUIGZsb2F0IFNsZWVmX3RhbmhmMV91MzVwdXJlY2ZtYShmbG9hdCk7
CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xlZWZfZmluel90YW5oZjFfdTM1cHVyZWNmbWEoZmxvYXQp
OworSU1QT1JUIENPTlNUIGZsb2F0IFNsZWVmX2Zhc3RzaW5mMV91MzUwMHB1cmVjZm1hKGZsb2F0
KTsKK0lNUE9SVCBDT05TVCBmbG9hdCBTbGVlZl9maW56X2Zhc3RzaW5mMV91MzUwMHB1cmVjZm1h
KGZsb2F0KTsKK0lNUE9SVCBDT05TVCBmbG9hdCBTbGVlZl9mYXN0Y29zZjFfdTM1MDBwdXJlY2Zt
YShmbG9hdCk7CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xlZWZfZmluel9mYXN0Y29zZjFfdTM1MDBw
dXJlY2ZtYShmbG9hdCk7CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xlZWZfZmFzdHBvd2YxX3UzNTAw
cHVyZWNmbWEoZmxvYXQsIGZsb2F0KTsKK0lNUE9SVCBDT05TVCBmbG9hdCBTbGVlZl9maW56X2Zh
c3Rwb3dmMV91MzUwMHB1cmVjZm1hKGZsb2F0LCBmbG9hdCk7CitJTVBPUlQgQ09OU1QgZmxvYXQg
U2xlZWZfYXNpbmhmMV91MTBwdXJlY2ZtYShmbG9hdCk7CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xl
ZWZfZmluel9hc2luaGYxX3UxMHB1cmVjZm1hKGZsb2F0KTsKK0lNUE9SVCBDT05TVCBmbG9hdCBT
bGVlZl9hY29zaGYxX3UxMHB1cmVjZm1hKGZsb2F0KTsKK0lNUE9SVCBDT05TVCBmbG9hdCBTbGVl
Zl9maW56X2Fjb3NoZjFfdTEwcHVyZWNmbWEoZmxvYXQpOworSU1QT1JUIENPTlNUIGZsb2F0IFNs
ZWVmX2F0YW5oZjFfdTEwcHVyZWNmbWEoZmxvYXQpOworSU1QT1JUIENPTlNUIGZsb2F0IFNsZWVm
X2ZpbnpfYXRhbmhmMV91MTBwdXJlY2ZtYShmbG9hdCk7CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xl
ZWZfZXhwMmYxX3UxMHB1cmVjZm1hKGZsb2F0KTsKK0lNUE9SVCBDT05TVCBmbG9hdCBTbGVlZl9m
aW56X2V4cDJmMV91MTBwdXJlY2ZtYShmbG9hdCk7CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xlZWZf
ZXhwMmYxX3UzNXB1cmVjZm1hKGZsb2F0KTsKK0lNUE9SVCBDT05TVCBmbG9hdCBTbGVlZl9maW56
X2V4cDJmMV91MzVwdXJlY2ZtYShmbG9hdCk7CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xlZWZfZXhw
MTBmMV91MTBwdXJlY2ZtYShmbG9hdCk7CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xlZWZfZmluel9l
eHAxMGYxX3UxMHB1cmVjZm1hKGZsb2F0KTsKK0lNUE9SVCBDT05TVCBmbG9hdCBTbGVlZl9leHAx
MGYxX3UzNXB1cmVjZm1hKGZsb2F0KTsKK0lNUE9SVCBDT05TVCBmbG9hdCBTbGVlZl9maW56X2V4
cDEwZjFfdTM1cHVyZWNmbWEoZmxvYXQpOworSU1QT1JUIENPTlNUIGZsb2F0IFNsZWVmX2V4cG0x
ZjFfdTEwcHVyZWNmbWEoZmxvYXQpOworSU1QT1JUIENPTlNUIGZsb2F0IFNsZWVmX2ZpbnpfZXhw
bTFmMV91MTBwdXJlY2ZtYShmbG9hdCk7CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xlZWZfbG9nMTBm
MV91MTBwdXJlY2ZtYShmbG9hdCk7CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xlZWZfZmluel9sb2cx
MGYxX3UxMHB1cmVjZm1hKGZsb2F0KTsKK0lNUE9SVCBDT05TVCBmbG9hdCBTbGVlZl9sb2cyZjFf
dTEwcHVyZWNmbWEoZmxvYXQpOworSU1QT1JUIENPTlNUIGZsb2F0IFNsZWVmX2ZpbnpfbG9nMmYx
X3UxMHB1cmVjZm1hKGZsb2F0KTsKK0lNUE9SVCBDT05TVCBmbG9hdCBTbGVlZl9sb2cyZjFfdTM1
cHVyZWNmbWEoZmxvYXQpOworSU1QT1JUIENPTlNUIGZsb2F0IFNsZWVmX2ZpbnpfbG9nMmYxX3Uz
NXB1cmVjZm1hKGZsb2F0KTsKK0lNUE9SVCBDT05TVCBmbG9hdCBTbGVlZl9sb2cxcGYxX3UxMHB1
cmVjZm1hKGZsb2F0KTsKK0lNUE9SVCBDT05TVCBmbG9hdCBTbGVlZl9maW56X2xvZzFwZjFfdTEw
cHVyZWNmbWEoZmxvYXQpOworSU1QT1JUIENPTlNUIFNsZWVmX2Zsb2F0XzIgU2xlZWZfc2luY29z
cGlmMV91MDVwdXJlY2ZtYShmbG9hdCk7CitJTVBPUlQgQ09OU1QgU2xlZWZfZmxvYXRfMiBTbGVl
Zl9maW56X3NpbmNvc3BpZjFfdTA1cHVyZWNmbWEoZmxvYXQpOworSU1QT1JUIENPTlNUIFNsZWVm
X2Zsb2F0XzIgU2xlZWZfc2luY29zcGlmMV91MzVwdXJlY2ZtYShmbG9hdCk7CitJTVBPUlQgQ09O
U1QgU2xlZWZfZmxvYXRfMiBTbGVlZl9maW56X3NpbmNvc3BpZjFfdTM1cHVyZWNmbWEoZmxvYXQp
OworSU1QT1JUIENPTlNUIGZsb2F0IFNsZWVmX3NpbnBpZjFfdTA1cHVyZWNmbWEoZmxvYXQpOwor
SU1QT1JUIENPTlNUIGZsb2F0IFNsZWVmX2Zpbnpfc2lucGlmMV91MDVwdXJlY2ZtYShmbG9hdCk7
CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xlZWZfY29zcGlmMV91MDVwdXJlY2ZtYShmbG9hdCk7CitJ
TVBPUlQgQ09OU1QgZmxvYXQgU2xlZWZfZmluel9jb3NwaWYxX3UwNXB1cmVjZm1hKGZsb2F0KTsK
K0lNUE9SVCBDT05TVCBmbG9hdCBTbGVlZl9mbWFmMV9wdXJlY2ZtYShmbG9hdCwgZmxvYXQsIGZs
b2F0KTsKK0lNUE9SVCBDT05TVCBmbG9hdCBTbGVlZl9maW56X2ZtYWYxX3B1cmVjZm1hKGZsb2F0
LCBmbG9hdCwgZmxvYXQpOworSU1QT1JUIENPTlNUIGZsb2F0IFNsZWVmX3NxcnRmMV9wdXJlY2Zt
YShmbG9hdCk7CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xlZWZfZmluel9zcXJ0ZjFfcHVyZWNmbWEo
ZmxvYXQpOworSU1QT1JUIENPTlNUIGZsb2F0IFNsZWVmX3NxcnRmMV91MDVwdXJlY2ZtYShmbG9h
dCk7CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xlZWZfZmluel9zcXJ0ZjFfdTA1cHVyZWNmbWEoZmxv
YXQpOworSU1QT1JUIENPTlNUIGZsb2F0IFNsZWVmX3NxcnRmMV91MzVwdXJlY2ZtYShmbG9hdCk7
CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xlZWZfZmluel9zcXJ0ZjFfdTM1cHVyZWNmbWEoZmxvYXQp
OworSU1QT1JUIENPTlNUIGZsb2F0IFNsZWVmX2h5cG90ZjFfdTA1cHVyZWNmbWEoZmxvYXQsIGZs
b2F0KTsKK0lNUE9SVCBDT05TVCBmbG9hdCBTbGVlZl9maW56X2h5cG90ZjFfdTA1cHVyZWNmbWEo
ZmxvYXQsIGZsb2F0KTsKK0lNUE9SVCBDT05TVCBmbG9hdCBTbGVlZl9oeXBvdGYxX3UzNXB1cmVj
Zm1hKGZsb2F0LCBmbG9hdCk7CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xlZWZfZmluel9oeXBvdGYx
X3UzNXB1cmVjZm1hKGZsb2F0LCBmbG9hdCk7CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xlZWZfZmFi
c2YxX3B1cmVjZm1hKGZsb2F0KTsKK0lNUE9SVCBDT05TVCBmbG9hdCBTbGVlZl9maW56X2ZhYnNm
MV9wdXJlY2ZtYShmbG9hdCk7CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xlZWZfY29weXNpZ25mMV9w
dXJlY2ZtYShmbG9hdCwgZmxvYXQpOworSU1QT1JUIENPTlNUIGZsb2F0IFNsZWVmX2ZpbnpfY29w
eXNpZ25mMV9wdXJlY2ZtYShmbG9hdCwgZmxvYXQpOworSU1QT1JUIENPTlNUIGZsb2F0IFNsZWVm
X2ZtYXhmMV9wdXJlY2ZtYShmbG9hdCwgZmxvYXQpOworSU1QT1JUIENPTlNUIGZsb2F0IFNsZWVm
X2ZpbnpfZm1heGYxX3B1cmVjZm1hKGZsb2F0LCBmbG9hdCk7CitJTVBPUlQgQ09OU1QgZmxvYXQg
U2xlZWZfZm1pbmYxX3B1cmVjZm1hKGZsb2F0LCBmbG9hdCk7CitJTVBPUlQgQ09OU1QgZmxvYXQg
U2xlZWZfZmluel9mbWluZjFfcHVyZWNmbWEoZmxvYXQsIGZsb2F0KTsKK0lNUE9SVCBDT05TVCBm
bG9hdCBTbGVlZl9mZGltZjFfcHVyZWNmbWEoZmxvYXQsIGZsb2F0KTsKK0lNUE9SVCBDT05TVCBm
bG9hdCBTbGVlZl9maW56X2ZkaW1mMV9wdXJlY2ZtYShmbG9hdCwgZmxvYXQpOworSU1QT1JUIENP
TlNUIGZsb2F0IFNsZWVmX3RydW5jZjFfcHVyZWNmbWEoZmxvYXQpOworSU1QT1JUIENPTlNUIGZs
b2F0IFNsZWVmX2ZpbnpfdHJ1bmNmMV9wdXJlY2ZtYShmbG9hdCk7CitJTVBPUlQgQ09OU1QgZmxv
YXQgU2xlZWZfZmxvb3JmMV9wdXJlY2ZtYShmbG9hdCk7CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xl
ZWZfZmluel9mbG9vcmYxX3B1cmVjZm1hKGZsb2F0KTsKK0lNUE9SVCBDT05TVCBmbG9hdCBTbGVl
Zl9jZWlsZjFfcHVyZWNmbWEoZmxvYXQpOworSU1QT1JUIENPTlNUIGZsb2F0IFNsZWVmX2Zpbnpf
Y2VpbGYxX3B1cmVjZm1hKGZsb2F0KTsKK0lNUE9SVCBDT05TVCBmbG9hdCBTbGVlZl9yb3VuZGYx
X3B1cmVjZm1hKGZsb2F0KTsKK0lNUE9SVCBDT05TVCBmbG9hdCBTbGVlZl9maW56X3JvdW5kZjFf
cHVyZWNmbWEoZmxvYXQpOworSU1QT1JUIENPTlNUIGZsb2F0IFNsZWVmX3JpbnRmMV9wdXJlY2Zt
YShmbG9hdCk7CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xlZWZfZmluel9yaW50ZjFfcHVyZWNmbWEo
ZmxvYXQpOworSU1QT1JUIENPTlNUIGZsb2F0IFNsZWVmX25leHRhZnRlcmYxX3B1cmVjZm1hKGZs
b2F0LCBmbG9hdCk7CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xlZWZfZmluel9uZXh0YWZ0ZXJmMV9w
dXJlY2ZtYShmbG9hdCwgZmxvYXQpOworSU1QT1JUIENPTlNUIGZsb2F0IFNsZWVmX2ZyZnJleHBm
MV9wdXJlY2ZtYShmbG9hdCk7CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xlZWZfZmluel9mcmZyZXhw
ZjFfcHVyZWNmbWEoZmxvYXQpOworSU1QT1JUIENPTlNUIGZsb2F0IFNsZWVmX2Ztb2RmMV9wdXJl
Y2ZtYShmbG9hdCwgZmxvYXQpOworSU1QT1JUIENPTlNUIGZsb2F0IFNsZWVmX2ZpbnpfZm1vZGYx
X3B1cmVjZm1hKGZsb2F0LCBmbG9hdCk7CitJTVBPUlQgQ09OU1QgU2xlZWZfZmxvYXRfMiBTbGVl
Zl9tb2RmZjFfcHVyZWNmbWEoZmxvYXQpOworSU1QT1JUIENPTlNUIFNsZWVmX2Zsb2F0XzIgU2xl
ZWZfZmluel9tb2RmZjFfcHVyZWNmbWEoZmxvYXQpOworSU1QT1JUIENPTlNUIGZsb2F0IFNsZWVm
X2xnYW1tYWYxX3UxMHB1cmVjZm1hKGZsb2F0KTsKK0lNUE9SVCBDT05TVCBmbG9hdCBTbGVlZl9m
aW56X2xnYW1tYWYxX3UxMHB1cmVjZm1hKGZsb2F0KTsKK0lNUE9SVCBDT05TVCBmbG9hdCBTbGVl
Zl90Z2FtbWFmMV91MTBwdXJlY2ZtYShmbG9hdCk7CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xlZWZf
Zmluel90Z2FtbWFmMV91MTBwdXJlY2ZtYShmbG9hdCk7CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xl
ZWZfZXJmZjFfdTEwcHVyZWNmbWEoZmxvYXQpOworSU1QT1JUIENPTlNUIGZsb2F0IFNsZWVmX2Zp
bnpfZXJmZjFfdTEwcHVyZWNmbWEoZmxvYXQpOworSU1QT1JUIENPTlNUIGZsb2F0IFNsZWVmX2Vy
ZmNmMV91MTVwdXJlY2ZtYShmbG9hdCk7CitJTVBPUlQgQ09OU1QgZmxvYXQgU2xlZWZfZmluel9l
cmZjZjFfdTE1cHVyZWNmbWEoZmxvYXQpOworSU1QT1JUIENPTlNUIGludCBTbGVlZl9nZXRJbnRm
MV9wdXJlY2ZtYShpbnQpOworSU1QT1JUIENPTlNUIGludCBTbGVlZl9maW56X2dldEludGYxX3B1
cmVjZm1hKGludCk7CitJTVBPUlQgQ09OU1Qgdm9pZCAqU2xlZWZfZ2V0UHRyZjFfcHVyZWNmbWEo
aW50KTsKK0lNUE9SVCBDT05TVCB2b2lkICpTbGVlZl9maW56X2dldFB0cmYxX3B1cmVjZm1hKGlu
dCk7CisjZW5kaWYKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyN1bmRlZiBJTVBP
UlQKKyNlbmRpZiAvLyAjaWZuZGVmIF9fU0xFRUZfSF9fCi0tIAoyLjIwLjEKCgpfX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGlu
ZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhl
bnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Tue Apr 07 02:27:45 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 07 Apr 2020 02:27: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 1jLdxm-00060U-Id; Tue, 07 Apr 2020 02:27:42 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=hwa8=5X=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1jLdxl-00060P-1q
 for minios-devel@lists.xenproject.org; Tue, 07 Apr 2020 02:27:41 +0000
X-Inumbo-ID: 59597bfa-7877-11ea-b58d-bc764e2007e4
Received: from EUR01-DB5-obe.outbound.protection.outlook.com (unknown
 [40.107.15.82]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 59597bfa-7877-11ea-b58d-bc764e2007e4;
 Tue, 07 Apr 2020 02:27:38 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; 
 s=selector2-armh-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=girM7HGb5uXT6v6/RPhYOv4lzNsxSo97lNazMQ+U9gw=;
 b=0q54Q72PxouZROoAECNjEOTSDUWsXeQ2gNX1wp8CWbn57hW3bGeHyWjDDwYyZvM180UzWd2q+ySVmjH7ft6gaW/H4r1zJ9ehRvTKdeMFcC+BTCj6EIwDB+EenhgRgObeZg8EUuRvfnYbKK4W5/OabM9gkqlF1+3NtYADKKglU6o=
Received: from VI1PR07CA0140.eurprd07.prod.outlook.com (2603:10a6:802:16::27)
 by VI1PR0801MB1680.eurprd08.prod.outlook.com (2603:10a6:800:5a::11)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2878.20; Tue, 7 Apr
 2020 02:27:37 +0000
Received: from VE1EUR03FT055.eop-EUR03.prod.protection.outlook.com
 (2603:10a6:802:16:cafe::72) by VI1PR07CA0140.outlook.office365.com
 (2603:10a6:802:16::27) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2900.11 via Frontend
 Transport; Tue, 7 Apr 2020 02:27:36 +0000
Authentication-Results: spf=pass (sender IP is 63.35.35.123)
 smtp.mailfrom=arm.com; lists.xenproject.org; dkim=pass (signature was
 verified) header.d=armh.onmicrosoft.com;lists.xenproject.org;
 dmarc=bestguesspass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 63.35.35.123 as permitted sender) receiver=protection.outlook.com;
 client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com;
Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by
 VE1EUR03FT055.mail.protection.outlook.com (10.152.19.158) with
 Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.2856.17 via Frontend Transport; Tue, 7 Apr 2020 02:27:36 +0000
Received: ("Tessian outbound 4b84da486446:v50");
 Tue, 07 Apr 2020 02:27:35 +0000
X-CR-MTA-TID: 64aa7808
Received: from 6dee68b13b20.2
 by 64aa7808-outbound-1.mta.getcheckrecipient.com id
 081CDD9C-1143-46C8-95C1-B1ED9B0743BD.1; 
 Tue, 07 Apr 2020 02:27:30 +0000
Received: from EUR01-HE1-obe.outbound.protection.outlook.com
 by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 6dee68b13b20.2
 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384);
 Tue, 07 Apr 2020 02:27:30 +0000
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=Uo/W30IsCXcmIlFhmx1w++slWh8OBNL4bZZs3v+fKpKf2ZteDGuiNd3h8/ek4C/1ZGVNKBLfA2ARWW/m4zXFpZq0q7LnXrt6u91IcH9oD4DSPfv8VRBGRXREsJK7sm+DPbQzO+sKi4ISLDrkDC85JWgky9qNL+Hgfi5d/SjjtWYXzU+5NHzmsVbZg4gMXlbIkIaaUuKEIj+N3IOxoebP0sxkp3W0vesawKNC7B12Ebn0S0TwGXH3vcxDSYYpSFFdf7RM2iqFlXvniU6HIP4qqvbTg9GXeGBBHsdpaptfa4wWXoueA1Ov6QxOHfJER6mmbgfNcsddyAN4jGxdWMwTQA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; 
 s=arcselector9901;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=girM7HGb5uXT6v6/RPhYOv4lzNsxSo97lNazMQ+U9gw=;
 b=aLnX0mcwrqDhZ6oOl9wBuWDN/SSTxQyw8NiIALlLEzZqEYTfWeY/R/F07YmYLvieA8ZQbHkyFTVj0B0tNBURTV4zZs44IXfwGiIpFPOWeIQduMDnzx9wp3LnNbz3lPb+UhgXXMS0Z5wq17PCb69WzYn7MjJDBdzeT2iy1rLFr8deNTcuMTCnKFJ40hJP8jg/u/U5a0rgG8CyErSpUgk9iH9dRQleQA74Ly8qo8sRSuIF+Qxcbw2g9gS7MB/Bkw6dKE8E2E7QtIiws/KF+Xvfzq1fj2VCNc4HE8Rw+Srf/y/G7RuJzRoFBFN+iSRVs3BbWZzo4KvYrHHMXpOTGAyi6A==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; 
 s=selector2-armh-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=girM7HGb5uXT6v6/RPhYOv4lzNsxSo97lNazMQ+U9gw=;
 b=0q54Q72PxouZROoAECNjEOTSDUWsXeQ2gNX1wp8CWbn57hW3bGeHyWjDDwYyZvM180UzWd2q+ySVmjH7ft6gaW/H4r1zJ9ehRvTKdeMFcC+BTCj6EIwDB+EenhgRgObeZg8EUuRvfnYbKK4W5/OabM9gkqlF1+3NtYADKKglU6o=
Received: from AM6PR08MB4069.eurprd08.prod.outlook.com (20.179.3.160) by
 AM6PR08MB4471.eurprd08.prod.outlook.com (20.179.6.13) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.2878.16; Tue, 7 Apr 2020 02:27:28 +0000
Received: from AM6PR08MB4069.eurprd08.prod.outlook.com
 ([fe80::60b6:c319:1c9b:8919]) by AM6PR08MB4069.eurprd08.prod.outlook.com
 ([fe80::60b6:c319:1c9b:8919%7]) with mapi id 15.20.2878.018; Tue, 7 Apr 2020
 02:27:28 +0000
From: Justin He <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>, Felipe Huici
 <felipe.huici@neclab.eu>
Thread-Topic: [UNIKRAFT PATCH v3 2/7] build: Link libgcc at the end of the
 link options list
Thread-Index: AQHWC/aGUWDTOLXHl0mcROwehezCMKhs779Q
Date: Tue, 7 Apr 2020 02:27:28 +0000
Message-ID: <AM6PR08MB4069E1159ED06D4972D77E84F7C30@AM6PR08MB4069.eurprd08.prod.outlook.com>
References: <20200402041833.141738-1-justin.he@arm.com>
 <20200402041833.141738-3-justin.he@arm.com>
 <7e345035-6e56-e5cf-87a5-0e41c1924806@neclab.eu>
In-Reply-To: <7e345035-6e56-e5cf-87a5-0e41c1924806@neclab.eu>
Accept-Language: en-US, zh-CN
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ts-tracking-id: 1a4ca72b-13bf-4b2b-a56a-a6b4a0a6a3bc.1
x-checkrecipientchecked: true
Authentication-Results-Original: 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-HT: Tenant
X-MS-Office365-Filtering-Correlation-Id: 72223040-00d4-43d2-2966-08d7da9b3c50
x-ms-traffictypediagnostic: AM6PR08MB4471:|AM6PR08MB4471:|VI1PR0801MB1680:
x-ms-exchange-transport-forked: True
X-Microsoft-Antispam-PRVS: <VI1PR0801MB16804F05832C1FD6EC2D8C0DF7C30@VI1PR0801MB1680.eurprd08.prod.outlook.com>
x-checkrecipientrouted: true
nodisclaimer: true
x-ms-oob-tlc-oobclassifiers: OLM:7691;OLM:7691;
x-forefront-prvs: 036614DD9C
X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en;
 SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM6PR08MB4069.eurprd08.prod.outlook.com;
 PTR:; CAT:NONE; SFTY:;
 SFS:(10009020)(4636009)(346002)(136003)(396003)(39850400004)(376002)(366004)(66446008)(81156014)(81166006)(8676002)(478600001)(86362001)(55016002)(9686003)(8936002)(33656002)(4326008)(186003)(26005)(316002)(76116006)(2906002)(66946007)(55236004)(71200400001)(66556008)(64756008)(53546011)(6506007)(7696005)(66476007)(5660300002)(52536014)(54906003)(110136005);
 DIR:OUT; SFP:1101; 
received-spf: None (protection.outlook.com: arm.com does not designate
 permitted sender hosts)
X-MS-Exchange-SenderADCheck: 1
X-Microsoft-Antispam-Untrusted: BCL:0;
X-Microsoft-Antispam-Message-Info-Original: gk+9fg06ydupqlBD1i7BHqXmvsEqOrix8SGG3zCkBPfdmDZ4CWGg6ixB37vC92Y4B561L6+vdz4nLCsGA2IONbCoN962KVG44O2sVijn4Q74rSV9me5I9ngSEo78pNtpkmXTECXhLkG6YlC6aCJ5O7pVgTFQpEpsFe64x943LnrsAIlq0riSswugx/tasFFAex18sHXys7Z0t8foUNFzjl+sHlgRLY056KOliUOL69U0HYlqwy//+ctceABG2xhYRnPhMtfFauWypf03M0OgTWxbNU3QhvQq4bUeZIicxlDpPe0wwPOg//fdElQcm3/C+WVFTrMP2A1YM0uPv4vniNVUmRpNIRuqOwlW8R6v/A7gQungfS3g+MY2WLXnLaJ6DjARB8cjb23pj4B8hOf39iSIvFMnB3Wp57NOP5bLmXHQ4QQfD/9nOfu9USX0qec+
x-ms-exchange-antispam-messagedata: Wamc4vjomYY5TdP6yVEQ8x9P+NRJvlsU4LldYJkfGqvT/O2dGfH5bJpRBEv3C+y8tLbKuLJrQpgZzQf9FD3+WnFNKRXoPaRP939J5DW4I3kCwEyHjrl/cK5NMtH43A5j1YHRAtK6FIXTrg6TAV+73w==
MIME-Version: 1.0
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB4471
Original-Authentication-Results: spf=none (sender IP is )
 smtp.mailfrom=Justin.He@arm.com; 
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped: VE1EUR03FT055.eop-EUR03.prod.protection.outlook.com
X-Forefront-Antispam-Report: CIP:63.35.35.123; CTRY:IE; LANG:en; SCL:1; SRV:;
 IPV:CAL; SFV:NSPM; H:64aa7808-outbound-1.mta.getcheckrecipient.com;
 PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com; CAT:NONE; SFTY:;
 SFS:(10009020)(4636009)(346002)(136003)(396003)(39850400004)(376002)(46966005)(81166006)(81156014)(4326008)(36906005)(52536014)(54906003)(336012)(70206006)(86362001)(82740400003)(70586007)(356004)(2906002)(33656002)(9686003)(7696005)(5660300002)(8676002)(316002)(478600001)(55016002)(186003)(110136005)(26826003)(26005)(8936002)(47076004)(6506007)(53546011);
 DIR:OUT; SFP:1101; 
X-MS-Office365-Filtering-Correlation-Id-Prvs: db004c4b-0cab-462c-e626-08d7da9b37d5
X-Forefront-PRVS: 036614DD9C
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info: u/jwf9b4yFt6CGnQUjiAyjnOyDVyJzZhjiuRkfITiX6AngX7gfXqB4p0ToStcYq/r6UoqJJi0zwn3iroSf6MUR+2doc7UcJOUxsLGp7A1FKLqWYkEkQSUJjYQ7ogdoOni0dmmH9CdVcJo14cbiZyRj+oBP1iUmtLhZMvmrIwzWLcaPoVWWkYdg2WuNOjE2BGdp3Amn9c3JC4WyjOMVz8KRj/JedKpCR75sVSe2ePW036/07hYEjimNFP0+haJFkq8Lsz42ouodgzmS6sUWnkXevPS/IaHp5yU2x0Ur+AXLlQWjqUl06EAlyawNyaXEWDvhnJKpp/59nPxYtewaMbqLse2KT5bdXSORQEXNvMb6YCBU9r0yyOsGo/RpdMCkEd8XPtqTf894gc8w4PRLPtRFJzUF6c2Ppe4z5o3tmFU2S542ZeeUe5wvAZHLMW5IDsEK7yFCZvOTGLFpWH2sXuGl7UB7VYk0otrRc/LQeeqJjamIIIQvR+97WuaIfLbyAeYfTnPbfYoy6o12rkLgCgRw==
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Apr 2020 02:27:36.1816 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 72223040-00d4-43d2-2966-08d7da9b3c50
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[63.35.35.123];
 Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com]
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0801MB1680
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v3 2/7] build: Link libgcc at
 the end of the link options list
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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: Kaly Xin <Kaly.Xin@arm.com>, nd <nd@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>

SGkgU2hhcmFuLCB0aGFua3MgZm9yIHRoZSByZXZpZXcNCkZvciB5b3VyIGNvbmNlcm4gYWJvdXQg
bGluayBncGwgYmluYXJ5IHdpdGggYnNkIHByb2plY3QsIEkgd2lsbCBjb250YWN0IG91ciBsaWNl
bnNlIGV4cGVydHMuDQpXaWxsIHVwZGF0ZSBpdCBhc2FwLiANCg0KLS0NCkNoZWVycywNCkp1c3Rp
biAoSmlhIEhlKQ0KDQoNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBT
aGFyYW4gU2FudGhhbmFtIDxzaGFyYW4uc2FudGhhbmFtQG5lY2xhYi5ldT4NCj4gU2VudDogTW9u
ZGF5LCBBcHJpbCA2LCAyMDIwIDU6MzQgUE0NCj4gVG86IEp1c3RpbiBIZSA8SnVzdGluLkhlQGFy
bS5jb20+OyBtaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmc7DQo+IFNpbW9uIEt1ZW56
ZXIgPHNpbW9uLmt1ZW56ZXJAbmVjbGFiLmV1PjsgRmVsaXBlIEh1aWNpDQo+IDxmZWxpcGUuaHVp
Y2lAbmVjbGFiLmV1Pg0KPiBDYzogS2FseSBYaW4gPEthbHkuWGluQGFybS5jb20+OyBuZCA8bmRA
YXJtLmNvbT4NCj4gU3ViamVjdDogUmU6IFtVTklLUkFGVCBQQVRDSCB2MyAyLzddIGJ1aWxkOiBM
aW5rIGxpYmdjYyBhdCB0aGUgZW5kIG9mIHRoZSBsaW5rDQo+IG9wdGlvbnMgbGlzdA0KPiANCj4g
SGVsbG8gSnVzdGluLA0KPiANCj4gUGxlYXNlIGZpbmQgdGhlIGNvbW1lbnQgaW5saW5lLg0KPiAN
Cj4gVGhhbmtzICYgUmVnYXJkcw0KPiANCj4gU2hhcmFuDQo+IA0KPiBPbiA0LzIvMjAgNjoxOCBB
TSwgSmlhIEhlIHdyb3RlOg0KPiA+IFRvIHVzZSBuZXdsaWIgb24gYXJtNjQgcGxhdCBrdm0sIGxp
YmdjYyBzaG91bGQgYmUgbGlua2VkIGF0IHRoZSBlbmQgb2YNCj4gPiB0aGUgb3B0aW9ucyBsaXN0
LCBvdGhlcndpc2UgaXQgd2lsbCBiZSBpZ25vcmVkIGR1ZSB0byAtc3RkbGliLg0KPiA+DQo+ID4g
V2l0aG91dCB0aGlzIHBhdGNoLCB0aGVyZSB3aWxsIGJlIGEgbGlua2luZyBlcnJvciBvbiBhcm0g
a3ZtIHBsYXQ6DQo+ID4gc3lzbG9nLmM6KC50ZXh0KzB4N2Q1Y2MpOiB1bmRlZmluZWQgcmVmZXJl
bmNlIHRvIGBfX2Zsb2F0c2l0ZicNCj4gPiBzeXNsb2cuYzooLnRleHQrMHg3ZDVjYyk6IHJlbG9j
YXRpb24gdHJ1bmNhdGVkIHRvIGZpdDogUl9BQVJDSDY0X0NBTEwyNg0KPiBhZ2FpbnN0IHVuZGVm
aW5lZCBzeW1ib2wgYF9fZmxvYXRzaXRmJw0KPiA+IC9yb290L2hqL1VLL3VuaWtyYWZ0X3Vwc3Ry
ZWFtL2FwcHMvaGVsbG93b3JsZC9idWlsZC9oZWxsb3dvcmxkX2t2bS0NCj4gYXJtNjQubzogSW4g
ZnVuY3Rpb24gYF9faWVlZTc1NF9oeXBvdGwnOg0KPiA+IHN5c2xvZy5jOigudGV4dCsweDk5NDM0
KTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgX19tdWx0ZjMnDQo+ID4gc3lzbG9nLmM6KC50ZXh0
KzB4OTk0MzQpOiByZWxvY2F0aW9uIHRydW5jYXRlZCB0byBmaXQ6IFJfQUFSQ0g2NF9DQUxMMjYN
Cj4gYWdhaW5zdCB1bmRlZmluZWQgc3ltYm9sIGBfX211bHRmMycNCj4gPiBzeXNsb2cuYzooLnRl
eHQrMHg5OTQ0NCk6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYF9fbXVsdGYzJw0KPiA+IHN5c2xv
Zy5jOigudGV4dCsweDk5NDQ0KTogYWRkaXRpb25hbCByZWxvY2F0aW9uIG92ZXJmbG93cyBvbWl0
dGVkIGZyb20gdGhlDQo+IG91dHB1dA0KPiA+IHN5c2xvZy5jOigudGV4dCsweDk5NDUwKTogdW5k
ZWZpbmVkIHJlZmVyZW5jZSB0byBgX19hZGR0ZjMnDQo+ID4gL3Jvb3QvaGovVUsvdW5pa3JhZnRf
dXBzdHJlYW0vYXBwcy9oZWxsb3dvcmxkL2J1aWxkL2hlbGxvd29ybGRfa3ZtLQ0KPiBhcm02NC5v
OiBJbiBmdW5jdGlvbiBgc3FydGwnOg0KPiA+IHN5c2xvZy5jOigudGV4dCsweGIxMmMwKTogdW5k
ZWZpbmVkIHJlZmVyZW5jZSB0byBgX190cnVuY3RmZGYyJw0KPiA+IHN5c2xvZy5jOigudGV4dCsw
eGIxMmM4KTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgX19leHRlbmRkZnRmMicNCj4gPg0KPiA+
IEFib3ZlIHVuZGVmaW5lZCBzeW1ib2xzIGFyZSBhdCBsaWJnY2MuYQ0KPiA+DQo+ID4gU2lnbmVk
LW9mZi1ieTogSmlhIEhlIDxqdXN0aW4uaGVAYXJtLmNvbT4NCj4gPiAtLS0NCj4gPiAgIHBsYXQv
a3ZtL0xpbmtlci51ayB8IDIgKysNCj4gPiAgIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMo
KykNCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9wbGF0L2t2bS9MaW5rZXIudWsgYi9wbGF0L2t2bS9M
aW5rZXIudWsNCj4gPiBpbmRleCA1ZTQyMTkzLi42NWE1ZjhlIDEwMDY0NA0KPiA+IC0tLSBhL3Bs
YXQva3ZtL0xpbmtlci51aw0KPiA+ICsrKyBiL3BsYXQva3ZtL0xpbmtlci51aw0KPiA+IEBAIC0y
LDYgKzIsNyBAQCBpZmVxICh4ODZfNjQsJChDT05GSUdfVUtfQVJDSCkpDQo+ID4gICBLVk1fTERG
TEFHUy15ICs9IC1XbCwtbSxlbGZfeDg2XzY0DQo+ID4gICBlbHNlIGlmZXEgKGFybTY0LCQoQ09O
RklHX1VLX0FSQ0gpKQ0KPiA+ICAgS1ZNX0xERkxBR1MteQkgKz0gLVdsLC1tLGFhcmNoNjRlbGYN
Cj4gPiArS1ZNX0xJTktfTElCR0NDX0ZMQUcJOj0gLWxnY2MNCj4gPiAgIGVuZGlmDQo+ID4NCj4g
Pg0KPiA+IEBAIC0yNiw2ICsyNyw3IEBAICQoS1ZNX0RFQlVHX0lNQUdFKTogJChLVk1fQUxJQlMp
ICQoS1ZNX0FMSUJTLXkpDQo+ICQoS1ZNX09MSUJTKSAkKEtWTV9PTElCUy15KSBcDQo+ID4gICAJ
CQktV2wkKGNvbW1hKS0tc3RhcnQtZ3JvdXAgXA0KPiA+ICAgCQkJJChLVk1fQUxJQlMpICQoS1ZN
X0FMSUJTLXkpIFwNCj4gPiAgIAkJCSQoVUtfQUxJQlMpICQoVUtfQUxJQlMteSkgXA0KPiA+ICsJ
CQkkKEtWTV9MSU5LX0xJQkdDQ19GTEFHKSBcDQo+IEkgdGhpbmsgaXQgaXMgZmluZSBpZiB3ZSBj
b3VsZCBkaXJlY3RseSBpbmNsdWRlIHRoZSBsaWJnY2MuYSBpbnRvIG91cg0KPiBzdGF0aWNhbGx5
IGJ1aWx0IGJpbmFyeSBhcyB0aGlzIGNvbWUgR1BMIHYzLiBEbyB5b3Uga25vdyBpZiB0aGlzIGhh
cyBhbg0KPiBpbXBhY3Qgb24gdGhlIEJTRCBsaWNlbnNlPw0KPiA+ICAgCQkJLVdsJChjb21tYSkt
LWVuZC1ncm91cCBcDQo+ID4gICAJCQktbyAkKEtWTV9JTUFHRSkubGQubykNCj4gPiAgIAkkKGNh
bGwgYnVpbGRfY21kLE9CSkNPUFksLCQoS1ZNX0lNQUdFKS5vLFwNCl9fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QK
TWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVj
dC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Tue Apr 07 02:35:53 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 07 Apr 2020 02:35: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 1jLe5g-0006l7-4R; Tue, 07 Apr 2020 02:35:52 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=hwa8=5X=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1jLe5f-0006l2-2h
 for minios-devel@lists.xenproject.org; Tue, 07 Apr 2020 02:35:51 +0000
X-Inumbo-ID: 7d8eb2c8-7878-11ea-9e09-bc764e2007e4
Received: from EUR01-DB5-obe.outbound.protection.outlook.com (unknown
 [2a01:111:f400:fe02::607])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 7d8eb2c8-7878-11ea-9e09-bc764e2007e4;
 Tue, 07 Apr 2020 02:35:49 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; 
 s=selector2-armh-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=+TfG9nNdKPijLmIh0r1sU7DBYc50AQrdzbCfxd92cz0=;
 b=wtUpCagrrCTwXF59mHCiQ68s36222giMOzs3T/jfTj2aPz2Brtj9NRMOcdktLGLzPJt9Mbnk42iy8PCRij0BpK86BBQEGdTPt7aU0TYmdXMZZX22krc+O0mrusGexFPaneGbo6C9KHnCmE55XewEmtXIrTmAKPB9tb5er71+uVI=
Received: from AM3PR07CA0084.eurprd07.prod.outlook.com (2603:10a6:207:6::18)
 by VI1PR08MB3024.eurprd08.prod.outlook.com (2603:10a6:803:45::13) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2878.15; Tue, 7 Apr
 2020 02:35:46 +0000
Received: from AM5EUR03FT047.eop-EUR03.prod.protection.outlook.com
 (2603:10a6:207:6:cafe::f6) by AM3PR07CA0084.outlook.office365.com
 (2603:10a6:207:6::18) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2900.6 via Frontend
 Transport; Tue, 7 Apr 2020 02:35:46 +0000
Authentication-Results: spf=pass (sender IP is 63.35.35.123)
 smtp.mailfrom=arm.com; lists.xenproject.org; dkim=pass (signature was
 verified) header.d=armh.onmicrosoft.com;lists.xenproject.org;
 dmarc=bestguesspass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 63.35.35.123 as permitted sender) receiver=protection.outlook.com;
 client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com;
Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by
 AM5EUR03FT047.mail.protection.outlook.com (10.152.16.197) with
 Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.2856.17 via Frontend Transport; Tue, 7 Apr 2020 02:35:45 +0000
Received: ("Tessian outbound e2c88df8bbbe:v50");
 Tue, 07 Apr 2020 02:35:45 +0000
X-CR-MTA-TID: 64aa7808
Received: from f576ba9d9ddf.1
 by 64aa7808-outbound-1.mta.getcheckrecipient.com id
 129B7E09-8587-4C37-823F-2A93BB878EFC.1; 
 Tue, 07 Apr 2020 02:35:40 +0000
Received: from EUR05-AM6-obe.outbound.protection.outlook.com
 by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id f576ba9d9ddf.1
 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384);
 Tue, 07 Apr 2020 02:35:40 +0000
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=M1eSmL2EaNOqeZhj/PM1nxx4ODBckpv+j8FGLkYzxDXoH5JV/cX8iF3SfobIRlnFjSqxSUSf+zWHmibMsZRDmmLIDI0MPNyCxF8aRnr5oC9yQvb2cXVfbmO6UFlxC6GRxaVK9uulJ+/5cAm+irySJW9cjH6dygrW2GJdFrszrWSpX1N++muhE7UR6JVW64S81PovZeTcZwxCQc1s6K8UpIhEE780lRvFdYsMEIOtRlfJ/G8r/R3ddJnxong7Zjrf9QIOBqJ0kaCBrWNeL9UiV+NHp6XU5ic96K9fkWsrmd139TegSLuLpXylVLFY/3FrNCNhgfqZjGyJb13AwxIfVw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; 
 s=arcselector9901;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=+TfG9nNdKPijLmIh0r1sU7DBYc50AQrdzbCfxd92cz0=;
 b=Vl/MNwB+A/xGgEbFW/OD0Sm+v4i+Quep/vCuw7/wxn9xZ83UinSARDb4XLEkrnM1himiQEln0ahhQ0j8AMIyzbIiUhfI6N0WdqsCShi52S/8NQ67thXWdyc1zQCoR5q4H5Lcy0XkxZdeWBfiHRa1cPVdGpCjm4OjzfFarkRO1Y03sab8uhaGVykeIpIYRsPIdbavfcIV/YTQKdPul9ykPb5ucARvSCrShWjdHmtgd6iYWDTenCVRlyKourx8gUDe4oHyaBiCrjdQ3KjSiKkaOavEC808VNTa5Hd+l5rEWVTqoeMWjLp5eYS1rWV7+snxfYiXASqX3vMyd7xtddo6RQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; 
 s=selector2-armh-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=+TfG9nNdKPijLmIh0r1sU7DBYc50AQrdzbCfxd92cz0=;
 b=wtUpCagrrCTwXF59mHCiQ68s36222giMOzs3T/jfTj2aPz2Brtj9NRMOcdktLGLzPJt9Mbnk42iy8PCRij0BpK86BBQEGdTPt7aU0TYmdXMZZX22krc+O0mrusGexFPaneGbo6C9KHnCmE55XewEmtXIrTmAKPB9tb5er71+uVI=
Received: from AM6PR08MB4069.eurprd08.prod.outlook.com (20.179.3.160) by
 AM6PR08MB4707.eurprd08.prod.outlook.com (10.255.96.76) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.2878.19; Tue, 7 Apr 2020 02:35:38 +0000
Received: from AM6PR08MB4069.eurprd08.prod.outlook.com
 ([fe80::60b6:c319:1c9b:8919]) by AM6PR08MB4069.eurprd08.prod.outlook.com
 ([fe80::60b6:c319:1c9b:8919%7]) with mapi id 15.20.2878.018; Tue, 7 Apr 2020
 02:35:38 +0000
From: Justin He <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>, Felipe Huici
 <felipe.huici@neclab.eu>
Thread-Topic: [UNIKRAFT PATCH v3 3/7] plat/kvm: arm64: Enable the fp/simd at
 the starting point
Thread-Index: AQHWCKXcDmLmOieENUqHUIrfTWpmn6hr3LWAgAEaugA=
Date: Tue, 7 Apr 2020 02:35:37 +0000
Message-ID: <AM6PR08MB4069CC0494B45DF5BC2084ECF7C30@AM6PR08MB4069.eurprd08.prod.outlook.com>
References: <20200402041833.141738-1-justin.he@arm.com>
 <20200402041833.141738-4-justin.he@arm.com>
 <d0ddfa4b-e8b1-e8c2-7be6-6b969f3e303e@neclab.eu>
In-Reply-To: <d0ddfa4b-e8b1-e8c2-7be6-6b969f3e303e@neclab.eu>
Accept-Language: en-US, zh-CN
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ts-tracking-id: 3154c6d7-d8c3-4ef9-82b7-e040aaeea395.1
x-checkrecipientchecked: true
Authentication-Results-Original: 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-HT: Tenant
X-MS-Office365-Filtering-Correlation-Id: ae47c41e-7309-4e8d-5801-08d7da9c5fee
x-ms-traffictypediagnostic: AM6PR08MB4707:|AM6PR08MB4707:|VI1PR08MB3024:
x-ms-exchange-transport-forked: True
X-Microsoft-Antispam-PRVS: <VI1PR08MB3024400E653F8FDC7B33C9FAF7C30@VI1PR08MB3024.eurprd08.prod.outlook.com>
x-checkrecipientrouted: true
nodisclaimer: true
x-ms-oob-tlc-oobclassifiers: OLM:6108;OLM:6108;
x-forefront-prvs: 036614DD9C
X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en;
 SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM6PR08MB4069.eurprd08.prod.outlook.com;
 PTR:; CAT:NONE; SFTY:;
 SFS:(10009020)(4636009)(366004)(136003)(39850400004)(346002)(396003)(376002)(64756008)(110136005)(2906002)(7696005)(66946007)(54906003)(52536014)(66556008)(81166006)(478600001)(55236004)(66446008)(6506007)(86362001)(66476007)(76116006)(53546011)(316002)(9686003)(26005)(71200400001)(4326008)(5660300002)(8676002)(8936002)(186003)(55016002)(33656002)(81156014);
 DIR:OUT; SFP:1101; 
received-spf: None (protection.outlook.com: arm.com does not designate
 permitted sender hosts)
X-MS-Exchange-SenderADCheck: 1
X-Microsoft-Antispam-Untrusted: BCL:0;
X-Microsoft-Antispam-Message-Info-Original: Gl9MFLl2PBqVf+W2XVjQPC97oxsDkZxVZbJF0bMpjPjF4gORnyHsxMHai5VGhfu/+4+/6Civ5nZ487QzMJ/J+n3nhU7vq314P7rOpGSb/bjmlMDPZKoiCIE1SUyIkVHJC5wZjy9gpR1Jy44lAvEtq2sgCoIBIJ/stoLMiLed8fev+HjcOeiMk7g++Hf63s2+he/sc7HbS+FLd2vkO+vqJXar1MWbIZiDx0VmQTndHrdLHSLiRPdYWBzQO560DMDa8pi75rkYAO/0QqJ2ns1gcyWDM7NTNCOgGZ2z0WB4/mU12zdkijdE/r2hvPg1/l1JdTjmzdVTuFb++dm4PSs8JFBQOnhIuTd+/k/tmmq8Cmvo6KMnsZvM8sDR1qitLB93SS0YUsyP4fv2LaXdbqXppQD+RNlxpJAhiU34yT7YH2eP/8rFWvwoXnScxolS6utS
x-ms-exchange-antispam-messagedata: kdhwuF24hTA2GdufN/K4uLXBYvfAJIF6Lc4OgS7aCo5JLgB81NjOkZLWWpuU635/GfkbdmU1TQaSM/abwO+X6FoznY7Xs12D8xbt61T3JpaOE92re0fXjAus7yzuMUiRUPwmKfNXxpbEZ5320R4vyg==
MIME-Version: 1.0
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB4707
Original-Authentication-Results: spf=none (sender IP is )
 smtp.mailfrom=Justin.He@arm.com; 
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM5EUR03FT047.eop-EUR03.prod.protection.outlook.com
X-Forefront-Antispam-Report: CIP:63.35.35.123; CTRY:IE; LANG:en; SCL:1; SRV:;
 IPV:CAL; SFV:NSPM; H:64aa7808-outbound-1.mta.getcheckrecipient.com;
 PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com; CAT:NONE; SFTY:;
 SFS:(10009020)(4636009)(39850400004)(396003)(346002)(376002)(136003)(46966005)(186003)(33656002)(8936002)(8676002)(81156014)(82740400003)(356004)(4326008)(47076004)(53546011)(55016002)(9686003)(81166006)(6506007)(52536014)(54906003)(336012)(478600001)(36906005)(7696005)(26005)(70586007)(26826003)(70206006)(316002)(110136005)(2906002)(5660300002)(86362001);
 DIR:OUT; SFP:1101; 
X-MS-Office365-Filtering-Correlation-Id-Prvs: 1c67a6f7-1dd5-4307-bba7-08d7da9c5b72
X-Forefront-PRVS: 036614DD9C
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info: rN2du73fipV7ZZhLp+NmuExV+80Wc0PAE96qO33FSzbEF37/UEJ9x6Nj1OyBFHfDFLAudy6MOuzDySrQpQYWgFibvnM8ajjdN9XoJl33D09WUh2RpAKbNadAp/LA4/jLq+hWjhOv6TOiyWO7tgwBpi46dISQQCy85Cr5uMVWUdd5w6447x8lvnt4yLimn+bqYNNLICXmI49NZ9Padt6+w7g9ZiyN5UpywNHxon2tPFm04SLA/MVIWdqmDvqO+5H0LRmQ33JZGp171vACaZTA3C+99P+xWdT8EjSBPG+yIYmn0bn6oUYJRPVRNh4CgqAdSiFp6FPhgAGl3djLmj8RBwNsQMpkDggpgiN0EItpB7/VzMlr1TYWY2ma/qB6AnQ2czl6djbnOcjP91UY7nztTRBZi4FwUW6FbaeWmGqmYuhwuk/J0uNZ4sE6Qs+pOXp/9ju5gFDBj+FUm3J0rfZk7amMh+/v/IhOr3jQsvfk7YBl5xiqkB4HHfaOAfb71/oKrCeS2GWMrgpGJmsTYXtjSA==
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Apr 2020 02:35:45.4732 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: ae47c41e-7309-4e8d-5801-08d7da9c5fee
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[63.35.35.123];
 Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com]
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR08MB3024
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v3 3/7] plat/kvm: arm64: Enable
 the fp/simd at the starting point
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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: Kaly Xin <Kaly.Xin@arm.com>, nd <nd@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>

SGkgU2hhcmFuDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogU2hhcmFu
IFNhbnRoYW5hbSA8c2hhcmFuLnNhbnRoYW5hbUBuZWNsYWIuZXU+DQo+IFNlbnQ6IE1vbmRheSwg
QXByaWwgNiwgMjAyMCA1OjM4IFBNDQo+IFRvOiBKdXN0aW4gSGUgPEp1c3Rpbi5IZUBhcm0uY29t
PjsgbWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnOw0KPiBTaW1vbiBLdWVuemVyIDxz
aW1vbi5rdWVuemVyQG5lY2xhYi5ldT47IEZlbGlwZSBIdWljaQ0KPiA8ZmVsaXBlLmh1aWNpQG5l
Y2xhYi5ldT4NCj4gQ2M6IEthbHkgWGluIDxLYWx5LlhpbkBhcm0uY29tPjsgbmQgPG5kQGFybS5j
b20+DQo+IFN1YmplY3Q6IFJlOiBbVU5JS1JBRlQgUEFUQ0ggdjMgMy83XSBwbGF0L2t2bTogYXJt
NjQ6IEVuYWJsZSB0aGUgZnAvc2ltZA0KPiBhdCB0aGUgc3RhcnRpbmcgcG9pbnQNCj4gDQo+IA0K
PiBPbiA0LzIvMjAgNjoxOCBBTSwgSmlhIEhlIHdyb3RlOg0KPiA+IFdyaXRlIHRoZSBzeXMgcmVn
IHRvIGVuYWJsZSB0aGUgZnAvc2ltZCBmZWF0dXJlLCBvdGhlcndpc2UgaXQgd2lsbA0KPiA+IGNh
dXNlIGZsb2F0aW5nIHBvaW50L3NpbWQgZXhjZXB0aW9uIHdoZW4gdG91Y2hpbmcgcTAtcTMxLg0K
PiA+DQo+ID4gU2lnbmVkLW9mZi1ieTogSmlhIEhlIDxqdXN0aW4uaGVAYXJtLmNvbT4NCj4gPiAt
LS0NCj4gPiAgIHBsYXQva3ZtL2FybS9lbnRyeTY0LlMgfCA4ICsrKysrKysrDQo+ID4gICAxIGZp
bGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspDQo+ID4NCj4gPiBkaWZmIC0tZ2l0IGEvcGxhdC9r
dm0vYXJtL2VudHJ5NjQuUyBiL3BsYXQva3ZtL2FybS9lbnRyeTY0LlMNCj4gPiBpbmRleCAzNTlh
MzEwLi4xZTMyMjY4IDEwMDY0NA0KPiA+IC0tLSBhL3BsYXQva3ZtL2FybS9lbnRyeTY0LlMNCj4g
PiArKysgYi9wbGF0L2t2bS9hcm0vZW50cnk2NC5TDQo+ID4gQEAgLTM2LDYgKzM2LDcgQEANCj4g
PiAgICNpbmNsdWRlIDxrdm0tYXJtL21tLmg+DQo+ID4gICAjaW5jbHVkZSA8YXJtL2NwdV9kZWZz
Lmg+DQo+ID4gICAjaW5jbHVkZSA8dWsvcGxhdC9jb21tb24vc2VjdGlvbnMuaD4NCj4gPiArI2lu
Y2x1ZGUgPHVrL2NvbmZpZy5oPg0KPiA+DQo+ID4gICAuZ2xvYmFsIHBhZ2VfdGFibGVfc2l6ZQ0K
PiA+ICAgLmRhdGENCj4gPiBAQCAtNDksNiArNTAsMTMgQEAgcGFnZV90YWJsZV9zaXplOg0KPiA+
DQo+ID4gICAudGV4dA0KPiA+ICAgRU5UUlkoX2xpYmt2bXBsYXRfZW50cnkpDQo+ID4gKyNpZmRl
ZiBDT05GSUdfRkxPQVRfUE9JTlQNCj4gPiArCS8qIEVuYWJsZSBmcC9zaW1kIHN1cHBvcnQgKi8N
Cj4gPiArCWxkciAgICAgICAgeDAsID0oMyA8PCAyMCkNCj4gPiArCW1zciAgICAgICAgY3BhY3Jf
ZWwxLCB4MA0KPiA+ICsJaXNiDQo+ID4gKyNlbmRpZg0KPiANCj4gRG8gd2UgbmVlZCB0byBlbmFi
bGUgdGhlIGZsb2F0aW5nIHBvaW50IHVwb24gZW50cnk/DQo+IA0KPiBJdCBtaWdodCBiZSBiZXR0
ZXIgdG8gZG8gaXQgYXQgdGhlIHNldHVwIHBoYXNlIGluIGBzZXR1cC5jYCBhbmQNCj4gaW1wbGVt
ZW50IHRoaXMgYXMgaW5saW5lIGFzc2VtYmx5DQpJZiB3ZSBkb24ndCBlbmFibGUgZnBzaW1kIHVw
b24gZW50cnksIHdlIG5lZWQgdG8gY2FyZWZ1bGx5IE5PVCBpbnZva2luZw0KYW55IHVrX3ByXyov
cHJpbnRmIGRlYnVnZ2luZyBpbnRlcmZhY2UgYmVmb3JlIGVuYWJsaW5nIGZwc2ltZC4gT3RoZXJ3
aXNlDQp0aGUgZ3Vlc3Qgd2lsbCBiZSB0cmFwcGVkIGludG8gZmxvYXRpbmdwb2ludCBleGNlcHRp
b24gYW5kIGhhbmcgZm9yZXZlci4gDQpQbGVhc2Ugbm90ZSB0aGF0IHdlIGNhbid0IHByZXZlbnQg
dGhlIHVrX3ByXyogb3IgcHJpbnRmIGZyb20gdXNpbmcgcTAtcTMxLg0KDQpXaGF0IGRvIHlvdSB0
aGluayBvZiBpdD8NCg0KLS0NCkNoZWVycywNCkp1c3RpbiAoSmlhIEhlKQ0KDQogDQo+IFNpbmNl
IGl0IGlzIGEgY3B1IGZlYXR1cmUsIGl0IG1pZ2h0IGJlIGJldHRlciB0byBwcm92aWRlIGZ1bmN0
aW9ucyB0bw0KPiBlbmFibGUgYW5kIGRpc2FibGUgaXQuDQo+IA0KPiA+ICsNCj4gPiAgIAkvKiBD
YWxjdWxhdGUgdGhlIGltYWdlIHNpemUgKi8NCj4gPiAgIAlsZHIgeDI1LCA9X2R0Yg0KPiA+ICAg
CWxkciB4MjYsID1fZW5kDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5w
cm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8v
bWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Tue Apr 07 07:03:05 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 07 Apr 2020 07:03: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 1jLiGF-0003pb-MB; Tue, 07 Apr 2020 07:03:03 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=FK1Q=5X=uliege.be=gaulthier.gain@srs-us1.protection.inumbo.net>)
 id 1jLiGD-0003pU-0K
 for minios-devel@lists.xen.org; Tue, 07 Apr 2020 07:03:01 +0000
X-Inumbo-ID: cb0c1fd4-789d-11ea-b4f4-bc764e2007e4
Received: from serv108.segi.ulg.ac.be (unknown [139.165.32.111])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id cb0c1fd4-789d-11ea-b4f4-bc764e2007e4;
 Tue, 07 Apr 2020 07:02:50 +0000 (UTC)
Received: from gaulthiers-mbp.lan (151.169-240-81.adsl-dyn.isp.belgacom.be
 [81.240.169.151])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (No client certificate requested)
 by serv108.segi.ulg.ac.be (Postfix) with ESMTPSA id 80AFA20104D2;
 Tue,  7 Apr 2020 09:02:49 +0200 (CEST)
DKIM-Filter: OpenDKIM Filter v2.11.0 serv108.segi.ulg.ac.be 80AFA20104D2
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=uliege.be;
 s=ulg20190529; t=1586242969;
 bh=bZ0QFK57LKlOQ+mI7rtwYL77y7CYvOA4R9QzC7Zrikk=;
 h=Subject:From:In-Reply-To:Date:Cc:References:To:From;
 b=ieX8XNAe3qDCMsf3OJ+NsXzJ+4WaSIHAveptItrA31d2DvaODkdPMK4IwQUIWOqzy
 HwXwzweVPkJD/Ot0Hvoxiz6VIAKAuh7R3ueVj0eRIeZkdS6f8ByRG+oQ4oDPK1s1Ec
 uJ85DO8wei2bd8rl8wGN6brSmVpGvh2C/tc2J1Q0+DvA3NmLOOCzBL9CsGLeS9Iiyx
 YvfObNrl14eHMQdZbgyGQdt/2Yf4DXM7p+uLL/2XiAbh3DCaIJrKW+PKkv6qbNC4Ht
 6QJ347behe+gy5ALNSYejo0mO7YNDFj9xkP0U7SlyUEYTd3pbYHyQMoOI0RL5YTFTN
 y9Yyc39PJ3Jyw==
Mime-Version: 1.0 (Mac OS X Mail 13.0 \(3608.60.0.2.5\))
From: Gaulthier Gain <Gaulthier.Gain@uliege.be>
In-Reply-To: <20200403162939.31745-1-simon.kuenzer@neclab.eu>
Date: Tue, 7 Apr 2020 09:02:48 +0200
Message-Id: <00599042-5FCF-411A-9729-FE9D264E2EFE@uliege.be>
References: <20200403162939.31745-1-simon.kuenzer@neclab.eu>
To: Simon Kuenzer <simon.kuenzer@neclab.eu>
X-Mailer: Apple Mail (2.3608.60.0.2.5)
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2 0/5] lib/syscall_shim:
 Further improvements
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>, 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>

SGkgU2ltb24sIAoKVGhhbmtzIGEgbG90IGZvciB0aGlzIHBhdGNoIHNlcmllcy4gQWxsIGlzIGZp
bmUhCgo+IE9uIDMgQXByIDIwMjAsIGF0IDE4OjI5LCBTaW1vbiBLdWVuemVyIDxzaW1vbi5rdWVu
emVyQG5lY2xhYi5ldT4gd3JvdGU6Cj4gCj4gVGhpcyBwYXRjaCBzZXJpZXMgaW50cm9kdWNlcyAz
IGltcHJvdmVtZW50cy9maXhlcyB0byB0aGUgd2F5IGhvdwo+IHN5c3RlbSBjYWxscyBjYW4gYmUg
aW1wbGVtZW50ZWQgYW5kIHJlZ2lzdGVyZWQgdG8gdGhlIHN5c3RlbSBjYWxsCj4gc2hpbSBsaWJy
YXJ5Ogo+IDEpIEludHJvZHVjZXMgbG93LWxldmVsIHZhcmlhbnRzIG9mIFVLX1NZU0NBTExfREVG
SU5FIGFuZAo+ICAgVUtfU1lTQ0FMTF9SX0RFRklORSB0aGF0IGFsbG93IHRvIGltcGxlbWVudCBv
d24gbGliYy1zdHlsZSB3cmFwcGVyczoKPiAgIFVLX0xMU1lTQ0FMTF9ERUZJTkUsIFVLX0xMU1lT
Q0FMTF9SX0RFRklORS4gVGhlc2UgdmFyaWFudHMgYXJlCj4gICBuZWVkZWQgd2hlbmV2ZXIgdGhl
IHNpZ251dGFyZSBvZiBsaWJjLXN0eWxlIHdyYXBwZXJzIGRvZXMgbm90IG1hdGNoCj4gICB3aXRo
IHRoZSB1bmRlcmx5aW5nIExpbnV4IHN5c3RlbSBjYWxsIHNpZ25hdHVyZS4KPiAyKSBJbnRyb2R1
Y2VzIGFuIG9wdGlvbiB0byBkaXNhYmxlIGdlbmVyYXRpbmcgbGliYy1zdHlsZSB3cmFwcGVycy4K
PiAgIFRoaXMgaXMgbmVlZGVkIHdoZW5ldmVyIGEgbGliQyBsaWJyYXJ5IGlzIHByb3ZpZGluZyBv
d24gd3JhcHBlcnMKPiAgIGFuZCBiYXNlcyBpdHMgaW1wbGVtZW50YXRpb25zIHRvIGxpYi9zeXNj
YWxsX3NoaW0gKGUuZy4sIG11c2wpLgo+IDMpIFVLX1NZU0NBTExfUl9ERUZJTkUgYW5kIFVLX0xM
U1lTQ0FMTF9SX0RFRklORSBkbyBubyBsb25nZXIgc2V0IHRoZQo+ICAgcmV0dXJuIHR5cGUganVz
dCB0byBsb25nLiBUaGV5IHVzZSB0aGUgdXNlci1naXZlbiByZXR1cm4gdHlwZSBpbnN0ZWFkLgo+
ICAgVGhpcyBpcyBkb25lIGZvciBjb252ZW5pZW5jZSByZWFzb25zIGJlY2F1c2UgaXQgcmVkdWNl
cwo+ICAgdHlwZWNhc3Rpbmcgb2YgcmV0dXJuIHZhbHVlcyBvbiByYXcgc3lzdGVtIGNhbGwgaW1w
bGVtZW50YXRpb25zLgo+IAo+IEFkZGl0aW9uYWxseSwgdGhpcyBzZXJpZXMgaW50cm9kdWNlcyB0
d28gZmVhdHVyZXMgd2hpY2ggbWF5IGhlbHBmdWwKPiB3aGVuIGNyZWF0aW5nIFVuaWtlcm5lbHM6
Cj4gNCkgQW4gb3B0aW9uIHRvIGdlbmVyYXRlIHN0dWJzIGZvciB1bmF2YWlsYWJsZSBzeXN0ZW0g
Y2FsbHMgaW4gb3JkZXIKPiAgIHRvIGdldCB0aGUgZnVsbCBBUEkuCj4gNSkgUHJvdmlkZSBhIHZh
cmlhbnQgb2YgdWtfc3lzY2FsbCgpIGFuZCB1a19zeXNjYWxsX3IoKSB0aGF0IGFjY2VwdHMKPiAg
IGEgdmFyaWFibGUgYXJndW1lbnQgbGlzdDogdWtfdnN5c2NhbGwoKSBhbmQgdWtfdnN5c2NhbGxf
cigpCj4gCj4gQ2hhbmdlcyB2MjoKPiAtIFNlcmllcyB0aXRsZSBjaGFuZ2VkIGZyb20gJ0ltcHJv
dmVtZW50cyB0b3dhcmRzIG11c2wgaW50ZWdyYXRpb24nCj4gLSBPcHRpb24gdG8gZ2VuZXJhdGUg
bGliYy1zdHlsZSB3cmFwcGVyIHN0dWJzCj4gLSBJbnRyb2R1Y2UgdWtfdnN5c2NhbGwoKSwgdWtf
dnN5c2NhbGxfcigpCj4gCj4gU2ltb24gS3VlbnplciAoNSk6Cj4gIGxpYi9zeXNjYWxsX3NoaW06
IFVLX0xMU1lTQ0FMTF8oUl8pX0RFRklORSB2YXJpYW50cwo+ICBsaWIvc3lzY2FsbF9zaGltOiBP
cHRpb24gdG8gZGlzYWJsZSBsaWJjLXN0eWxlIHdyYXBwZXIgZnVuY3Rpb25zCj4gIGxpYi9zeXNj
YWxsX3NoaW06IGBVS18oTEwpU1lTQ0FMTF9SX0RFRklORSgpYDogVXNlIGdpdmVuIHJldHVybiB0
eXBlCj4gIGxpYi9zeXNjYWxsX3NoaW06IFByb3ZpZGUgdWtfdnN5c2NhbGwoKSwgdWtfdnN5c2Nh
bGxfcigpCj4gIGxpYi9zeXNjYWxsX3NoaW06IE9wdGlvbiB0byBnZW5lcmF0ZSBsaWJjLXN0eWxl
IHN0dWJzCj4gCj4gZG9jL2d1aWRlcy9kZXZlbG9wZXJzLWFwcC5yc3QgICAgICAgICAgfCAgNTUg
KysrKysrKystLQo+IGxpYi9zeXNjYWxsX3NoaW0vQ29uZmlnLnVrICAgICAgICAgICAgIHwgIDIx
ICsrKysKPiBsaWIvc3lzY2FsbF9zaGltL01ha2VmaWxlLnVrICAgICAgICAgICB8ICAgOCArKwo+
IGxpYi9zeXNjYWxsX3NoaW0vZ2VuX2xpYmNfc3R1YnMuYXdrICAgIHwgIDE2ICsrKwo+IGxpYi9z
eXNjYWxsX3NoaW0vaW5jbHVkZS91ay9zeXNjYWxsLmggIHwgMTQwICsrKysrKysrKysrKysrKysr
KysrLS0tLS0KPiBsaWIvc3lzY2FsbF9zaGltL3VrX3N5c2NhbGwuYy5pbl9lbmQgICB8ICAxMiAr
KysKPiBsaWIvc3lzY2FsbF9zaGltL3VrX3N5c2NhbGxfci5jLmluX2VuZCB8ICAxMiArKysKPiA3
IGZpbGVzIGNoYW5nZWQsIDIyOSBpbnNlcnRpb25zKCspLCAzNSBkZWxldGlvbnMoLSkKPiBjcmVh
dGUgbW9kZSAxMDA2NDQgbGliL3N5c2NhbGxfc2hpbS9nZW5fbGliY19zdHVicy5hd2sKPiAKPiAt
LSAKPiAyLjIwLjEKPiAKPiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXwo+IE1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKPiBNaW5pb3MtZGV2ZWxAbGlz
dHMueGVucHJvamVjdC5vcmcKPiBodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4v
bGlzdGluZm8vbWluaW9zLWRldmVsCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxAbGlz
dHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xp
c3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Tue Apr 07 07:03:34 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 07 Apr 2020 07:03: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 1jLiGk-0003re-Px; Tue, 07 Apr 2020 07:03:34 +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=FK1Q=5X=uliege.be=gaulthier.gain@srs-us1.protection.inumbo.net>)
 id 1jLiGj-0003rV-UZ
 for minios-devel@lists.xen.org; Tue, 07 Apr 2020 07:03:33 +0000
X-Inumbo-ID: e3f36674-789d-11ea-8076-12813bfff9fa
Received: from serv108.segi.ulg.ac.be (unknown [139.165.32.111])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id e3f36674-789d-11ea-8076-12813bfff9fa;
 Tue, 07 Apr 2020 07:03:32 +0000 (UTC)
Received: from gaulthiers-mbp.lan (151.169-240-81.adsl-dyn.isp.belgacom.be
 [81.240.169.151])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (No client certificate requested)
 by serv108.segi.ulg.ac.be (Postfix) with ESMTPSA id 7F27D20104C8;
 Tue,  7 Apr 2020 09:03:31 +0200 (CEST)
DKIM-Filter: OpenDKIM Filter v2.11.0 serv108.segi.ulg.ac.be 7F27D20104C8
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=uliege.be;
 s=ulg20190529; t=1586243011;
 bh=dtvpUBrdwhKJkETS9KkBeNppBGpRJRKPjbHyLuR1HRk=;
 h=Subject:From:In-Reply-To:Date:Cc:References:To:From;
 b=n9CQW9p9muey8L3ct4xMoHIfRrBfR2/znieWPNfKp/287RlYPNnMeHtSZOq4yZ0G+
 oiabXCjz+vIUz3gcmXPsPUd4Tvej1NwbfKMzIlvZ3UBKXr8pjATl9zfNKeeQBdrMp8
 WV9pKEgslpZ+9v8LccZ7iHUNLbf1m+IZbzUTceRjuUn6pMBw/Lu9HN0tOFzapLlkub
 KnAuq+hg4KFcq13YDems5gdIfLxP3mh4B85yJDbHCm9/pp57EESkmSjeo4/02H/X/Y
 2ftA6uWTKyMNp1zga4l4ibuEbQyL98UZoWNzkuAeN6Wjd3Q8WfG8Zygs9NE//lB6sx
 H3YBg0lhgmEpA==
Mime-Version: 1.0 (Mac OS X Mail 13.0 \(3608.60.0.2.5\))
From: Gaulthier Gain <Gaulthier.Gain@uliege.be>
In-Reply-To: <20200403162939.31745-4-simon.kuenzer@neclab.eu>
Date: Tue, 7 Apr 2020 09:03:30 +0200
Message-Id: <C92F6B3B-FFC0-4B00-BBC8-46666FA7DD7C@uliege.be>
References: <20200403162939.31745-1-simon.kuenzer@neclab.eu>
 <20200403162939.31745-4-simon.kuenzer@neclab.eu>
To: Simon Kuenzer <simon.kuenzer@neclab.eu>
X-Mailer: Apple Mail (2.3608.60.0.2.5)
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2 3/5] lib/syscall_shim:
 `UK_(LL)SYSCALL_R_DEFINE()`: Use given return type
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>, 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>

UmV2aWV3ZWQtYnk6IEdhdWx0aGllciBHYWluIDxnYXVsdGhpZXIuZ2FpbkB1bGllZ2UuYmU+Cgo+
IE9uIDMgQXByIDIwMjAsIGF0IDE4OjI5LCBTaW1vbiBLdWVuemVyIDxzaW1vbi5rdWVuemVyQG5l
Y2xhYi5ldT4gd3JvdGU6Cj4gCj4gSW5zdGVhZCBvZiBkZWNsYXJpbmcgdGhlIHJldHVybiB0eXBl
IGZvciBgVUtfKExMKVNZU0NBTExfUl9ERUZJTkUoKWAKPiBmdW5jdGlvbnMgYXMgYGxvbmdgLCB0
aGUgdXNlci1naXZlbiByZXR1cm4gdHlwZSBpcyB1c2VkLiBJbiBnZW5lcmFsLAo+IHRoaXMgaXMg
ZG9uZSBmb3IgY29udmVuaWVuY2UuIFdoZW5ldmVyIGEgc3lzdGVtIGNhbGwgaW1wbGVtZW50YXRp
b24KPiB1c2VzIHBvaW50ZXJzIGFzIHJldHVybiB0eXBlLCB0aGUgaGVscGVycyBkZWZpbmVkIGlu
IGA8dWsvZXJycHRyLmg+YAo+IGNhbiBiZSB1c2VkIHRvIGVuY2Fwc3VsYXRlIGVycm9yIGNvZGVz
Lgo+IAo+IFNpZ25lZC1vZmYtYnk6IFNpbW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJAbmVjbGFi
LmV1Pgo+IC0tLQo+IGRvYy9ndWlkZXMvZGV2ZWxvcGVycy1hcHAucnN0ICAgICAgICAgfCAxNSAr
KysrKysrLS0tLS0tLS0KPiBsaWIvc3lzY2FsbF9zaGltL2luY2x1ZGUvdWsvc3lzY2FsbC5oIHwg
MTEgKysrKysrLS0tLS0KPiAyIGZpbGVzIGNoYW5nZWQsIDEzIGluc2VydGlvbnMoKyksIDEzIGRl
bGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kb2MvZ3VpZGVzL2RldmVsb3BlcnMtYXBwLnJz
dCBiL2RvYy9ndWlkZXMvZGV2ZWxvcGVycy1hcHAucnN0Cj4gaW5kZXggY2UyZjAxNTMuLmQ0MTNh
YWNlIDEwMDY0NAo+IC0tLSBhL2RvYy9ndWlkZXMvZGV2ZWxvcGVycy1hcHAucnN0Cj4gKysrIGIv
ZG9jL2d1aWRlcy9kZXZlbG9wZXJzLWFwcC5yc3QKPiBAQCAtNDAwLDE5ICs0MDAsMTggQEAgRXhh
bXBsZToKPiAKPiAgICAgVUtfU1lTQ0FMTF9SX0RFRklORShzc2l6ZV90LCB3cml0ZSwgaW50LCBm
ZCwgY29uc3Qgdm9pZCAqLCBidWYsIHNpemVfdCwgY291bnQpCj4gICAgIHsKPiAtICAgICAgICBs
b25nIHJldDsKPiArICAgICAgICBzc2l6ZV90IHJldDsKPiAKPiAtICAgICAgICByZXQgPSAobG9u
ZykgdmZzX2RvX3dyaXRlKGZkLCBidWYsIGNvdW50KTsKPiArICAgICAgICByZXQgPSB2ZnNfZG9f
d3JpdGUoZmQsIGJ1ZiwgY291bnQpOwo+ICAgICAgICAgaWYgKHJldCA8IDApIHsKPiAgICAgICAg
ICAgICByZXR1cm4gLUVGQVVMVDsKPiAgICAgICAgIH0KPiAgICAgICAgIHJldHVybiByZXQ7Cj4g
ICAgIH0KPiAKPiAtUGxlYXNlIG5vdGUgdGhhdCBpbiB0aGUgcmF3IGNhc2UgKGBgVUtfU1lTQ0FM
TF9SX0RFRklORWBgKSwgdGhlIHJldHVybiB0eXBlCj4gLXdpdGhpbiB5b3VyIGNvZGUgYmxvY2sg
aXMgYWx3YXlzIGBgbG9uZ2BgLiBUaGUgc3BlY2lmaWVkIHJldHVybiB0eXBlIGFzCj4gLXBhcmFt
ZXRlciB0byB0aGUgbWFjcm8gd2lsbCBiZSB1c2VkIGZvciB0aGUgbGliYy1zdHlsZSB3cmFwcGVy
LiBIb3dldmVyLCB0aGUKPiAtaW5wdXQgcGFyYW1ldGVycyBhcmUgZGVmaW5lZCB3aXRoIHRoZSBh
Y3R1YWwgdHlwZSBmb3IgeW91ciBjb2RlIGJsb2NrLgo+ICtQbGVhc2Ugbm90ZSB0aGF0IGluIHRo
ZSByYXcgY2FzZSAoYGBVS19TWVNDQUxMX1JfREVGSU5FYGApLCBlcnJvcnMgYXJlIGFsd2F5cwo+
ICtyZXR1cm5lZCBhcyBuZWdhdGl2ZSB2YWx1ZS4gV2hlbmV2ZXIgdGhlIHJldHVybiB0eXBlIGlz
IGEgcG9pbnRlciB2YWx1ZSwgdGhlCj4gK2hlbHBlcnMgZGVmaW5lZCBpbiBgPHVrL2VycnB0ci5o
PmAgY2FuIGJlIHVzZWQgdG8gZm9yd2FyZCBlcnJvciBjb2Rlcy4KPiAKPiBCb3RoIG1hY3JvcyBj
cmVhdGUgdGhlIGZvbGxvd2luZyB0aHJlZSBzeW1ib2xzOgo+IAo+IEBAIC00NDEsOSArNDQwLDkg
QEAgbGliYy1zdHlsZSB3cmFwcGVyIG9uIHRvcDoKPiAKPiAgICAgVUtfTExTWVNDQUxMX1JfREVG
SU5FKHNzaXplX3QsIHdyaXRlLCBpbnQsIGZkLCBjb25zdCB2b2lkICosIGJ1Ziwgc2l6ZV90LCBj
b3VudCkKPiAgICAgewo+IC0gICAgICAgIGxvbmcgcmV0Owo+ICsgICAgICAgIHNzaXplX3QgcmV0
Owo+IAo+IC0gICAgICAgIHJldCA9IChsb25nKSB2ZnNfZG9fd3JpdGUoZmQsIGJ1ZiwgY291bnQp
Owo+ICsgICAgICAgIHJldCA9IHZmc19kb193cml0ZShmZCwgYnVmLCBjb3VudCk7Cj4gICAgICAg
ICBpZiAocmV0IDwgMCkgewo+ICAgICAgICAgICAgIHJldHVybiAtRUZBVUxUOwo+ICAgICAgICAg
fQo+IGRpZmYgLS1naXQgYS9saWIvc3lzY2FsbF9zaGltL2luY2x1ZGUvdWsvc3lzY2FsbC5oIGIv
bGliL3N5c2NhbGxfc2hpbS9pbmNsdWRlL3VrL3N5c2NhbGwuaAo+IGluZGV4IDZlZTEzOWZhLi5h
YWZlMjBhNyAxMDA2NDQKPiAtLS0gYS9saWIvc3lzY2FsbF9zaGltL2luY2x1ZGUvdWsvc3lzY2Fs
bC5oCj4gKysrIGIvbGliL3N5c2NhbGxfc2hpbS9pbmNsdWRlL3VrL3N5c2NhbGwuaAo+IEBAIC0z
OSw2ICszOSw3IEBACj4gCj4gI2luY2x1ZGUgPHVrL2NvbmZpZy5oPgo+ICNpbmNsdWRlIDx1ay9l
c3NlbnRpYWxzLmg+Cj4gKyNpbmNsdWRlIDx1ay9lcnJwdHIuaD4KPiAjaW5jbHVkZSA8ZXJybm8u
aD4KPiAjaW5jbHVkZSA8dWsvcHJpbnQuaD4KPiAKPiBAQCAtMTkyLDIwICsxOTMsMjAgQEAgdHlw
ZWRlZiBsb25nIHVrX3N5c2NhbGxfYXJnX3Q7Cj4gCXsJCQkJCQkJCVwKPiAJCWxvbmcgcmV0ID0g
cm5hbWUoCQkJCQlcCj4gCQkJVUtfQVJHX01BUHgoeCwgVUtfU19BUkdfQ0FTVF9MT05HLCBfX1ZB
X0FSR1NfXykpOyBcCj4gLQkJaWYgKHJldCA8IDApIHsJCQkJCQlcCj4gLQkJCWVycm5vID0gKGlu
dCkgLXJldDsJCQkJXAo+ICsJCWlmIChyZXQgPCAwICYmIFBUUklTRVJSKHJldCkpIHsJCQkJXAo+
ICsJCQllcnJubyA9IChpbnQpIFBUUjJFUlIocmV0KTsJCQlcCj4gCQkJcmV0dXJuIC0xOwkJCQkJ
XAo+IAkJfQkJCQkJCQlcCj4gCQlyZXR1cm4gcmV0OwkJCQkJCVwKPiAJfQkJCQkJCQkJXAo+IC0J
c3RhdGljIGlubGluZSBsb25nIF9fIyNybmFtZShVS19BUkdfTUFQeCh4LCBVS19TX0FSR19BQ1RV
QUwsCVwKPiArCXN0YXRpYyBpbmxpbmUgcnR5cGUgX18jI3JuYW1lKFVLX0FSR19NQVB4KHgsIFVL
X1NfQVJHX0FDVFVBTCwJXAo+IAkJCQkJCSBfX1ZBX0FSR1NfXykpOwkJXAo+IAlsb25nIHJuYW1l
KFVLX0FSR19NQVB4KHgsIFVLX1NfQVJHX0xPTkcsIF9fVkFfQVJHU19fKSkJCVwKPiAJewkJCQkJ
CQkJXAo+IC0JCXJldHVybiBfXyMjcm5hbWUoCQkJCQlcCj4gKwkJcmV0dXJuIChsb25nKSBfXyMj
cm5hbWUoCQkJCVwKPiAJCQlVS19BUkdfTUFQeCh4LCBVS19TX0FSR19DQVNUX0FDVFVBTCwgX19W
QV9BUkdTX18pKTsgXAo+IAl9CQkJCQkJCQlcCj4gLQlzdGF0aWMgaW5saW5lIGxvbmcgX18jI3Ju
YW1lKFVLX0FSR19NQVB4KHgsIFVLX1NfQVJHX0FDVFVBTCwJXAo+ICsJc3RhdGljIGlubGluZSBy
dHlwZSBfXyMjcm5hbWUoVUtfQVJHX01BUHgoeCwgVUtfU19BUkdfQUNUVUFMLAlcCj4gCQkJCQkJ
IF9fVkFfQVJHU19fKSkKPiAjZGVmaW5lIF9VS19MTFNZU0NBTExfUl9ERUZJTkUoLi4uKSBfX1VL
X0xMU1lTQ0FMTF9SX0RFRklORShfX1ZBX0FSR1NfXykKPiAjZGVmaW5lIFVLX0xMU1lTQ0FMTF9S
X0RFRklORShydHlwZSwgbmFtZSwgLi4uKQkJCQlcCj4gLS0gCj4gMi4yMC4xCj4gCj4gCj4gX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBNaW5pb3MtZGV2
ZWwgbWFpbGluZyBsaXN0Cj4gTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCj4gaHR0
cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbAoK
Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1k
ZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBz
Oi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Tue Apr 07 07:04:35 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 07 Apr 2020 07:04: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 1jLiHi-0003to-U1; Tue, 07 Apr 2020 07:04:34 +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=FK1Q=5X=uliege.be=gaulthier.gain@srs-us1.protection.inumbo.net>)
 id 1jLiHh-0003te-Vf
 for minios-devel@lists.xen.org; Tue, 07 Apr 2020 07:04:34 +0000
X-Inumbo-ID: 079f8c1a-789e-11ea-8076-12813bfff9fa
Received: from serv108.segi.ulg.ac.be (unknown [139.165.32.111])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 079f8c1a-789e-11ea-8076-12813bfff9fa;
 Tue, 07 Apr 2020 07:04:32 +0000 (UTC)
Received: from gaulthiers-mbp.lan (151.169-240-81.adsl-dyn.isp.belgacom.be
 [81.240.169.151])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (No client certificate requested)
 by serv108.segi.ulg.ac.be (Postfix) with ESMTPSA id 5CBB4200F81F;
 Tue,  7 Apr 2020 09:04:31 +0200 (CEST)
DKIM-Filter: OpenDKIM Filter v2.11.0 serv108.segi.ulg.ac.be 5CBB4200F81F
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=uliege.be;
 s=ulg20190529; t=1586243071;
 bh=dtvpUBrdwhKJkETS9KkBeNppBGpRJRKPjbHyLuR1HRk=;
 h=Subject:From:In-Reply-To:Date:Cc:References:To:From;
 b=vtFsYCeweGAK90/3GGMs+Qfox3gcHo9uE9t+qRWnFl1qee4HEtNx/QmDAI21Uy+y1
 Vxp4yWMBRBCvODGwDIS25sJHGWti1ffUGJ4wZ3TNr5dWTx4+FvBN1bb5Iq/qcX6xzp
 xul4NyJWoMgho3zA6Vs4yEH7OeZwUYaZKMUVdNVZ/mMP8EI6sLXv8RVckdiYS/bMpO
 QXMOSUoIrm8HUSvEIzuFxLSXG3hew7InlsdqswxFd/WTMNXpR/H64nohvsdeJamK98
 +WTr9LkdicmJwH95v8IAtcsVRNwXRWCrXrXwRi0Hv1RIJTNSG9Rw9KeB0ugswoMQv9
 +Y86hQ8vpojvQ==
Mime-Version: 1.0 (Mac OS X Mail 13.0 \(3608.60.0.2.5\))
From: Gaulthier Gain <Gaulthier.Gain@uliege.be>
In-Reply-To: <20200403162939.31745-4-simon.kuenzer@neclab.eu>
Date: Tue, 7 Apr 2020 09:04:30 +0200
Message-Id: <22D5E696-0480-4E8E-B932-ADD39EA84D43@uliege.be>
References: <20200403162939.31745-1-simon.kuenzer@neclab.eu>
 <20200403162939.31745-4-simon.kuenzer@neclab.eu>
To: Simon Kuenzer <simon.kuenzer@neclab.eu>
X-Mailer: Apple Mail (2.3608.60.0.2.5)
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2 3/5] lib/syscall_shim:
 `UK_(LL)SYSCALL_R_DEFINE()`: Use given return type
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>, 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>

UmV2aWV3ZWQtYnk6IEdhdWx0aGllciBHYWluIDxnYXVsdGhpZXIuZ2FpbkB1bGllZ2UuYmU+Cgo+
IE9uIDMgQXByIDIwMjAsIGF0IDE4OjI5LCBTaW1vbiBLdWVuemVyIDxzaW1vbi5rdWVuemVyQG5l
Y2xhYi5ldT4gd3JvdGU6Cj4gCj4gSW5zdGVhZCBvZiBkZWNsYXJpbmcgdGhlIHJldHVybiB0eXBl
IGZvciBgVUtfKExMKVNZU0NBTExfUl9ERUZJTkUoKWAKPiBmdW5jdGlvbnMgYXMgYGxvbmdgLCB0
aGUgdXNlci1naXZlbiByZXR1cm4gdHlwZSBpcyB1c2VkLiBJbiBnZW5lcmFsLAo+IHRoaXMgaXMg
ZG9uZSBmb3IgY29udmVuaWVuY2UuIFdoZW5ldmVyIGEgc3lzdGVtIGNhbGwgaW1wbGVtZW50YXRp
b24KPiB1c2VzIHBvaW50ZXJzIGFzIHJldHVybiB0eXBlLCB0aGUgaGVscGVycyBkZWZpbmVkIGlu
IGA8dWsvZXJycHRyLmg+YAo+IGNhbiBiZSB1c2VkIHRvIGVuY2Fwc3VsYXRlIGVycm9yIGNvZGVz
Lgo+IAo+IFNpZ25lZC1vZmYtYnk6IFNpbW9uIEt1ZW56ZXIgPHNpbW9uLmt1ZW56ZXJAbmVjbGFi
LmV1Pgo+IC0tLQo+IGRvYy9ndWlkZXMvZGV2ZWxvcGVycy1hcHAucnN0ICAgICAgICAgfCAxNSAr
KysrKysrLS0tLS0tLS0KPiBsaWIvc3lzY2FsbF9zaGltL2luY2x1ZGUvdWsvc3lzY2FsbC5oIHwg
MTEgKysrKysrLS0tLS0KPiAyIGZpbGVzIGNoYW5nZWQsIDEzIGluc2VydGlvbnMoKyksIDEzIGRl
bGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kb2MvZ3VpZGVzL2RldmVsb3BlcnMtYXBwLnJz
dCBiL2RvYy9ndWlkZXMvZGV2ZWxvcGVycy1hcHAucnN0Cj4gaW5kZXggY2UyZjAxNTMuLmQ0MTNh
YWNlIDEwMDY0NAo+IC0tLSBhL2RvYy9ndWlkZXMvZGV2ZWxvcGVycy1hcHAucnN0Cj4gKysrIGIv
ZG9jL2d1aWRlcy9kZXZlbG9wZXJzLWFwcC5yc3QKPiBAQCAtNDAwLDE5ICs0MDAsMTggQEAgRXhh
bXBsZToKPiAKPiAgICAgVUtfU1lTQ0FMTF9SX0RFRklORShzc2l6ZV90LCB3cml0ZSwgaW50LCBm
ZCwgY29uc3Qgdm9pZCAqLCBidWYsIHNpemVfdCwgY291bnQpCj4gICAgIHsKPiAtICAgICAgICBs
b25nIHJldDsKPiArICAgICAgICBzc2l6ZV90IHJldDsKPiAKPiAtICAgICAgICByZXQgPSAobG9u
ZykgdmZzX2RvX3dyaXRlKGZkLCBidWYsIGNvdW50KTsKPiArICAgICAgICByZXQgPSB2ZnNfZG9f
d3JpdGUoZmQsIGJ1ZiwgY291bnQpOwo+ICAgICAgICAgaWYgKHJldCA8IDApIHsKPiAgICAgICAg
ICAgICByZXR1cm4gLUVGQVVMVDsKPiAgICAgICAgIH0KPiAgICAgICAgIHJldHVybiByZXQ7Cj4g
ICAgIH0KPiAKPiAtUGxlYXNlIG5vdGUgdGhhdCBpbiB0aGUgcmF3IGNhc2UgKGBgVUtfU1lTQ0FM
TF9SX0RFRklORWBgKSwgdGhlIHJldHVybiB0eXBlCj4gLXdpdGhpbiB5b3VyIGNvZGUgYmxvY2sg
aXMgYWx3YXlzIGBgbG9uZ2BgLiBUaGUgc3BlY2lmaWVkIHJldHVybiB0eXBlIGFzCj4gLXBhcmFt
ZXRlciB0byB0aGUgbWFjcm8gd2lsbCBiZSB1c2VkIGZvciB0aGUgbGliYy1zdHlsZSB3cmFwcGVy
LiBIb3dldmVyLCB0aGUKPiAtaW5wdXQgcGFyYW1ldGVycyBhcmUgZGVmaW5lZCB3aXRoIHRoZSBh
Y3R1YWwgdHlwZSBmb3IgeW91ciBjb2RlIGJsb2NrLgo+ICtQbGVhc2Ugbm90ZSB0aGF0IGluIHRo
ZSByYXcgY2FzZSAoYGBVS19TWVNDQUxMX1JfREVGSU5FYGApLCBlcnJvcnMgYXJlIGFsd2F5cwo+
ICtyZXR1cm5lZCBhcyBuZWdhdGl2ZSB2YWx1ZS4gV2hlbmV2ZXIgdGhlIHJldHVybiB0eXBlIGlz
IGEgcG9pbnRlciB2YWx1ZSwgdGhlCj4gK2hlbHBlcnMgZGVmaW5lZCBpbiBgPHVrL2VycnB0ci5o
PmAgY2FuIGJlIHVzZWQgdG8gZm9yd2FyZCBlcnJvciBjb2Rlcy4KPiAKPiBCb3RoIG1hY3JvcyBj
cmVhdGUgdGhlIGZvbGxvd2luZyB0aHJlZSBzeW1ib2xzOgo+IAo+IEBAIC00NDEsOSArNDQwLDkg
QEAgbGliYy1zdHlsZSB3cmFwcGVyIG9uIHRvcDoKPiAKPiAgICAgVUtfTExTWVNDQUxMX1JfREVG
SU5FKHNzaXplX3QsIHdyaXRlLCBpbnQsIGZkLCBjb25zdCB2b2lkICosIGJ1Ziwgc2l6ZV90LCBj
b3VudCkKPiAgICAgewo+IC0gICAgICAgIGxvbmcgcmV0Owo+ICsgICAgICAgIHNzaXplX3QgcmV0
Owo+IAo+IC0gICAgICAgIHJldCA9IChsb25nKSB2ZnNfZG9fd3JpdGUoZmQsIGJ1ZiwgY291bnQp
Owo+ICsgICAgICAgIHJldCA9IHZmc19kb193cml0ZShmZCwgYnVmLCBjb3VudCk7Cj4gICAgICAg
ICBpZiAocmV0IDwgMCkgewo+ICAgICAgICAgICAgIHJldHVybiAtRUZBVUxUOwo+ICAgICAgICAg
fQo+IGRpZmYgLS1naXQgYS9saWIvc3lzY2FsbF9zaGltL2luY2x1ZGUvdWsvc3lzY2FsbC5oIGIv
bGliL3N5c2NhbGxfc2hpbS9pbmNsdWRlL3VrL3N5c2NhbGwuaAo+IGluZGV4IDZlZTEzOWZhLi5h
YWZlMjBhNyAxMDA2NDQKPiAtLS0gYS9saWIvc3lzY2FsbF9zaGltL2luY2x1ZGUvdWsvc3lzY2Fs
bC5oCj4gKysrIGIvbGliL3N5c2NhbGxfc2hpbS9pbmNsdWRlL3VrL3N5c2NhbGwuaAo+IEBAIC0z
OSw2ICszOSw3IEBACj4gCj4gI2luY2x1ZGUgPHVrL2NvbmZpZy5oPgo+ICNpbmNsdWRlIDx1ay9l
c3NlbnRpYWxzLmg+Cj4gKyNpbmNsdWRlIDx1ay9lcnJwdHIuaD4KPiAjaW5jbHVkZSA8ZXJybm8u
aD4KPiAjaW5jbHVkZSA8dWsvcHJpbnQuaD4KPiAKPiBAQCAtMTkyLDIwICsxOTMsMjAgQEAgdHlw
ZWRlZiBsb25nIHVrX3N5c2NhbGxfYXJnX3Q7Cj4gCXsJCQkJCQkJCVwKPiAJCWxvbmcgcmV0ID0g
cm5hbWUoCQkJCQlcCj4gCQkJVUtfQVJHX01BUHgoeCwgVUtfU19BUkdfQ0FTVF9MT05HLCBfX1ZB
X0FSR1NfXykpOyBcCj4gLQkJaWYgKHJldCA8IDApIHsJCQkJCQlcCj4gLQkJCWVycm5vID0gKGlu
dCkgLXJldDsJCQkJXAo+ICsJCWlmIChyZXQgPCAwICYmIFBUUklTRVJSKHJldCkpIHsJCQkJXAo+
ICsJCQllcnJubyA9IChpbnQpIFBUUjJFUlIocmV0KTsJCQlcCj4gCQkJcmV0dXJuIC0xOwkJCQkJ
XAo+IAkJfQkJCQkJCQlcCj4gCQlyZXR1cm4gcmV0OwkJCQkJCVwKPiAJfQkJCQkJCQkJXAo+IC0J
c3RhdGljIGlubGluZSBsb25nIF9fIyNybmFtZShVS19BUkdfTUFQeCh4LCBVS19TX0FSR19BQ1RV
QUwsCVwKPiArCXN0YXRpYyBpbmxpbmUgcnR5cGUgX18jI3JuYW1lKFVLX0FSR19NQVB4KHgsIFVL
X1NfQVJHX0FDVFVBTCwJXAo+IAkJCQkJCSBfX1ZBX0FSR1NfXykpOwkJXAo+IAlsb25nIHJuYW1l
KFVLX0FSR19NQVB4KHgsIFVLX1NfQVJHX0xPTkcsIF9fVkFfQVJHU19fKSkJCVwKPiAJewkJCQkJ
CQkJXAo+IC0JCXJldHVybiBfXyMjcm5hbWUoCQkJCQlcCj4gKwkJcmV0dXJuIChsb25nKSBfXyMj
cm5hbWUoCQkJCVwKPiAJCQlVS19BUkdfTUFQeCh4LCBVS19TX0FSR19DQVNUX0FDVFVBTCwgX19W
QV9BUkdTX18pKTsgXAo+IAl9CQkJCQkJCQlcCj4gLQlzdGF0aWMgaW5saW5lIGxvbmcgX18jI3Ju
YW1lKFVLX0FSR19NQVB4KHgsIFVLX1NfQVJHX0FDVFVBTCwJXAo+ICsJc3RhdGljIGlubGluZSBy
dHlwZSBfXyMjcm5hbWUoVUtfQVJHX01BUHgoeCwgVUtfU19BUkdfQUNUVUFMLAlcCj4gCQkJCQkJ
IF9fVkFfQVJHU19fKSkKPiAjZGVmaW5lIF9VS19MTFNZU0NBTExfUl9ERUZJTkUoLi4uKSBfX1VL
X0xMU1lTQ0FMTF9SX0RFRklORShfX1ZBX0FSR1NfXykKPiAjZGVmaW5lIFVLX0xMU1lTQ0FMTF9S
X0RFRklORShydHlwZSwgbmFtZSwgLi4uKQkJCQlcCj4gLS0gCj4gMi4yMC4xCj4gCj4gCj4gX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBNaW5pb3MtZGV2
ZWwgbWFpbGluZyBsaXN0Cj4gTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCj4gaHR0
cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbAoK
Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1k
ZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBz
Oi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Tue Apr 07 07:04:58 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 07 Apr 2020 07:04: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 1jLiI6-0003us-0g; Tue, 07 Apr 2020 07:04:58 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=FK1Q=5X=uliege.be=gaulthier.gain@srs-us1.protection.inumbo.net>)
 id 1jLiI5-0003un-1m
 for minios-devel@lists.xen.org; Tue, 07 Apr 2020 07:04:57 +0000
X-Inumbo-ID: 144466b6-789e-11ea-83d8-bc764e2007e4
Received: from serv108.segi.ulg.ac.be (unknown [139.165.32.111])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 144466b6-789e-11ea-83d8-bc764e2007e4;
 Tue, 07 Apr 2020 07:04:53 +0000 (UTC)
Received: from gaulthiers-mbp.lan (151.169-240-81.adsl-dyn.isp.belgacom.be
 [81.240.169.151])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (No client certificate requested)
 by serv108.segi.ulg.ac.be (Postfix) with ESMTPSA id 94EC720104D5;
 Tue,  7 Apr 2020 09:04:52 +0200 (CEST)
DKIM-Filter: OpenDKIM Filter v2.11.0 serv108.segi.ulg.ac.be 94EC720104D5
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=uliege.be;
 s=ulg20190529; t=1586243092;
 bh=+2w7xzV0T9KItneRJNRppwGleoMLrBucdALbAfFF4zI=;
 h=Subject:From:In-Reply-To:Date:Cc:References:To:From;
 b=h/Z5iPT4xx/i5xdNq5Yktf+jnACjPXGq0u6DHj4lsusBf3HG/xSATabVXLPTY8C/k
 F2v9qkuYobQtubHhB93TZpXFFEOrKy7zKvazMsGmTVBZUSwD3oxMc4cpBmdkiMn+fp
 QtJ6wFbCtLRo3i1HgiStL2CwTkpgW7jV46YVVgrvMoATaMey/i7zQHTr9gLA1Mh2fS
 ErOpj3Sz8P0Rnmtc9beaXgGAxlDyL/vK1D7KLhISpWqCCWQqW7e5Y6NOzS0t5YmwuV
 EeFWCXG/hOFcSz98ndOMQrnXpBk4OgPrbI65qBNmbBaDTv3ePUWi3nz6Ey15dtuBgA
 3IVWw52PElv+Q==
Mime-Version: 1.0 (Mac OS X Mail 13.0 \(3608.60.0.2.5\))
From: Gaulthier Gain <Gaulthier.Gain@uliege.be>
In-Reply-To: <20200403162939.31745-2-simon.kuenzer@neclab.eu>
Date: Tue, 7 Apr 2020 09:04:52 +0200
Message-Id: <9AAA42C7-50C3-4B04-93BE-F2BC7D4E3E1C@uliege.be>
References: <20200403162939.31745-1-simon.kuenzer@neclab.eu>
 <20200403162939.31745-2-simon.kuenzer@neclab.eu>
To: Simon Kuenzer <simon.kuenzer@neclab.eu>
X-Mailer: Apple Mail (2.3608.60.0.2.5)
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2 1/5] lib/syscall_shim:
 UK_LLSYSCALL_(R_)_DEFINE variants
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>, 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>

UmV2aWV3ZWQtYnk6IEdhdWx0aGllciBHYWluIDxnYXVsdGhpZXIuZ2FpbkB1bGllZ2UuYmU+Cgo+
IE9uIDMgQXByIDIwMjAsIGF0IDE4OjI5LCBTaW1vbiBLdWVuemVyIDxzaW1vbi5rdWVuemVyQG5l
Y2xhYi5ldT4gd3JvdGU6Cj4gCj4gU29tZSBzeXN0ZW0gY2FsbHMgaGF2ZSBkaWZmZXJlbnQgc2ln
bmF0dXJlcyBhbmQgcmV0dXJuIHR5cGVzIG9uIHRoZQo+IGxpYkMgQVBJIGFuZCB0aGUgTGludXgg
c3lzdGVtIGNhbGwgQUJJIChlLmcuLCBicmssIG1vdW50KS4gSW4gb3JkZXIKPiB0byBzdXBwb3J0
IGltcGxlbWVudGluZyBzdWNoIGxpYmMtc3R5bGUgd3JhcHBlcnMgbWFudWFsbHkgb24gdG9wIG9m
Cj4gdGhlIHN5c2NhbGxfc2hpbSBsaWJyYXJ5LCB3ZSBpbnRyb2R1Y2Ugc28gY2FsbGVkIGxvdy1s
ZXZlbCB2YXJpYW50cwo+IGZvciB0aGUgVUtfU1lTQ0FMTF8oUl8pX0RFRklORSBtYWNyb3MgdGhh
dCBvbmx5IHByb3ZpZGUgdGhlCj4gdWtfc3lzY2FsbF8oZXxyKV88c3lzY2FsbCBuYW1lPiBzeW1i
b2xzOiBVS19MTFNZU0NBTExfKFJfKV9ERUZJTkUKPiAKPiBTaWduZWQtb2ZmLWJ5OiBTaW1vbiBL
dWVuemVyIDxzaW1vbi5rdWVuemVyQG5lY2xhYi5ldT4KPiAtLS0KPiBkb2MvZ3VpZGVzL2RldmVs
b3BlcnMtYXBwLnJzdCAgICAgICAgIHwgMzUgKysrKysrKysrKy0KPiBsaWIvc3lzY2FsbF9zaGlt
L2luY2x1ZGUvdWsvc3lzY2FsbC5oIHwgOTEgKysrKysrKysrKysrKysrKysrKystLS0tLS0tCj4g
MiBmaWxlcyBjaGFuZ2VkLCAxMDIgaW5zZXJ0aW9ucygrKSwgMjQgZGVsZXRpb25zKC0pCj4gCj4g
ZGlmZiAtLWdpdCBhL2RvYy9ndWlkZXMvZGV2ZWxvcGVycy1hcHAucnN0IGIvZG9jL2d1aWRlcy9k
ZXZlbG9wZXJzLWFwcC5yc3QKPiBpbmRleCA2NDM4MzMzYy4uYTcyNDJlNjAgMTAwNjQ0Cj4gLS0t
IGEvZG9jL2d1aWRlcy9kZXZlbG9wZXJzLWFwcC5yc3QKPiArKysgYi9kb2MvZ3VpZGVzL2RldmVs
b3BlcnMtYXBwLnJzdAo+IEBAIC00MjgsMTAgKzQyOCwzOSBAQCBCb3RoIG1hY3JvcyBjcmVhdGUg
dGhlIGZvbGxvd2luZyB0aHJlZSBzeW1ib2xzOgo+ICAgICA8cmV0dXJuX3R5cGU+IDxzeXNjYWxs
X25hbWU+KDxhcmcxX3R5cGU+IDxhcmcxX25hbWU+LAo+ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDxhcmcyX3R5cGU+IDxhcmcyX25hbWU+LCAuLi4pOwo+IAo+ICtGb3IgdGhlIGNh
c2UgdGhhdCB0aGUgbGliYy1zdHlsZSB3cmFwcGVyIGRvZXMgbm90IG1hdGNoIHRoZSBzaWduYXR1
cmUgYW5kIHJldHVybgo+ICt0eXBlIG9mIHRoZSB1bmRlcmx5aW5nIHN5c3RlbSBjYWxsLCBhIHNv
IGNhbGxlZCBsb3ctbGV2ZWwgdmFyaWFudCBvZiB0aGVzZSB0d28KPiArbWFjcm9zIGFyZSBhdmFp
bGFibGU6IGBgVUtfTExTWVNDQUxMX0RFRklORWBgLCBgYFVLX0xMU1lTQ0FMTF9SX0RFRklORWBg
Lgo+ICtUaGVzZSBtYWNyb3Mgb25seSBnZW5lcmF0ZSB0aGUgYGB1a19zeXNjYWxsX2VfPHN5c2Nh
bGxfbmFtZT5gYCBhbmQKPiArYGB1a19zeXNjYWxsX3JfPHN5c2NhbGxfbmFtZT5gYCBzeW1ib2xz
LiBZb3UgY2FuIHRoZW4gcHJvdmlkZSB0aGUgY3VzdG9tCj4gK2xpYmMtc3R5bGUgd3JhcHBlciBv
biB0b3A6Cj4gKwo+ICsuLiBjb2RlLWJsb2NrOjogYwo+ICsKPiArICAgICNpbmNsdWRlIDx1ay9z
eXNjYWxsLmg+Cj4gKwo+ICsgICAgVUtfTExTWVNDQUxMX1JfREVGSU5FKHNzaXplX3QsIHdyaXRl
LCBpbnQsIGZkLCBjb25zdCB2b2lkICosIGJ1Ziwgc2l6ZV90LCBjb3VudCkKPiArICAgIHsKPiAr
ICAgICAgICBsb25nIHJldDsKPiArCj4gKyAgICAgICAgcmV0ID0gKGxvbmcpIHZmc19kb193cml0
ZShmZCwgYnVmLCBjb3VudCk7Cj4gKyAgICAgICAgaWYgKHJldCA8IDApIHsKPiArICAgICAgICAg
ICAgcmV0dXJuIC1FRkFVTFQ7Cj4gKyAgICAgICAgfQo+ICsgICAgICAgIHJldHVybiByZXQ7Cj4g
KyAgICB9Cj4gKwo+ICsgICAgc3NpemVfdCB3cml0ZShpbnQgZmQsIGNvbnN0IHZvaWQgKmJ1Ziwg
c2l6ZV90IGNvdW50KQo+ICsgICAgewo+ICsgICAgICAgIHJldHVybiAoc3NpemVfdCkgdWtfc3lz
Y2FsbF9lX3dyaXRlKChsb25nKSBmZCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAobG9uZykgYnVmLCAobG9uZykgY291bnQpOwo+ICsgICAgfQo+ICsKPiBO
b3RlOiBXaGVuIGBzeXNjYWxsX3NoaW1gIGxpYnJhcnkgaXMgbm90IGVuYWJsZWQsIHRoZSBvcmln
aW5hbCBkZXNpZ24gaWRlYSB3YXMKPiAtdGhhdCB0aGUgbWFjcm9zIHByb3ZpZGUgdGhlIGxpYmMt
c3R5bGUgd3JhcHBlciBvbmx5LiBIb3dldmVyLCBib3RoIG1hY3Jvcwo+IC1wcm92aWRlIGFsd2F5
cyBhbGwgdGhyZWUgdmFyaWFudHMuIFRoaXMgaXMgZG9uZSB0byBzdXBwb3J0IHRoZSBjYXNlIHRo
YXQgYQo+IC1zeXN0ZW0gY2FsbCBpcyBpbXBsZW1lbnRlZCBvbiB0b3Agb2YgYW5vdGhlci4KPiAr
dGhhdCB0aGUgbWFjcm9zIHByb3ZpZGUgdGhlIGxpYmMtc3R5bGUgd3JhcHBlciBvbmx5LiBIb3dl
dmVyLCBhbGwgdGhlCj4gK2Rlc2NyaWJlZCBtYWNyb3MgYXJlIHN0aWxsIGF2YWlsYWJsZSBhbmQg
cG9wdWxhdGUgdGhlIHN5bWJvbHMgYXMgZG9jdW1lbnRlZAo+ICtoZXJlLiBUaGlzIGlzIGRvbmUg
dG8gc3VwcG9ydCB0aGUgY2FzZSB0aGF0IGEgc3lzdGVtIGNhbGwgaXMgaW1wbGVtZW50ZWQgYnkK
PiArY2FsbGluZyBhbm90aGVyLgo+IAo+IElmIHlvdXIgbGlicmFyeSB1c2VzIGFuIGBgZXhwb3J0
c3ltcy51a2BgIGZpbGUsIHlvdSBuZWVkIHRvIGFkZCB0aGUgdGhyZWUKPiBzeW1ib2xzIGZvciBt
YWtpbmcgdGhlbSBwdWJsaWMgYXZhaWxhYmxlOiA6Ogo+IGRpZmYgLS1naXQgYS9saWIvc3lzY2Fs
bF9zaGltL2luY2x1ZGUvdWsvc3lzY2FsbC5oIGIvbGliL3N5c2NhbGxfc2hpbS9pbmNsdWRlL3Vr
L3N5c2NhbGwuaAo+IGluZGV4IGNkNWM2ZTY3Li5hMjE5MzY1YiAxMDA2NDQKPiAtLS0gYS9saWIv
c3lzY2FsbF9zaGltL2luY2x1ZGUvdWsvc3lzY2FsbC5oCj4gKysrIGIvbGliL3N5c2NhbGxfc2hp
bS9pbmNsdWRlL3VrL3N5c2NhbGwuaAo+IEBAIC0zNyw2ICszNyw3IEBACj4gI2lmbmRlZiBfX1VL
X1NZU0NBTExfSF9fCj4gI2RlZmluZSBfX1VLX1NZU0NBTExfSF9fCj4gCj4gKyNpbmNsdWRlIDx1
ay9jb25maWcuaD4KPiAjaW5jbHVkZSA8dWsvZXNzZW50aWFscy5oPgo+ICNpbmNsdWRlIDxlcnJu
by5oPgo+ICNpbmNsdWRlIDx1ay9wcmludC5oPgo+IEBAIC05NCw1NiArOTUsODMgQEAgdHlwZWRl
ZiBsb25nIHVrX3N5c2NhbGxfYXJnX3Q7Cj4gLyogVE9ETzogYHZvaWRgIGFzIHJldHVybiB0eXBl
IGlzIGN1cnJlbnRseSBub3Qgc3VwcG9ydGVkLgo+ICAqIE5PVEU6IFdvcmthcm91bmQgaXMgdG8g
dXNlIGBpbnRgIGluc3RlYWQuCj4gICovCj4gLSNkZWZpbmUgX19VS19TWVNDQUxMX0RFRklORSh4
LCBydHlwZSwgbmFtZSwgZW5hbWUsIHJuYW1lLCAuLi4pCQlcCj4gLQlydHlwZSBuYW1lKFVLX0FS
R19NQVB4KHgsIFVLX1NfQVJHX0FDVFVBTCwgX19WQV9BUkdTX18pKTsJXAo+ICsvKgo+ICsgKiBV
S19MTFNZU0NBTExfREVGSU5FKCkKPiArICogTG93LWxldmVsIHZhcmlhbnQsIGRvZXMgbm90IHBy
b3ZpZGUgYSBsaWJjLXN0eWxlIHdyYXBwZXIKPiArICovCj4gKyNkZWZpbmUgX19VS19MTFNZU0NB
TExfREVGSU5FKHgsIHJ0eXBlLCBuYW1lLCBlbmFtZSwgcm5hbWUsIC4uLikJXAo+ICsJbG9uZyBl
bmFtZShVS19BUkdfTUFQeCh4LCBVS19TX0FSR19MT05HLCBfX1ZBX0FSR1NfXykpOwkJXAo+IAls
b25nIHJuYW1lKFVLX0FSR19NQVB4KHgsIFVLX1NfQVJHX0xPTkcsIF9fVkFfQVJHU19fKSkJCVwK
PiAJewkJCQkJCQkJXAo+IAkJaW50IF9lcnJubyA9IGVycm5vOwkJCQkJXAo+IAkJbG9uZyByZXQ7
CQkJCQkJXAo+IAkJCQkJCQkJCVwKPiAJCWVycm5vID0gMDsJCQkJCQlcCj4gLQkJcmV0ID0gKGxv
bmcpIG5hbWUoCQkJCQlcCj4gLQkJCVVLX0FSR19NQVB4KHgsIFVLX1NfQVJHX0NBU1RfQUNUVUFM
LCBfX1ZBX0FSR1NfXykpOyBcCj4gKwkJcmV0ID0gZW5hbWUoCQkJCQkJXAo+ICsJCQlVS19BUkdf
TUFQeCh4LCBVS19TX0FSR19DQVNUX0xPTkcsIF9fVkFfQVJHU19fKSk7IFwKPiAJCWlmIChyZXQg
PT0gLTEpCQkJCQkJXAo+IAkJCXJldCA9IGVycm5vID8gLWVycm5vIDogLUVGQVVMVDsJCQlcCj4g
CQllcnJubyA9IF9lcnJubzsJCQkJCQlcCj4gCQlyZXR1cm4gcmV0OwkJCQkJCVwKPiAJfQkJCQkJ
CQkJXAo+ICsJc3RhdGljIGlubGluZSBydHlwZSBfXyMjZW5hbWUoVUtfQVJHX01BUHgoeCwJCQlc
Cj4gKwkJCQkJVUtfU19BUkdfQUNUVUFMLCBfX1ZBX0FSR1NfXykpOyBcCj4gCWxvbmcgZW5hbWUo
VUtfQVJHX01BUHgoeCwgVUtfU19BUkdfTE9ORywgX19WQV9BUkdTX18pKQkJXAo+IAl7CQkJCQkJ
CQlcCj4gLQkJcmV0dXJuIChsb25nKSBuYW1lKAkJCQkJXAo+ICsJCXJldHVybiAobG9uZykgX18j
I2VuYW1lKAkJCQlcCj4gCQkJVUtfQVJHX01BUHgoeCwgVUtfU19BUkdfQ0FTVF9BQ1RVQUwsIF9f
VkFfQVJHU19fKSk7IFwKPiAJfQkJCQkJCQkJXAo+IC0JcnR5cGUgbmFtZShVS19BUkdfTUFQeCh4
LCBVS19TX0FSR19BQ1RVQUwsIF9fVkFfQVJHU19fKSkKPiArCXN0YXRpYyBpbmxpbmUgcnR5cGUg
X18jI2VuYW1lKFVLX0FSR19NQVB4KHgsCQkJXAo+ICsJCQkJCQkgIFVLX1NfQVJHX0FDVFVBTCwg
X19WQV9BUkdTX18pKQo+ICsjZGVmaW5lIF9VS19MTFNZU0NBTExfREVGSU5FKC4uLikgX19VS19M
TFNZU0NBTExfREVGSU5FKF9fVkFfQVJHU19fKQo+ICsjZGVmaW5lIFVLX0xMU1lTQ0FMTF9ERUZJ
TkUocnR5cGUsIG5hbWUsIC4uLikJCQkJXAo+ICsJX1VLX0xMU1lTQ0FMTF9ERUZJTkUoX19VS19T
WVNDQUxMX0RFRl9OQVJHUyhfX1ZBX0FSR1NfXyksCVwKPiArCQkJICAgICBydHlwZSwJCQkJCVwK
PiArCQkJICAgICBuYW1lLAkJCQkJXAo+ICsJCQkgICAgIF9fVUtfTkFNRTJTQ0FMTEVfRk4obmFt
ZSksCQkJXAo+ICsJCQkgICAgIF9fVUtfTkFNRTJTQ0FMTFJfRk4obmFtZSksCQkJXAo+ICsJCQkg
ICAgIF9fVkFfQVJHU19fKQo+ICsKPiArLyoKPiArICogVUtfU1lTQ0FMTF9ERUZJTkUoKQo+ICsg
KiBCYXNlZCBvbiBVS19MTFNZU0NBTExfREVGSU5FIGFuZCBwcm92aWRlcyBhIGxpYmMtc3R5bGUg
d3JhcHBlcgo+ICsgKi8KPiArI2RlZmluZSBfX1VLX1NZU0NBTExfREVGSU5FKHgsIHJ0eXBlLCBu
YW1lLCBlbmFtZSwgcm5hbWUsIC4uLikJCVwKPiArCWxvbmcgZW5hbWUoVUtfQVJHX01BUHgoeCwg
VUtfU19BUkdfTE9ORywgX19WQV9BUkdTX18pKTsJCVwKPiArCXJ0eXBlIG5hbWUoVUtfQVJHX01B
UHgoeCwgVUtfU19BUkdfQUNUVUFMLCBfX1ZBX0FSR1NfXykpCVwKPiArCXsJCQkJCQkJCVwKPiAr
CQlyZXR1cm4gKHJ0eXBlKSBlbmFtZSgJCQkJCVwKPiArCQkJVUtfQVJHX01BUHgoeCwgVUtfU19B
UkdfQ0FTVF9MT05HLCBfX1ZBX0FSR1NfXykpOyBcCj4gKwl9CQkJCQkJCQlcCj4gKwlfX1VLX0xM
U1lTQ0FMTF9ERUZJTkUoeCwgcnR5cGUsIG5hbWUsIGVuYW1lLCBybmFtZSwgX19WQV9BUkdTX18p
Cj4gI2RlZmluZSBfVUtfU1lTQ0FMTF9ERUZJTkUoLi4uKSBfX1VLX1NZU0NBTExfREVGSU5FKF9f
VkFfQVJHU19fKQo+IC0jZGVmaW5lIFVLX1NZU0NBTExfREVGSU5FKHJ0eXBlLCBuYW1lLCAuLi4p
CQkJICAgICAgIFwKPiAtCV9VS19TWVNDQUxMX0RFRklORShfX1VLX1NZU0NBTExfREVGX05BUkdT
KF9fVkFfQVJHU19fKSwJICAgICAgIFwKPiAtCQkJICAgcnR5cGUsCQkJCSAgICAgICBcCj4gLQkJ
CSAgIG5hbWUsCQkJCSAgICAgICBcCj4gLQkJCSAgIF9fVUtfTkFNRTJTQ0FMTEVfRk4obmFtZSks
CQkgICAgICAgXAo+IC0JCQkgICBfX1VLX05BTUUyU0NBTExSX0ZOKG5hbWUpLAkJICAgICAgIFwK
PiArI2RlZmluZSBVS19TWVNDQUxMX0RFRklORShydHlwZSwgbmFtZSwgLi4uKQkJCQlcCj4gKwlf
VUtfU1lTQ0FMTF9ERUZJTkUoX19VS19TWVNDQUxMX0RFRl9OQVJHUyhfX1ZBX0FSR1NfXyksCQlc
Cj4gKwkJCSAgIHJ0eXBlLAkJCQkJXAo+ICsJCQkgICBuYW1lLAkJCQkJXAo+ICsJCQkgICBfX1VL
X05BTUUyU0NBTExFX0ZOKG5hbWUpLAkJCVwKPiArCQkJICAgX19VS19OQU1FMlNDQUxMUl9GTihu
YW1lKSwJCQlcCj4gCQkJICAgX19WQV9BUkdTX18pCj4gCj4gLyogUmF3IHN5c3RlbSBjYWxsIGlt
cGxlbWVudGF0aW9uIHRoYXQgaXMgcmV0dXJuaW5nIG5lZ2F0aXZlIGNvZGVzIG9uIGVycm9ycyAq
Lwo+IC8qIFRPRE86IGB2b2lkYCBhcyByZXR1cm4gdHlwZSBpcyBjdXJyZW50bHkgbm90IHN1cHBv
cnRlZC4KPiAgKiBOT1RFOiBXb3JrYXJvdW5kIGlzIHRvIHVzZSBgaW50YCBpbnN0ZWFkLgo+ICAq
Lwo+IC0jZGVmaW5lIF9fVUtfU1lTQ0FMTF9SX0RFRklORSh4LCBydHlwZSwgbmFtZSwgZW5hbWUs
IHJuYW1lLCAuLi4pCVwKPiArLyoKPiArICogVUtfTExTWVNDQUxMX1JfREVGSU5FKCkKPiArICog
TG93LWxldmVsIHZhcmlhbnQsIGRvZXMgbm90IHByb3ZpZGUgYSBsaWJjLXN0eWxlIHdyYXBwZXIK
PiArICovCj4gKyNkZWZpbmUgX19VS19MTFNZU0NBTExfUl9ERUZJTkUoeCwgcnR5cGUsIG5hbWUs
IGVuYW1lLCBybmFtZSwgLi4uKQlcCj4gCWxvbmcgcm5hbWUoVUtfQVJHX01BUHgoeCwgVUtfU19B
UkdfTE9ORywgX19WQV9BUkdTX18pKTsJCVwKPiAtCXJ0eXBlIG5hbWUoVUtfQVJHX01BUHgoeCwg
VUtfU19BUkdfQUNUVUFMLCBfX1ZBX0FSR1NfXykpCVwKPiArCWxvbmcgZW5hbWUoVUtfQVJHX01B
UHgoeCwgVUtfU19BUkdfTE9ORywgX19WQV9BUkdTX18pKQkJXAo+IAl7CQkJCQkJCQlcCj4gCQls
b25nIHJldCA9IHJuYW1lKAkJCQkJXAo+IAkJCVVLX0FSR19NQVB4KHgsIFVLX1NfQVJHX0NBU1Rf
TE9ORywgX19WQV9BUkdTX18pKTsgXAo+IAkJaWYgKHJldCA8IDApIHsJCQkJCQlcCj4gCQkJZXJy
bm8gPSAoaW50KSAtcmV0OwkJCQlcCj4gLQkJCXJldHVybiAocnR5cGUpIC0xOwkJCQlcCj4gKwkJ
CXJldHVybiAtMTsJCQkJCVwKPiAJCX0JCQkJCQkJXAo+IC0JCXJldHVybiAocnR5cGUpIHJldDsJ
CQkJCVwKPiAtCX0JCQkJCQkJCVwKPiAtCWxvbmcgZW5hbWUoVUtfQVJHX01BUHgoeCwgVUtfU19B
UkdfTE9ORywgX19WQV9BUkdTX18pKQkJXAo+IC0JewkJCQkJCQkJXAo+IC0JCXJldHVybiAobG9u
ZykgbmFtZSgJCQkJCVwKPiAtCQkJVUtfQVJHX01BUHgoeCwgVUtfU19BUkdfQ0FTVF9BQ1RVQUws
IF9fVkFfQVJHU19fKSk7IFwKPiArCQlyZXR1cm4gcmV0OwkJCQkJCVwKPiAJfQkJCQkJCQkJXAo+
IAlzdGF0aWMgaW5saW5lIGxvbmcgX18jI3JuYW1lKFVLX0FSR19NQVB4KHgsIFVLX1NfQVJHX0FD
VFVBTCwJXAo+IAkJCQkJCSBfX1ZBX0FSR1NfXykpOwkJXAo+IEBAIC0xNTQsNiArMTgyLDI3IEBA
IHR5cGVkZWYgbG9uZyB1a19zeXNjYWxsX2FyZ190Owo+IAl9CQkJCQkJCQlcCj4gCXN0YXRpYyBp
bmxpbmUgbG9uZyBfXyMjcm5hbWUoVUtfQVJHX01BUHgoeCwgVUtfU19BUkdfQUNUVUFMLAlcCj4g
CQkJCQkJIF9fVkFfQVJHU19fKSkKPiArI2RlZmluZSBfVUtfTExTWVNDQUxMX1JfREVGSU5FKC4u
LikgX19VS19MTFNZU0NBTExfUl9ERUZJTkUoX19WQV9BUkdTX18pCj4gKyNkZWZpbmUgVUtfTExT
WVNDQUxMX1JfREVGSU5FKHJ0eXBlLCBuYW1lLCAuLi4pCQkJCVwKPiArCV9VS19MTFNZU0NBTExf
Ul9ERUZJTkUoX19VS19TWVNDQUxMX0RFRl9OQVJHUyhfX1ZBX0FSR1NfXyksCVwKPiArCQkJICAg
ICAgIHJ0eXBlLAkJCQkJXAo+ICsJCQkgICAgICAgbmFtZSwJCQkJCVwKPiArCQkJICAgICAgIF9f
VUtfTkFNRTJTQ0FMTEVfRk4obmFtZSksCQlcCj4gKwkJCSAgICAgICBfX1VLX05BTUUyU0NBTExS
X0ZOKG5hbWUpLAkJXAo+ICsJCQkgICAgICAgX19WQV9BUkdTX18pCj4gKwo+ICsvKgo+ICsgKiBV
S19TWVNDQUxMX1JfREVGSU5FKCkKPiArICogQmFzZWQgb24gVUtfTExTWVNDQUxMX1JfREVGSU5F
IGFuZCBwcm92aWRlcyBhIGxpYmMtc3R5bGUgd3JhcHBlcgo+ICsgKi8KPiArI2RlZmluZSBfX1VL
X1NZU0NBTExfUl9ERUZJTkUoeCwgcnR5cGUsIG5hbWUsIGVuYW1lLCBybmFtZSwgLi4uKQlcCj4g
Kwlsb25nIGVuYW1lKFVLX0FSR19NQVB4KHgsIFVLX1NfQVJHX0xPTkcsIF9fVkFfQVJHU19fKSk7
CQlcCj4gKwlydHlwZSBuYW1lKFVLX0FSR19NQVB4KHgsIFVLX1NfQVJHX0FDVFVBTCwgX19WQV9B
UkdTX18pKQlcCj4gKwl7CQkJCQkJCQlcCj4gKwkJcmV0dXJuIChydHlwZSkgZW5hbWUoCQkJCQlc
Cj4gKwkJCVVLX0FSR19NQVB4KHgsIFVLX1NfQVJHX0NBU1RfTE9ORywgX19WQV9BUkdTX18pKTsg
XAo+ICsJfQkJCQkJCQkJXAo+ICsJX19VS19MTFNZU0NBTExfUl9ERUZJTkUoeCwgcnR5cGUsIG5h
bWUsIGVuYW1lLCBybmFtZSwgX19WQV9BUkdTX18pCj4gI2RlZmluZSBfVUtfU1lTQ0FMTF9SX0RF
RklORSguLi4pIF9fVUtfU1lTQ0FMTF9SX0RFRklORShfX1ZBX0FSR1NfXykKPiAjZGVmaW5lIFVL
X1NZU0NBTExfUl9ERUZJTkUocnR5cGUsIG5hbWUsIC4uLikJCQkJXAo+IAlfVUtfU1lTQ0FMTF9S
X0RFRklORShfX1VLX1NZU0NBTExfREVGX05BUkdTKF9fVkFfQVJHU19fKSwJXAo+IC0tIAo+IDIu
MjAuMQo+IAo+IAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fCj4gTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdAo+IE1pbmlvcy1kZXZlbEBsaXN0cy54ZW5w
cm9qZWN0Lm9yZwo+IGh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5m
by9taW5pb3MtZGV2ZWwKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5w
cm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8v
bWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Tue Apr 07 07:05:11 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 07 Apr 2020 07:05: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 1jLiIJ-0003vh-2a; Tue, 07 Apr 2020 07:05:11 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=FK1Q=5X=uliege.be=gaulthier.gain@srs-us1.protection.inumbo.net>)
 id 1jLiIH-0003vY-SP
 for minios-devel@lists.xen.org; Tue, 07 Apr 2020 07:05:09 +0000
X-Inumbo-ID: 1c4173ae-789e-11ea-b58d-bc764e2007e4
Received: from serv108.segi.ulg.ac.be (unknown [139.165.32.111])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 1c4173ae-789e-11ea-b58d-bc764e2007e4;
 Tue, 07 Apr 2020 07:05:06 +0000 (UTC)
Received: from gaulthiers-mbp.lan (151.169-240-81.adsl-dyn.isp.belgacom.be
 [81.240.169.151])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (No client certificate requested)
 by serv108.segi.ulg.ac.be (Postfix) with ESMTPSA id 0332C20104D8;
 Tue,  7 Apr 2020 09:05:05 +0200 (CEST)
DKIM-Filter: OpenDKIM Filter v2.11.0 serv108.segi.ulg.ac.be 0332C20104D8
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=uliege.be;
 s=ulg20190529; t=1586243106;
 bh=Us0KT1Zg/b2C/EimPxRz+BXAXXxSdY6c9aPqPeC9zv4=;
 h=Subject:From:In-Reply-To:Date:Cc:References:To:From;
 b=kMgzFJ1whGHphiLBA6NhxEVSiq6McZ4sLpybMkVzzI7p8LnTVYLfSusuDt0dSaLBk
 jZQhLdlHAudMuLqCPGclOSq9h4Ho1wx0slhGsX7lNT5dNJmDuXmC9cKM0O6hGrWQm0
 jXOIaDCkdDdx0wIwA+GnhEDLoQ1qfRJ09jvf78wEeG3LnOaELkv/xon5oF/VGFi4jx
 YHOK1t+cUmhGkFpf1VSgT6RIu1UI0uin8NoHY1cPoFe+YUDasMqUBmX1D2IG1L7Mz6
 eds1AVJZvYucIvEl96TwExBf+vFyXmymlCEosuFtdMxNj9XIIfTYKOCk611uWqYNx7
 KGv1YnH9sDERA==
Mime-Version: 1.0 (Mac OS X Mail 13.0 \(3608.60.0.2.5\))
From: Gaulthier Gain <Gaulthier.Gain@uliege.be>
In-Reply-To: <20200403162939.31745-5-simon.kuenzer@neclab.eu>
Date: Tue, 7 Apr 2020 09:05:05 +0200
Message-Id: <788D865A-4D90-4C8E-8315-A3A54D939AA7@uliege.be>
References: <20200403162939.31745-1-simon.kuenzer@neclab.eu>
 <20200403162939.31745-5-simon.kuenzer@neclab.eu>
To: Simon Kuenzer <simon.kuenzer@neclab.eu>
X-Mailer: Apple Mail (2.3608.60.0.2.5)
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2 4/5] lib/syscall_shim:
 Provide uk_vsyscall(), uk_vsyscall_r()
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>, 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>

UmV2aWV3ZWQtYnk6IEdhdWx0aGllciBHYWluIDxnYXVsdGhpZXIuZ2FpbkB1bGllZ2UuYmU+Cgo+
IE9uIDMgQXByIDIwMjAsIGF0IDE4OjI5LCBTaW1vbiBLdWVuemVyIDxzaW1vbi5rdWVuemVyQG5l
Y2xhYi5ldT4gd3JvdGU6Cj4gCj4gUHJvdmlkZSBhIHZhcmlhbnQgdG8gdGhlIGdlbmVyYWwgYW5k
IHJhdyBzeXN0ZW0gY2FsbCBmdW5jdGlvbgo+IHVrX3N5c2NhbGwoKSBhbmQgdWtfc3lzY2FsbF9y
KCkgdGhhdCBhY2NlcHRzIGEgdmFfbGlzdCBhcmd1bWVudCBpbnN0ZWFkOgo+IAo+ICAgIGxvbmcg
dWtfdnN5c2NhbGwobG9uZyBuLCB2YV9saXN0IGFyZyk7Cj4gICAgbG9uZyB1a192c3lzY2FsbF9y
KGxvbmcgbiwgdmFfbGlzdCBhcmcpOwo+IAo+IFNpZ25lZC1vZmYtYnk6IFNpbW9uIEt1ZW56ZXIg
PHNpbW9uLmt1ZW56ZXJAbmVjbGFiLmV1Pgo+IC0tLQo+IGxpYi9zeXNjYWxsX3NoaW0vaW5jbHVk
ZS91ay9zeXNjYWxsLmggIHwgIDMgKysrCj4gbGliL3N5c2NhbGxfc2hpbS91a19zeXNjYWxsLmMu
aW5fZW5kICAgfCAxMiArKysrKysrKysrKysKPiBsaWIvc3lzY2FsbF9zaGltL3VrX3N5c2NhbGxf
ci5jLmluX2VuZCB8IDEyICsrKysrKysrKysrKwo+IDMgZmlsZXMgY2hhbmdlZCwgMjcgaW5zZXJ0
aW9ucygrKQo+IAo+IGRpZmYgLS1naXQgYS9saWIvc3lzY2FsbF9zaGltL2luY2x1ZGUvdWsvc3lz
Y2FsbC5oIGIvbGliL3N5c2NhbGxfc2hpbS9pbmNsdWRlL3VrL3N5c2NhbGwuaAo+IGluZGV4IGFh
ZmUyMGE3Li5kYzdiYzdlZiAxMDA2NDQKPiAtLS0gYS9saWIvc3lzY2FsbF9zaGltL2luY2x1ZGUv
dWsvc3lzY2FsbC5oCj4gKysrIGIvbGliL3N5c2NhbGxfc2hpbS9pbmNsdWRlL3VrL3N5c2NhbGwu
aAo+IEBAIC00MSw2ICs0MSw3IEBACj4gI2luY2x1ZGUgPHVrL2Vzc2VudGlhbHMuaD4KPiAjaW5j
bHVkZSA8dWsvZXJycHRyLmg+Cj4gI2luY2x1ZGUgPGVycm5vLmg+Cj4gKyNpbmNsdWRlIDxzdGRh
cmcuaD4KPiAjaW5jbHVkZSA8dWsvcHJpbnQuaD4KPiAKPiAvKgo+IEBAIC0yODgsNiArMjg5LDcg
QEAgdHlwZWRlZiBsb25nIHVrX3N5c2NhbGxfYXJnX3Q7Cj4gCj4gLyogU3lzdGVtIGNhbGwsIHJl
dHVybnMgLTEgYW5kIHNldHMgZXJybm8gb24gZXJyb3JzICovCj4gbG9uZyB1a19zeXNjYWxsKGxv
bmcgbiwgLi4uKTsKPiArbG9uZyB1a192c3lzY2FsbChsb25nIG4sIHZhX2xpc3QgYXJnKTsKPiAK
PiAvKgo+ICAqIFVzZSB0aGlzIHZhcmlhbnQgaW5zdGVhZCBvZiBgdWtfc3lzY2FsbCgpYCB3aGVu
ZXZlciB0aGUgc3lzdGVtIGNhbGwgbnVtYmVyCj4gQEAgLTI5OSw2ICszMDEsNyBAQCBsb25nIHVr
X3N5c2NhbGwobG9uZyBuLCAuLi4pOwo+IAo+IC8qIFJhdyBzeXN0ZW0gY2FsbCwgcmV0dXJucyBu
ZWdhdGl2ZSBjb2RlcyBvbiBlcnJvcnMgKi8KPiBsb25nIHVrX3N5c2NhbGxfcihsb25nIG4sIC4u
Lik7Cj4gK2xvbmcgdWtfdnN5c2NhbGxfcihsb25nIG4sIHZhX2xpc3QgYXJnKTsKPiAKPiAvKgo+
ICAqIFVzZSB0aGlzIHZhcmlhbnQgaW5zdGVhZCBvZiBgdWtfc3lzY2FsbF9yKClgIHdoZW5ldmVy
IHRoZSBzeXN0ZW0gY2FsbCBudW1iZXIKPiBkaWZmIC0tZ2l0IGEvbGliL3N5c2NhbGxfc2hpbS91
a19zeXNjYWxsLmMuaW5fZW5kIGIvbGliL3N5c2NhbGxfc2hpbS91a19zeXNjYWxsLmMuaW5fZW5k
Cj4gaW5kZXggNzlhOGI3ZmQuLjhhNWY4ZTBiIDEwMDY0NAo+IC0tLSBhL2xpYi9zeXNjYWxsX3No
aW0vdWtfc3lzY2FsbC5jLmluX2VuZAo+ICsrKyBiL2xpYi9zeXNjYWxsX3NoaW0vdWtfc3lzY2Fs
bC5jLmluX2VuZAo+IEBAIC0xMywzICsxMywxNSBAQCBsb25nIHVrX3N5c2NhbGwobG9uZyBuLCAu
Li4pCj4gCXZhX2VuZChhcCk7Cj4gCXJldHVybiBfX3VrX3N5c2NhbGwobixhLGIsYyxkLGUsZik7
Cj4gfQo+ICsKPiArbG9uZyB1a192c3lzY2FsbChsb25nIG4sIHZhX2xpc3QgYXJnKQo+ICt7Cj4g
Kwlsb25nIGEsYixjLGQsZSxmOwo+ICsJYT12YV9hcmcoYXJnLCBsb25nKTsKPiArCWI9dmFfYXJn
KGFyZywgbG9uZyk7Cj4gKwljPXZhX2FyZyhhcmcsIGxvbmcpOwo+ICsJZD12YV9hcmcoYXJnLCBs
b25nKTsKPiArCWU9dmFfYXJnKGFyZywgbG9uZyk7Cj4gKwlmPXZhX2FyZyhhcmcsIGxvbmcpOwo+
ICsJcmV0dXJuIF9fdWtfc3lzY2FsbChuLGEsYixjLGQsZSxmKTsKPiArfQo+IGRpZmYgLS1naXQg
YS9saWIvc3lzY2FsbF9zaGltL3VrX3N5c2NhbGxfci5jLmluX2VuZCBiL2xpYi9zeXNjYWxsX3No
aW0vdWtfc3lzY2FsbF9yLmMuaW5fZW5kCj4gaW5kZXggZWU4YTU2ODkuLmFlNzQ3MTZlIDEwMDY0
NAo+IC0tLSBhL2xpYi9zeXNjYWxsX3NoaW0vdWtfc3lzY2FsbF9yLmMuaW5fZW5kCj4gKysrIGIv
bGliL3N5c2NhbGxfc2hpbS91a19zeXNjYWxsX3IuYy5pbl9lbmQKPiBAQCAtMTQsNiArMTQsMTgg
QEAgbG9uZyB1a19zeXNjYWxsX3IobG9uZyBuLCAuLi4pCj4gCXJldHVybiBfX3VrX3N5c2NhbGxf
cihuLGEsYixjLGQsZSxmKTsKPiB9Cj4gCj4gK2xvbmcgdWtfdnN5c2NhbGxfcihsb25nIG4sIHZh
X2xpc3QgYXJnKQo+ICt7Cj4gKwlsb25nIGEsYixjLGQsZSxmOwo+ICsJYT12YV9hcmcoYXJnLCBs
b25nKTsKPiArCWI9dmFfYXJnKGFyZywgbG9uZyk7Cj4gKwljPXZhX2FyZyhhcmcsIGxvbmcpOwo+
ICsJZD12YV9hcmcoYXJnLCBsb25nKTsKPiArCWU9dmFfYXJnKGFyZywgbG9uZyk7Cj4gKwlmPXZh
X2FyZyhhcmcsIGxvbmcpOwo+ICsJcmV0dXJuIF9fdWtfc3lzY2FsbF9yKG4sYSxiLGMsZCxlLGYp
Owo+ICt9Cj4gKwo+ICNpZiBDT05GSUdfTElCU1lTQ0FMTF9TSElNX0hBTkRMRVIKPiAjaW5jbHVk
ZSA8dWsvcGxhdC9zeXNjYWxsLmg+Cj4gI2luY2x1ZGUgPHVrL2Fzc2VydC5oPgo+IC0tIAo+IDIu
MjAuMQo+IAo+IAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fCj4gTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdAo+IE1pbmlvcy1kZXZlbEBsaXN0cy54ZW5w
cm9qZWN0Lm9yZwo+IGh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5m
by9taW5pb3MtZGV2ZWwKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5w
cm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8v
bWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Tue Apr 07 07:05:15 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 07 Apr 2020 07:05: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 1jLiIN-0003wW-5t; Tue, 07 Apr 2020 07:05: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=FK1Q=5X=uliege.be=gaulthier.gain@srs-us1.protection.inumbo.net>)
 id 1jLiIL-0003wG-Q4
 for minios-devel@lists.xen.org; Tue, 07 Apr 2020 07:05:13 +0000
X-Inumbo-ID: 1f7abd96-789e-11ea-8076-12813bfff9fa
Received: from serv108.segi.ulg.ac.be (unknown [139.165.32.111])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 1f7abd96-789e-11ea-8076-12813bfff9fa;
 Tue, 07 Apr 2020 07:05:12 +0000 (UTC)
Received: from gaulthiers-mbp.lan (151.169-240-81.adsl-dyn.isp.belgacom.be
 [81.240.169.151])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (No client certificate requested)
 by serv108.segi.ulg.ac.be (Postfix) with ESMTPSA id EFA72200CCFC;
 Tue,  7 Apr 2020 09:05:10 +0200 (CEST)
DKIM-Filter: OpenDKIM Filter v2.11.0 serv108.segi.ulg.ac.be EFA72200CCFC
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=uliege.be;
 s=ulg20190529; t=1586243111;
 bh=E7A//QR6jz3RqI/GP+6/sdi45eUErxltCnX2DrOA9m0=;
 h=Subject:From:In-Reply-To:Date:Cc:References:To:From;
 b=Oq/ogPRrR2Hv0/1nB3SQJU7EBYiD+VOzi62+4dXm/E0nlwmChbUJw5aI+4PHm6oor
 3l/JWvAvzFW9w6K3hdR1K4u3g+gPbyA8PQ8RPoof7rog2yZYclF7Kagyy328sqGOHd
 3wCL8/dziTFagCOFsbIoDku86MauKQM8wHiK2g+xRlGQWUdUaa7+xKJl4YxlYsPkZG
 IKKgHeRNg/z5ChtdL/9YMBGfwS0cuudqZafJnrcj2XZoo0Z6VFSWSEHJcSl8YYyE1b
 LyyQLtds0vbb2h365xGh67gKyUBlmiyDdP6jr8aotENVZ11w+zVWwHcCyVtbOZGxwm
 vZhJM1VU6hfDA==
Mime-Version: 1.0 (Mac OS X Mail 13.0 \(3608.60.0.2.5\))
From: Gaulthier Gain <Gaulthier.Gain@uliege.be>
In-Reply-To: <20200403162939.31745-6-simon.kuenzer@neclab.eu>
Date: Tue, 7 Apr 2020 09:05:10 +0200
Message-Id: <BA87E72A-C5D6-42A1-9A0A-DB446349FA08@uliege.be>
References: <20200403162939.31745-1-simon.kuenzer@neclab.eu>
 <20200403162939.31745-6-simon.kuenzer@neclab.eu>
To: Simon Kuenzer <simon.kuenzer@neclab.eu>
X-Mailer: Apple Mail (2.3608.60.0.2.5)
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2 5/5] lib/syscall_shim: Option
 to generate libc-style stubs
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>, 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>

UmV2aWV3ZWQtYnk6IEdhdWx0aGllciBHYWluIDxnYXVsdGhpZXIuZ2FpbkB1bGllZ2UuYmU+Cgo+
IE9uIDMgQXByIDIwMjAsIGF0IDE4OjI5LCBTaW1vbiBLdWVuemVyIDxzaW1vbi5rdWVuemVyQG5l
Y2xhYi5ldT4gd3JvdGU6Cj4gCj4gSW50cm9kdWNlcyB0aGUgb3B0aW9uIHRvIGF1dG9tYXRpY2Fs
bHkgZ2VuZXJhdGUgbGliYy1zdHlsZSBzeXN0ZW0gY2FsbAo+IHN0dWJzIGZvciB1bmF2YWlsYWJs
ZSBzeXN0ZW0gY2FsbHMuIFdpdGggdGhpcyBmdW5jdGlvbiwgaXQgaXMgcG9zc2libGUKPiB0byBw
cm92aWRlIGFsbCBsaWJjLXN0eWxlIHN5c3RlbSBjYWxsIHN5bWJvbHMgYWx0aG91Z2gganVzdCBh
IHN1YnNldAo+IG9mIHRoZSBmdWxsIEFQSSBpcyBpbXBsZW1lbnRlZC4gVGhlIHN5bWJvbHMgYXJl
IGRlZmluZWQgYXMgYHdlYWtgIGFuZAo+IGNhbiBiZSByZXBsYWNlZCBieSBub24td2VhayBzeW1i
b2wgZGVmaW5pdGlvbnMuCj4gCj4gU2lnbmVkLW9mZi1ieTogU2ltb24gS3VlbnplciA8c2ltb24u
a3VlbnplckBuZWNsYWIuZXU+Cj4gLS0tCj4gbGliL3N5c2NhbGxfc2hpbS9Db25maWcudWsgICAg
ICAgICAgfCAxNSArKysrKysrKysrKysrKysKPiBsaWIvc3lzY2FsbF9zaGltL01ha2VmaWxlLnVr
ICAgICAgICB8ICA4ICsrKysrKysrCj4gbGliL3N5c2NhbGxfc2hpbS9nZW5fbGliY19zdHVicy5h
d2sgfCAxNiArKysrKysrKysrKysrKysrCj4gMyBmaWxlcyBjaGFuZ2VkLCAzOSBpbnNlcnRpb25z
KCspCj4gY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9zeXNjYWxsX3NoaW0vZ2VuX2xpYmNfc3R1YnMu
YXdrCj4gCj4gZGlmZiAtLWdpdCBhL2xpYi9zeXNjYWxsX3NoaW0vQ29uZmlnLnVrIGIvbGliL3N5
c2NhbGxfc2hpbS9Db25maWcudWsKPiBpbmRleCBjMzM2OTQ2My4uOWMzOWVkMmYgMTAwNjQ0Cj4g
LS0tIGEvbGliL3N5c2NhbGxfc2hpbS9Db25maWcudWsKPiArKysgYi9saWIvc3lzY2FsbF9zaGlt
L0NvbmZpZy51awo+IEBAIC05LDYgKzksMjEgQEAgaWYgTElCU1lTQ0FMTF9TSElNCj4gCWJvb2wK
PiAJZGVmYXVsdCBuCj4gCj4gKwljb25maWcgTElCU1lTQ0FMTF9TSElNX0xJQkNTVFVCUwo+ICsJ
ZGVwZW5kcyBvbiAhTElCU1lTQ0FMTF9TSElNX05PV1JBUFBFUgo+ICsJYm9vbCAiUHJvdmlkZSBs
aWJjLXN0eWxlIHN0dWJzIgo+ICsJZGVmYXVsdCBuCj4gKwloZWxwCj4gKwkJQXV0b21hdGljYWxs
eSBnZW5lcmF0ZSBsaWJjLXN0eWxlIHN0dWJzIGZvciB1bmF2YWlsYWJsZQo+ICsJCXN5c3RlbSBj
YWxscy4gVGhlIGFpbSBpcyB0byBwcm92aWRlIGFsbCBsaWJjLXN0eWxlIHN5c3RlbQo+ICsJCWNh
bGwgc3ltYm9scyBhbHRob3VnaCBqdXN0IGEgc3Vic2V0IG9mIHRoZSBmdWxsIEFQSSBtYXkgYmUK
PiArCQlpbXBsZW10ZW50ZWQuIFRoZSBzeW1ib2xzIGFyZSBkZWZpbmVkIGFzIGB3ZWFrYC4KPiAr
CQlQbGVhc2Ugbm90ZSB0aGF0IGRlcGVuZGluZyBvbiB0aGUgdXNlZCBjb21waWxlciBhbmQgb3B0
aW1pemF0aW9uCj4gKwkJb3B0aW9ucywgdGhpcyBmdW5jdGlvbmFsaXR5IG1heSBzb21ldGltZXMg
Y2F1c2UgbGlua2luZyBmYWlsdXJlcwo+ICsJCWJlY2F1c2Ugb2YgZG91YmxlIGRlZmluaXRpb25z
IG9mIHN5bWJvbHMuIFRoaXMgaXMgdGhlIGNhc2Ugd2hlbgo+ICsJCWFub3RoZXIgbGlicmFyeSBp
cyBwcm92aWRpbmcgc29tZSBsaWJjLXN0eWxlIHN5c3RlbSBjYWxscwo+ICsJCXdpdGhvdXQgcmVn
aXN0ZXJpbmcgdGhlbSB0byBsaWJzeXNjYWxsX3NoaW0uCj4gKwo+IAljb25maWcgTElCU1lTQ0FM
TF9TSElNX0hBTkRMRVIKPiAJCWJvb2wgIkJpbmFyeSBzeXN0ZW0gY2FsbCBoYW5kbGVyIChMaW51
eCBBQkkpIgo+IAkJZGVmYXVsdCBuCj4gZGlmZiAtLWdpdCBhL2xpYi9zeXNjYWxsX3NoaW0vTWFr
ZWZpbGUudWsgYi9saWIvc3lzY2FsbF9zaGltL01ha2VmaWxlLnVrCj4gaW5kZXggYzAxZWU0OTQu
LmQzYmZlNGY4IDEwMDY0NAo+IC0tLSBhL2xpYi9zeXNjYWxsX3NoaW0vTWFrZWZpbGUudWsKPiAr
KysgYi9saWIvc3lzY2FsbF9zaGltL01ha2VmaWxlLnVrCj4gQEAgLTEyLDYgKzEyLDcgQEAgTElC
U1lTQ0FMTF9TSElNX0dFTl9TUkMgKz0gJChMSUJTWVNDQUxMX1NISU1fQlVJTEQpL3VrX3N5c2Nh
bGwuYwo+IExJQlNZU0NBTExfU0hJTV9HRU5fU1JDICs9ICQoTElCU1lTQ0FMTF9TSElNX0JVSUxE
KS91a19zeXNjYWxsX3IuYwo+IExJQlNZU0NBTExfU0hJTV9HRU5fU1JDICs9ICQoTElCU1lTQ0FM
TF9TSElNX0JVSUxEKS91a19zeXNjYWxsX25hbWUuYwo+IExJQlNZU0NBTExfU0hJTV9HRU5fU1JD
ICs9ICQoTElCU1lTQ0FMTF9TSElNX0JVSUxEKS91a19zeXNjYWxsX25hbWVfcC5jCj4gK0xJQlNZ
U0NBTExfU0hJTV9HRU5fU1JDICs9ICQoTElCU1lTQ0FMTF9TSElNX0JVSUxEKS9saWJjX3N0dWJz
LmMKPiAKPiBVS19QUkVQQVJFLSQoQ09ORklHX0xJQlNZU0NBTExfU0hJTSkgKz0gJChMSUJTWVND
QUxMX1NISU1fUEhPTllfU1JDKSAkKExJQlNZU0NBTExfU0hJTV9HRU5fU1JDKQo+IAo+IEBAIC02
NSw2ICs2NiwxMSBAQCAkKExJQlNZU0NBTExfU0hJTV9CVUlMRCkvdWtfc3lzY2FsbF9uYW1lX3Au
YzogJChMSUJTWVNDQUxMX1NISU1fQlVJTEQpL3Byb3ZpZGVkXwo+IAkkKGNhbGwgYnVpbGRfY21k
LEdFTixsaWJzeXNjYWxsX3NoaW0sJChub3RkaXIgJEApLCBcCj4gCQkkKEFXSykgLUYgJy0nIC1m
ICQoTElCU1lTQ0FMTF9TSElNX0JBU0UpL2dlbl91a19zeXNjYWxsX25hbWVfcC5hd2sgJDwgPiAk
QCkKPiAKPiArJChMSUJTWVNDQUxMX1NISU1fQlVJTEQpL2xpYmNfc3R1YnMuYzogJChMSUJTWVND
QUxMX1NISU1fQkFTRSkvZ2VuX2xpYmNfc3R1YnMuYXdrICQoTElCU1lTQ0FMTF9TSElNX1RFTVBM
KQo+ICsJJChjYWxsIGJ1aWxkX2NtZCxHRU4sbGlic3lzY2FsbF9zaGltLCQobm90ZGlyICRAKSwg
XAo+ICsJCSQoQVdLKSAtZiAkKExJQlNZU0NBTExfU0hJTV9CQVNFKS9nZW5fbGliY19zdHVicy5h
d2sgXAo+ICsJCSQoTElCU1lTQ0FMTF9TSElNX1RFTVBMKSA+ICRAKQo+ICsKPiAkKExJQlNZU0NB
TExfU0hJTV9CVUlMRCkvcHJvdmlkZWRfc3lzY2FsbHMuaC5pbi5uZXc6Cj4gCSQoY2FsbCBidWls
ZF9jbWQsR0VOLGxpYnN5c2NhbGxfc2hpbSwkKG5vdGRpciAkQCksIFwKPiAJCWVjaG8gJChVS19Q
Uk9WSURFRF9TWVNDQUxMUy15KSB8IHRyICcgJyAnXG4nID4gJEApCj4gQEAgLTg1LDUgKzkxLDcg
QEAgTElCU1lTQ0FMTF9TSElNX1NSQ1MteSArPSAkKExJQlNZU0NBTExfU0hJTV9CVUlMRCkvdWtf
c3lzY2FsbC5jCj4gTElCU1lTQ0FMTF9TSElNX1NSQ1MteSArPSAkKExJQlNZU0NBTExfU0hJTV9C
VUlMRCkvdWtfc3lzY2FsbF9yLmMKPiBMSUJTWVNDQUxMX1NISU1fU1JDUy15ICs9ICQoTElCU1lT
Q0FMTF9TSElNX0JVSUxEKS91a19zeXNjYWxsX25hbWUuYwo+IExJQlNZU0NBTExfU0hJTV9TUkNT
LXkgKz0gJChMSUJTWVNDQUxMX1NISU1fQlVJTEQpL3VrX3N5c2NhbGxfbmFtZV9wLmMKPiArTElC
U1lTQ0FMTF9TSElNX1NSQ1MtJChDT05GSUdfTElCU1lTQ0FMTF9TSElNX0xJQkNTVFVCUykgKz0g
JChMSUJTWVNDQUxMX1NISU1fQlVJTEQpL2xpYmNfc3R1YnMuYwo+ICtMSUJTWVNDQUxMX1NISU1f
TElCQ19TVFVCU19GTEFHUys9LWZuby1idWlsdGluIC1Xbm8tYnVpbHRpbi1kZWNsYXJhdGlvbi1t
aXNtYXRjaAo+IAo+IExJQlNZU0NBTExfU0hJTV9DTEVBTiA9ICQoTElCU1lTQ0FMTF9TSElNX1BI
T05ZX1NSQykgJChMSUJTWVNDQUxMX1NISU1fUEhPTllfU1JDX05FVykgJChMSUJTWVNDQUxMX1NI
SU1fR0VOX1NSQykgJChMSUJTWVNDQUxMX1NISU1fR0VOX1NSQykKPiBkaWZmIC0tZ2l0IGEvbGli
L3N5c2NhbGxfc2hpbS9nZW5fbGliY19zdHVicy5hd2sgYi9saWIvc3lzY2FsbF9zaGltL2dlbl9s
aWJjX3N0dWJzLmF3awo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAuLjI2
NWM4ZmE5Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2xpYi9zeXNjYWxsX3NoaW0vZ2VuX2xpYmNf
c3R1YnMuYXdrCj4gQEAgLTAsMCArMSwxNiBAQAo+ICtCRUdJTiB7Cj4gKwlwcmludCAiLyogQXV0
byBnZW5lcmF0ZWQgZmlsZS4gRG8gbm90IGVkaXQgKi8iCj4gKwlwcmludCAiXG4jaW5jbHVkZSA8
ZXJybm8uaD4iCj4gKwlwcmludCAiXG4jaW5jbHVkZSA8dWsvc3lzY2FsbC5oPiIKPiArCXByaW50
ICJcbiNpbmNsdWRlIDx1ay9wcmludC5oPiIKPiArCXByaW50ICJcbiNpbmNsdWRlIDx1ay9lc3Nl
bnRpYWxzLmg+Igo+ICt9Cj4gKy8jZGVmaW5lIF9fTlJfLyB7Cj4gKwluYW1lID0gc3Vic3RyKCQy
LDYpOwo+ICsJcHJpbnRmICJcbiNpZm5kZWYgSEFWRV91a19zeXNjYWxsXyVzIiwgbmFtZTsKPiAr
CXByaW50ZiAiXG5sb25nIF9fd2VhayAlcyh2b2lkKSIsIG5hbWU7Cj4gKwlwcmludGYgIlxueyI7
Cj4gKwlwcmludGYgIlxuXHRyZXR1cm4gdWtfc3lzY2FsbF9lX3N0dWIoXCIlc1wiKTsiLCBuYW1l
Owo+ICsJcHJpbnRmICJcbn0iOwo+ICsJcHJpbnRmICJcbiNlbmRpZiAvKiAhSEFWRV91a19zeXNj
YWxsXyVzICovXG4iLCBuYW1lOwo+ICt9Cj4gLS0gCj4gMi4yMC4xCj4gCj4gCj4gX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBNaW5pb3MtZGV2ZWwgbWFp
bGluZyBsaXN0Cj4gTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCj4gaHR0cHM6Ly9s
aXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1kZXZlbAoKCl9fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBt
YWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlz
dHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Tue Apr 07 07:13:24 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 07 Apr 2020 07:13: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 1jLiQE-0004js-TO; Tue, 07 Apr 2020 07:13: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=FK1Q=5X=uliege.be=gaulthier.gain@srs-us1.protection.inumbo.net>)
 id 1jLiQE-0004jn-1e
 for minios-devel@lists.xen.org; Tue, 07 Apr 2020 07:13:22 +0000
X-Inumbo-ID: 42d1957a-789f-11ea-8076-12813bfff9fa
Received: from serv108.segi.ulg.ac.be (unknown [139.165.32.111])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 42d1957a-789f-11ea-8076-12813bfff9fa;
 Tue, 07 Apr 2020 07:13:21 +0000 (UTC)
Received: from gaulthiers-mbp.lan (151.169-240-81.adsl-dyn.isp.belgacom.be
 [81.240.169.151])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (No client certificate requested)
 by serv108.segi.ulg.ac.be (Postfix) with ESMTPSA id EB98B200BFE7;
 Tue,  7 Apr 2020 09:13:19 +0200 (CEST)
DKIM-Filter: OpenDKIM Filter v2.11.0 serv108.segi.ulg.ac.be EB98B200BFE7
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=uliege.be;
 s=ulg20190529; t=1586243600;
 bh=2x66hCRlEic8uI4rjE2kq5nZXv5hIfq71xlTyBrInKo=;
 h=Subject:From:In-Reply-To:Date:Cc:References:To:From;
 b=ohXWGEnajQy8SLR2Jk5ognzPONvMajd47ctpDkghfW4HtuhuxKonbMydo0l6JKgAq
 X9qVrPyIYt/8OyKJSNW57F9s2zlyVPtiW5cg7fLsc/xzJN1qHPg1zRwrfDN+azQBrE
 vQWjkkQUHF4u8I/me+ki1gVfIPr/NCQjhrXF7MWcaHqNk8WZp5n7m01btNkkegKZCt
 eKefQa2U16uPXTBBbB6vNUMhkwvlza3oTm9QKsAuk3lvzjra4Sp0iZ8SwWAamdTFL1
 FI0oZyDS0SifZWBhoUG5hoiQykvSijmk9L4jf8jyVr27d/GyLLpZStNc03GTYq2lEx
 AJByeaxm4c5Rg==
Mime-Version: 1.0 (Mac OS X Mail 13.0 \(3608.60.0.2.5\))
From: Gaulthier Gain <Gaulthier.Gain@uliege.be>
In-Reply-To: <20200403162939.31745-3-simon.kuenzer@neclab.eu>
Date: Tue, 7 Apr 2020 09:13:19 +0200
Message-Id: <C40658D0-6130-45A4-A8AC-7D84B3666736@uliege.be>
References: <20200403162939.31745-1-simon.kuenzer@neclab.eu>
 <20200403162939.31745-3-simon.kuenzer@neclab.eu>
To: Simon Kuenzer <simon.kuenzer@neclab.eu>
X-Mailer: Apple Mail (2.3608.60.0.2.5)
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2 2/5] lib/syscall_shim: Option
 to disable libc-style wrapper 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: Felipe Huici <felipe.huici@neclab.eu>, 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>

UmV2aWV3ZWQtYnk6IEdhdWx0aGllciBHYWluIDxnYXVsdGhpZXIuZ2FpbkB1bGllZ2UuYmU+Cgo+
IE9uIDMgQXByIDIwMjAsIGF0IDE4OjI5LCBTaW1vbiBLdWVuemVyIDxzaW1vbi5rdWVuemVyQG5l
Y2xhYi5ldT4gd3JvdGU6Cj4gCj4gSW50cm9kdWNlcyB0aGUgaGlkZGVuIENvbmZpZy51ayBvcHRp
b24gYExJQlNZU0NBTExfU0hJTV9OT1dSQVBQRVJgIHRvCj4gZGlzYWJsZSB0aGUgZ2VuZXJhdGlv
biBvZiBsaWJjLXN0eWxlIHN5c2NhbGwgd3JhcHBlciBmdW5jdGlvbnMuIFRoZQo+IGlkZWEgaXMg
dGhhdCBsaWJDIGxpYnJhcmllcyAoZS5nLiwgbXVzbCkgdGhhdCBwcm92aWRlIG93bgo+IHdyYXBw
ZXJzIChlLmcuLCBiYXNlZCBvbiBgdWtfc3lzY2FsbCgpYCBhbmQgYHVrX3N5c2NhbGxfc3RhdGlj
KClgKQo+IHdvdWxkIHNldCB0aGlzIG9wdGlvbiB0aHJvdWdoIHRoZWlyIENvbmZpZy51ay4gSW4g
c3VjaCBhIGNhc2UsIHRoZQo+IHN5c2NhbGxfc2hpbSBsaWJyYXJ5IHdpbGwgdGhlbiBvbmx5IGdl
bmVyYXRlIHRoZSBsb3ctbGV2ZWwgc3lzdGVtIGNhbGwKPiBpbXBsZW1lbnRhdGlvbnMuCj4gCj4g
U2lnbmVkLW9mZi1ieTogU2ltb24gS3VlbnplciA8c2ltb24ua3VlbnplckBuZWNsYWIuZXU+Cj4g
LS0tCj4gZG9jL2d1aWRlcy9kZXZlbG9wZXJzLWFwcC5yc3QgICAgICAgICB8ICA5ICsrKysrKysK
PiBsaWIvc3lzY2FsbF9zaGltL0NvbmZpZy51ayAgICAgICAgICAgIHwgIDYgKysrKysKPiBsaWIv
c3lzY2FsbF9zaGltL2luY2x1ZGUvdWsvc3lzY2FsbC5oIHwgMzUgKysrKysrKysrKysrKysrKysr
KysrKysrKysrCj4gMyBmaWxlcyBjaGFuZ2VkLCA1MCBpbnNlcnRpb25zKCspCj4gCj4gZGlmZiAt
LWdpdCBhL2RvYy9ndWlkZXMvZGV2ZWxvcGVycy1hcHAucnN0IGIvZG9jL2d1aWRlcy9kZXZlbG9w
ZXJzLWFwcC5yc3QKPiBpbmRleCBhNzI0MmU2MC4uY2UyZjAxNTMgMTAwNjQ0Cj4gLS0tIGEvZG9j
L2d1aWRlcy9kZXZlbG9wZXJzLWFwcC5yc3QKPiArKysgYi9kb2MvZ3VpZGVzL2RldmVsb3BlcnMt
YXBwLnJzdAo+IEBAIC00NTAsMTEgKzQ1MCwyMCBAQCBsaWJjLXN0eWxlIHdyYXBwZXIgb24gdG9w
Ogo+ICAgICAgICAgcmV0dXJuIHJldDsKPiAgICAgfQo+IAo+ICsgICAgI2lmIFVLX0xJQkNfU1lT
Q0FMTAo+ICAgICBzc2l6ZV90IHdyaXRlKGludCBmZCwgY29uc3Qgdm9pZCAqYnVmLCBzaXplX3Qg
Y291bnQpCj4gICAgIHsKPiAgICAgICAgIHJldHVybiAoc3NpemVfdCkgdWtfc3lzY2FsbF9lX3dy
aXRlKChsb25nKSBmZCwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIChsb25nKSBidWYsIChsb25nKSBjb3VudCk7Cj4gICAgIH0KPiArICAgICNlbmRpZiAvKiBV
S19MSUJDX1NZU0NBTEwgKi8KPiArCj4gK05vdGU6IFBsZWFzZSBub3RlIHRoYXQgdGhlIGltcGxl
bWVudGF0aW9uIG9mIGN1c3RvbSBsaWJjLXN0eWxlIHdyYXBwZXJzIGhhdmUgdG8KPiArYmUgZ3Vh
cmRlZCB3aXRoIGBgI2lmIFVLX0xJQkNfU1lTQ0FMTGBgLiBUaGlzIG1hY3JvIGlzIHByb3ZpZGVk
IGJ5IHRoZQo+ICtgYDx1ay9zeXNjYWxsLmg+YGAgaGVhZGVyLiBTb21lIGxpYkMgcG9ydHMgKGUu
Zy4sIG11c2wpIGRlYWN0aXZhdGUgdGhpcyBvcHRpb24KPiArd2hlbmV2ZXIgdGhlaXIgcHJvdmlk
ZSBvd24gd3JhcHBlciBmdW5jdGlvbnMuIEZvciBzdWNoIGNhc2VzLCB0aGUgc3lzY2FsbF9zaGlt
Cj4gK2xpYnJhcnkgd2lsbCBvbmx5IHByb3ZpZGUgdGhlIGBgdWtfc3lzY2FsbF9lXzxzeXNjYWxs
X25hbWU+YGAgYW5kCj4gK2BgdWtfc3lzY2FsbF9yXzxzeXNjYWxsX25hbWU+YGAgc3ltYm9scy4K
PiAKPiBOb3RlOiBXaGVuIGBzeXNjYWxsX3NoaW1gIGxpYnJhcnkgaXMgbm90IGVuYWJsZWQsIHRo
ZSBvcmlnaW5hbCBkZXNpZ24gaWRlYSB3YXMKPiB0aGF0IHRoZSBtYWNyb3MgcHJvdmlkZSB0aGUg
bGliYy1zdHlsZSB3cmFwcGVyIG9ubHkuIEhvd2V2ZXIsIGFsbCB0aGUKPiBkaWZmIC0tZ2l0IGEv
bGliL3N5c2NhbGxfc2hpbS9Db25maWcudWsgYi9saWIvc3lzY2FsbF9zaGltL0NvbmZpZy51awo+
IGluZGV4IDIwOTYyNTkwLi5jMzM2OTQ2MyAxMDA2NDQKPiAtLS0gYS9saWIvc3lzY2FsbF9zaGlt
L0NvbmZpZy51awo+ICsrKyBiL2xpYi9zeXNjYWxsX3NoaW0vQ29uZmlnLnVrCj4gQEAgLTMsNiAr
MywxMiBAQCBtZW51Y29uZmlnIExJQlNZU0NBTExfU0hJTQo+IAlkZWZhdWx0IG4KPiAKPiBpZiBM
SUJTWVNDQUxMX1NISU0KPiArCSMgSGlkZGVuIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHRoYXQgY2Fu
IGJlIHNldCBieSBsaWJjJ3MgaW4gb3JkZXIgdG8KPiArCSMgc3dpdGNoIG9mZiB0aGUgZ2VuZXJh
dGlvbiBvZiBsaWJjLXN0eWxlIHdyYXBwZXIgc3ltYm9scwo+ICsJY29uZmlnIExJQlNZU0NBTExf
U0hJTV9OT1dSQVBQRVIKPiArCWJvb2wKPiArCWRlZmF1bHQgbgo+ICsKPiAJY29uZmlnIExJQlNZ
U0NBTExfU0hJTV9IQU5ETEVSCj4gCQlib29sICJCaW5hcnkgc3lzdGVtIGNhbGwgaGFuZGxlciAo
TGludXggQUJJKSIKPiAJCWRlZmF1bHQgbgo+IGRpZmYgLS1naXQgYS9saWIvc3lzY2FsbF9zaGlt
L2luY2x1ZGUvdWsvc3lzY2FsbC5oIGIvbGliL3N5c2NhbGxfc2hpbS9pbmNsdWRlL3VrL3N5c2Nh
bGwuaAo+IGluZGV4IGEyMTkzNjViLi42ZWUxMzlmYSAxMDA2NDQKPiAtLS0gYS9saWIvc3lzY2Fs
bF9zaGltL2luY2x1ZGUvdWsvc3lzY2FsbC5oCj4gKysrIGIvbGliL3N5c2NhbGxfc2hpbS9pbmNs
dWRlL3VrL3N5c2NhbGwuaAo+IEBAIC00Miw2ICs0MiwyMCBAQAo+ICNpbmNsdWRlIDxlcnJuby5o
Pgo+ICNpbmNsdWRlIDx1ay9wcmludC5oPgo+IAo+ICsvKgo+ICsgKiBXaGVuZXZlciB0aGUgaGlk
ZGVuIENvbmZpZy51ayBvcHRpb24gTElCU1lTQ0FMTF9TSElNX05PV1JBUFBFUgo+ICsgKiBpcyBz
ZXQsIHRoZSBjcmVhdGlvbiBvZiBsaWJjLXN0eWxlIHdyYXBwZXJzIGFyZSBkaXNhYmxlIGJ5IHRo
ZQo+ICsgKiBVS19TWVNDQUxMX0RFRklORSgpIGFuZCBVS19TWVNDQUxMX1JfREVGSU5FKCkgbWFj
cm9zLiBBbHRlcm5hdGl2ZWx5LAo+ICsgKiBVS19MSUJDX1NZU0NBTExTIGNhbiBiZSBzZXQgdG8g
MCB0aHJvdWdoIGNvbXBpbGF0aW9uIGZsYWdzLgo+ICsgKi8KPiArI2lmbmRlZiBVS19MSUJDX1NZ
U0NBTExTCj4gKyNpZiBDT05GSUdfTElCU1lTQ0FMTF9TSElNX05PV1JBUFBFUgo+ICsjZGVmaW5l
IFVLX0xJQkNfU1lTQ0FMTFMgKDApCj4gKyNlbHNlCj4gKyNkZWZpbmUgVUtfTElCQ19TWVNDQUxM
UyAoMSkKPiArI2VuZGlmIC8qIENPTkZJR19MSUJTWVNDQUxMX1NISU1fTk9XUkFQUEVSICovCj4g
KyNlbmRpZiAvKiBVS19MSUJDX1NZU0NBTExTICovCj4gKwo+ICNkZWZpbmUgX191a19zY2MoWCkg
KChsb25nKSAoWCkpCj4gdHlwZWRlZiBsb25nIHVrX3N5c2NhbGxfYXJnX3Q7Cj4gCj4gQEAgLTEz
NSw3ICsxNDksOSBAQCB0eXBlZGVmIGxvbmcgdWtfc3lzY2FsbF9hcmdfdDsKPiAvKgo+ICAqIFVL
X1NZU0NBTExfREVGSU5FKCkKPiAgKiBCYXNlZCBvbiBVS19MTFNZU0NBTExfREVGSU5FIGFuZCBw
cm92aWRlcyBhIGxpYmMtc3R5bGUgd3JhcHBlcgo+ICsgKiBpbiBjYXNlIFVLX0xJQkNfU1lTQ0FM
TFMgaXMgZW5hYmxlZAo+ICAqLwo+ICsjaWYgVUtfTElCQ19TWVNDQUxMUwo+ICNkZWZpbmUgX19V
S19TWVNDQUxMX0RFRklORSh4LCBydHlwZSwgbmFtZSwgZW5hbWUsIHJuYW1lLCAuLi4pCQlcCj4g
CWxvbmcgZW5hbWUoVUtfQVJHX01BUHgoeCwgVUtfU19BUkdfTE9ORywgX19WQV9BUkdTX18pKTsJ
CVwKPiAJcnR5cGUgbmFtZShVS19BUkdfTUFQeCh4LCBVS19TX0FSR19BQ1RVQUwsIF9fVkFfQVJH
U19fKSkJXAo+IEBAIC0xNTIsNiArMTY4LDE1IEBAIHR5cGVkZWYgbG9uZyB1a19zeXNjYWxsX2Fy
Z190Owo+IAkJCSAgIF9fVUtfTkFNRTJTQ0FMTEVfRk4obmFtZSksCQkJXAo+IAkJCSAgIF9fVUtf
TkFNRTJTQ0FMTFJfRk4obmFtZSksCQkJXAo+IAkJCSAgIF9fVkFfQVJHU19fKQo+ICsjZWxzZQo+
ICsjZGVmaW5lIFVLX1NZU0NBTExfREVGSU5FKHJ0eXBlLCBuYW1lLCAuLi4pCQkJCVwKPiArCV9V
S19MTFNZU0NBTExfREVGSU5FKF9fVUtfU1lTQ0FMTF9ERUZfTkFSR1MoX19WQV9BUkdTX18pLAlc
Cj4gKwkJCSAgICAgcnR5cGUsCQkJCQlcCj4gKwkJCSAgICAgbmFtZSwJCQkJCVwKPiArCQkJICAg
ICBfX1VLX05BTUUyU0NBTExFX0ZOKG5hbWUpLAkJCVwKPiArCQkJICAgICBfX1VLX05BTUUyU0NB
TExSX0ZOKG5hbWUpLAkJCVwKPiArCQkJICAgICBfX1ZBX0FSR1NfXykKPiArI2VuZGlmIC8qIFVL
X0xJQkNfU1lTQ0FMTFMgKi8KPiAKPiAvKiBSYXcgc3lzdGVtIGNhbGwgaW1wbGVtZW50YXRpb24g
dGhhdCBpcyByZXR1cm5pbmcgbmVnYXRpdmUgY29kZXMgb24gZXJyb3JzICovCj4gLyogVE9ETzog
YHZvaWRgIGFzIHJldHVybiB0eXBlIGlzIGN1cnJlbnRseSBub3Qgc3VwcG9ydGVkLgo+IEBAIC0x
OTQsNyArMjE5LDkgQEAgdHlwZWRlZiBsb25nIHVrX3N5c2NhbGxfYXJnX3Q7Cj4gLyoKPiAgKiBV
S19TWVNDQUxMX1JfREVGSU5FKCkKPiAgKiBCYXNlZCBvbiBVS19MTFNZU0NBTExfUl9ERUZJTkUg
YW5kIHByb3ZpZGVzIGEgbGliYy1zdHlsZSB3cmFwcGVyCj4gKyAqIGluIGNhc2UgVUtfTElCQ19T
WVNDQUxMUyBpcyBlbmFibGVkCj4gICovCj4gKyNpZiBVS19MSUJDX1NZU0NBTExTCj4gI2RlZmlu
ZSBfX1VLX1NZU0NBTExfUl9ERUZJTkUoeCwgcnR5cGUsIG5hbWUsIGVuYW1lLCBybmFtZSwgLi4u
KQlcCj4gCWxvbmcgZW5hbWUoVUtfQVJHX01BUHgoeCwgVUtfU19BUkdfTE9ORywgX19WQV9BUkdT
X18pKTsJCVwKPiAJcnR5cGUgbmFtZShVS19BUkdfTUFQeCh4LCBVS19TX0FSR19BQ1RVQUwsIF9f
VkFfQVJHU19fKSkJXAo+IEBAIC0yMTEsNiArMjM4LDE0IEBAIHR5cGVkZWYgbG9uZyB1a19zeXNj
YWxsX2FyZ190Owo+IAkJCSAgICAgX19VS19OQU1FMlNDQUxMRV9GTihuYW1lKSwJCQlcCj4gCQkJ
ICAgICBfX1VLX05BTUUyU0NBTExSX0ZOKG5hbWUpLAkJCVwKPiAJCQkgICAgIF9fVkFfQVJHU19f
KQo+ICsjZWxzZQo+ICsjZGVmaW5lIFVLX1NZU0NBTExfUl9ERUZJTkUocnR5cGUsIG5hbWUsIC4u
LikJCQkJXAo+ICsJX1VLX0xMU1lTQ0FMTF9SX0RFRklORShfX1VLX1NZU0NBTExfREVGX05BUkdT
KF9fVkFfQVJHU19fKSwJXAo+ICsJCQkgICAgICAgbmFtZSwJCQkJCVwKPiArCQkJICAgICAgIF9f
VUtfTkFNRTJTQ0FMTEVfRk4obmFtZSksCQlcCj4gKwkJCSAgICAgICBfX1VLX05BTUUyU0NBTExS
X0ZOKG5hbWUpLAkJXAo+ICsJCQkgICAgICAgX19WQV9BUkdTX18pCj4gKyNlbmRpZiAvKiBVS19M
SUJDX1NZU0NBTExTICovCj4gCj4gCj4gI2RlZmluZSBfX1VLX1NQUk9UT19BUkdTX1RZUEUgbG9u
Zwo+IC0tIAo+IDIuMjAuMQo+IAo+IAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fCj4gTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdAo+IE1pbmlvcy1kZXZl
bEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwo+IGh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFp
bG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWwKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZl
bEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxt
YW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Tue Apr 07 07:14:11 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 07 Apr 2020 07:14: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 1jLiR1-0004kx-0z; Tue, 07 Apr 2020 07:14:11 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=hwa8=5X=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1jLiQz-0004ks-Fh
 for minios-devel@lists.xenproject.org; Tue, 07 Apr 2020 07:14:09 +0000
X-Inumbo-ID: 5f59a6e2-789f-11ea-b58d-bc764e2007e4
Received: from foss.arm.com (unknown [217.140.110.172])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTP
 id 5f59a6e2-789f-11ea-b58d-bc764e2007e4;
 Tue, 07 Apr 2020 07:14:08 +0000 (UTC)
Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14])
 by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 18DC330E;
 Tue,  7 Apr 2020 00:14:08 -0700 (PDT)
Received: from localhost.localdomain (entos-thunderx2-02.shanghai.arm.com
 [10.169.138.57])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 5DFF13F68F;
 Tue,  7 Apr 2020 00:18:17 -0700 (PDT)
From: Jia He <justin.he@arm.com>
To: minios-devel@lists.xenproject.org,
	Sharan.Santhanam@neclab.eu
Date: Tue,  7 Apr 2020 15:13:42 +0800
Message-Id: <20200407071349.112115-1-justin.he@arm.com>
X-Mailer: git-send-email 2.17.1
Subject: [Minios-devel] [UNIKRAFT PATCH v4 0/7] Support float point on arm64
 kvm plat
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>, Kaly Xin <Kaly.Xin@arm.com>,
 Simon Kuenzer <simon.kuenzer@neclab.eu>, nd@arm.com,
 Jia He <justin.he@arm.com>
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>

VGhpcyBzZXJpZXMgaXMgdG8gZW5hYmxlIHRoZSBmbG9hdCBwb2ludCBzdXBwb3J0IG9uIGFybTY0
IGt2bSBwbGF0LgoKVGhlIGtleSBwb2ludCBpcyB0aGUgcGF0Y2ggMyBhbmQgNAoKVGVzdGVkIG9u
IGEgVGh1bmRYMiBxZW11ICItTSB2aXJ0IiBndWVzdCBtYWNoaW5lLgpxZW11IGNvbW1hbmQgbGlu
ZTovdXNyL2xvY2FsL2Jpbi9xZW11LXN5c3RlbS1hYXJjaDY0ICBcCi1tYWNoaW5lIHZpcnQsZ2lj
LXZlcnNpb249MiAtbSAxMDI0IC1jcHUgbWF4IC1uby1hY3BpIC1zbXAgMSBcCi1kaXNwbGF5IG5v
bmUgIC1ub2dyYXBoaWMgLW5vZGVmYXVsdHMgLXNlcmlhbCBzdGRpbyBcCi1rZXJuZWwgYnVpbGQv
aGVsbG93b3JsZF9rdm0tYXJtNjQKCkkgY3JlYXRlZCBhIGFwcCB3aXRoIDIgdGhyZWFkcywgYW5k
IHRoZW4gcHJpbnQgdGhlaXIgbG9jYWwgZG91YmxlL2Zsb2F0CnZhcmlhYmxlcy4gTG9va3MgZmlu
ZSB0byBtZS4KCkNoYW5nZXM6CnY0OiBhZGRyZXNzIG1vc3Qgb2YgdGhlIGNvbW1lbnRzIGZyb20g
U2hhcmFuCiAtIGNoYW5nZSB0aGUgZnBfc2F2ZS9yZXN0b3JlX3N0b3JlIGFzIHBlciBmcmVlYnNk
IHdheQogLSByZWZpbmUgdGhlIGhlbHAgbXNnIGluIHBhdGNoIDEKIC0gYWRkIHItYiBmb3IgcGF0
Y2ggNSw2LDcKIC0gcy9DT05GSUdfRkxPQVRfUE9JTlQvQ09ORklHX0ZQU0lNRC9nCnYzOiByZWJh
c2UgdG8gbGF0ZXN0IHN0YWdpbmcgYnJhbmNoCnYyOiByZW1vdmUgUkZDIHRhZy4KIC0gdXRpbGl6
ZSAnaXNyJyB2YXJpYW50IGZlYXR1cmUgaW50cm9kdWNlZCBieSBTaW1vbiwgdGhpcyBhZGRyZXNz
ZXMgdGhlCm1nZW5lcmFsLXJlZ3Mtb25seSBpc3N1ZSBpbiB2MS4KIC0gcmVmYWN0b3IgdGhlIHNh
dmUvcmVzdG9yZSBjb2RlcyBkdWUgdG8gbGljZW5zZSBpc3N1ZS4KCkppYSBIZSAoNyk6CiAgcGxh
dDogYnVpbGQ6IEFkZCBhIGNvbmZpZyBvcHRpb24gdG8gZW5hYmxlIGZwIG9uIGFybTY0CiAgYnVp
bGQ6IExpbmsgbGliZ2NjIGF0IHRoZSBlbmQgb2YgdGhlIGxpbmsgb3B0aW9ucyBsaXN0CiAgcGxh
dC9rdm06IGFybTY0OiBFbmFibGUgdGhlIGZwL3NpbWQgYXQgdGhlIHN0YXJ0aW5nIHBvaW50CiAg
cGxhdC9hcm06IFN1cHBvcnQgZnAvc2ltZCBzYXZlL3Jlc3RvcmUgZHVyaW5nIGNvbnRleHQgc3dp
dGNoCiAgYXJjaC9hcm02NDogRG9uJ3QgcGFzcyAtbWdlbmVyYWwtcmVncy1vbmx5IHdoZW4gQ09O
RklHX0ZMT0FUX1BPSU5UIGlzCiAgICB5CiAgYXJjaC9hcm02NDogRml4IC1tZnB1PW5vbmUgd2hl
biBub3Qgc3VwcG9ydGluZyBmcHNpbWQKICBidWlsZDogQWRkICdpc3InIHZhcmlhbnQgZm9yIGFy
bTY0IGt2bSBwbGF0IHNvdXJjZSBmaWxlcyBjYWxsZWQgd2l0aGluCiAgICBpcnEgY29udGV4dAoK
IGFyY2gvYXJtL2FybTY0L01ha2VmaWxlLnVrICAgICAgICAgIHwgIDcgKystCiBwbGF0L0NvbmZp
Zy51ayAgICAgICAgICAgICAgICAgICAgICB8ICA3ICsrKwogcGxhdC9jb21tb24vYXJtL2ZwX2Fy
bTY0LmMgICAgICAgICAgfCA4MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogcGxhdC9j
b21tb24vYXJtL3RocmVhZF9zdGFydDY0LlMgICAgfCAgMSArCiBwbGF0L2NvbW1vbi9pbmNsdWRl
L2FybS9hcm02NC9jcHUuaCB8IDQ2ICsrKysrKysrKysrKysrKy0KIHBsYXQva3ZtL0xpbmtlci51
ayAgICAgICAgICAgICAgICAgIHwgIDIgKwogcGxhdC9rdm0vTWFrZWZpbGUudWsgICAgICAgICAg
ICAgICAgfCAxMSArKy0tCiBwbGF0L2t2bS9hcm0vZW50cnk2NC5TICAgICAgICAgICAgICB8ICA4
ICsrKwogOCBmaWxlcyBjaGFuZ2VkLCAxNTUgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkK
IGNyZWF0ZSBtb2RlIDEwMDY0NCBwbGF0L2NvbW1vbi9hcm0vZnBfYXJtNjQuYwoKLS0gCjIuMTcu
MQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1pbmlv
cy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0
dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Tue Apr 07 07:14:16 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 07 Apr 2020 07: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 1jLiR6-0004le-2R; Tue, 07 Apr 2020 07:14:16 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=hwa8=5X=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1jLiR4-0004lR-Ou
 for minios-devel@lists.xenproject.org; Tue, 07 Apr 2020 07:14:14 +0000
X-Inumbo-ID: 62bac078-789f-11ea-b4f4-bc764e2007e4
Received: from foss.arm.com (unknown [217.140.110.172])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTP
 id 62bac078-789f-11ea-b4f4-bc764e2007e4;
 Tue, 07 Apr 2020 07:14:14 +0000 (UTC)
Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14])
 by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id B45EA31B;
 Tue,  7 Apr 2020 00:14:13 -0700 (PDT)
Received: from localhost.localdomain (entos-thunderx2-02.shanghai.arm.com
 [10.169.138.57])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 173453F68F;
 Tue,  7 Apr 2020 00:18:22 -0700 (PDT)
From: Jia He <justin.he@arm.com>
To: minios-devel@lists.xenproject.org,
	Sharan.Santhanam@neclab.eu
Date: Tue,  7 Apr 2020 15:13:44 +0800
Message-Id: <20200407071349.112115-3-justin.he@arm.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20200407071349.112115-1-justin.he@arm.com>
References: <20200407071349.112115-1-justin.he@arm.com>
Subject: [Minios-devel] [UNIKRAFT PATCH v4 2/7] build: Link libgcc at the
 end of the link options list
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>, Kaly Xin <Kaly.Xin@arm.com>,
 Simon Kuenzer <simon.kuenzer@neclab.eu>, nd@arm.com,
 Jia He <justin.he@arm.com>
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>

VG8gdXNlIG5ld2xpYiBvbiBhcm02NCBwbGF0IGt2bSwgbGliZ2NjIHNob3VsZCBiZSBsaW5rZWQg
YXQgdGhlIGVuZCBvZgp0aGUgb3B0aW9ucyBsaXN0LCBvdGhlcndpc2UgaXQgd2lsbCBiZSBpZ25v
cmVkIGR1ZSB0byAtc3RkbGliLgoKV2l0aG91dCB0aGlzIHBhdGNoLCB0aGVyZSB3aWxsIGJlIGEg
bGlua2luZyBlcnJvciBvbiBhcm0ga3ZtIHBsYXQ6CnN5c2xvZy5jOigudGV4dCsweDdkNWNjKTog
dW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgX19mbG9hdHNpdGYnCnN5c2xvZy5jOigudGV4dCsweDdk
NWNjKTogcmVsb2NhdGlvbiB0cnVuY2F0ZWQgdG8gZml0OiBSX0FBUkNINjRfQ0FMTDI2IGFnYWlu
c3QgdW5kZWZpbmVkIHN5bWJvbCBgX19mbG9hdHNpdGYnCi9yb290L2hqL1VLL3VuaWtyYWZ0X3Vw
c3RyZWFtL2FwcHMvaGVsbG93b3JsZC9idWlsZC9oZWxsb3dvcmxkX2t2bS1hcm02NC5vOiBJbiBm
dW5jdGlvbiBgX19pZWVlNzU0X2h5cG90bCc6CnN5c2xvZy5jOigudGV4dCsweDk5NDM0KTogdW5k
ZWZpbmVkIHJlZmVyZW5jZSB0byBgX19tdWx0ZjMnCnN5c2xvZy5jOigudGV4dCsweDk5NDM0KTog
cmVsb2NhdGlvbiB0cnVuY2F0ZWQgdG8gZml0OiBSX0FBUkNINjRfQ0FMTDI2IGFnYWluc3QgdW5k
ZWZpbmVkIHN5bWJvbCBgX19tdWx0ZjMnCnN5c2xvZy5jOigudGV4dCsweDk5NDQ0KTogdW5kZWZp
bmVkIHJlZmVyZW5jZSB0byBgX19tdWx0ZjMnCnN5c2xvZy5jOigudGV4dCsweDk5NDQ0KTogYWRk
aXRpb25hbCByZWxvY2F0aW9uIG92ZXJmbG93cyBvbWl0dGVkIGZyb20gdGhlIG91dHB1dApzeXNs
b2cuYzooLnRleHQrMHg5OTQ1MCk6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYF9fYWRkdGYzJwov
cm9vdC9oai9VSy91bmlrcmFmdF91cHN0cmVhbS9hcHBzL2hlbGxvd29ybGQvYnVpbGQvaGVsbG93
b3JsZF9rdm0tYXJtNjQubzogSW4gZnVuY3Rpb24gYHNxcnRsJzoKc3lzbG9nLmM6KC50ZXh0KzB4
YjEyYzApOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBfX3RydW5jdGZkZjInCnN5c2xvZy5jOigu
dGV4dCsweGIxMmM4KTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgX19leHRlbmRkZnRmMicKCkFi
b3ZlIHVuZGVmaW5lZCBzeW1ib2xzIGFyZSBhdCBsaWJnY2MuYQoKU2lnbmVkLW9mZi1ieTogSmlh
IEhlIDxqdXN0aW4uaGVAYXJtLmNvbT4KLS0tCiBwbGF0L2t2bS9MaW5rZXIudWsgfCAyICsrCiAx
IGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvcGxhdC9rdm0vTGlu
a2VyLnVrIGIvcGxhdC9rdm0vTGlua2VyLnVrCmluZGV4IDVlNDIxOTMuLjY1YTVmOGUgMTAwNjQ0
Ci0tLSBhL3BsYXQva3ZtL0xpbmtlci51aworKysgYi9wbGF0L2t2bS9MaW5rZXIudWsKQEAgLTIs
NiArMiw3IEBAIGlmZXEgKHg4Nl82NCwkKENPTkZJR19VS19BUkNIKSkKIEtWTV9MREZMQUdTLXkg
Kz0gLVdsLC1tLGVsZl94ODZfNjQKIGVsc2UgaWZlcSAoYXJtNjQsJChDT05GSUdfVUtfQVJDSCkp
CiBLVk1fTERGTEFHUy15CSArPSAtV2wsLW0sYWFyY2g2NGVsZgorS1ZNX0xJTktfTElCR0NDX0ZM
QUcJOj0gLWxnY2MKIGVuZGlmCiAKIApAQCAtMjYsNiArMjcsNyBAQCAkKEtWTV9ERUJVR19JTUFH
RSk6ICQoS1ZNX0FMSUJTKSAkKEtWTV9BTElCUy15KSAkKEtWTV9PTElCUykgJChLVk1fT0xJQlMt
eSkgXAogCQkJLVdsJChjb21tYSktLXN0YXJ0LWdyb3VwIFwKIAkJCSQoS1ZNX0FMSUJTKSAkKEtW
TV9BTElCUy15KSBcCiAJCQkkKFVLX0FMSUJTKSAkKFVLX0FMSUJTLXkpIFwKKwkJCSQoS1ZNX0xJ
TktfTElCR0NDX0ZMQUcpIFwKIAkJCS1XbCQoY29tbWEpLS1lbmQtZ3JvdXAgXAogCQkJLW8gJChL
Vk1fSU1BR0UpLmxkLm8pCiAJJChjYWxsIGJ1aWxkX2NtZCxPQkpDT1BZLCwkKEtWTV9JTUFHRSku
byxcCi0tIAoyLjE3LjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5w
cm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8v
bWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Tue Apr 07 07:14:16 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 07 Apr 2020 07: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 1jLiR6-0004lk-48; Tue, 07 Apr 2020 07:14: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=hwa8=5X=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1jLiR5-0004lX-0H
 for minios-devel@lists.xenproject.org; Tue, 07 Apr 2020 07:14:15 +0000
X-Inumbo-ID: 6110202e-789f-11ea-8076-12813bfff9fa
Received: from foss.arm.com (unknown [217.140.110.172])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTP
 id 6110202e-789f-11ea-8076-12813bfff9fa;
 Tue, 07 Apr 2020 07:14:11 +0000 (UTC)
Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14])
 by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id E1DBA30E;
 Tue,  7 Apr 2020 00:14:10 -0700 (PDT)
Received: from localhost.localdomain (entos-thunderx2-02.shanghai.arm.com
 [10.169.138.57])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 37F9B3F68F;
 Tue,  7 Apr 2020 00:18:19 -0700 (PDT)
From: Jia He <justin.he@arm.com>
To: minios-devel@lists.xenproject.org,
	Sharan.Santhanam@neclab.eu
Date: Tue,  7 Apr 2020 15:13:43 +0800
Message-Id: <20200407071349.112115-2-justin.he@arm.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20200407071349.112115-1-justin.he@arm.com>
References: <20200407071349.112115-1-justin.he@arm.com>
Subject: [Minios-devel] [UNIKRAFT PATCH v4 1/7] plat: build: Add a config
 option to enable fp on 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>, Kaly Xin <Kaly.Xin@arm.com>,
 Simon Kuenzer <simon.kuenzer@neclab.eu>, nd@arm.com,
 Jia He <justin.he@arm.com>
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>

VGhpcyBjb25maWcgIENPTkZJR19GUFNJTUQgaXMgdG8gZW5hYmxlIHRoZSBzdXBwb3J0IGZvciBh
cm02NCBmcCBmZWF0dXJlLgpGcCBpcyBmb3IgYXBwbGljYXRpb24gb25seSwgbmV2ZXIgZm9yIFVu
a3JhZnQga2VybmVsIGl0c2VsZi4KClRoaXMgY29uZmlnIGlzICduJyBieSBkZWZhdWx0IHNpbmNl
IHRoZXJlIGlzIHNvbWUgb3ZlcmhlYWQgZHVyaW5nIGNvbnRleHQKc3dpdGNoLgoKU2lnbmVkLW9m
Zi1ieTogSmlhIEhlIDxqdXN0aW4uaGVAYXJtLmNvbT4KLS0tCiBwbGF0L0NvbmZpZy51ayB8IDcg
KysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL3Bs
YXQvQ29uZmlnLnVrIGIvcGxhdC9Db25maWcudWsKaW5kZXggMGViNWExMC4uNzZhM2YzMSAxMDA2
NDQKLS0tIGEvcGxhdC9Db25maWcudWsKKysrIGIvcGxhdC9Db25maWcudWsKQEAgLTIxLDMgKzIx
LDEwIEBAIGNvbmZpZyBIWgogCWhlbHAKIAkJQ29uZmlndXJlIHRoZSB0aW1lciBpbnRlcnJ1cHQg
ZnJlcXVlbmN5LgogCQlPbmx5IGNoYW5nZSB0aGlzIGlmIHlvdSBrbm93IHdoYXQgeW91J3JlIGRv
aW5nLgorCitjb25maWcgRlBTSU1ECisJYm9vbCAiZmxvYXRpbmcgcG9pbnQgJiBzaW1kIHN1cHBv
cnQgaW4gYXBwbGljYXRpb24iCisJZGVmYXVsdCBuCisJZGVwZW5kcyBvbiBBUkNIX0FSTV82NAor
CWhlbHAKKwkJRW5hYmxlIHN1cHBvcnQgRlBVIHVzYWdlIGluIGFwcGxpY2F0aW9uCi0tIAoyLjE3
LjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5p
b3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpo
dHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Tue Apr 07 07:14:20 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 07 Apr 2020 07:14: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 1jLiRA-0004mx-5a; Tue, 07 Apr 2020 07:14:20 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=hwa8=5X=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1jLiR9-0004mg-Gj
 for minios-devel@lists.xenproject.org; Tue, 07 Apr 2020 07:14:19 +0000
X-Inumbo-ID: 64653f3e-789f-11ea-83d8-bc764e2007e4
Received: from foss.arm.com (unknown [217.140.110.172])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTP
 id 64653f3e-789f-11ea-83d8-bc764e2007e4;
 Tue, 07 Apr 2020 07:14:16 +0000 (UTC)
Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14])
 by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 9909B30E;
 Tue,  7 Apr 2020 00:14:16 -0700 (PDT)
Received: from localhost.localdomain (entos-thunderx2-02.shanghai.arm.com
 [10.169.138.57])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id D6F0A3F68F;
 Tue,  7 Apr 2020 00:18:25 -0700 (PDT)
From: Jia He <justin.he@arm.com>
To: minios-devel@lists.xenproject.org,
	Sharan.Santhanam@neclab.eu
Date: Tue,  7 Apr 2020 15:13:45 +0800
Message-Id: <20200407071349.112115-4-justin.he@arm.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20200407071349.112115-1-justin.he@arm.com>
References: <20200407071349.112115-1-justin.he@arm.com>
Subject: [Minios-devel] [UNIKRAFT PATCH v4 3/7] plat/kvm: arm64: Enable the
 fp/simd at the starting point
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>, Kaly Xin <Kaly.Xin@arm.com>,
 Simon Kuenzer <simon.kuenzer@neclab.eu>, nd@arm.com,
 Jia He <justin.he@arm.com>
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>

V3JpdGUgdGhlIHN5cyByZWcgdG8gZW5hYmxlIHRoZSBmcC9zaW1kIGZlYXR1cmUsIG90aGVyd2lz
ZSBpdCB3aWxsCmNhdXNlIGZsb2F0aW5nIHBvaW50L3NpbWQgZXhjZXB0aW9uIHdoZW4gdG91Y2hp
bmcgcTAtcTMxLgoKU2lnbmVkLW9mZi1ieTogSmlhIEhlIDxqdXN0aW4uaGVAYXJtLmNvbT4KLS0t
CiBwbGF0L2t2bS9hcm0vZW50cnk2NC5TIHwgOCArKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDgg
aW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL3BsYXQva3ZtL2FybS9lbnRyeTY0LlMgYi9wbGF0
L2t2bS9hcm0vZW50cnk2NC5TCmluZGV4IDM1OWEzMTAuLmM0ZGUzMzQgMTAwNjQ0Ci0tLSBhL3Bs
YXQva3ZtL2FybS9lbnRyeTY0LlMKKysrIGIvcGxhdC9rdm0vYXJtL2VudHJ5NjQuUwpAQCAtMzYs
NiArMzYsNyBAQAogI2luY2x1ZGUgPGt2bS1hcm0vbW0uaD4KICNpbmNsdWRlIDxhcm0vY3B1X2Rl
ZnMuaD4KICNpbmNsdWRlIDx1ay9wbGF0L2NvbW1vbi9zZWN0aW9ucy5oPgorI2luY2x1ZGUgPHVr
L2NvbmZpZy5oPgogCiAuZ2xvYmFsIHBhZ2VfdGFibGVfc2l6ZQogLmRhdGEKQEAgLTQ5LDYgKzUw
LDEzIEBAIHBhZ2VfdGFibGVfc2l6ZToKIAogLnRleHQKIEVOVFJZKF9saWJrdm1wbGF0X2VudHJ5
KQorI2lmZGVmIENPTkZJR19GUFNJTUQKKwkvKiBFbmFibGUgZnAvc2ltZCBzdXBwb3J0ICovCisJ
bGRyICAgICAgICB4MCwgPSgzIDw8IDIwKQorCW1zciAgICAgICAgY3BhY3JfZWwxLCB4MAorCWlz
YgorI2VuZGlmCisKIAkvKiBDYWxjdWxhdGUgdGhlIGltYWdlIHNpemUgKi8KIAlsZHIgeDI1LCA9
X2R0YgogCWxkciB4MjYsID1fZW5kCi0tIAoyLjE3LjEKCgpfX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlv
cy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3Jn
L21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Tue Apr 07 07:14:25 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 07 Apr 2020 07:14: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 1jLiRF-0004oa-7W; Tue, 07 Apr 2020 07:14: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=hwa8=5X=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1jLiRD-0004oH-Nd
 for minios-devel@lists.xenproject.org; Tue, 07 Apr 2020 07:14:23 +0000
X-Inumbo-ID: 67eb439c-789f-11ea-8076-12813bfff9fa
Received: from foss.arm.com (unknown [217.140.110.172])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTP
 id 67eb439c-789f-11ea-8076-12813bfff9fa;
 Tue, 07 Apr 2020 07:14:23 +0000 (UTC)
Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14])
 by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 8045131B;
 Tue,  7 Apr 2020 00:14:22 -0700 (PDT)
Received: from localhost.localdomain (entos-thunderx2-02.shanghai.arm.com
 [10.169.138.57])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id D408F3F68F;
 Tue,  7 Apr 2020 00:18:31 -0700 (PDT)
From: Jia He <justin.he@arm.com>
To: minios-devel@lists.xenproject.org,
	Sharan.Santhanam@neclab.eu
Date: Tue,  7 Apr 2020 15:13:47 +0800
Message-Id: <20200407071349.112115-6-justin.he@arm.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20200407071349.112115-1-justin.he@arm.com>
References: <20200407071349.112115-1-justin.he@arm.com>
Subject: [Minios-devel] [UNIKRAFT PATCH v4 5/7] arch/arm64: Don't pass
 -mgeneral-regs-only when CONFIG_FPSIMD is y
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>, Kaly Xin <Kaly.Xin@arm.com>,
 Simon Kuenzer <simon.kuenzer@neclab.eu>, nd@arm.com,
 Jia He <justin.he@arm.com>
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>

U3VwcG9ydCBDT05GSUdfRlBTSU1EIGluIFVuaWtyYWZ0IGFwcCB3aWxsIHRha2Ugc29tZSBvdmVy
aGVhZCBkdXJpbmcKY29udGV4dCBzd2l0Y2guIEhlbmNlIHN0aWxsIHVzZSAtbWdlbmVyYWwtcmVn
cy1vbmx5IHdoZW4KQ09ORklHX0ZQU0lNRCBpcyAnbicKClNpZ25lZC1vZmYtYnk6IEppYSBIZSA8
anVzdGluLmhlQGFybS5jb20+ClJldmlld2VkLWJ5OiBTaGFyYW4gU2FudGhhbmFtIDxzaGFyYW4u
c2FudGhhbmFtQG5lY2xhYi5ldT4KLS0tCiBhcmNoL2FybS9hcm02NC9NYWtlZmlsZS51ayB8IDUg
KysrKysKIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9hcmNo
L2FybS9hcm02NC9NYWtlZmlsZS51ayBiL2FyY2gvYXJtL2FybTY0L01ha2VmaWxlLnVrCmluZGV4
IDc3ZTUyMDQuLmE5MDMwNWEgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL2FybTY0L01ha2VmaWxlLnVr
CisrKyBiL2FyY2gvYXJtL2FybTY0L01ha2VmaWxlLnVrCkBAIC0zLDcgKzMsMTIgQEAKICMgd2Ug
c2hvdWxkIG5vdCBlbmFibGUgdGhlIEZQICYgU0lNRCBhY2Nlc3MgZm9yIGtlcm5lbC4gQXMgR0ND
IHdpbGwKICMgdGhlIEZQICYgU0lNRCByZWdpc3RlcnMgdG8gcGFzcyBwYXJhbWV0ZXJzLCB3ZSB1
c2UgLW1nZW5lcmFsLXJlZ3Mtb25seQogIyBmbGFnIHRvIGZvcmNlIEdDQyB0byB1c2UgZ2VuZXJp
YyByZWdpc3RlcnMKK2lmZXEgKCQoQ09ORklHX0ZQU0lNRCkseSkKK0FSQ0hGTEFHUyAgICAgKz0g
LURfX0FSTV82NF9fCitlbHNlCiBBUkNIRkxBR1MgICAgICs9IC1EX19BUk1fNjRfXyAtbWdlbmVy
YWwtcmVncy1vbmx5CitlbmRpZgorCiBJU1JfQVJDSEZMQUdTICs9IC1EX19BUk1fNjRfXyAtbWdl
bmVyYWwtcmVncy1vbmx5CiAKICMgRGlzYWJsZSBGUFUgZm9yIHRyYXAvZXhjZXB0aW9uL2ludGVy
cnVwdCBoYW5kbGVycwotLSAKMi4xNy4xCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX18KTWluaW9zLWRldmVsIG1haWxpbmcgbGlzdApNaW5pb3MtZGV2ZWxA
bGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFu
L2xpc3RpbmZvL21pbmlvcy1kZXZlbA==

From minios-devel-bounces@lists.xenproject.org Tue Apr 07 07:14:25 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 07 Apr 2020 07:14: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 1jLiRF-0004og-98; Tue, 07 Apr 2020 07:14:25 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=hwa8=5X=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1jLiRE-0004oR-GS
 for minios-devel@lists.xenproject.org; Tue, 07 Apr 2020 07:14:24 +0000
X-Inumbo-ID: 663cffc2-789f-11ea-b4f4-bc764e2007e4
Received: from foss.arm.com (unknown [217.140.110.172])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTP
 id 663cffc2-789f-11ea-b4f4-bc764e2007e4;
 Tue, 07 Apr 2020 07:14:19 +0000 (UTC)
Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14])
 by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 9B59E30E;
 Tue,  7 Apr 2020 00:14:19 -0700 (PDT)
Received: from localhost.localdomain (entos-thunderx2-02.shanghai.arm.com
 [10.169.138.57])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id D655C3F68F;
 Tue,  7 Apr 2020 00:18:28 -0700 (PDT)
From: Jia He <justin.he@arm.com>
To: minios-devel@lists.xenproject.org,
	Sharan.Santhanam@neclab.eu
Date: Tue,  7 Apr 2020 15:13:46 +0800
Message-Id: <20200407071349.112115-5-justin.he@arm.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20200407071349.112115-1-justin.he@arm.com>
References: <20200407071349.112115-1-justin.he@arm.com>
Subject: [Minios-devel] [UNIKRAFT PATCH v4 4/7] plat/arm: Support fp/simd
 save/restore during context switch
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>, Kaly Xin <Kaly.Xin@arm.com>,
 Simon Kuenzer <simon.kuenzer@neclab.eu>, nd@arm.com,
 Jia He <justin.he@arm.com>
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>

RmxvYXRpbmcgcG9pbnQgZmVhdHVyZSBpcyB1c2VmdWwgZm9yIHNvbWUgYXBwbGljYXRpb25zLiBX
ZSBzaG91bGQKc2F2ZS9yZXN0b3JlIGZwIHJlZ2lzdGVycyBkdXJpbmcgY29udGV4dCBzd2l0Y2gu
CgpTaWduZWQtb2ZmLWJ5OiBKaWEgSGUgPGp1c3Rpbi5oZUBhcm0uY29tPgotLS0KIHBsYXQvY29t
bW9uL2FybS9mcF9hcm02NC5jICAgICAgICAgIHwgODIgKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysKIHBsYXQvY29tbW9uL2FybS90aHJlYWRfc3RhcnQ2NC5TICAgIHwgIDEgKwogcGxhdC9j
b21tb24vaW5jbHVkZS9hcm0vYXJtNjQvY3B1LmggfCA0NiArKysrKysrKysrKysrKystCiBwbGF0
L2t2bS9NYWtlZmlsZS51ayAgICAgICAgICAgICAgICB8ICAzICstCiA0IGZpbGVzIGNoYW5nZWQs
IDEyOSBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHBs
YXQvY29tbW9uL2FybS9mcF9hcm02NC5jCgpkaWZmIC0tZ2l0IGEvcGxhdC9jb21tb24vYXJtL2Zw
X2FybTY0LmMgYi9wbGF0L2NvbW1vbi9hcm0vZnBfYXJtNjQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5kNjI0MDYzCi0tLSAvZGV2L251bGwKKysrIGIvcGxhdC9jb21tb24v
YXJtL2ZwX2FybTY0LmMKQEAgLTAsMCArMSw4MiBAQAorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZp
ZXI6IElTQyAqLworLyoKKyAqIEF1dGhvcnM6IEppYSBIZSA8anVzdGluLmhlQGFybS5jb20+Cisg
KgorICogQ29weXJpZ2h0IChjKSAyMDIwIEFybSBMdGQuCisgKgorICogUGVybWlzc2lvbiB0byB1
c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZQorICogZm9y
IGFueSBwdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQsIHByb3Zp
ZGVkCisgKiB0aGF0IHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Np
b24gbm90aWNlIGFwcGVhcgorICogaW4gYWxsIGNvcGllcy4KKyAqCisgKiBUSEUgU09GVFdBUkUg
SVMgUFJPVklERUQgIkFTIElTIiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMCisgKiBXQVJS
QU5USUVTIFdJVEggUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUy4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFCisgKiBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgRElSRUNU
LCBJTkRJUkVDVCwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBX
SEFUU09FVkVSIFJFU1VMVElORyBGUk9NIExPU1MKKyAqIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRT
LCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwKKyAqIE5FR0xJR0VOQ0UgT1IgT1RI
RVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRiBPUiBJTgorICogQ09OTkVDVElPTiBX
SVRIIFRIRSBVU0UgT1IgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS4KKyAqLworI2luY2x1
ZGUgPGt2bS9jb25maWcuaD4KKyNpbmNsdWRlIDx1ay9wbGF0L2NvbW1vbi9jcHUuaD4KKworI2lm
ZGVmIENPTkZJR19GUFNJTUQKK3ZvaWQgZnBzaW1kX3NhdmVfc3RhdGUodWludHB0cl90IHB0cikK
K3sKKwlfX3UzMiBmcGNyLCBmcHNyOworCisJX19hc21fXyBfX3ZvbGF0aWxlX18oCisJCSJtcnMJ
JTAsIGZwY3JcbiIKKwkJIm1ycwklMSwgZnBzclxuIgorCQkic3RwCXEwLCAgcTEsICBbJTIsICMx
NiAqICAwXVxuIgorCQkic3RwCXEyLCAgcTMsICBbJTIsICMxNiAqICAyXVxuIgorCQkic3RwCXE0
LCAgcTUsICBbJTIsICMxNiAqICA0XVxuIgorCQkic3RwCXE2LCAgcTcsICBbJTIsICMxNiAqICA2
XVxuIgorCQkic3RwCXE4LCAgcTksICBbJTIsICMxNiAqICA4XVxuIgorCQkic3RwCXExMCwgcTEx
LCBbJTIsICMxNiAqIDEwXVxuIgorCQkic3RwCXExMiwgcTEzLCBbJTIsICMxNiAqIDEyXVxuIgor
CQkic3RwCXExNCwgcTE1LCBbJTIsICMxNiAqIDE0XVxuIgorCQkic3RwCXExNiwgcTE3LCBbJTIs
ICMxNiAqIDE2XVxuIgorCQkic3RwCXExOCwgcTE5LCBbJTIsICMxNiAqIDE4XVxuIgorCQkic3Rw
CXEyMCwgcTIxLCBbJTIsICMxNiAqIDIwXVxuIgorCQkic3RwCXEyMiwgcTIzLCBbJTIsICMxNiAq
IDIyXVxuIgorCQkic3RwCXEyNCwgcTI1LCBbJTIsICMxNiAqIDI0XVxuIgorCQkic3RwCXEyNiwg
cTI3LCBbJTIsICMxNiAqIDI2XVxuIgorCQkic3RwCXEyOCwgcTI5LCBbJTIsICMxNiAqIDI4XVxu
IgorCQkic3RwCXEzMCwgcTMxLCBbJTIsICMxNiAqIDMwXVxuIgorCQk6ICI9JnIiKGZwY3IpLCAi
PSZyIihmcHNyKSA6ICJyIihwdHIpKTsKKworCSgoc3RydWN0IGZwc2ltZF9zdGF0ZSAqKXB0cikt
PmZwY3IgPSBmcGNyOworCSgoc3RydWN0IGZwc2ltZF9zdGF0ZSAqKXB0ciktPmZwc3IgPSBmcHNy
OworfQorCit2b2lkIGZwc2ltZF9yZXN0b3JlX3N0YXRlKHVpbnRwdHJfdCBwdHIpCit7CisJX191
MzIgZnBjciwgZnBzcjsKKworCWZwY3IgPSAoKHN0cnVjdCBmcHNpbWRfc3RhdGUgKilwdHIpLT5m
cGNyOworCWZwc3IgPSAoKHN0cnVjdCBmcHNpbWRfc3RhdGUgKilwdHIpLT5mcHNyOworCisJX19h
c21fXyBfX3ZvbGF0aWxlX18oCisJCSJsZHAJcTAsICBxMSwgIFslMiwgIzE2ICogIDBdXG4iCisJ
CSJsZHAJcTIsICBxMywgIFslMiwgIzE2ICogIDJdXG4iCisJCSJsZHAJcTQsICBxNSwgIFslMiwg
IzE2ICogIDRdXG4iCisJCSJsZHAJcTYsICBxNywgIFslMiwgIzE2ICogIDZdXG4iCisJCSJsZHAJ
cTgsICBxOSwgIFslMiwgIzE2ICogIDhdXG4iCisJCSJsZHAJcTEwLCBxMTEsIFslMiwgIzE2ICog
MTBdXG4iCisJCSJsZHAJcTEyLCBxMTMsIFslMiwgIzE2ICogMTJdXG4iCisJCSJsZHAJcTE0LCBx
MTUsIFslMiwgIzE2ICogMTRdXG4iCisJCSJsZHAJcTE2LCBxMTcsIFslMiwgIzE2ICogMTZdXG4i
CisJCSJsZHAJcTE4LCBxMTksIFslMiwgIzE2ICogMThdXG4iCisJCSJsZHAJcTIwLCBxMjEsIFsl
MiwgIzE2ICogMjBdXG4iCisJCSJsZHAJcTIyLCBxMjMsIFslMiwgIzE2ICogMjJdXG4iCisJCSJs
ZHAJcTI0LCBxMjUsIFslMiwgIzE2ICogMjRdXG4iCisJCSJsZHAJcTI2LCBxMjcsIFslMiwgIzE2
ICogMjZdXG4iCisJCSJsZHAJcTI4LCBxMjksIFslMiwgIzE2ICogMjhdXG4iCisJCSJsZHAJcTMw
LCBxMzEsIFslMiwgIzE2ICogMzBdXG4iCisJCSJtc3IJZnBjciwgJTBcbiIKKwkJIm1zcglmcHNy
LCAlMVxuIgorCQk6IDogInIiKGZwY3IpLCAiciIoZnBzciksICJyIihwdHIpKTsKK30KKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvcGxhdC9jb21tb24vYXJtL3RocmVhZF9zdGFydDY0LlMgYi9wbGF0L2Nv
bW1vbi9hcm0vdGhyZWFkX3N0YXJ0NjQuUwppbmRleCA5YTgwZjYyLi5kNzlmZDE5IDEwMDY0NAot
LS0gYS9wbGF0L2NvbW1vbi9hcm0vdGhyZWFkX3N0YXJ0NjQuUworKysgYi9wbGF0L2NvbW1vbi9h
cm0vdGhyZWFkX3N0YXJ0NjQuUwpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgPHVrL3BsYXQv
Y29tbW9uL3N3X2N0eC5oPgogI2luY2x1ZGUgPHVrL2FyY2gvbGNwdS5oPgogI2luY2x1ZGUgPHVr
L2FzbS5oPgorI2luY2x1ZGUgPHVrL2NvbmZpZy5oPgogCiAvKgogICogVGhyZWFkIHN0YWNrIG1l
bW9yeSBsYXlvdXQ6CmRpZmYgLS1naXQgYS9wbGF0L2NvbW1vbi9pbmNsdWRlL2FybS9hcm02NC9j
cHUuaCBiL3BsYXQvY29tbW9uL2luY2x1ZGUvYXJtL2FybTY0L2NwdS5oCmluZGV4IDEyMjcyN2Eu
LjkzYWQxM2IgMTAwNjQ0Ci0tLSBhL3BsYXQvY29tbW9uL2luY2x1ZGUvYXJtL2FybTY0L2NwdS5o
CisrKyBiL3BsYXQvY29tbW9uL2luY2x1ZGUvYXJtL2FybTY0L2NwdS5oCkBAIC0xMTYsNiArMTE2
LDQ3IEBAIHZvaWQgaGFsdCh2b2lkKTsKIHZvaWQgcmVzZXQodm9pZCk7CiB2b2lkIHN5c3RlbV9v
ZmYodm9pZCk7CiAKKyNpZmRlZiBDT05GSUdfRlBTSU1ECitzdHJ1Y3QgZnBzaW1kX3N0YXRlIHsK
KwlfX3U2NAkJcmVnc1szMiAqIDJdOworCV9fdTMyCQlmcHNyOworCV9fdTMyCQlmcGNyOworfTsK
KworZXh0ZXJuIHZvaWQgZnBzaW1kX3NhdmVfc3RhdGUodWludHB0cl90IHB0cik7CitleHRlcm4g
dm9pZCBmcHNpbWRfcmVzdG9yZV9zdGF0ZSh1aW50cHRyX3QgcHRyKTsKKworc3RhdGljIGlubGlu
ZSB2b2lkIHNhdmVfZXh0cmVncyhzdHJ1Y3Qgc3dfY3R4ICpjdHgpCit7CisJZnBzaW1kX3NhdmVf
c3RhdGUoY3R4LT5leHRyZWdzKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIHJlc3RvcmVfZXh0
cmVncyhzdHJ1Y3Qgc3dfY3R4ICpjdHgpCit7CisJZnBzaW1kX3Jlc3RvcmVfc3RhdGUoY3R4LT5l
eHRyZWdzKTsKK30KKworc3RhdGljIGlubGluZSBzdHJ1Y3Qgc3dfY3R4ICphcmNoX2FsbG9jX3N3
X2N0eChzdHJ1Y3QgdWtfYWxsb2MgKmFsbG9jYXRvcikKK3sKKwlzdHJ1Y3Qgc3dfY3R4ICpjdHg7
CisKKwljdHggPSAoc3RydWN0IHN3X2N0eCAqKXVrX21hbGxvYyhhbGxvY2F0b3IsCisJCQlzaXpl
b2Yoc3RydWN0IHN3X2N0eCkgKyBzaXplb2Yoc3RydWN0IGZwc2ltZF9zdGF0ZSkpOworCWlmIChj
dHgpCisJCWN0eC0+ZXh0cmVncyA9ICh1aW50cHRyX3QpKCh2b2lkICopY3R4ICsgc2l6ZW9mKHN0
cnVjdCBzd19jdHgpKTsKKworCXVrX3ByX2RlYnVnKCJBbGxvY2F0aW5nICVsdSArICVsdSBieXRl
cyBmb3Igc3cgY3R4IGF0ICVwLCBleHRyZWdzIGF0ICVwXG4iLAorCQkJc2l6ZW9mKHN0cnVjdCBz
d19jdHgpLCBzaXplb2Yoc3RydWN0IGZwc2ltZF9zdGF0ZSksCisJCQljdHgsICh2b2lkICopY3R4
LT5leHRyZWdzKTsKKworCXJldHVybiBjdHg7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBhcmNo
X2luaXRfZXh0cmVncyhzdHJ1Y3Qgc3dfY3R4ICpjdHggX191bnVzZWQpCit7Cit9CisKKyNlbHNl
IC8qICFDT05GSUdfRlBTSU1EICovCiBzdGF0aWMgaW5saW5lIHZvaWQgc2F2ZV9leHRyZWdzKHN0
cnVjdCBzd19jdHggKmN0eCBfX3VudXNlZCkKIHsKIH0KQEAgLTEyOCw5ICsxNjksOSBAQCBzdGF0
aWMgaW5saW5lIHN0cnVjdCBzd19jdHggKmFyY2hfYWxsb2Nfc3dfY3R4KHN0cnVjdCB1a19hbGxv
YyAqYWxsb2NhdG9yKQogewogCXN0cnVjdCBzd19jdHggKmN0eDsKIAotCWN0eCA9IHVrX21hbGxv
YyhhbGxvY2F0b3IsIHNpemVvZihzdHJ1Y3Qgc3dfY3R4KSk7CisJY3R4ID0gKHN0cnVjdCBzd19j
dHggKil1a19tYWxsb2MoYWxsb2NhdG9yLCBzaXplb2Yoc3RydWN0IHN3X2N0eCkpOwogCXVrX3By
X2RlYnVnKCJBbGxvY2F0aW5nICVsdSBieXRlcyBmb3Igc3cgY3R4IGF0ICVwXG4iLAotCQkgICBz
aXplb2Yoc3RydWN0IHN3X2N0eCksIGN0eCk7CisJCXNpemVvZihzdHJ1Y3Qgc3dfY3R4KSwgY3R4
KTsKIAogCXJldHVybiBjdHg7CiB9CkBAIC0xNDAsNCArMTgxLDUgQEAgc3RhdGljIGlubGluZSB2
b2lkIGFyY2hfaW5pdF9leHRyZWdzKHN0cnVjdCBzd19jdHggKmN0eCkKIAljdHgtPmV4dHJlZ3Mg
PSAodWludHB0cl90KWN0eCArIHNpemVvZihzdHJ1Y3Qgc3dfY3R4KTsKIH0KIAorI2VuZGlmIC8q
IENPTkZJR19GUFNJTUQgKi8KICNlbmRpZiAvKiBfX1BMQVRfQ09NTU9OX0FSTTY0X0NQVV9IX18g
Ki8KZGlmZiAtLWdpdCBhL3BsYXQva3ZtL01ha2VmaWxlLnVrIGIvcGxhdC9rdm0vTWFrZWZpbGUu
dWsKaW5kZXggYTZkNmY1ZS4uOTM1NGQ2NCAxMDA2NDQKLS0tIGEvcGxhdC9rdm0vTWFrZWZpbGUu
dWsKKysrIGIvcGxhdC9rdm0vTWFrZWZpbGUudWsKQEAgLTgyLDcgKzgyLDggQEAgTElCS1ZNUExB
VF9TUkNTLSQoQ09ORklHX0FSQ0hfQVJNXzY0KSArPSAkKFVLX1BMQVRfQ09NTU9OX0JBU0UpL2Fy
bS9jYWNoZTY0LlN8Y28KIExJQktWTVBMQVRfU1JDUy0kKENPTkZJR19BUkNIX0FSTV82NCkgKz0g
JChVS19QTEFUX0NPTU1PTl9CQVNFKS9hcm0vcHNjaV9hcm02NC5TfGNvbW1vbgogTElCS1ZNUExB
VF9TUkNTLSQoQ09ORklHX0FSQ0hfQVJNXzY0KSArPSAkKFVLX1BMQVRfQ09NTU9OX0JBU0UpL2Fy
bS90aW1lLmN8Y29tbW9uCiBMSUJLVk1QTEFUX1NSQ1MtJChDT05GSUdfQVJDSF9BUk1fNjQpICs9
ICQoVUtfUExBVF9DT01NT05fQkFTRSkvYXJtL2dlbmVyaWNfdGltZXIuY3xjb21tb24KLUxJQktW
TVBMQVRfU1JDUy0kKENPTkZJR19BUkNIX0FSTV82NCkgKz0gJChVS19QTEFUX0NPTU1PTl9CQVNF
KS9hcm0vdHJhcHMuY3xjb21tb24KK0xJQktWTVBMQVRfU1JDUy0kKENPTkZJR19BUkNIX0FSTV82
NCkgKz0gJChVS19QTEFUX0NPTU1PTl9CQVNFKS9hcm0vdHJhcHMuY3xpc3IKK0xJQktWTVBMQVRf
U1JDUy0kKENPTkZJR19GUFNJTUQpICAgICAgKz0gJChVS19QTEFUX0NPTU1PTl9CQVNFKS9hcm0v
ZnBfYXJtNjQuY3xpc3IKIGlmZXEgKCQoQ09ORklHX0hBVkVfU0NIRUQpLHkpCiBMSUJLVk1QTEFU
X1NSQ1MtJChDT05GSUdfQVJDSF9BUk1fNjQpICs9ICQoVUtfUExBVF9DT01NT05fQkFTRSkvYXJt
L3RocmVhZF9zdGFydDY0LlN8Y29tbW9uCiBMSUJLVk1QTEFUX1NSQ1MtJChDT05GSUdfQVJDSF9B
Uk1fNjQpICs9ICQoVUtfUExBVF9DT01NT05fQkFTRSkvdGhyZWFkLmN8Y29tbW9uCi0tIAoyLjE3
LjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNaW5p
b3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpo
dHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Tue Apr 07 07:14:31 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 07 Apr 2020 07:14: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 1jLiRL-0004qZ-Cs; Tue, 07 Apr 2020 07:14: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=hwa8=5X=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1jLiRK-0004qQ-IZ
 for minios-devel@lists.xenproject.org; Tue, 07 Apr 2020 07:14:30 +0000
X-Inumbo-ID: 6bb85eec-789f-11ea-8076-12813bfff9fa
Received: from foss.arm.com (unknown [217.140.110.172])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTP
 id 6bb85eec-789f-11ea-8076-12813bfff9fa;
 Tue, 07 Apr 2020 07:14:29 +0000 (UTC)
Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14])
 by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id E11D231B;
 Tue,  7 Apr 2020 00:14:27 -0700 (PDT)
Received: from localhost.localdomain (entos-thunderx2-02.shanghai.arm.com
 [10.169.138.57])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 5261D3F68F;
 Tue,  7 Apr 2020 00:18:37 -0700 (PDT)
From: Jia He <justin.he@arm.com>
To: minios-devel@lists.xenproject.org,
	Sharan.Santhanam@neclab.eu
Date: Tue,  7 Apr 2020 15:13:49 +0800
Message-Id: <20200407071349.112115-8-justin.he@arm.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20200407071349.112115-1-justin.he@arm.com>
References: <20200407071349.112115-1-justin.he@arm.com>
Subject: [Minios-devel] [UNIKRAFT PATCH v4 7/7] build: Add 'isr' variant for
 arm64 kvm plat source files called within irq context
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>, Kaly Xin <Kaly.Xin@arm.com>,
 Simon Kuenzer <simon.kuenzer@neclab.eu>, nd@arm.com,
 Jia He <justin.he@arm.com>
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>

J2lzcicgdmFyaWFudCBpcyB0byBiZSBjYWxsZWQgd2l0aGluIGludGVycnVwdCBzYWZlIGNvbnRl
eHQuIFR5cGljYWxseSwKdHJhcHMvZXhjZXB0aW9uL2NvbnRleHQtc3dpdGNoIG5lZWQgdG8gYmUg
YWRkZWQgdGhpcyB2YXJpYW50LgpPbiBhcm0sIC1tZ2VuZXJhbC1yZWdzLW9ubHkgaXMgcGFzc2Vk
IHRvIGZvcmJpZCB0aGUgY29tcGlsZXIgdG8gdXNlIGVuaGFuY2VkCkNQVSBmdW5jdGlvbnMgdGhh
dCBhcmUgbm90IHNhdmVkIHdpdGhpbiBpbnRlcnJ1cHQgY29udGV4dCAoZS5nLiwgZmxvYXRpbmcK
cG9pbnQgdW5pdHMsIHZlY3RvciB1bml0cykuCgpTaWduZWQtb2ZmLWJ5OiBKaWEgSGUgPGp1c3Rp
bi5oZUBhcm0uY29tPgpSZXZpZXdlZC1ieTogU2hhcmFuIFNhbnRoYW5hbSA8c2hhcmFuLnNhbnRo
YW5hbUBuZWNsYWIuZXU+Ci0tLQogcGxhdC9rdm0vTWFrZWZpbGUudWsgfCA4ICsrKystLS0tCiAx
IGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp
dCBhL3BsYXQva3ZtL01ha2VmaWxlLnVrIGIvcGxhdC9rdm0vTWFrZWZpbGUudWsKaW5kZXggOTM1
NGQ2NC4uOTQzMjFlMCAxMDA2NDQKLS0tIGEvcGxhdC9rdm0vTWFrZWZpbGUudWsKKysrIGIvcGxh
dC9rdm0vTWFrZWZpbGUudWsKQEAgLTg1LDE0ICs4NSwxNCBAQCBMSUJLVk1QTEFUX1NSQ1MtJChD
T05GSUdfQVJDSF9BUk1fNjQpICs9ICQoVUtfUExBVF9DT01NT05fQkFTRSkvYXJtL2dlbmVyaWNf
dGltZQogTElCS1ZNUExBVF9TUkNTLSQoQ09ORklHX0FSQ0hfQVJNXzY0KSArPSAkKFVLX1BMQVRf
Q09NTU9OX0JBU0UpL2FybS90cmFwcy5jfGlzcgogTElCS1ZNUExBVF9TUkNTLSQoQ09ORklHX0ZQ
U0lNRCkgICAgICArPSAkKFVLX1BMQVRfQ09NTU9OX0JBU0UpL2FybS9mcF9hcm02NC5jfGlzcgog
aWZlcSAoJChDT05GSUdfSEFWRV9TQ0hFRCkseSkKLUxJQktWTVBMQVRfU1JDUy0kKENPTkZJR19B
UkNIX0FSTV82NCkgKz0gJChVS19QTEFUX0NPTU1PTl9CQVNFKS9hcm0vdGhyZWFkX3N0YXJ0NjQu
U3xjb21tb24KK0xJQktWTVBMQVRfU1JDUy0kKENPTkZJR19BUkNIX0FSTV82NCkgKz0gJChVS19Q
TEFUX0NPTU1PTl9CQVNFKS9hcm0vdGhyZWFkX3N0YXJ0NjQuU3xpc3IKIExJQktWTVBMQVRfU1JD
Uy0kKENPTkZJR19BUkNIX0FSTV82NCkgKz0gJChVS19QTEFUX0NPTU1PTl9CQVNFKS90aHJlYWQu
Y3xjb21tb24KIExJQktWTVBMQVRfU1JDUy0kKENPTkZJR19BUkNIX0FSTV82NCkgKz0gJChVS19Q
TEFUX0NPTU1PTl9CQVNFKS9zd19jdHguY3xjb21tb24KIGVuZGlmCiBMSUJLVk1QTEFUX1NSQ1Mt
JChDT05GSUdfQVJDSF9BUk1fNjQpICs9ICQoTElCS1ZNUExBVF9CQVNFKS9hcm0vbWVtb3J5LmN8
YXJtCi1MSUJLVk1QTEFUX1NSQ1MtJChDT05GSUdfQVJDSF9BUk1fNjQpICs9ICQoTElCS1ZNUExB
VF9CQVNFKS9hcm0vZW50cnk2NC5TCi1MSUJLVk1QTEFUX1NSQ1MtJChDT05GSUdfQVJDSF9BUk1f
NjQpICs9ICQoTElCS1ZNUExBVF9CQVNFKS9hcm0vZXhjZXB0aW9ucy5TCi1MSUJLVk1QTEFUX1NS
Q1MtJChDT05GSUdfQVJDSF9BUk1fNjQpICs9ICQoTElCS1ZNUExBVF9CQVNFKS9hcm0vcGFnZXRh
YmxlNjQuUworTElCS1ZNUExBVF9TUkNTLSQoQ09ORklHX0FSQ0hfQVJNXzY0KSArPSAkKExJQktW
TVBMQVRfQkFTRSkvYXJtL2VudHJ5NjQuU3xpc3IKK0xJQktWTVBMQVRfU1JDUy0kKENPTkZJR19B
UkNIX0FSTV82NCkgKz0gJChMSUJLVk1QTEFUX0JBU0UpL2FybS9leGNlcHRpb25zLlN8aXNyCitM
SUJLVk1QTEFUX1NSQ1MtJChDT05GSUdfQVJDSF9BUk1fNjQpICs9ICQoTElCS1ZNUExBVF9CQVNF
KS9hcm0vcGFnZXRhYmxlNjQuU3xpc3IKIExJQktWTVBMQVRfU1JDUy0kKENPTkZJR19BUkNIX0FS
TV82NCkgKz0gJChMSUJLVk1QTEFUX0JBU0UpL2FybS9zZXR1cC5jCiBMSUJLVk1QTEFUX1NSQ1Mt
JChDT05GSUdfQVJDSF9BUk1fNjQpICs9ICQoTElCS1ZNUExBVF9CQVNFKS9hcm0vbGNwdS5jCiBM
SUJLVk1QTEFUX1NSQ1MtJChDT05GSUdfQVJDSF9BUk1fNjQpICs9ICQoTElCS1ZNUExBVF9CQVNF
KS9hcm0vaW50Y3RybC5jCi0tIAoyLjE3LjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fXwpNaW5pb3MtZGV2ZWwgbWFpbGluZyBsaXN0Ck1pbmlvcy1kZXZl
bEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxt
YW4vbGlzdGluZm8vbWluaW9zLWRldmVs

From minios-devel-bounces@lists.xenproject.org Tue Apr 07 07:14:35 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 07 Apr 2020 07:14: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 1jLiRP-0004ra-EW; Tue, 07 Apr 2020 07:14:35 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=hwa8=5X=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1jLiRO-0004rN-Gt
 for minios-devel@lists.xenproject.org; Tue, 07 Apr 2020 07:14:34 +0000
X-Inumbo-ID: 6978778e-789f-11ea-83d8-bc764e2007e4
Received: from foss.arm.com (unknown [217.140.110.172])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTP
 id 6978778e-789f-11ea-83d8-bc764e2007e4;
 Tue, 07 Apr 2020 07:14:25 +0000 (UTC)
Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14])
 by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 30B3A31B;
 Tue,  7 Apr 2020 00:14:25 -0700 (PDT)
Received: from localhost.localdomain (entos-thunderx2-02.shanghai.arm.com
 [10.169.138.57])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id A150C3F68F;
 Tue,  7 Apr 2020 00:18:34 -0700 (PDT)
From: Jia He <justin.he@arm.com>
To: minios-devel@lists.xenproject.org,
	Sharan.Santhanam@neclab.eu
Date: Tue,  7 Apr 2020 15:13:48 +0800
Message-Id: <20200407071349.112115-7-justin.he@arm.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20200407071349.112115-1-justin.he@arm.com>
References: <20200407071349.112115-1-justin.he@arm.com>
Subject: [Minios-devel] [UNIKRAFT PATCH v4 6/7] arch/arm64: Fix -mfpu=none
 when not supporting fpsimd
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>, Kaly Xin <Kaly.Xin@arm.com>,
 Simon Kuenzer <simon.kuenzer@neclab.eu>, nd@arm.com,
 Jia He <justin.he@arm.com>
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>

VGhlcmUgaXMgbm8gLW1mcHU9bm9uZSBjb21waWxhdGlvbiBmbGFnIGZvciBnY2Mgb24gYXJtLiBU
eXBpY2FsbHkgd2UKZG9uJ3QgZGlzYWJsZSBodyBzdXBwb3J0IGZvciBmcCwgbWVyZWx5IHVzaW5n
IC1tZ2VuZXJhbC1yZWdzLW9ubHkgdG8KY2hlY2sgaXQgZHVyaW5nIGNvbXBpbGF0aW9uLgoKU2ln
bmVkLW9mZi1ieTogSmlhIEhlIDxqdXN0aW4uaGVAYXJtLmNvbT4KUmV2aWV3ZWQtYnk6IFNoYXJh
biBTYW50aGFuYW0gPHNoYXJhbi5zYW50aGFuYW1AbmVjbGFiLmV1PgotLS0KIGFyY2gvYXJtL2Fy
bTY0L01ha2VmaWxlLnVrIHwgNCArLS0tCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyks
IDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vYXJtNjQvTWFrZWZpbGUudWsg
Yi9hcmNoL2FybS9hcm02NC9NYWtlZmlsZS51awppbmRleCBhOTAzMDVhLi5mNzcwYmQwIDEwMDY0
NAotLS0gYS9hcmNoL2FybS9hcm02NC9NYWtlZmlsZS51aworKysgYi9hcmNoL2FybS9hcm02NC9N
YWtlZmlsZS51awpAQCAtOSwxMCArOSw4IEBAIGVsc2UKIEFSQ0hGTEFHUyAgICAgKz0gLURfX0FS
TV82NF9fIC1tZ2VuZXJhbC1yZWdzLW9ubHkKIGVuZGlmCiAKLUlTUl9BUkNIRkxBR1MgKz0gLURf
X0FSTV82NF9fIC1tZ2VuZXJhbC1yZWdzLW9ubHkKLQogIyBEaXNhYmxlIEZQVSBmb3IgdHJhcC9l
eGNlcHRpb24vaW50ZXJydXB0IGhhbmRsZXJzCi1JU1JfQVJDSEZMQUdTICs9IC1tZnB1PW5vbmUK
K0lTUl9BUkNIRkxBR1MgKz0gLURfX0FSTV82NF9fIC1tZ2VuZXJhbC1yZWdzLW9ubHkKIAogQ0lO
Q0xVREVTICAgKz0gLUkkKENPTkZJR19VS19CQVNFKS9hcmNoL2FybS9hcm02NC9pbmNsdWRlCiBB
U0lOQ0xVREVTICArPSAtSSQoQ09ORklHX1VLX0JBU0UpL2FyY2gvYXJtL2FybTY0L2luY2x1ZGUK
LS0gCjIuMTcuMQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVsQGxpc3RzLnhlbnByb2pl
Y3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9taW5p
b3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Tue Apr 07 10:00:40 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 07 Apr 2020 10:00: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 1jLl25-0003oD-E2; Tue, 07 Apr 2020 10:00:37 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=QKkx=5X=credativ.de=dominic.brekau@srs-us1.protection.inumbo.net>)
 id 1jLl23-0003o6-8b
 for Minios-devel@lists.xenproject.org; Tue, 07 Apr 2020 10:00:35 +0000
X-Inumbo-ID: 9ec9be2c-78b6-11ea-b58d-bc764e2007e4
Received: from gauss.credativ.com (unknown [93.94.130.89])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 9ec9be2c-78b6-11ea-b58d-bc764e2007e4;
 Tue, 07 Apr 2020 10:00:33 +0000 (UTC)
Received: from gauss.credativ.com (localhost [127.0.0.1])
 by gauss.credativ.com (Postfix) with ESMTP id C6839A01C2;
 Tue,  7 Apr 2020 12:00:32 +0200 (CEST)
Received: from [10.10.10.47] (fw-front.credativ.com [62.154.226.94])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 (Authenticated sender: dbe@gauss.credativ.com)
 by gauss.credativ.com (Postfix) with ESMTPSA id A4DE0A0130
 for <Minios-devel@lists.xenproject.org>; Tue,  7 Apr 2020 12:00:32 +0200 (CEST)
To: Minios-devel@lists.xenproject.org
From: Dominic Brekau <dominic.brekau@credativ.de>
Autocrypt: addr=dominic.brekau@credativ.de; keydata=
 mQINBFnSNDoBEADbPKaoy7njwOuzcAa9wQiCP5Cr7pkO5drB5Go9ST4qh9IJUThjyHJa5/7e
 +/ZCpi3+e9htMpCmOIZXzIJh0kGdywg4glWIKBnAivVL6B6N8wWGs0Bz5NPRO8IX3Nax70H7
 TzEjaV/S9LLSjYN8xcxr03i6An8Fzs1ADmaLvJ25gSr3U7Do3YFzOWZ/ixLNQA/waHuc+oNq
 9w9+TYkq7QJ43iJTklchKfBv1gkXZpKMhjkOarwF7yG9epjhvN3B8RnThBNIX4reFFd1kObI
 5ypKmbVXJ4qw6W4fx6h98dfd1/iqqJF4rfRyxnWsy1R28cXZaMyFMr3jtkWsTuMejHE8lPT8
 gLAtLnU15ajMjTQi4XOscm2o5vOScm6k9E2nveSv0q6OQpilbK0c7ClK/MuY/eh+moyndcmh
 HMoV8a34vQSvqurnZyrIawDup6c6DHywV2roEEm8aJr3sfEQ+fNnl5iyKewph1GR640fPyw4
 pulJugffmQ4+yKXUEO6JFki/9uKcuT71Z0aS8i6NjBrMnqD28gjvYhXM87uJ9Vb8pXLWSTIZ
 UIAG7GWQ0xbm2+8dB8jjDDKR/t30DceD6SPHQ0RwbJMaEOWUG0LP7Dq+1MsG/MBR7viBq1Zf
 ASonrpMDFsRLpPZV8nRYLb8QC2C5UiM3iGO4/L+98QXZtmJ9ywARAQABtCtEb21pbmljIEJy
 ZWthdSA8ZG9taW5pYy5icmVrYXVAY3JlZGF0aXYuZGU+iQI9BBMBCAAnBQJZ0jQ6AhsjBQkJ
 ZgGABQsJCAcCBhUICQoLAgQWAgMBAh4BAheAAAoJEObqC6gXhpPoe0QQAKSju6pb356Fr3A5
 yNOM1R4D8am7Pq42Sm67LHCsbPkwGauuNxeRVAy/PcAq5H5p3gyBQ7VW9cyjF3AIKwfcUUE5
 c1/JoDOoVWeMH90RKnzhmGjSxEwsGYUEegj+FDGM46oYKOsEq8tXQJWbCppYjv/XJ1zcpj3Q
 EPKhsJzc3EeOrQhYQcT7s6GvEDS0tKuglse/xx4EyzQ0xxeGjLJ44sZcsQC+DRAvh61BLVg4
 NejYsPum5fsSbjTHzcy4w/b+wYyyDHvExjsO8ZSXe/G+cd1E6yeau/Uw6h1bZ+6oPzkIUsJ0
 +sCUi/62BoaRql+3iMyoT4/dmJqzRyWSg/z8VZFu/QptDOFnYZYAj122rCcRs5PNa9wFVqkC
 FGjmgtmB1BIvSZFnFn9hkRv9Il73HSQI02QiUkNzttifOyewloGbn60N/XL3PySbG75xQ/vZ
 WiJSIpnQPfq37f0rOgvld2plLFJAAJ8qaO4T0CaGZYpWKz8BJpJgkvONDCKKFSwLaJSNCqOm
 05U0C+dQkHxT1sw6DfG1HlSKbUAUpYtx7YQj0oRWtTeQq7kTHHP6fZnmcdT88AGBHOQ4WoA3
 NYMQlJVoDFMmXagYASWQ3Ww/l44wmx/oQnCYjBQkeccnAT2VFLYdFjEXR2c8r7mMnArUr0ik
 bnClfAZQK8ZwjZJQeKxPuQINBFnSNDoBEADHaELu0iupCAk56bhEoluGkcrtfrzJ1u557Bsm
 l7BuNc/OA0t52j3vT1LOUiX12rZYFYKphaqjGN1xLkLJs2UtgAj73Dj4eZAnybDJTqNMjZqe
 R6UhpNayqpT2EFSGMbXjomsexDynUTCc0STu2bAFyTzSTjJxO4J/sPB3zWLjVRrx4RYnA3bP
 0noWZ5MiHk99cCAKfSKyQGAJjUU33cBlDb1VE8q8D5eZpK2TmlF3PvvpJ+KVGZTenlF3dfvz
 eXuUB4qgpBFKtQxsrg70bMa7BlNgW+oQVk/OEIx5G/x0daKlOySZ6vB6NZ0V8upOBmyZkDyl
 tOtK4kvLBXJeVEXi4LeQdnPAwaZ8qzKDMfd9gXUQ9UkpEZmgo8E6x7kiedO3/1q6r3tqo945
 UpiisOQLsxM8H3kPsROBdk0hGx5pvIXsbuj/yGxTF+3GFsU4QPNRMaQ/vrzPL1YKmYqC5ttt
 tpG50gHWqYqbBctEl0v9qHV70xzKu8I1V1EnHiWmGY+dk0/KsHJEE39zBa4z5i7pKIqqGyQB
 Mo3x5gZBVRgq3Q2H6niLh6fhJOeUnpb+rEHyGvXPUYYqGaIMw3+y3YKqGKA3+fup8wEyA/Wo
 YUZMmOBUgrMqtzb1xcfM0k0WIoAOt8PXp288chWzz90biQYv/AmHsaY3OfNo7AdNQga+LQAR
 AQABiQIlBBgBCAAPBQJZ0jQ6AhsMBQkJZgGAAAoJEObqC6gXhpPom/oQAI5VqTLd4xpiI9S6
 DZ6VhuMrLXek+hofoFPLUS8KsAxkS93ARo0yD9mQoGERnlmVDQDoKSMfU12HWJ6BH7unlU4p
 vP4dchPcekTSX36bJ3NH0boPS/AqBRzI8L5/IPHi01dlFiCkeVjV/VwuVD7ugTfppVBZQZ+q
 MYYz4KIZseOBjGLT8mYYVAttNIu9QcxSu1w0IwlSLvKxJ4e51P0Tg5Hm1i+Ef3jU1H64aubc
 NugV1L3kXQmUaLASqVcSfhjYgRyKDyBrdNLVEC+uQC08di7/qf1xGp5sp+Vl/1Y78SBR51/0
 rKS/IdXBDINeBQDAPLNykCA2UtgNznIWVBwyjzFyyFtTwcZ38c4Avf8ZPhARc9ZfC9EvOsgj
 J5dQTLBvXuI+Au1HHlzmSvGpL4WMp+p9qY5JZmWMOvniQts7xKIuLmOfBrYQv7rfREm3xUMF
 bcWMipjw3TT8q1qhAec74wkn7WT95vPiegzvNbH5WxL+lx1dMFd2JFDmxeKfVkUAvJH1+mye
 CGri3jKeaw2bifAPg1tLxvnaySLyZJYfQUA1F0N5vSRtwoQhajfPR7UfVnHXLs4H3w7ENvfJ
 M8j0Q4uXn3j2w0z7GcHXOGhzrE+9Z09tBVWBvgi/fE9H0SUvTiWW65ryeAj1UwlS1XQ1plh+
 rRI/hThnx5yXGLSMtMoL
Message-ID: <7ec8b94d-f0c7-1ab4-d1cd-6d5069cc50d7@credativ.de>
Date: Tue, 7 Apr 2020 12:00:32 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101
 Thunderbird/68.6.0
MIME-Version: 1.0
Content-Language: en-US
Subject: [Minios-devel] Important: There will be no subject prefix anymore
 on this mailing list
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>

SGVsbG8gZXZlcnlvbmUgb24gbWluaW9zLWRldmVsCgpmb3Igbm90IGJyZWFraW5nIERLSU0gYW55
bW9yZSwgZnJvbSBub3cgb24gdGhlcmUgd2lsbCBiZSBubyBzdWJqZWN0CnByZWZpeCBhbmQgbm8g
ZW1haWwgZm9vdGVyIGxpa2UgaW4gdGhlIHBhc3QuCgpJZiB5b3Ugd291bGQgbGlrZSB0byBmaWx0
ZXIgZW1haWxzIGZyb20gdGhpcyBtYWlsaW5nIGxpc3QgeW91IGNhbiB1c2UKc29tZXRoaW5nIGxp
a2UgY2hlY2tpbmcgaWYgdGhlIGhlYWRlciAnTGlzdC1JZCcgY29udGFpbnMKIm1pbmlvcy1kZXZl
bC5saXN0cy54ZW5wcm9qZWN0Lm9yZyIuCkFuIGV4YW1wbGUgZm9yIHNpZXZlIGNvdWxkIGJlOgoK
PiBpZiBoZWFkZXIgOmNvbnRhaW5zICJMaXN0LUlkIiAibWluaW9zLWRldmVsLmxpc3RzLnhlbnBy
b2plY3Qub3JnIiB7Cj7CoMKgwqDCoCBmaWxlaW50byAiSU5CT1gvbWluaW9zLWRldmVsIiA7Cj4g
fQoKUmVnYXJkcwoKRG9taW5pYyBCcmVrYXUKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fCk1pbmlvcy1kZXZlbCBtYWlsaW5nIGxpc3QKTWluaW9zLWRldmVs
QGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1h
bi9saXN0aW5mby9taW5pb3MtZGV2ZWw=

From minios-devel-bounces@lists.xenproject.org Tue Apr 07 14:49:51 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 07 Apr 2020 14:49: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 1jLpXx-0002Fm-4o; Tue, 07 Apr 2020 14:49:49 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=KyZY=5X=gmail.com=felipehuici@srs-us1.protection.inumbo.net>)
 id 1jLpXw-0002Fh-19
 for minios-devel@lists.xen.org; Tue, 07 Apr 2020 14:49:48 +0000
X-Inumbo-ID: 06a5e048-78df-11ea-83d8-bc764e2007e4
Received: from mail-ua1-x941.google.com (unknown [2607:f8b0:4864:20::941])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 06a5e048-78df-11ea-83d8-bc764e2007e4;
 Tue, 07 Apr 2020 14:49:47 +0000 (UTC)
Received: by mail-ua1-x941.google.com with SMTP id y17so1332751uap.13
 for <minios-devel@lists.xen.org>; Tue, 07 Apr 2020 07:49:47 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=mime-version:references:in-reply-to:from:date:message-id:subject:to
 :cc; bh=yZwDQ9GSsZQEwjfnUcfYmLld+zkU0/toWqdmu/E/SD0=;
 b=Nf8SI3D1/cjBjoWqIPsybPjg7ibAp1hKJfYBPmS/gNgnwL0b3/j1egnSJcgN68GBE4
 YTv/Xzj54x5QuMjSyahM5/ai1FSraqMv5lUQuDR6KFjIrgxZ8+8R78DQTUl3lHO9thCY
 5ukTXlbe8rlWy959Xducq+YPHJJlmbnjjnJSRrrOD2MyrXou1oGFRKPpYPQJeDIK5ltq
 B39/odH4RocLrtS2De5Ze5ggZj/12enbB10rpYaFKLPrOYINK0YDaT8nCtujhfYFj/R9
 FlDR96olmMYd5ov9dTII7F6JQnhzxwkt5CPdD3jXPfcq++OoM3i/nbJFwJ83Eo1DSEgN
 GczQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:mime-version:references:in-reply-to:from:date
 :message-id:subject:to:cc;
 bh=yZwDQ9GSsZQEwjfnUcfYmLld+zkU0/toWqdmu/E/SD0=;
 b=dnLLXXe4NFkN9U5d2pZxpbjP46O5Ow9aObpY7fIkjBc9mJLWlQ07kOqE536BPkvfo0
 nExJgR3Z4vnpyOkYQU5QMoNOH76VFqr1CVYj/TyH4O+BohmGFeNMn2LuLuhwwro2muvJ
 c1T4mQfnQ5Vcr/luA01CB8skOQmp+07XkDQTd5Stb4jBihV+poh6zd4pX+arKWj0mp38
 9ShRSl/mUDmU76wKTdp3sLyONv2OsYyx4+e+d/bg3g9JEiHi/0sqVZSUO4zInkO7Itat
 KGlkupdM1RiS+Yo++bXrSkUs19Wo9ulh/mSVBvIDyZnJ8s9MwTDJKm6HvYDIK9GeNdlA
 ZCIg==
X-Gm-Message-State: AGi0PuY+XEfllE34mp/SUZZ3Zi86OU2I5czZtdx3u1INIVedXkpvpr7d
 YPC9zCabU7RnRfkPjKc0IjzlOEXxnY3nenjbWeQ=
X-Google-Smtp-Source: APiQypJvFr65h9/NFiTbvt9y1ZavtbTTglhhKEJeNTNUTR1lI3PzvoPKxVS4zh0NQj1guxq7S8Iw3wb7SIg9aWBhAUw=
X-Received: by 2002:ab0:913:: with SMTP id w19mr1991615uag.124.1586270986838; 
 Tue, 07 Apr 2020 07:49:46 -0700 (PDT)
MIME-Version: 1.0
References: <20200406192406.30700-1-vlad_andrei.badoiu@upb.ro>
 <20200406192406.30700-2-vlad_andrei.badoiu@upb.ro>
In-Reply-To: <20200406192406.30700-2-vlad_andrei.badoiu@upb.ro>
From: "felipehuici ." <felipehuici@gmail.com>
Date: Tue, 7 Apr 2020 16:49:35 +0200
Message-ID: <CAEX4t-OtwxPMjTNTqHG=jZhE_wwmPVsQwLKFhn2u-hK63ZFJ4g@mail.gmail.com>
Subject: Re: [Minios-devel] [UNIKRAFT/INTEL-INTRINSICS PATCH 1/2] Add
 x86intrin.h
To: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
Content-Type: text/plain; charset="UTF-8"
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>, minios-devel@lists.xen.org
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Hi Vlad, this patch looks good, thanks.

Reviewed-by: Felipe Huici <felipe.huici@neclab.eu>

On Mon, Apr 6, 2020 at 9:25 PM Vlad-Andrei Badoiu
<vlad_andrei.badoiu@upb.ro> wrote:
>
> This x86intrin.h does not include all the
> expected headers since we don't have them yet.
>
> Signed-off-by: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
> ---
>  include/x86intrin.h | 9 +++++++++
>  1 file changed, 9 insertions(+)
>  create mode 100644 include/x86intrin.h
>
> diff --git a/include/x86intrin.h b/include/x86intrin.h
> new file mode 100644
> index 0000000..3bbe414
> --- /dev/null
> +++ b/include/x86intrin.h
> @@ -0,0 +1,9 @@
> +#ifndef _X86INTRIN_H_INCLUDED
> +#define _X86INTRIN_H_INCLUDED
> +
> +/* For including AVX instructions */
> +#include <immintrin.h>
> +
> +#include <popcntintrin.h>
> +
> +#endif /* _X86INTRIN_H_INCLUDED */
> --
> 2.20.1
>
>
> _______________________________________________
> Minios-devel mailing list
> Minios-devel@lists.xenproject.org
> https://lists.xenproject.org/mailman/listinfo/minios-devel


From minios-devel-bounces@lists.xenproject.org Tue Apr 07 14:49:59 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 07 Apr 2020 14:49: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 1jLpY7-0002GI-6h; Tue, 07 Apr 2020 14:49:59 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=KyZY=5X=gmail.com=felipehuici@srs-us1.protection.inumbo.net>)
 id 1jLpY6-0002GD-6q
 for minios-devel@lists.xen.org; Tue, 07 Apr 2020 14:49:58 +0000
X-Inumbo-ID: 0cd856ee-78df-11ea-b58d-bc764e2007e4
Received: from mail-vk1-xa42.google.com (unknown [2607:f8b0:4864:20::a42])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 0cd856ee-78df-11ea-b58d-bc764e2007e4;
 Tue, 07 Apr 2020 14:49:57 +0000 (UTC)
Received: by mail-vk1-xa42.google.com with SMTP id f195so881644vka.4
 for <minios-devel@lists.xen.org>; Tue, 07 Apr 2020 07:49:57 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=mime-version:references:in-reply-to:from:date:message-id:subject:to
 :cc; bh=uILAYm53wKzLRBuBt4m0QEgFIuJt8cJlvZe7Kuow1yI=;
 b=Cl45eZ4CicC8r+1qKSl/ssIu/4FwoAeO1BNyAZTI/HRwHCSddftpiaCAw/YACyEzo+
 Y95ZK4gye7YoUwGE0NeLh7svu7YMqnxilvqSa6v+aPAeexUZsk3nCroqgFx2g2kJKyi/
 gnw+IC0g00gqmg8U7CSzxseldKiKueTHXR/mflTOe+/bs3VrgTixxH/WJSwRn5tRoXWe
 g2645BN77ThLJVVTeGu1SPhvf7PNnKs8wBlq083F7ts84XCAsM3EU682FHGTRrT0Luja
 OH1UDDxO5xCywDLvKNgYU+Hd/uoRMh+0xcApEogS+DvpAyricI38FjX4Aj3MY6bn/T4O
 Srqg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:mime-version:references:in-reply-to:from:date
 :message-id:subject:to:cc;
 bh=uILAYm53wKzLRBuBt4m0QEgFIuJt8cJlvZe7Kuow1yI=;
 b=O0xeqoK8Afd7VLnP0pJfqMaMkBapBhRNPk6Vr63xPFXIAmqieyvv2p49pbfRbtvLHX
 PlDr4XqRDoNd1Pho/O/FD1XlrOAGvFjbmcKuUa72jLWr5Yh3lqFLocYtvJ15me+Y6MMO
 su5/pp7l5h6L5GBqXaWthHhZLLLJnLQQpKnnNVAPuMdEM6kdq7P91Xy7LtRQRfm8IEGz
 0kQm2i8sFLeCludiCkNRQExqhVwysg57tht69llqG9y2GOyb4krLYSOCzskDQEIDAD3u
 wz6mlbym2R2kUgf0HJX3fHE6/XgvdRueV/5DNSBcjUL+W7J3VGznmD7Bbl1N1s9/dCd9
 hDZA==
X-Gm-Message-State: AGi0Puaiul6cV+TTD5cPYnA7bOA0L6ZowU/wmXY/82Oc+Q68ZXwMKZCD
 ryn5/P6saI3AmE8918Al6UqlOoAYpStQDOUJHXo=
X-Google-Smtp-Source: APiQypLFIPfbFdSQkOe83+Ub736YVVcic3qHDeJDcykPXO+yKmM+FbVzwDDoaHFEHs4vyRW9zbwX2B4o29KUfnDs5ng=
X-Received: by 2002:a1f:9e17:: with SMTP id h23mr1676771vke.99.1586270997198; 
 Tue, 07 Apr 2020 07:49:57 -0700 (PDT)
MIME-Version: 1.0
References: <20200406192406.30700-1-vlad_andrei.badoiu@upb.ro>
 <20200406192406.30700-3-vlad_andrei.badoiu@upb.ro>
In-Reply-To: <20200406192406.30700-3-vlad_andrei.badoiu@upb.ro>
From: "felipehuici ." <felipehuici@gmail.com>
Date: Tue, 7 Apr 2020 16:49:45 +0200
Message-ID: <CAEX4t-NgUo8veZZnsEKpR1b=+Vy+wc+3gU+=FcMMe5vdegJ5Xg@mail.gmail.com>
Subject: Re: [Minios-devel] [UNIKRAFT/INTEL-INTRINSICS PATCH 2/2] Fix
 _mm256_extract_epi64 definition on GCC
To: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
Content-Type: text/plain; charset="UTF-8"
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>, minios-devel@lists.xen.org
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Reviewed-by: Felipe Huici <felipe.huici@neclab.eu>

On Mon, Apr 6, 2020 at 9:24 PM Vlad-Andrei Badoiu
<vlad_andrei.badoiu@upb.ro> wrote:
>
> Signed-off-by: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
> ---
>  include/avxintrin.h | 9 +++++++++
>  1 file changed, 9 insertions(+)
>
> diff --git a/include/avxintrin.h b/include/avxintrin.h
> index 6b9541d..9ab6de7 100644
> --- a/include/avxintrin.h
> +++ b/include/avxintrin.h
> @@ -2035,8 +2035,17 @@ _mm256_blendv_ps(__m256 __a, __m256 __b, __m256 __c)
>  ///    element is extracted and returned.
>  /// \returns A 64-bit integer containing the extracted 64 bits of extended
>  ///    packed data.
> +#ifdef __clang__
>  #define _mm256_extract_epi64(X, N) \
>    (long long)__builtin_ia32_vec_ext_v4di((__v4di)(__m256i)(X), (int)(N))
> +#else
> +#define _mm256_extract_epi64(X, N)                                     \
> +         (__extension__                                                        \
> +             ({                                                                        \
> +                    __m128i __Y = _mm256_extractf128_si256 ((X), (N) >> 1);            \
> +                          _mm_extract_epi64 (__Y, (N) % 2);                                    \
> +                              }))
> +#endif
>  #endif
>
>  /// Takes a [8 x i32] vector and replaces the vector element value
> --
> 2.20.1
>
>
> _______________________________________________
> Minios-devel mailing list
> Minios-devel@lists.xenproject.org
> https://lists.xenproject.org/mailman/listinfo/minios-devel


From minios-devel-bounces@lists.xenproject.org Tue Apr 07 23:54:07 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 07 Apr 2020 23:54: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 1jLy2e-0006zD-GJ; Tue, 07 Apr 2020 23:54:04 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=dzB7=5X=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1jLy2c-0006z8-Vk
 for minios-devel@lists.xen.org; Tue, 07 Apr 2020 23:54:02 +0000
X-Inumbo-ID: 0d229f5a-792b-11ea-b58d-bc764e2007e4
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 0d229f5a-792b-11ea-b58d-bc764e2007e4;
 Tue, 07 Apr 2020 23:54:00 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 877E3103FD2;
 Wed,  8 Apr 2020 01:53:57 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (atlas-a.office.hd)
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 SmZa5teaXrJ4; Wed,  8 Apr 2020 01:53:57 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from puck.office.hd (puck.office.hd [192.168.24.91])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 5925E103F68
 for <minios-devel@lists.xen.org>; Wed,  8 Apr 2020 01:53:57 +0200 (CEST)
Received: from localhost (192.168.24.96) by puck.office.hd (192.168.24.91)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Wed, 8 Apr 2020
 01:53:56 +0200
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: <minios-devel@lists.xen.org>
Subject: [UNIKRAFT PATCH] include: Provide `__unalign` attribute
Date: Wed, 8 Apr 2020 01:53:52 +0200
Message-ID: <20200407235352.12248-1-simon.kuenzer@neclab.eu>
X-Mailer: git-send-email 2.20.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [192.168.24.96]
X-ClientProxiedBy: oberon.office.hd (192.168.24.90) To puck.office.hd
 (192.168.24.91)
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>,
 Simon Kuenzer <simon.kuenzer@neclab.eu>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Provide `__unalign` attribute in `<uk/essentials.h>`. It is defined as
byte-alignment.

Signed-off-by: Simon Kuenzer <simon.kuenzer@neclab.eu>
---
 include/uk/essentials.h | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/include/uk/essentials.h b/include/uk/essentials.h
index a6d969e7..6989c970 100644
--- a/include/uk/essentials.h
+++ b/include/uk/essentials.h
@@ -90,6 +90,9 @@ extern "C" {
 #ifndef __align
 #define __align(bytes)         __attribute__((aligned(bytes)))
 #endif
+#ifndef __unalign
+#define __unalign              __align(1)
+#endif
 /* NOTE: weak aliasing does not work well with link-time optimization
  * currently. Hopefully this will be fixed in gcc 9. The problem is,
  * if a weak symbol is referenced in the library, gcc resolves calls
-- 
2.20.1



From minios-devel-bounces@lists.xenproject.org Tue Apr 07 23:54:21 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 07 Apr 2020 23:54: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 1jLy2v-000703-IY; Tue, 07 Apr 2020 23:54: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=dzB7=5X=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1jLy2u-0006zy-OA
 for minios-devel@lists.xen.org; Tue, 07 Apr 2020 23:54:20 +0000
X-Inumbo-ID: 1792ef1c-792b-11ea-8189-12813bfff9fa
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 1792ef1c-792b-11ea-8189-12813bfff9fa;
 Tue, 07 Apr 2020 23:54:18 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 1CE59F2018;
 Wed,  8 Apr 2020 01:54:17 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (atlas-b.office.hd)
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 rAsJlySC0UaO; Wed,  8 Apr 2020 01:54:16 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from puck.office.hd (puck.office.hd [192.168.24.91])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id D9699F2017
 for <minios-devel@lists.xen.org>; Wed,  8 Apr 2020 01:54:14 +0200 (CEST)
Received: from localhost (192.168.24.96) by puck.office.hd (192.168.24.91)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Wed, 8 Apr 2020
 01:54:14 +0200
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: <minios-devel@lists.xen.org>
Subject: [UNIKRAFT PATCH] lib/ukdebug: Include tracepoint linker script when
 tracing is enabled
Date: Wed, 8 Apr 2020 01:54:10 +0200
Message-ID: <20200407235410.12324-1-simon.kuenzer@neclab.eu>
X-Mailer: git-send-email 2.20.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [192.168.24.96]
X-ClientProxiedBy: titania.office.hd (192.168.24.89) To puck.office.hd
 (192.168.24.91)
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>,
 Simon Kuenzer <simon.kuenzer@neclab.eu>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

This fixes the issue that the tracepoint section was not added to the
image when vfscore wasn't included to the build.

Signed-off-by: Simon Kuenzer <simon.kuenzer@neclab.eu>
---
 lib/ukdebug/Makefile.uk            | 2 +-
 lib/ukdebug/{extra.ld => trace.ld} | 0
 2 files changed, 1 insertion(+), 1 deletion(-)
 rename lib/ukdebug/{extra.ld => trace.ld} (100%)

diff --git a/lib/ukdebug/Makefile.uk b/lib/ukdebug/Makefile.uk
index f06eeb87..dc10e405 100644
--- a/lib/ukdebug/Makefile.uk
+++ b/lib/ukdebug/Makefile.uk
@@ -12,6 +12,6 @@ LIBUKDEBUG_SRCS-y += $(LIBUKDEBUG_BASE)/outf.c
 LIBUKDEBUG_SRCS-y += $(LIBUKDEBUG_BASE)/hexdump.c
 LIBUKDEBUG_SRCS-$(CONFIG_LIBZYDIS) += $(LIBUKDEBUG_BASE)/asmdump.c
 LIBUKDEBUG_SRCS-$(CONFIG_LIBUKDEBUG_TRACEPOINTS) += $(LIBUKDEBUG_BASE)/trace.c
-LIBUKDEBUG_SRCS-$(CONFIG_LIBVFSCORE) += $(LIBUKDEBUG_BASE)/extra.ld
+LIBUKDEBUG_SRCS-$(CONFIG_LIBUKDEBUG_TRACEPOINTS) += $(LIBUKDEBUG_BASE)/trace.ld
 
 STRIP_SECTIONS_FLAGS-$(CONFIG_LIBUKDEBUG_TRACEPOINTS) += -R .uk_tracepoints_list -R .uk_trace_keyvals
diff --git a/lib/ukdebug/extra.ld b/lib/ukdebug/trace.ld
similarity index 100%
rename from lib/ukdebug/extra.ld
rename to lib/ukdebug/trace.ld
-- 
2.20.1



From minios-devel-bounces@lists.xenproject.org Wed Apr 08 00:11:36 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 08 Apr 2020 00:11: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 1jLyJb-0000m7-61; Wed, 08 Apr 2020 00:11: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=ICCR=5Y=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1jLyJa-0000lt-5y
 for minios-devel@lists.xen.org; Wed, 08 Apr 2020 00:11:34 +0000
X-Inumbo-ID: 8037b8d4-792d-11ea-818b-12813bfff9fa
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 8037b8d4-792d-11ea-818b-12813bfff9fa;
 Wed, 08 Apr 2020 00:11:32 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 9DF4BF202E;
 Wed,  8 Apr 2020 02:11:31 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (atlas-b.office.hd)
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 typEeF4bUzuz; Wed,  8 Apr 2020 02:11:31 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from puck.office.hd (puck.office.hd [192.168.24.91])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 787F0F2017
 for <minios-devel@lists.xen.org>; Wed,  8 Apr 2020 02:11:29 +0200 (CEST)
Received: from localhost (192.168.24.96) by puck.office.hd (192.168.24.91)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Wed, 8 Apr 2020
 02:11:29 +0200
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: <minios-devel@lists.xen.org>
Subject: [UNIKRAFT PATCH 1/3] build: Support multiple symbol export files
Date: Wed, 8 Apr 2020 02:11:20 +0200
Message-ID: <20200408001122.12554-2-simon.kuenzer@neclab.eu>
X-Mailer: git-send-email 2.20.1
In-Reply-To: <20200408001122.12554-1-simon.kuenzer@neclab.eu>
References: <20200408001122.12554-1-simon.kuenzer@neclab.eu>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [192.168.24.96]
X-ClientProxiedBy: oberon.office.hd (192.168.24.90) To puck.office.hd
 (192.168.24.91)
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>,
 Simon Kuenzer <simon.kuenzer@neclab.eu>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Adds support that `$(LIBNAME_EXPORTS)` can contain a list of symbol
export files instead of only a single one. In order to simplify
writing of `Makefile.uk` files, a `$(LIBNAME_EXPORTS-y)` variant is
provided, too. With this variant, export symbols can be dependent to
library configuration, for example:
 LIBNAME_EXPORTS-$(CONFIG_MYLIB_EXTENDEDABI) += extendedsyms.uk
Having this feature, library symbols can be masked even without the
existence of a single `exportsyms.uk` file: Because of this, this
patch removes the "missing exportsyms.uk"-warning. In the case an
`exportsyms.uk` file exists for a library, it is still automatically
included and used: The previous behavior is preserved.

Signed-off-by: Simon Kuenzer <simon.kuenzer@neclab.eu>
---
 support/build/Makefile.rules | 13 +++++--------
 1 file changed, 5 insertions(+), 8 deletions(-)

diff --git a/support/build/Makefile.rules b/support/build/Makefile.rules
index af08f830..384f24f0 100644
--- a/support/build/Makefile.rules
+++ b/support/build/Makefile.rules
@@ -189,7 +189,7 @@ $(call mk_sub_build_dir,$(1))
 UK_LIBS += $(1)
 $(eval $(call uc,$(1))_BASE    := $(_IMPORT_BASE))
 $(eval $(call uc,$(1))_BUILD   := $(BUILD_DIR)/$(1))
-$(eval $(call uc,$(1))_EXPORTS := $(_IMPORT_BASE)/exportsyms.uk)
+$(eval $(call uc,$(1))_EXPORTS += $(wildcard $(_IMPORT_BASE)/exportsyms.uk))
 endef
 
 # addlib_s $libname,$switch
@@ -206,7 +206,7 @@ $(eval $(call uc,$(2))_PLATS   += $(call uc,$(1)))
 $(eval $(call uc,$(1))_LIBS    += $(2))
 $(eval $(call uc,$(2))_BASE    := $(_IMPORT_BASE))
 $(eval $(call uc,$(2))_BUILD   := $(BUILD_DIR)/$(2))
-$(eval $(call uc,$(2))_EXPORTS := $(_IMPORT_BASE)/exportsyms.uk)
+$(eval $(call uc,$(2))_EXPORTS += $(wildcard $(_IMPORT_BASE)/exportsyms.uk))
 endef
 
 # addplatlib_s $platname,$libname,$switch
@@ -718,10 +718,6 @@ endef
 
 # buildrule_olib $libname
 define buildrule_olib =
-$(if $(wildcard $($(call vprefix_lib,$(1),EXPORTS))),,\
-	$(call verbose_info,Warning: Definition of exported symbols for $(1) missing: $($(call vprefix_lib,$(1),EXPORTS))) \
-)
-
 $(call libname2preolib,$(1)): $($(call vprefix_lib,$(1),OBJS)) \
 			      $($(call vprefix_lib,$(1),OBJS-y)) \
 			      $($(call vprefix_lib,$(1),ALIBS)) \
@@ -742,9 +738,10 @@ $(call libname2preolib,$(1)): $($(call vprefix_lib,$(1),OBJS)) \
 		      -Wl$(comma)--end-group \
 		      -o $(call libname2preolib,$(1)))
 
-$(call libname2olib,$(1)): $(call libname2preolib,$(1)) $(if $(wildcard $($(call vprefix_lib,$(1),EXPORTS))),$($(call vprefix_lib,$(1),EXPORTS)),)
+$(call libname2olib,$(1)): $(call libname2preolib,$(1)) \
+			   $($(call vprefix_lib,$(1),EXPORTS)) $($(call vprefix_lib,$(1),EXPORTS-y)) \
 	$(call build_cmd,OBJCOPY,,$(call libname2olib,$(1)),\
-		$(OBJCOPY) $(if $(wildcard $($(call vprefix_lib,$(1),EXPORTS))),--keep-global-symbols=$($(call vprefix_lib,$(1),EXPORTS)),) \
+		$(OBJCOPY) $(addprefix --keep-global-symbols=,$($(call vprefix_lib,$(1),EXPORTS)) $($(call vprefix_lib,$(1),EXPORTS-y))) \
 		           $(OBJCFLAGS) $(OBJCFLAGS-y) \
 		           $($(call vprefix_lib,$(1),OBJCFLAGS)) $($(call vprefix_lib,$(1),OBJCFLAGS-y)) \
 			   $(call libname2preolib,$(1)) $(call libname2olib,$(1)))
-- 
2.20.1



From minios-devel-bounces@lists.xenproject.org Wed Apr 08 00:11:36 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 08 Apr 2020 00:11: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 1jLyJb-0000m2-4J; Wed, 08 Apr 2020 00:11:35 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=ICCR=5Y=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1jLyJa-0000ls-2i
 for minios-devel@lists.xen.org; Wed, 08 Apr 2020 00:11:34 +0000
X-Inumbo-ID: 803595b8-792d-11ea-b4f4-bc764e2007e4
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 803595b8-792d-11ea-b4f4-bc764e2007e4;
 Wed, 08 Apr 2020 00:11:32 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 5541C103FD2;
 Wed,  8 Apr 2020 02:11:28 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (atlas-a.office.hd)
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 OB-8vhZ1M37c; Wed,  8 Apr 2020 02:11:28 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from puck.office.hd (puck.office.hd [192.168.24.91])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 22C3F103F68
 for <minios-devel@lists.xen.org>; Wed,  8 Apr 2020 02:11:28 +0200 (CEST)
Received: from localhost (192.168.24.96) by puck.office.hd (192.168.24.91)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Wed, 8 Apr 2020
 02:11:27 +0200
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: <minios-devel@lists.xen.org>
Subject: [UNIKRAFT PATCH 0/3] Support for adding sources or symbol masking to
 every library
Date: Wed, 8 Apr 2020 02:11:19 +0200
Message-ID: <20200408001122.12554-1-simon.kuenzer@neclab.eu>
X-Mailer: git-send-email 2.20.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [192.168.24.96]
X-ClientProxiedBy: puck.office.hd (192.168.24.91) To puck.office.hd
 (192.168.24.91)
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>,
 Simon Kuenzer <simon.kuenzer@neclab.eu>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Adds support for applying compiling of sources or hiding of symbols to every library.
This functionality is mainly intended to realize per-library variable or function
definitions: In such a case, a source file would be added to every library that cotnains
the per-library symbol. The build system is compiling and linking the unit for each
library. With symbol localization, the provided symbols are marked as library-private.

Simon Kuenzer (3):
  build: Support multiple symbol export files
  build: Provide option to localize symbols (LIBNAME_LOCALS(-y))
  build: Option to set sources, object, alibs, and symbol localization
    for each library

 Makefile                     | 28 ++++++++++++++++++++--------
 support/build/Makefile.build | 12 ++++++++----
 support/build/Makefile.rules | 27 +++++++++++++++++++--------
 3 files changed, 47 insertions(+), 20 deletions(-)

-- 
2.20.1



From minios-devel-bounces@lists.xenproject.org Wed Apr 08 00:11:40 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 08 Apr 2020 00:11: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 1jLyJg-0000n2-7p; Wed, 08 Apr 2020 00:11:40 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=ICCR=5Y=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1jLyJe-0000mo-SW
 for minios-devel@lists.xen.org; Wed, 08 Apr 2020 00:11:38 +0000
X-Inumbo-ID: 81685114-792d-11ea-83d8-bc764e2007e4
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 81685114-792d-11ea-83d8-bc764e2007e4;
 Wed, 08 Apr 2020 00:11:34 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id AD20EF202F;
 Wed,  8 Apr 2020 02:11:33 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (atlas-b.office.hd)
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 xjqWDw9JD-tE; Wed,  8 Apr 2020 02:11:33 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from puck.office.hd (puck.office.hd [192.168.24.91])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 817D6F2017
 for <minios-devel@lists.xen.org>; Wed,  8 Apr 2020 02:11:31 +0200 (CEST)
Received: from localhost (192.168.24.96) by puck.office.hd (192.168.24.91)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Wed, 8 Apr 2020
 02:11:30 +0200
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: <minios-devel@lists.xen.org>
Subject: [UNIKRAFT PATCH 2/3] build: Provide option to localize symbols
 (LIBNAME_LOCALS(-y))
Date: Wed, 8 Apr 2020 02:11:21 +0200
Message-ID: <20200408001122.12554-3-simon.kuenzer@neclab.eu>
X-Mailer: git-send-email 2.20.1
In-Reply-To: <20200408001122.12554-1-simon.kuenzer@neclab.eu>
References: <20200408001122.12554-1-simon.kuenzer@neclab.eu>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [192.168.24.96]
X-ClientProxiedBy: titania.office.hd (192.168.24.89) To puck.office.hd
 (192.168.24.91)
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>,
 Simon Kuenzer <simon.kuenzer@neclab.eu>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Similar to exporting symbols, this patch introduces the option to
localize symbols. The file format of a localizing symbol files is the
same as for exporting symbols (e.g., `exportsyms.uk`: Plain-text, one
symbol name per line. Such files can be registered to
`$(LIBNAME_LOCALS)` and `$(LIBNAME_LOCALS-y)`. As soon as a
`localsyms.uk` file exists in a library import base, it is
automatically added to the list `$(LIBNAME_LOCALS)` (similar behavior
as the handling of `exportsyms.uk files).

Signed-off-by: Simon Kuenzer <simon.kuenzer@neclab.eu>
---
 support/build/Makefile.rules | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/support/build/Makefile.rules b/support/build/Makefile.rules
index 384f24f0..251efef8 100644
--- a/support/build/Makefile.rules
+++ b/support/build/Makefile.rules
@@ -190,6 +190,7 @@ UK_LIBS += $(1)
 $(eval $(call uc,$(1))_BASE    := $(_IMPORT_BASE))
 $(eval $(call uc,$(1))_BUILD   := $(BUILD_DIR)/$(1))
 $(eval $(call uc,$(1))_EXPORTS += $(wildcard $(_IMPORT_BASE)/exportsyms.uk))
+$(eval $(call uc,$(1))_LOCALS  += $(wildcard $(_IMPORT_BASE)/localsyms.uk))
 endef
 
 # addlib_s $libname,$switch
@@ -207,6 +208,7 @@ $(eval $(call uc,$(1))_LIBS    += $(2))
 $(eval $(call uc,$(2))_BASE    := $(_IMPORT_BASE))
 $(eval $(call uc,$(2))_BUILD   := $(BUILD_DIR)/$(2))
 $(eval $(call uc,$(2))_EXPORTS += $(wildcard $(_IMPORT_BASE)/exportsyms.uk))
+$(eval $(call uc,$(2))_LOCALS  += $(wildcard $(_IMPORT_BASE)/localsyms.uk))
 endef
 
 # addplatlib_s $platname,$libname,$switch
@@ -740,8 +742,10 @@ $(call libname2preolib,$(1)): $($(call vprefix_lib,$(1),OBJS)) \
 
 $(call libname2olib,$(1)): $(call libname2preolib,$(1)) \
 			   $($(call vprefix_lib,$(1),EXPORTS)) $($(call vprefix_lib,$(1),EXPORTS-y)) \
+			   $($(call vprefix_lib,$(1),LOCALS)) $($(call vprefix_lib,$(1),LOCALS-y)) \
 	$(call build_cmd,OBJCOPY,,$(call libname2olib,$(1)),\
 		$(OBJCOPY) $(addprefix --keep-global-symbols=,$($(call vprefix_lib,$(1),EXPORTS)) $($(call vprefix_lib,$(1),EXPORTS-y))) \
+			   $(addprefix --localize-symbols=,$($(call vprefix_lib,$(1),LOCALS)) $($(call vprefix_lib,$(1),LOCALS-y))) \
 		           $(OBJCFLAGS) $(OBJCFLAGS-y) \
 		           $($(call vprefix_lib,$(1),OBJCFLAGS)) $($(call vprefix_lib,$(1),OBJCFLAGS-y)) \
 			   $(call libname2preolib,$(1)) $(call libname2olib,$(1)))
-- 
2.20.1



From minios-devel-bounces@lists.xenproject.org Wed Apr 08 00:11:45 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 08 Apr 2020 00:11: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 1jLyJl-0000oD-Bx; Wed, 08 Apr 2020 00:11:45 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=ICCR=5Y=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1jLyJj-0000o2-TR
 for minios-devel@lists.xen.org; Wed, 08 Apr 2020 00:11:43 +0000
X-Inumbo-ID: 8299f1d2-792d-11ea-b4f4-bc764e2007e4
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 8299f1d2-792d-11ea-b4f4-bc764e2007e4;
 Wed, 08 Apr 2020 00:11:36 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id BF36AF202E;
 Wed,  8 Apr 2020 02:11:35 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (atlas-b.office.hd)
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 hzDL9l0QwOYV; Wed,  8 Apr 2020 02:11:35 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from puck.office.hd (puck.office.hd [192.168.24.91])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 91144F2017
 for <minios-devel@lists.xen.org>; Wed,  8 Apr 2020 02:11:33 +0200 (CEST)
Received: from localhost (192.168.24.96) by puck.office.hd (192.168.24.91)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Wed, 8 Apr 2020
 02:11:31 +0200
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: <minios-devel@lists.xen.org>
Subject: [UNIKRAFT PATCH 3/3] build: Option to set sources, object, alibs,
 and symbol localization for each library
Date: Wed, 8 Apr 2020 02:11:22 +0200
Message-ID: <20200408001122.12554-4-simon.kuenzer@neclab.eu>
X-Mailer: git-send-email 2.20.1
In-Reply-To: <20200408001122.12554-1-simon.kuenzer@neclab.eu>
References: <20200408001122.12554-1-simon.kuenzer@neclab.eu>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [192.168.24.96]
X-ClientProxiedBy: puck.office.hd (192.168.24.91) To puck.office.hd
 (192.168.24.91)
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>,
 Simon Kuenzer <simon.kuenzer@neclab.eu>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

This commit introduces another special build system variables which
can be used to set options for each `.o`-library (UK_OLIBS):
 - Source files:          EACHOLIB_SRCS    and EACHOLIB_SRCS-y
   List of source files to be compiled for and linked into each
   `.o`-library. Be aware of duplicate symbol definitions. It may make
   sense to use this option together with `EACHOLIB_LOCALS(-y)`.
 - Object files:          EACHOLIB_OBJS    and EACHOLIB_OBJS-y
   List of object files to be linked into each `.o`-library. Be aware
   of duplicate symbol definitions. It may make sense to use this
   option together with `EACHOLIB_LOCALS(-y)`.
 - Static libraries:      EACHOLIB_ALIBS   and EACHOLIB_ALIBS-y
   List of static libraries linked into each `.o`-library. Be aware
   of duplicate symbol definitions. It may make sense to use this
   option together with `EACHOLIB_LOCALS(-y)`.
 - Localize symbols file: EACHOLIB_LOCALS  and EACHOLIB_LOCALS-y
   Localizing symbols for each `.o`-library.

Signed-off-by: Simon Kuenzer <simon.kuenzer@neclab.eu>
---
 Makefile                     | 28 ++++++++++++++++++++--------
 support/build/Makefile.build | 12 ++++++++----
 support/build/Makefile.rules | 10 ++++++++++
 3 files changed, 38 insertions(+), 12 deletions(-)

diff --git a/Makefile b/Makefile
index f6ace2b6..be8fa8ce 100644
--- a/Makefile
+++ b/Makefile
@@ -321,6 +321,14 @@ LDFLAGS :=
 LDFLAGS-y :=
 IMAGE_LDFLAGS :=
 IMAGE_LDFLAGS-y :=
+EACHOLIB_SRCS :=
+EACHOLIB_SRCS-y :=
+EACHOLIB_OBJS :=
+EACHOLIB_OBJS-y :=
+EACHOLIB_ALIBS :=
+EACHOLIB_ALIBS-y :=
+EACHOLIB_LOCALS :=
+EACHOLIB_LOCALS-y :=
 
 # Pull in the user's configuration file
 ifeq ($(filter $(noconfig_targets),$(MAKECMDGOALS)),)
@@ -914,12 +922,14 @@ print-objs:
 		$(foreach P,$(UK_PLATS) $(UK_PLATS-y),\
 		$(if $(call qstrip,$($(call uc,$(P))_LIBS) $($(call uc,$(P))_LIBS-y)),\
 		$(foreach L,$($(call uc,$(P))_LIBS) $($(call uc,$(P))_LIBS-y), \
-		$(if $(call qstrip,$($(call vprefix_lib,$(L),OBJS)) $($(call vprefix_lib,$(L),OBJS-y))), \
-		'$(L):\n   $($(call vprefix_lib,$(L),OBJS)) $($(call vprefix_lib,$(L),OBJS-y))\n'\
+		$(if $(call qstrip,$($(call vprefix_lib,$(L),OBJS)) $($(call vprefix_lib,$(L),OBJS-y)) \
+		       $(EACHOLIB_OBJS) $(EACHOLIB_OBJS-y)), \
+		'$(L):\n   $($(call vprefix_lib,$(L),OBJS)) $($(call vprefix_lib,$(L),OBJS-y)) $(EACHOLIB_OBJS) $(EACHOLIB_OBJS-y)\n'\
 		))))\
 		$(foreach L,$(UK_LIBS) $(UK_LIBS-y),\
-		$(if $(call qstrip,$($(call vprefix_lib,$(L),OBJS)) $($(call vprefix_lib,$(L),OBJS-y))),\
-		'$(L):\n   $($(call vprefix_lib,$(L),OBJS)) $($(call vprefix_lib,$(L),OBJS-y))\n'\
+		$(if $(call qstrip,$($(call vprefix_lib,$(L),OBJS)) $($(call vprefix_lib,$(L),OBJS-y)) \
+		       $(EACHOLIB_OBJS) $(EACHOLIB_OBJS-y)), \
+		'$(L):\n   $($(call vprefix_lib,$(L),OBJS)) $($(call vprefix_lib,$(L),OBJS-y)) $(EACHOLIB_OBJS) $(EACHOLIB_OBJS-y)\n'\
 		))
 
 print-srcs:
@@ -927,12 +937,14 @@ print-srcs:
 		$(foreach P,$(UK_PLATS) $(UK_PLATS-y),\
 		$(if $(call qstrip,$($(call uc,$(P))_LIBS) $($(call uc,$(P))_LIBS-y)),\
 		$(foreach L,$($(call uc,$(P))_LIBS) $($(call uc,$(P))_LIBS-y), \
-		$(if $(call qstrip,$($(call vprefix_lib,$(L),SRCS)) $($(call vprefix_lib,$(L),SRCS-y))), \
-		'$(L):\n   $($(call vprefix_lib,$(L),SRCS)) $($(call vprefix_lib,$(L),SRCS-y))\n'\
+		$(if $(call qstrip,$($(call vprefix_lib,$(L),SRCS)) $($(call vprefix_lib,$(L),SRCS-y)) \
+		       $(EACHOLIB_SRCS) $(EACHOLIB_SRCS-y)), \
+		'$(L):\n   $($(call vprefix_lib,$(L),SRCS)) $($(call vprefix_lib,$(L),SRCS-y)) $(EACHOLIB_SRCS) $(EACHOLIB_SRCS-y)\n'\
 		))))\
 		$(foreach L,$(UK_LIBS) $(UK_LIBS-y),\
-		$(if $(call qstrip,$($(call vprefix_lib,$(L),SRCS)) $($(call vprefix_lib,$(L),SRCS-y))),\
-		'$(L):\n   $($(call vprefix_lib,$(L),SRCS)) $($(call vprefix_lib,$(L),SRCS-y))\n'\
+		$(if $(call qstrip,$($(call vprefix_lib,$(L),SRCS)) $($(call vprefix_lib,$(L),SRCS-y)) \
+		       $(EACHOLIB_SRCS) $(EACHOLIB_SRCS-y)), \
+		'$(L):\n   $($(call vprefix_lib,$(L),SRCS)) $($(call vprefix_lib,$(L),SRCS-y)) $(EACHOLIB_SRCS) $(EACHOLIB_SRCS-y)\n'\
 		))
 else
 print-libs:
diff --git a/support/build/Makefile.build b/support/build/Makefile.build
index 5679741d..c597a382 100644
--- a/support/build/Makefile.build
+++ b/support/build/Makefile.build
@@ -25,8 +25,10 @@
 
 ifneq ($(call qstrip,$(UK_LIBS) $(UK_LIBS-y)),)
 $(foreach L,$(UK_LIBS) $(UK_LIBS-y), \
-$(if $(call qstrip,$($(call uc,$(L))_SRCS) $($(call uc,$(L))_SRCS-y)), \
-$(foreach S,$($(call uc,$(L))_SRCS) $($(call uc,$(L))_SRCS-y), \
+$(if $(call qstrip,$($(call uc,$(L))_SRCS) $($(call uc,$(L))_SRCS-y) \
+	    $(EACHOLIB_SRCS) $(EACHOLIB_SRCS-y)), \
+$(foreach S,$($(call uc,$(L))_SRCS) $($(call uc,$(L))_SRCS-y) \
+	    $(EACHOLIB_SRCS) $(EACHOLIB_SRCS-y), \
 $(eval $(call buildrule_libobj_multitarget,$(L),$(S))) \
 ); \
 $(eval $(call buildrule_olib,$(L))); \
@@ -46,8 +48,10 @@ ifneq ($(call qstrip,$(UK_PLATS) $(UK_PLATS-y)),)
 $(foreach P,$(UK_PLATS) $(UK_PLATS-y), \
 $(if $(call qstrip,$($(call uc,$(P))_LIBS) $($(call uc,$(P))_LIBS-y)), \
 $(foreach L,$($(call uc,$(P))_LIBS) $($(call uc,$(P))_LIBS-y), \
-$(if $(call qstrip,$($(call uc,$(L))_SRCS) $($(call uc,$(L))_SRCS-y)), \
-$(foreach S,$($(call uc,$(L))_SRCS) $($(call uc,$(L))_SRCS-y), \
+$(if $(call qstrip,$($(call uc,$(L))_SRCS) $($(call uc,$(L))_SRCS-y) \
+     $(EACHOLIB_SRCS) $(EACHOLIB_SRCS-y)), \
+$(foreach S,$($(call uc,$(L))_SRCS) $($(call uc,$(L))_SRCS-y) \
+	    $(EACHOLIB_SRCS) $(EACHOLIB_SRCS-y), \
 $(eval $(call buildrule_libobj_multitarget,$(L),$(S))) \
 ); \
 $(eval $(call buildrule_olib,$(L))); \
diff --git a/support/build/Makefile.rules b/support/build/Makefile.rules
index 251efef8..8c096fa5 100644
--- a/support/build/Makefile.rules
+++ b/support/build/Makefile.rules
@@ -722,8 +722,12 @@ endef
 define buildrule_olib =
 $(call libname2preolib,$(1)): $($(call vprefix_lib,$(1),OBJS)) \
 			      $($(call vprefix_lib,$(1),OBJS-y)) \
+			      $(EACHOLIB_OBJS) \
+			      $(EACHOLIB_OBJS-y) \
 			      $($(call vprefix_lib,$(1),ALIBS)) \
 			      $($(call vprefix_lib,$(1),ALIBS-y)) \
+			      $(EACHOLIB_ALIBS) \
+			      $(EACHOLIB_ALIBS-y) \
 			      $($(call vprefix_lib,$(1),LDS)) \
 			      $($(call vprefix_lib,$(1),LDS-y)) \
 			      $($(call vprefix_lib,$(1),DTB)) \
@@ -734,18 +738,24 @@ $(call libname2preolib,$(1)): $($(call vprefix_lib,$(1),OBJS)) \
 		      $($(call vprefix_lib,$(1),LDFLAGS-y)) \
 		      $($(call vprefix_lib,$(1),OBJS)) \
 		      $($(call vprefix_lib,$(1),OBJS-y)) \
+		      $(EACHOLIB_OBJS) \
+		      $(EACHOLIB_OBJS-y) \
 		      -Wl$(comma)--start-group \
 		      $($(call vprefix_lib,$(1),ALIBS)) \
 		      $($(call vprefix_lib,$(1),ALIBS-y)) \
+		      $(EACHOLIB_ALIBS) \
+		      $(EACHOLIB_ALIBS-y) \
 		      -Wl$(comma)--end-group \
 		      -o $(call libname2preolib,$(1)))
 
 $(call libname2olib,$(1)): $(call libname2preolib,$(1)) \
 			   $($(call vprefix_lib,$(1),EXPORTS)) $($(call vprefix_lib,$(1),EXPORTS-y)) \
 			   $($(call vprefix_lib,$(1),LOCALS)) $($(call vprefix_lib,$(1),LOCALS-y)) \
+			   $(EACHOLIB_LOCALS) $(EACHOLIB_LOCALS-y)
 	$(call build_cmd,OBJCOPY,,$(call libname2olib,$(1)),\
 		$(OBJCOPY) $(addprefix --keep-global-symbols=,$($(call vprefix_lib,$(1),EXPORTS)) $($(call vprefix_lib,$(1),EXPORTS-y))) \
 			   $(addprefix --localize-symbols=,$($(call vprefix_lib,$(1),LOCALS)) $($(call vprefix_lib,$(1),LOCALS-y))) \
+			   $(addprefix --localize-symbols=,$(EACHOLIB_LOCALS) $(EACHOLIB_LOCALS-y)) \
 		           $(OBJCFLAGS) $(OBJCFLAGS-y) \
 		           $($(call vprefix_lib,$(1),OBJCFLAGS)) $($(call vprefix_lib,$(1),OBJCFLAGS-y)) \
 			   $(call libname2preolib,$(1)) $(call libname2olib,$(1)))
-- 
2.20.1



From minios-devel-bounces@lists.xenproject.org Wed Apr 08 00:22:43 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 08 Apr 2020 00: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 1jLyUM-0001eq-6N; Wed, 08 Apr 2020 00:22:42 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=hVdw=5Y=upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1jLyUL-0001eg-T2
 for minios-devel@lists.xen.org; Wed, 08 Apr 2020 00:22:41 +0000
X-Inumbo-ID: 0d9cc736-792f-11ea-83d8-bc764e2007e4
Received: from mx.upb.ro (unknown [141.85.13.200])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 0d9cc736-792f-11ea-83d8-bc764e2007e4;
 Wed, 08 Apr 2020 00:22:39 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id 7824CB5625E0;
 Wed,  8 Apr 2020 03:22:38 +0300 (EEST)
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10032)
 with ESMTP id ZKrjoXi-rQaV; Wed,  8 Apr 2020 03:22:36 +0300 (EEST)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id 0C630B5625D9;
 Wed,  8 Apr 2020 03:22:35 +0300 (EEST)
DKIM-Filter: OpenDKIM Filter v2.10.3 mx.upb.ro 0C630B5625D9
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=upb.ro;
 s=96342B8A-77E4-11E5-BA93-D93D0963A2DF; t=1586305355;
 bh=AsuNaQfETT5I5vlSBf3mum724T3jPO1P8N3H/7vxEsg=;
 h=From:To:Date:Message-Id:MIME-Version;
 b=n3U0f7pleqGvOGnzwet9sugIBrampZ/5S1CzNtkVimdS36sSi7g4oWy5jzw2yjZyM
 fgOMzw4UMfXOGnCUtCVNH0i4mBBNtuj1hviOYLar7Kb21Rqed91PgD6IhljhoG76L/
 NiZQO8LZ+r7ZsbH7DNepfzWCHPlipNJ9amrea09Q=
X-Virus-Scanned: amavisd-new at upb.ro
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id aQPmMGltNxb7; Wed,  8 Apr 2020 03:22:34 +0300 (EEST)
Received: from localhost.localdomain (unknown [86.127.159.73])
 by mx.upb.ro (Postfix) with ESMTPSA id BD7DDB5625D6;
 Wed,  8 Apr 2020 03:22:34 +0300 (EEST)
From: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
To: minios-devel@lists.xen.org
Subject: [UNIKRAFT/PYTORCH PATCH 3/5] Add gluecode
Date: Wed,  8 Apr 2020 03:22:00 +0300
Message-Id: <20200408002204.31260-6-vlad_andrei.badoiu@upb.ro>
X-Mailer: git-send-email 2.20.1
In-Reply-To: <20200408002204.31260-1-vlad_andrei.badoiu@upb.ro>
References: <20200408002204.31260-1-vlad_andrei.badoiu@upb.ro>
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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, Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Signed-off-by: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
---
 glue.c | 44 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 44 insertions(+)
 create mode 100644 glue.c

diff --git a/glue.c b/glue.c
new file mode 100644
index 0000000..5069484
--- /dev/null
+++ b/glue.c
@@ -0,0 +1,44 @@
+#include <sys/types.h>
+#include <sys/wait.h>
+#include <signal.h>
+
+int waitid(idtype_t idtype, id_t id, siginfo_t *infop, int options)
+{
+	return 0;
+}
+
+#include <fenv.h>
+int feclearexcept(int excepts)
+{
+
+}
+int fegetexceptflag(fexcept_t *flagp, int excepts)
+{
+}
+int feraiseexcept(int excepts)
+{
+}
+int fesetexceptflag(const fexcept_t *flagp, int excepts)
+{
+}
+int fetestexcept(int excepts)
+{
+}
+int fegetround(void)
+{
+}
+int fesetround(int rounding_mode)
+{
+}
+int fegetenv(fenv_t *envp)
+{
+}
+int feholdexcept(fenv_t *envp)
+{
+}
+int fesetenv(const fenv_t *envp)
+{
+}
+int feupdateenv(const fenv_t *envp)
+{
+}
--=20
2.20.1



From minios-devel-bounces@lists.xenproject.org Wed Apr 08 00:22:43 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 08 Apr 2020 00: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 1jLyUM-0001el-4e; Wed, 08 Apr 2020 00:22: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=hVdw=5Y=upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1jLyUJ-0001eb-Rk
 for minios-devel@lists.xen.org; Wed, 08 Apr 2020 00:22:40 +0000
X-Inumbo-ID: 0c82a406-792f-11ea-818c-12813bfff9fa
Received: from mx.upb.ro (unknown [141.85.13.200])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 0c82a406-792f-11ea-818c-12813bfff9fa;
 Wed, 08 Apr 2020 00:22:37 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id 794EFB5625D8;
 Wed,  8 Apr 2020 03:22:36 +0300 (EEST)
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10032)
 with ESMTP id 9qcW480vqdIC; Wed,  8 Apr 2020 03:22:33 +0300 (EEST)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id CB609B5625D2;
 Wed,  8 Apr 2020 03:22:33 +0300 (EEST)
DKIM-Filter: OpenDKIM Filter v2.10.3 mx.upb.ro CB609B5625D2
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=upb.ro;
 s=96342B8A-77E4-11E5-BA93-D93D0963A2DF; t=1586305353;
 bh=Bk384bwCE3hBmryED25QcrDCPcXTn6iQ1sJxyC94Zqw=;
 h=From:To:Date:Message-Id:MIME-Version;
 b=bEmuHSpUKUxuj2v3l/kOqdJ6nLt3Kzh5MebxHTf6d1QalJaluQgawuU6XCPV96iQE
 xmez9rduGZ9M39oijAdm5ItY8cwjEw7lagxLCS0YZqyoaxtx0ApKI0PQuwLPqf75AX
 a4coRX5rAH9OniBXNLpvxl9n7afuvwYJLsvQ792s=
X-Virus-Scanned: amavisd-new at upb.ro
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id z81zN1dNZb4j; Wed,  8 Apr 2020 03:22:33 +0300 (EEST)
Received: from localhost.localdomain (unknown [86.127.159.73])
 by mx.upb.ro (Postfix) with ESMTPSA id 6C180B562529;
 Wed,  8 Apr 2020 03:22:33 +0300 (EEST)
From: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
To: minios-devel@lists.xen.org
Subject: [UNIKRAFT/PYTORCH PATCH 0/5] Initial port of Pytorch on Unikraft
Date: Wed,  8 Apr 2020 03:21:55 +0300
Message-Id: <20200408002204.31260-1-vlad_andrei.badoiu@upb.ro>
X-Mailer: git-send-email 2.20.1
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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, Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

This is the initial port of Pytorch on Unikraft.
Only the C++ frontend has beend tested and SIMD support
on x86 is not enabled yet.

Vlad-Andrei Badoiu (5):
  Introduce library skeleton
  Add Makefile
  Add gluecode
  Add includes: config headers and missing headers
  Add patches

--=20
2.20.1



From minios-devel-bounces@lists.xenproject.org Wed Apr 08 00:22:45 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 08 Apr 2020 00: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 1jLyUP-0001fZ-7r; Wed, 08 Apr 2020 00:22: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=hVdw=5Y=upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1jLyUO-0001fS-OF
 for minios-devel@lists.xen.org; Wed, 08 Apr 2020 00:22:44 +0000
X-Inumbo-ID: 0ce03c88-792f-11ea-818c-12813bfff9fa
Received: from mx.upb.ro (unknown [141.85.13.200])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 0ce03c88-792f-11ea-818c-12813bfff9fa;
 Wed, 08 Apr 2020 00:22:38 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id 3E9E4B5625DC;
 Wed,  8 Apr 2020 03:22:37 +0300 (EEST)
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10032)
 with ESMTP id Isg62ZOX4a0S; Wed,  8 Apr 2020 03:22:34 +0300 (EEST)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id 73128B5625D5;
 Wed,  8 Apr 2020 03:22:34 +0300 (EEST)
DKIM-Filter: OpenDKIM Filter v2.10.3 mx.upb.ro 73128B5625D5
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=upb.ro;
 s=96342B8A-77E4-11E5-BA93-D93D0963A2DF; t=1586305354;
 bh=AsuNaQfETT5I5vlSBf3mum724T3jPO1P8N3H/7vxEsg=;
 h=From:To:Date:Message-Id:MIME-Version;
 b=HNbhTkWWINDYjHQ7dN6qhrbEMzvIGhOo7IDoBUJBa87klF9ifTlugbir7VbdAXcUI
 n7F+XlWp8xBjUuOFUVHfUwwuHQpM/4quCp81FrWervu+II7kpxbRzHC6MmHFKzRlCn
 bB+jaAJIhWypYKUCSL56ecHTFLcl/n0T3RIBpm5o=
X-Virus-Scanned: amavisd-new at upb.ro
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id yD7kuLnhM-_E; Wed,  8 Apr 2020 03:22:34 +0300 (EEST)
Received: from localhost.localdomain (unknown [86.127.159.73])
 by mx.upb.ro (Postfix) with ESMTPSA id 335B1B5625D6;
 Wed,  8 Apr 2020 03:22:34 +0300 (EEST)
From: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
To: minios-devel@lists.xen.org
Subject: [UNIKRAFT/PYTORCH PATCH 2/4] Add gluecode
Date: Wed,  8 Apr 2020 03:21:58 +0300
Message-Id: <20200408002204.31260-4-vlad_andrei.badoiu@upb.ro>
X-Mailer: git-send-email 2.20.1
In-Reply-To: <20200408002204.31260-1-vlad_andrei.badoiu@upb.ro>
References: <20200408002204.31260-1-vlad_andrei.badoiu@upb.ro>
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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, Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Signed-off-by: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
---
 glue.c | 44 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 44 insertions(+)
 create mode 100644 glue.c

diff --git a/glue.c b/glue.c
new file mode 100644
index 0000000..5069484
--- /dev/null
+++ b/glue.c
@@ -0,0 +1,44 @@
+#include <sys/types.h>
+#include <sys/wait.h>
+#include <signal.h>
+
+int waitid(idtype_t idtype, id_t id, siginfo_t *infop, int options)
+{
+	return 0;
+}
+
+#include <fenv.h>
+int feclearexcept(int excepts)
+{
+
+}
+int fegetexceptflag(fexcept_t *flagp, int excepts)
+{
+}
+int feraiseexcept(int excepts)
+{
+}
+int fesetexceptflag(const fexcept_t *flagp, int excepts)
+{
+}
+int fetestexcept(int excepts)
+{
+}
+int fegetround(void)
+{
+}
+int fesetround(int rounding_mode)
+{
+}
+int fegetenv(fenv_t *envp)
+{
+}
+int feholdexcept(fenv_t *envp)
+{
+}
+int fesetenv(const fenv_t *envp)
+{
+}
+int feupdateenv(const fenv_t *envp)
+{
+}
--=20
2.20.1



From minios-devel-bounces@lists.xenproject.org Wed Apr 08 00:22:50 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 08 Apr 2020 00:22: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 1jLyUU-0001gd-9V; Wed, 08 Apr 2020 00:22: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=hVdw=5Y=upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1jLyUT-0001gT-ON
 for minios-devel@lists.xen.org; Wed, 08 Apr 2020 00:22:49 +0000
X-Inumbo-ID: 0dde8ab8-792f-11ea-818c-12813bfff9fa
Received: from mx.upb.ro (unknown [141.85.13.210])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 0dde8ab8-792f-11ea-818c-12813bfff9fa;
 Wed, 08 Apr 2020 00:22:39 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id DD022B5625D9;
 Wed,  8 Apr 2020 03:22:38 +0300 (EEST)
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10032)
 with ESMTP id bu5edi06gqgL; Wed,  8 Apr 2020 03:22:34 +0300 (EEST)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id 3E32EB5625D7;
 Wed,  8 Apr 2020 03:22:34 +0300 (EEST)
DKIM-Filter: OpenDKIM Filter v2.10.3 mx.upb.ro 3E32EB5625D7
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=upb.ro;
 s=96342B8A-77E4-11E5-BA93-D93D0963A2DF; t=1586305354;
 bh=V+h66duCN/SU7HZA6uaEqZ6dbFT7m2AD7EDYf6gnDW4=;
 h=From:To:Date:Message-Id:MIME-Version;
 b=AURbpStHFlTLsbbwLRJnwcpYx4Pu05GmRZpDbA/hWof/ynUXjHuG01NPk1Jks/0FF
 GU8s5tQC0rOH2qhQ0a3ryG8xvRy8jNFFRj6SfmnqhgGteng67ZYMHUN4Pz+6zqudfs
 MGkgPGt8HtSOuS6G8gWdYKwklbREA8QhVOEhvbI4=
X-Virus-Scanned: amavisd-new at upb.ro
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id cJ1EGtIcSto1; Wed,  8 Apr 2020 03:22:34 +0300 (EEST)
Received: from localhost.localdomain (unknown [86.127.159.73])
 by mx.upb.ro (Postfix) with ESMTPSA id F0742B562529;
 Wed,  8 Apr 2020 03:22:33 +0300 (EEST)
From: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
To: minios-devel@lists.xen.org
Subject: [UNIKRAFT/PYTORCH PATCH 1/5] Introduce library skeleton
Date: Wed,  8 Apr 2020 03:21:57 +0300
Message-Id: <20200408002204.31260-3-vlad_andrei.badoiu@upb.ro>
X-Mailer: git-send-email 2.20.1
In-Reply-To: <20200408002204.31260-1-vlad_andrei.badoiu@upb.ro>
References: <20200408002204.31260-1-vlad_andrei.badoiu@upb.ro>
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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, Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

We use the BSD-3-Clause license for this library glue code.

Signed-off-by: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
---
 .gitignore      | 27 +++++++++++++++++++++++++++
 CODING_STYLE.md |  4 ++++
 CONTRIBUTING.md |  4 ++++
 COPYING.md      | 39 +++++++++++++++++++++++++++++++++++++++
 Config.uk       | 25 +++++++++++++++++++++++++
 MAINTAINERS.md  | 11 +++++++++++
 README.md       | 38 ++++++++++++++++++++++++++++++++++++++
 7 files changed, 148 insertions(+)
 create mode 100644 .gitignore
 create mode 100644 CODING_STYLE.md
 create mode 100644 CONTRIBUTING.md
 create mode 100644 COPYING.md
 create mode 100644 Config.uk
 create mode 100644 MAINTAINERS.md
 create mode 100644 README.md

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..75d2fd3
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,27 @@
+*.depend
+*.o
+*.a
+*.d
+*.so
+*.orig
+*.rej
+*.bak
+*.swp
+*~
+,*
+\#*\#
+.\#*
+\#_*\#
+.\#_*
+!.gitignore
+.*
+
+# gnu global files
+GPATH
+GRTAGS
+GSYMS
+GTAGS
+
+# cscope files
+cscope.*
+ncscope.*
diff --git a/CODING_STYLE.md b/CODING_STYLE.md
new file mode 100644
index 0000000..5730041
--- /dev/null
+++ b/CODING_STYLE.md
@@ -0,0 +1,4 @@
+Coding Style
+=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
+
+Please refer to the `CODING_STYLE.md` file in the main Unikraft reposito=
ry.
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 0000000..5f55eca
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,4 @@
+Contributing to Unikraft
+=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
+
+Please refer to the `CONTRIBUTING.md` file in the main Unikraft reposito=
ry.
diff --git a/COPYING.md b/COPYING.md
new file mode 100644
index 0000000..7e11dfb
--- /dev/null
+++ b/COPYING.md
@@ -0,0 +1,39 @@
+License
+=3D=3D=3D=3D=3D=3D=3D
+
+Unikraft pytorch wrappers
+------------------------
+
+This repository contains wrapper code to build pytorch with Unikraft.
+Each C code file in this repository should declare who is the
+copyright owner and under which terms and conditions the code is
+licensed. If such a licence note is missing, the following copyright
+notice will apply:
+
+	Copyright (c) 2020, University Politehnica of Bucharest. All rights res=
erved.
+
+	Redistribution and use in source and binary forms, with or without
+	modification, are permitted provided that the following conditions
+	are met:
+
+	1. Redistributions of source code must retain the above copyright
+	   notice, this list of conditions and the following disclaimer.
+	2. Redistributions in binary form must reproduce the above copyright
+	   notice, this list of conditions and the following disclaimer in the
+	   documentation and/or other materials provided with the distribution.
+	3. Neither the name of the copyright holder nor the names of its
+	   contributors may be used to endorse or promote products derived from
+	   this software without specific prior written permission.
+
+	THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS=
 IS"
+	AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, T=
HE
+	IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURP=
OSE
+	ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS =
BE
+	LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+	CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+	SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINES=
S
+	INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+	CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+	ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF =
THE
+	POSSIBILITY OF SUCH DAMAGE.
+
diff --git a/Config.uk b/Config.uk
new file mode 100644
index 0000000..c092109
--- /dev/null
+++ b/Config.uk
@@ -0,0 +1,25 @@
+menuconfig LIBPYTORCH
+	bool "pytorch - machine learning library"
+	select LIBCXX
+	select LIBPYTHON3
+	select LIBLWIP
+	select LIBPTHREAD_EMBEDDED
+	select LIBPOSIX_SYSINFO
+	select LIBNEWLIBC
+	select LIBPROTOBUF
+	select LIBPYBIND11
+	select LIBZLIB
+	select LIBINTEL_INTRINSICS
+	select LIBPTHREADPOOL
+	select LIBFXDIV
+	select LIBEIGEN
+	select LIBGEMMLOWP
+	select LIBONNX
+	select LIBSLEEF
+	select LIBPOSIX_LIBDL
+	select LIBPOSIX_PROCESS
+	select LIBPOSIX_SYSINFO
+	select LIBUKMMAP
+	select LIBUKTIME
+	default n
+
diff --git a/MAINTAINERS.md b/MAINTAINERS.md
new file mode 100644
index 0000000..8a9bdbf
--- /dev/null
+++ b/MAINTAINERS.md
@@ -0,0 +1,11 @@
+Maintainers List
+=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
+
+For notes on how to read this information, please refer to `MAINTAINERS.=
md` in
+the main Unikraft repository.
+
+	LIBPYTORCH-UNIKRAFT
+	M:	Felipe Huici <felipe.huici@neclab.eu>
+	M:	Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
+	L:	minios-devel@lists.xen.org
+	F: *
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..9371af6
--- /dev/null
+++ b/README.md
@@ -0,0 +1,38 @@
+pytorch for Unikraft
+=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D
+
+This is the port of pytorch as a Unikraft external library. It
+depends on the following libraries that need to be added to `Makefile`
+in this order:
+
+* `pthreads`, e.g. `pthread-embedded`
+* `C++ standard library`, e.g.`libcxx`, `libunwind`, `libcxxabi`, `compi=
ler-rt`
+* `libc`, e.g. `newlib`
+*  intel intrinsics, e.g. `intel-intrinsics`a
+* `zlib`
+* `lwip`
+* `python`
+* `pybind11`
+* `pthreadpool`
+* `libfp16`
+* `psimd`
+* `libfxdiv`
+* `protobuf`
+* `eigen`
+* `gemmlowp`
+* `sleef`
+* `onnx`
+
+# Building
+This library uses protobuf to generate some of the source files. The
+version of protobuf on the host machine must be the same with the one
+compile on Unikraft. The easies way to use the binaries from github:
+e.g. `https://github.com/protocolbuffers/protobuf/releases/download/v3.1=
0.0/protoc-3.10.0-linux-x86_64.zip`
+and add the binary to the path, e.g. `PATH=3D$PATH:~/path/to/protoc-3.10=
.0-linux-x86_64/bin/`
+
+* `pyyaml` must be installed, e.g. `pip3 install pyyaml`
+
+Currently, only the C++ frontend has beend tested.
+
+Please refer to the `README.md` as well as the documentation in the `doc=
/`
+subdirectory of the main unikraft repository.
--=20
2.20.1



From minios-devel-bounces@lists.xenproject.org Wed Apr 08 00:22:55 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 08 Apr 2020 00:22: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 1jLyUZ-0001iZ-Ct; Wed, 08 Apr 2020 00:22:55 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=hVdw=5Y=upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1jLyUY-0001iE-3q
 for minios-devel@lists.xen.org; Wed, 08 Apr 2020 00:22:54 +0000
X-Inumbo-ID: 13d8ab56-792f-11ea-9e09-bc764e2007e4
Received: from mx.upb.ro (unknown [141.85.13.200])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 13d8ab56-792f-11ea-9e09-bc764e2007e4;
 Wed, 08 Apr 2020 00:22:49 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id DE91DB5625D2;
 Wed,  8 Apr 2020 03:22:48 +0300 (EEST)
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10032)
 with ESMTP id Q6Yb272qc5YV; Wed,  8 Apr 2020 03:22:37 +0300 (EEST)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id A096DB5625DE;
 Wed,  8 Apr 2020 03:22:35 +0300 (EEST)
DKIM-Filter: OpenDKIM Filter v2.10.3 mx.upb.ro A096DB5625DE
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=upb.ro;
 s=96342B8A-77E4-11E5-BA93-D93D0963A2DF; t=1586305355;
 bh=r6cxf1fYiZeYZUS+oxPyQSqUSGPmilDpULA/5QE/vnE=;
 h=From:To:Date:Message-Id:MIME-Version;
 b=tBzqYBrhooyxbZpiz65mRlpL1kFzgNjRpe8aR0YNADebWBF6TAm8X8pxGiPAem7SW
 JPABmCLcY0mxQ6eI5L0kUf2zqhm1wlx6EkUPtCxbOlmCR+4gMXDkhaXpae/8f/uTR6
 ThINCPexsO3Y7Y8SjeVpS7CoT0uuV+rfuI3FUCoM=
X-Virus-Scanned: amavisd-new at upb.ro
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id svTUaqy1iChk; Wed,  8 Apr 2020 03:22:35 +0300 (EEST)
Received: from localhost.localdomain (unknown [86.127.159.73])
 by mx.upb.ro (Postfix) with ESMTPSA id 4F3C3B5625DC;
 Wed,  8 Apr 2020 03:22:35 +0300 (EEST)
From: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
To: minios-devel@lists.xen.org
Subject: [UNIKRAFT/PYTORCH PATCH 4/5] Add includes: config headers and missing
 headers
Date: Wed,  8 Apr 2020 03:22:02 +0300
Message-Id: <20200408002204.31260-8-vlad_andrei.badoiu@upb.ro>
X-Mailer: git-send-email 2.20.1
In-Reply-To: <20200408002204.31260-1-vlad_andrei.badoiu@upb.ro>
References: <20200408002204.31260-1-vlad_andrei.badoiu@upb.ro>
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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, Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Signed-off-by: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
---
 include/aten/src/ATen/Config.h          |   12 +
 include/aten/src/ATen/cuda/CUDAConfig.h |   13 +
 include/aten/src/TH/THGeneral.h         |  166 +++
 include/aten/src/TH/THGeneral.h.in      |  172 +++
 include/bits/fenv.h                     |   18 +
 include/c10/macros/cmake_macros.h       |   22 +
 include/cpuinfo.h                       | 1821 +++++++++++++++++++++++
 include/fenv.h                          |   27 +
 8 files changed, 2251 insertions(+)
 create mode 100644 include/aten/src/ATen/Config.h
 create mode 100644 include/aten/src/ATen/cuda/CUDAConfig.h
 create mode 100644 include/aten/src/TH/THGeneral.h
 create mode 100644 include/aten/src/TH/THGeneral.h.in
 create mode 100644 include/bits/fenv.h
 create mode 100644 include/c10/macros/cmake_macros.h
 create mode 100644 include/cpuinfo.h
 create mode 100644 include/fenv.h

diff --git a/include/aten/src/ATen/Config.h b/include/aten/src/ATen/Confi=
g.h
new file mode 100644
index 0000000..08bba18
--- /dev/null
+++ b/include/aten/src/ATen/Config.h
@@ -0,0 +1,12 @@
+#pragma once
+
+// Test these using #if AT_MKL_ENABLED(), not #ifdef, so that it's
+// obvious if you forgot to include Config.h
+//    c.f. https://stackoverflow.com/questions/33759787/generating-an-er=
ror-if-checked-boolean-macro-is-not-defined
+//
+// DO NOT put the macros for CUDA libraries in this file; they belong in=
 cuda/CUDAConfig.h
+
+#define AT_MKLDNN_ENABLED() 0
+#define AT_MKL_ENABLED() 0
+#define AT_NNPACK_ENABLED() 0
+#define CAFFE2_STATIC_LINK_CUDA() 0
diff --git a/include/aten/src/ATen/cuda/CUDAConfig.h b/include/aten/src/A=
Ten/cuda/CUDAConfig.h
new file mode 100644
index 0000000..ca23913
--- /dev/null
+++ b/include/aten/src/ATen/cuda/CUDAConfig.h
@@ -0,0 +1,13 @@
+#pragma once
+
+// Test these using #if AT_CUDNN_ENABLED(), not #ifdef, so that it's
+// obvious if you forgot to include Config.h
+//    c.f. https://stackoverflow.com/questions/33759787/generating-an-er=
ror-if-checked-boolean-macro-is-not-defined
+//
+// NB: This header MUST NOT be included from other headers; it should
+// only be included from C++ files.
+
+#define AT_CUDNN_ENABLED() 0
+#define AT_ROCM_ENABLED() 0
+
+#define NVCC_FLAGS_EXTRA ""
diff --git a/include/aten/src/TH/THGeneral.h b/include/aten/src/TH/THGene=
ral.h
new file mode 100644
index 0000000..6923bcb
--- /dev/null
+++ b/include/aten/src/TH/THGeneral.h
@@ -0,0 +1,166 @@
+#ifndef TH_GENERAL_INC
+#define TH_GENERAL_INC
+
+#ifndef __STDC_FORMAT_MACROS
+#define __STDC_FORMAT_MACROS
+#endif
+
+#include <stdint.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <stdarg.h>
+#include <math.h>
+#include <limits.h>
+#include <float.h>
+#include <time.h>
+#include <string.h>
+#include <stddef.h>
+#include <inttypes.h>
+
+#ifdef TH_BLAS_MKL
+#include <mkl_vsl.h>
+#endif
+
+/* #undef USE_BLAS */
+/* #undef USE_LAPACK */
+/* #undef BLAS_F2C */
+/* #undef BLAS_USE_CBLAS_DOT */
+
+# define TH_EXTERNC extern "C"
+
+// Note(jiayq): copied from ATen/core/Macros.h. Because internal build o=
f TH
+// and ATen are not unified yet, we need to duplicate code for now. Long=
 term
+// we should merge macros.
+#ifdef _WIN32
+#if !defined(AT_CORE_STATIC_WINDOWS)
+// TODO: unify the controlling macros.
+#if defined(CAFFE2_BUILD_MAIN_LIBS) || defined(ATen_cpu_EXPORTS) || defi=
ned(caffe2_EXPORTS)
+#define TH_CPP_API __declspec(dllexport)
+#else // defined(CAFFE2_BUILD_MAIN_LIBS) || defined(ATen_cpu_EXPORTS) ||=
 defined(caffe2_EXPORTS)
+#define TH_CPP_API __declspec(dllimport)
+#endif // defined(CAFFE2_BUILD_MAIN_LIBS) || defined(ATen_cpu_EXPORTS) |=
| defined(caffe2_EXPORTS)
+#else // !defined(AT_CORE_STATIC_WINDOWS)
+#define TH_CPP_API
+#endif // !defined(AT_CORE_STATIC_WINDOWS)
+#else  // _WIN32
+#if defined(__GNUC__)
+#define TH_CPP_API __attribute__((__visibility__("default")))
+#endif // defined(__GNUC__)
+#endif  // _WIN32
+
+#ifdef NO_EXPORT
+#undef TH_CPP_API
+#define TH_CPP_API
+#endif
+
+#define TH_API TH_EXTERNC TH_CPP_API
+
+#ifdef _WIN32
+# define TH_NO_RETURN __declspec(noreturn)
+# define TH_UNREACHABLE
+#else
+# define TH_NO_RETURN __attribute__((noreturn))
+# define TH_UNREACHABLE __builtin_unreachable();
+#endif
+
+#if defined(__GNUC__) && ((__GNUC__ > 2) || (__GNUC__ =3D=3D 2 && __GNUC=
_MINOR__ > 4))
+# define TH_UNUSED __attribute__((unused))
+#else
+# define TH_UNUSED
+#endif
+
+#ifndef M_PI
+# define M_PI 3.14159265358979323846
+#endif
+
+typedef void (*THErrorHandlerFunction)(const char *msg, void *data);
+typedef void (*THArgErrorHandlerFunction)(int argNumber, const char *msg=
, void *data);
+
+#define TH_DESC_BUFF_LEN 64
+typedef struct {
+    char str[TH_DESC_BUFF_LEN];
+} THDescBuff;
+
+
+TH_API THDescBuff _THSizeDesc(const int64_t *size, const int64_t ndim);
+TH_API TH_NO_RETURN void _THError(const char *file, const int line, cons=
t char *fmt, ...);
+TH_API void _THAssertionFailed(const char *file, const int line, const c=
har *exp, const char *fmt, ...);
+TH_API void THSetErrorHandler(THErrorHandlerFunction new_handler, void *=
data);
+TH_API void THSetDefaultErrorHandler(THErrorHandlerFunction new_handler,=
 void *data);
+TH_API void _THArgCheck(const char *file, int line, int condition, int a=
rgNumber, const char *fmt, ...);
+TH_API void THSetArgErrorHandler(THArgErrorHandlerFunction new_handler, =
void *data);
+TH_API void THSetDefaultArgErrorHandler(THArgErrorHandlerFunction new_ha=
ndler, void *data);
+TH_API void* THAlloc(ptrdiff_t size);
+TH_API void* THRealloc(void *ptr, ptrdiff_t size);
+TH_API void THFree(void *ptr);
+TH_API void THSetGCHandler( void (*torchGCHandlerFunction)(void *data), =
void *data );
+// this hook should only be called by custom allocator functions
+TH_API void THHeapUpdate(ptrdiff_t size);
+
+#define THError(...) _THError(__FILE__, __LINE__, __VA_ARGS__)
+
+#define THCleanup(...) __VA_ARGS__
+
+#define THArgCheck(...)                                               \
+do {                                                                  \
+  _THArgCheck(__FILE__, __LINE__, __VA_ARGS__);                       \
+} while(0)
+
+#define THArgError(...)                                               \
+do {                                                                  \
+  _THArgCheck(__FILE__, __LINE__, false, __VA_ARGS__);                \
+  TH_UNREACHABLE                                                      \
+} while(0)
+
+#define THArgCheckWithCleanup(condition, cleanup, ...)                \
+do if (!(condition)) {                                                \
+  cleanup                                                             \
+  _THArgCheck(__FILE__, __LINE__, 0, __VA_ARGS__);                    \
+} while(0)
+
+#define THAssert(exp)                                                 \
+do {                                                                  \
+  if (!(exp)) {                                                       \
+    _THAssertionFailed(__FILE__, __LINE__, #exp, "");                 \
+  }                                                                   \
+} while(0)
+
+#define THAssertMsg(exp, ...)                                         \
+do {                                                                  \
+  if (!(exp)) {                                                       \
+    _THAssertionFailed(__FILE__, __LINE__, #exp, __VA_ARGS__);        \
+  }                                                                   \
+} while(0)
+
+#define TH_CONCAT_STRING_2(x,y) TH_CONCAT_STRING_2_EXPAND(x,y)
+#define TH_CONCAT_STRING_2_EXPAND(x,y) #x #y
+
+#define TH_CONCAT_STRING_3(x,y,z) TH_CONCAT_STRING_3_EXPAND(x,y,z)
+#define TH_CONCAT_STRING_3_EXPAND(x,y,z) #x #y #z
+
+#define TH_CONCAT_STRING_4(x,y,z,w) TH_CONCAT_STRING_4_EXPAND(x,y,z,w)
+#define TH_CONCAT_STRING_4_EXPAND(x,y,z,w) #x #y #z #w
+
+#define TH_CONCAT_2(x,y) TH_CONCAT_2_EXPAND(x,y)
+#define TH_CONCAT_2_EXPAND(x,y) x ## y
+
+#define TH_CONCAT_3(x,y,z) TH_CONCAT_3_EXPAND(x,y,z)
+#define TH_CONCAT_3_EXPAND(x,y,z) x ## y ## z
+
+#define TH_CONCAT_4_EXPAND(x,y,z,w) x ## y ## z ## w
+#define TH_CONCAT_4(x,y,z,w) TH_CONCAT_4_EXPAND(x,y,z,w)
+
+#define THMin(X, Y)  ((X) < (Y) ? (X) : (Y))
+#define THMax(X, Y)  ((X) > (Y) ? (X) : (Y))
+
+#if (defined(_MSC_VER) || defined(__MINGW32__))
+#define snprintf _snprintf
+#define popen _popen
+#define pclose _pclose
+#include <BaseTsd.h>
+#if !defined(HAVE_SSIZE_T)
+typedef SSIZE_T ssize_t;
+#endif
+#endif
+
+#endif
diff --git a/include/aten/src/TH/THGeneral.h.in b/include/aten/src/TH/THG=
eneral.h.in
new file mode 100644
index 0000000..9597581
--- /dev/null
+++ b/include/aten/src/TH/THGeneral.h.in
@@ -0,0 +1,172 @@
+#ifndef TH_GENERAL_INC
+#define TH_GENERAL_INC
+
+#ifndef __STDC_FORMAT_MACROS
+#define __STDC_FORMAT_MACROS
+#endif
+
+#include <stdint.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <stdarg.h>
+#include <math.h>
+#include <limits.h>
+#include <float.h>
+#include <time.h>
+#include <string.h>
+#include <stddef.h>
+#include <inttypes.h>
+
+#ifdef TH_BLAS_MKL
+#include <mkl_vsl.h>
+#endif
+
+#cmakedefine USE_BLAS
+#cmakedefine USE_LAPACK
+#cmakedefine BLAS_F2C
+#cmakedefine BLAS_USE_CBLAS_DOT
+
+# define TH_EXTERNC extern "C"
+
+// Note(jiayq): copied from ATen/core/Macros.h. Because internal build o=
f TH
+// and ATen are not unified yet, we need to duplicate code for now. Long=
 term
+// we should merge macros.
+#ifdef _WIN32
+#if !defined(AT_CORE_STATIC_WINDOWS)
+// TODO: unfiy the controlling macros.
+#if defined(CAFFE2_BUILD_MAIN_LIBS) || defined(ATen_cpu_EXPORTS) || defi=
ned(caffe2_EXPORTS)
+#define TH_CPP_API __declspec(dllexport)
+#else // defined(CAFFE2_BUILD_MAIN_LIBS) || defined(ATen_cpu_EXPORTS) ||=
 defined(caffe2_EXPORTS)
+#define TH_CPP_API __declspec(dllimport)
+#endif // defined(CAFFE2_BUILD_MAIN_LIBS) || defined(ATen_cpu_EXPORTS) |=
| defined(caffe2_EXPORTS)
+#else // !defined(AT_CORE_STATIC_WINDOWS)
+#define TH_CPP_API
+#endif // !defined(AT_CORE_STATIC_WINDOWS)
+#else  // _WIN32
+#if defined(__GNUC__)
+#define TH_CPP_API __attribute__((__visibility__("default")))
+#endif // defined(__GNUC__)
+#endif  // _WIN32
+
+#ifdef NO_EXPORT
+#undef TH_CPP_API
+#define TH_CPP_API
+#endif
+
+#define TH_API TH_EXTERNC TH_CPP_API
+
+#ifdef _WIN32
+# define TH_NO_RETURN __declspec(noreturn)
+# define TH_UNREACHABLE
+#else
+# define TH_NO_RETURN __attribute__((noreturn))
+# define TH_UNREACHABLE __builtin_unreachable();
+#endif
+
+#if defined(__GNUC__) && ((__GNUC__ > 2) || (__GNUC__ =3D=3D 2 && __GNUC=
_MINOR__ > 4))
+# define TH_UNUSED __attribute__((unused))
+#else
+# define TH_UNUSED
+#endif
+
+#if defined(__clang__)
+#define __ubsan_ignore_float_divide_by_zero__ __attribute__((no_sanitize=
("float-divide-by-zero")))
+#else
+#define __ubsan_ignore_float_divide_by_zero__
+#endif
+
+#ifndef M_PI
+# define M_PI 3.14159265358979323846
+#endif
+
+typedef void (*THErrorHandlerFunction)(const char *msg, void *data);
+typedef void (*THArgErrorHandlerFunction)(int argNumber, const char *msg=
, void *data);
+
+#define TH_DESC_BUFF_LEN 64
+typedef struct {
+    char str[TH_DESC_BUFF_LEN];
+} THDescBuff;
+
+
+TH_API THDescBuff _THSizeDesc(const int64_t *size, const int64_t ndim);
+TH_API TH_NO_RETURN void _THError(const char *file, const int line, cons=
t char *fmt, ...);
+TH_API void _THAssertionFailed(const char *file, const int line, const c=
har *exp, const char *fmt, ...);
+TH_API void THSetErrorHandler(THErrorHandlerFunction new_handler, void *=
data);
+TH_API void THSetDefaultErrorHandler(THErrorHandlerFunction new_handler,=
 void *data);
+TH_API void _THArgCheck(const char *file, int line, int condition, int a=
rgNumber, const char *fmt, ...);
+TH_API void THSetArgErrorHandler(THArgErrorHandlerFunction new_handler, =
void *data);
+TH_API void THSetDefaultArgErrorHandler(THArgErrorHandlerFunction new_ha=
ndler, void *data);
+TH_API void* THAlloc(ptrdiff_t size);
+TH_API void* THRealloc(void *ptr, ptrdiff_t size);
+TH_API void THFree(void *ptr);
+TH_API void THSetGCHandler( void (*torchGCHandlerFunction)(void *data), =
void *data );
+// this hook should only be called by custom allocator functions
+TH_API void THHeapUpdate(ptrdiff_t size);
+
+#define THError(...) _THError(__FILE__, __LINE__, __VA_ARGS__)
+
+#define THCleanup(...) __VA_ARGS__
+
+#define THArgCheck(...)                                               \
+do {                                                                  \
+  _THArgCheck(__FILE__, __LINE__, __VA_ARGS__);                       \
+} while(0)
+
+#define THArgError(...)                                               \
+do {                                                                  \
+  _THArgCheck(__FILE__, __LINE__, false, __VA_ARGS__);                \
+  TH_UNREACHABLE                                                      \
+} while(0)
+
+#define THArgCheckWithCleanup(condition, cleanup, ...)                \
+do if (!(condition)) {                                                \
+  cleanup                                                             \
+  _THArgCheck(__FILE__, __LINE__, 0, __VA_ARGS__);                    \
+} while(0)
+
+#define THAssert(exp)                                                 \
+do {                                                                  \
+  if (!(exp)) {                                                       \
+    _THAssertionFailed(__FILE__, __LINE__, #exp, "");                 \
+  }                                                                   \
+} while(0)
+
+#define THAssertMsg(exp, ...)                                         \
+do {                                                                  \
+  if (!(exp)) {                                                       \
+    _THAssertionFailed(__FILE__, __LINE__, #exp, __VA_ARGS__);        \
+  }                                                                   \
+} while(0)
+
+#define TH_CONCAT_STRING_2(x,y) TH_CONCAT_STRING_2_EXPAND(x,y)
+#define TH_CONCAT_STRING_2_EXPAND(x,y) #x #y
+
+#define TH_CONCAT_STRING_3(x,y,z) TH_CONCAT_STRING_3_EXPAND(x,y,z)
+#define TH_CONCAT_STRING_3_EXPAND(x,y,z) #x #y #z
+
+#define TH_CONCAT_STRING_4(x,y,z,w) TH_CONCAT_STRING_4_EXPAND(x,y,z,w)
+#define TH_CONCAT_STRING_4_EXPAND(x,y,z,w) #x #y #z #w
+
+#define TH_CONCAT_2(x,y) TH_CONCAT_2_EXPAND(x,y)
+#define TH_CONCAT_2_EXPAND(x,y) x ## y
+
+#define TH_CONCAT_3(x,y,z) TH_CONCAT_3_EXPAND(x,y,z)
+#define TH_CONCAT_3_EXPAND(x,y,z) x ## y ## z
+
+#define TH_CONCAT_4_EXPAND(x,y,z,w) x ## y ## z ## w
+#define TH_CONCAT_4(x,y,z,w) TH_CONCAT_4_EXPAND(x,y,z,w)
+
+#define THMin(X, Y)  ((X) < (Y) ? (X) : (Y))
+#define THMax(X, Y)  ((X) > (Y) ? (X) : (Y))
+
+#if (defined(_MSC_VER) || defined(__MINGW32__))
+#define snprintf _snprintf
+#define popen _popen
+#define pclose _pclose
+#include <BaseTsd.h>
+#if !defined(HAVE_SSIZE_T)
+typedef SSIZE_T ssize_t;
+#endif
+#endif
+
+#endif
diff --git a/include/bits/fenv.h b/include/bits/fenv.h
new file mode 100644
index 0000000..c113b7c
--- /dev/null
+++ b/include/bits/fenv.h
@@ -0,0 +1,18 @@
+#define FE_INVALID    1
+#define FE_DIVBYZERO  2
+#define FE_OVERFLOW   4
+#define FE_UNDERFLOW  8
+#define FE_INEXACT    16
+#define FE_ALL_EXCEPT 31
+#define FE_TONEAREST  0
+#define FE_DOWNWARD   0x800000
+#define FE_UPWARD     0x400000
+#define FE_TOWARDZERO 0xc00000
+
+typedef unsigned long fexcept_t;
+
+typedef struct {
+	unsigned long __cw;
+} fenv_t;
+
+#define FE_DFL_ENV      ((const fenv_t *) -1)
diff --git a/include/c10/macros/cmake_macros.h b/include/c10/macros/cmake=
_macros.h
new file mode 100644
index 0000000..837195f
--- /dev/null
+++ b/include/c10/macros/cmake_macros.h
@@ -0,0 +1,22 @@
+#ifndef C10_MACROS_CMAKE_MACROS_H_
+#define C10_MACROS_CMAKE_MACROS_H_
+
+// Automatically generated header file for the C10 library.
+// Do not include this file directly. Instead, include c10/macros/Macros=
.h.
+
+// #define C10_BUILD_SHARED_LIBS
+/* #undef C10_USE_GLOG */
+/* #undef C10_USE_GFLAGS */
+/* #undef C10_USE_NUMA */
+
+// Used by libtorch mobile build to enable features that are not enabled=
 by
+// caffe2 mobile build. Should only use it when necessary as we are comm=
itted
+// to converging libtorch and caffe2 mobile builds and removing it event=
ually.
+/* #undef FEATURE_TORCH_MOBILE */
+
+// If defined it will use static dispatch for ATen operators.
+// Should expose this macro for projects including ATen headers to inher=
ient
+// the same option.
+/* #undef USE_STATIC_DISPATCH */
+
+#endif // C10_MACROS_CMAKE_MACROS_H_
diff --git a/include/cpuinfo.h b/include/cpuinfo.h
new file mode 100644
index 0000000..fc0abcf
--- /dev/null
+++ b/include/cpuinfo.h
@@ -0,0 +1,1821 @@
+/*
+ Copyright (c) 2017-2018 Facebook Inc.
+ Copyright (C) 2012-2017 Georgia Institute of Technology
+ Copyright (C) 2010-2012 Marat Dukhan
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are =
met:
+
+ * Redistributions of source code must retain the above copyright notice=
, this
+   list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright not=
ice,
+   this list of conditions and the following disclaimer in the documenta=
tion
+   and/or other materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS=
 IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, T=
HE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURP=
OSE ARE
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE L=
IABLE
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENT=
IAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS=
 OR
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWE=
VER
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIAB=
ILITY,
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF T=
HE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#pragma once
+#ifndef CPUINFO_H
+#define CPUINFO_H
+
+#ifndef __cplusplus
+	#include <stdbool.h>
+#endif
+
+#ifdef __APPLE__
+	#include <TargetConditionals.h>
+#endif
+
+#include <stdint.h>
+
+/* Identify architecture and define corresponding macro */
+
+#if defined(__i386__) || defined(__i486__) || defined(__i586__) || defin=
ed(__i686__) || defined(_M_IX86)
+	#define CPUINFO_ARCH_X86 1
+#endif
+
+#if defined(__x86_64__) || defined(__x86_64) || defined(_M_X64) || defin=
ed(_M_AMD64)
+	#define CPUINFO_ARCH_X86_64 1
+#endif
+
+#if defined(__arm__) || defined(_M_ARM)
+	#define CPUINFO_ARCH_ARM 1
+#endif
+
+#if defined(__aarch64__) || defined(_M_ARM64)
+	#define CPUINFO_ARCH_ARM64 1
+#endif
+
+#if defined(__PPC64__) || defined(__powerpc64__) || defined(_ARCH_PPC64)
+	#define CPUINFO_ARCH_PPC64 1
+#endif
+
+#if defined(__pnacl__)
+	#define CPUINFO_ARCH_PNACL 1
+#endif
+
+#if defined(EMSCRIPTEN)
+	#define CPUINFO_ARCH_ASMJS 1
+#endif
+
+#if CPUINFO_ARCH_X86 && defined(_MSC_VER)
+	#define CPUINFO_ABI __cdecl
+#elif CPUINFO_ARCH_X86 && defined(__GNUC__)
+	#define CPUINFO_ABI __attribute__((__cdecl__))
+#else
+	#define CPUINFO_ABI
+#endif
+
+/* Define other architecture-specific macros as 0 */
+
+#ifndef CPUINFO_ARCH_X86
+	#define CPUINFO_ARCH_X86 0
+#endif
+
+#ifndef CPUINFO_ARCH_X86_64
+	#define CPUINFO_ARCH_X86_64 0
+#endif
+
+#ifndef CPUINFO_ARCH_ARM
+	#define CPUINFO_ARCH_ARM 0
+#endif
+
+#ifndef CPUINFO_ARCH_ARM64
+	#define CPUINFO_ARCH_ARM64 0
+#endif
+
+#ifndef CPUINFO_ARCH_PPC64
+	#define CPUINFO_ARCH_PPC64 0
+#endif
+
+#ifndef CPUINFO_ARCH_PNACL
+	#define CPUINFO_ARCH_PNACL 0
+#endif
+
+#ifndef CPUINFO_ARCH_ASMJS
+	#define CPUINFO_ARCH_ASMJS 0
+#endif
+
+#define CPUINFO_CACHE_UNIFIED          0x00000001
+#define CPUINFO_CACHE_INCLUSIVE        0x00000002
+#define CPUINFO_CACHE_COMPLEX_INDEXING 0x00000004
+
+struct cpuinfo_cache {
+	/** Cache size in bytes */
+	uint32_t size;
+	/** Number of ways of associativity */
+	uint32_t associativity;
+	/** Number of sets */
+	uint32_t sets;
+	/** Number of partitions */
+	uint32_t partitions;
+	/** Line size in bytes */
+	uint32_t line_size;
+	/**
+	 * Binary characteristics of the cache (unified cache, inclusive cache,=
 cache with complex indexing).
+	 *
+	 * @see CPUINFO_CACHE_UNIFIED, CPUINFO_CACHE_INCLUSIVE, CPUINFO_CACHE_C=
OMPLEX_INDEXING
+	 */
+	uint32_t flags;
+	/** Index of the first logical processor that shares this cache */
+	uint32_t processor_start;
+	/** Number of logical processors that share this cache */
+	uint32_t processor_count;
+};
+
+struct cpuinfo_trace_cache {
+	uint32_t uops;
+	uint32_t associativity;
+};
+
+#define CPUINFO_PAGE_SIZE_4KB  0x1000
+#define CPUINFO_PAGE_SIZE_1MB  0x100000
+#define CPUINFO_PAGE_SIZE_2MB  0x200000
+#define CPUINFO_PAGE_SIZE_4MB  0x400000
+#define CPUINFO_PAGE_SIZE_16MB 0x1000000
+#define CPUINFO_PAGE_SIZE_1GB  0x40000000
+
+struct cpuinfo_tlb {
+	uint32_t entries;
+	uint32_t associativity;
+	uint64_t pages;
+};
+
+/** Vendor of processor core design */
+enum cpuinfo_vendor {
+	/** Processor vendor is not known to the library, or the library failed=
 to get vendor information from the OS. */
+	cpuinfo_vendor_unknown =3D 0,
+
+	/* Active vendors of modern CPUs */
+
+	/**
+	 * Intel Corporation. Vendor of x86, x86-64, IA64, and ARM processor mi=
croarchitectures.
+	 *
+	 * Sold its ARM design subsidiary in 2006. The last ARM processor desig=
n was released in 2004.
+	 */
+	cpuinfo_vendor_intel    =3D 1,
+	/** Advanced Micro Devices, Inc. Vendor of x86 and x86-64 processor mic=
roarchitectures. */
+	cpuinfo_vendor_amd      =3D 2,
+	/** ARM Holdings plc. Vendor of ARM and ARM64 processor microarchitectu=
res. */
+	cpuinfo_vendor_arm      =3D 3,
+	/** Qualcomm Incorporated. Vendor of ARM and ARM64 processor microarchi=
tectures. */
+	cpuinfo_vendor_qualcomm =3D 4,
+	/** Apple Inc. Vendor of ARM and ARM64 processor microarchitectures. */
+	cpuinfo_vendor_apple    =3D 5,
+	/** Samsung Electronics Co., Ltd. Vendir if ARM64 processor microarchit=
ectures. */
+	cpuinfo_vendor_samsung  =3D 6,
+	/** Nvidia Corporation. Vendor of ARM64-compatible processor microarchi=
tectures. */
+	cpuinfo_vendor_nvidia   =3D 7,
+	/** MIPS Technologies, Inc. Vendor of MIPS processor microarchitectures=
. */
+	cpuinfo_vendor_mips     =3D 8,
+	/** International Business Machines Corporation. Vendor of PowerPC proc=
essor microarchitectures. */
+	cpuinfo_vendor_ibm      =3D 9,
+	/** Ingenic Semiconductor. Vendor of MIPS processor microarchitectures.=
 */
+	cpuinfo_vendor_ingenic  =3D 10,
+	/**
+	 * VIA Technologies, Inc. Vendor of x86 and x86-64 processor microarchi=
tectures.
+	 *
+	 * Processors are designed by Centaur Technology, a subsidiary of VIA T=
echnologies.
+	 */
+	cpuinfo_vendor_via      =3D 11,
+	/** Cavium, Inc. Vendor of ARM64 processor microarchitectures. */
+	cpuinfo_vendor_cavium   =3D 12,
+	/** Broadcom, Inc. Vendor of ARM processor microarchitectures. */
+	cpuinfo_vendor_broadcom =3D 13,
+	/** Applied Micro Circuits Corporation (APM). Vendor of ARM64 processor=
 microarchitectures. */
+	cpuinfo_vendor_apm      =3D 14,
+	/**
+	 * Huawei Technologies Co., Ltd. Vendor of ARM64 processor microarchite=
ctures.
+	 *
+	 * Processors are designed by HiSilicon, a subsidiary of Huawei.
+	 */
+	cpuinfo_vendor_huawei   =3D 15,
+
+	/* Active vendors of embedded CPUs */
+
+	/** Texas Instruments Inc. Vendor of ARM processor microarchitectures. =
*/
+	cpuinfo_vendor_texas_instruments =3D 30,
+	/** Marvell Technology Group Ltd. Vendor of ARM processor microarchitec=
tures. */
+	cpuinfo_vendor_marvell           =3D 31,
+	/** RDC Semiconductor Co., Ltd. Vendor of x86 processor microarchitectu=
res. */
+	cpuinfo_vendor_rdc               =3D 32,
+	/** DM&P Electronics Inc. Vendor of x86 processor microarchitectures. *=
/
+	cpuinfo_vendor_dmp               =3D 33,
+	/** Motorola, Inc. Vendor of PowerPC and ARM processor microarchitectur=
es. */
+	cpuinfo_vendor_motorola          =3D 34,
+
+	/* Defunct CPU vendors */
+
+	/**
+	 * Transmeta Corporation. Vendor of x86 processor microarchitectures.
+	 *
+	 * Now defunct. The last processor design was released in 2004.
+	 * Transmeta processors implemented VLIW ISA and used binary translatio=
n to execute x86 code.
+	 */
+	cpuinfo_vendor_transmeta =3D 50,
+	/**
+	 * Cyrix Corporation. Vendor of x86 processor microarchitectures.
+	 *
+	 * Now defunct. The last processor design was released in 1996.
+	 */
+	cpuinfo_vendor_cyrix     =3D 51,
+	/**
+	 * Rise Technology. Vendor of x86 processor microarchitectures.
+	 *
+	 * Now defunct. The last processor design was released in 1999.
+	 */
+	cpuinfo_vendor_rise      =3D 52,
+	/**
+	 * National Semiconductor. Vendor of x86 processor microarchitectures.
+	 *
+	 * Sold its x86 design subsidiary in 1999. The last processor design wa=
s released in 1998.
+	 */
+	cpuinfo_vendor_nsc       =3D 53,
+	/**
+	 * Silicon Integrated Systems. Vendor of x86 processor microarchitectur=
es.
+	 *
+	 * Sold its x86 design subsidiary in 2001. The last processor design wa=
s released in 2001.
+	 */
+	cpuinfo_vendor_sis       =3D 54,
+	/**
+	 * NexGen. Vendor of x86 processor microarchitectures.
+	 *
+	 * Now defunct. The last processor design was released in 1994.
+	 * NexGen designed the first x86 microarchitecture which decomposed x86=
 instructions into simple microoperations.
+	 */
+	cpuinfo_vendor_nexgen    =3D 55,
+	/**
+	 * United Microelectronics Corporation. Vendor of x86 processor microar=
chitectures.
+	 *
+	 * Ceased x86 in the early 1990s. The last processor design was release=
d in 1991.
+	 * Designed U5C and U5D processors. Both are 486 level.
+	 */
+	cpuinfo_vendor_umc       =3D 56,
+	/**
+	 * Digital Equipment Corporation. Vendor of ARM processor microarchitec=
ture.
+	 *
+	 * Sold its ARM designs in 1997. The last processor design was released=
 in 1997.
+	 */
+	cpuinfo_vendor_dec       =3D 57,
+};
+
+/**
+ * Processor microarchitecture
+ *
+ * Processors with different microarchitectures often have different ins=
truction performance characteristics,
+ * and may have dramatically different pipeline organization.
+ */
+enum cpuinfo_uarch {
+	/** Microarchitecture is unknown, or the library failed to get informat=
ion about the microarchitecture from OS */
+	cpuinfo_uarch_unknown =3D 0,
+
+	/** Pentium and Pentium MMX microarchitecture. */
+	cpuinfo_uarch_p5    =3D 0x00100100,
+	/** Intel Quark microarchitecture. */
+	cpuinfo_uarch_quark =3D 0x00100101,
+
+	/** Pentium Pro, Pentium II, and Pentium III. */
+	cpuinfo_uarch_p6           =3D 0x00100200,
+	/** Pentium M. */
+	cpuinfo_uarch_dothan       =3D 0x00100201,
+	/** Intel Core microarchitecture. */
+	cpuinfo_uarch_yonah        =3D 0x00100202,
+	/** Intel Core 2 microarchitecture on 65 nm process. */
+	cpuinfo_uarch_conroe       =3D 0x00100203,
+	/** Intel Core 2 microarchitecture on 45 nm process. */
+	cpuinfo_uarch_penryn       =3D 0x00100204,
+	/** Intel Nehalem and Westmere microarchitectures (Core i3/i5/i7 1st ge=
n). */
+	cpuinfo_uarch_nehalem      =3D 0x00100205,
+	/** Intel Sandy Bridge microarchitecture (Core i3/i5/i7 2nd gen). */
+	cpuinfo_uarch_sandy_bridge =3D 0x00100206,
+	/** Intel Ivy Bridge microarchitecture (Core i3/i5/i7 3rd gen). */
+	cpuinfo_uarch_ivy_bridge   =3D 0x00100207,
+	/** Intel Haswell microarchitecture (Core i3/i5/i7 4th gen). */
+	cpuinfo_uarch_haswell      =3D 0x00100208,
+	/** Intel Broadwell microarchitecture. */
+	cpuinfo_uarch_broadwell    =3D 0x00100209,
+	/** Intel Sky Lake microarchitecture. */
+	cpuinfo_uarch_sky_lake     =3D 0x0010020A,
+	/** Intel Kaby Lake microarchitecture. */
+	cpuinfo_uarch_kaby_lake    =3D 0x0010020B,
+
+	/** Pentium 4 with Willamette, Northwood, or Foster cores. */
+	cpuinfo_uarch_willamette =3D 0x00100300,
+	/** Pentium 4 with Prescott and later cores. */
+	cpuinfo_uarch_prescott   =3D 0x00100301,
+
+	/** Intel Atom on 45 nm process. */
+	cpuinfo_uarch_bonnell    =3D 0x00100400,
+	/** Intel Atom on 32 nm process. */
+	cpuinfo_uarch_saltwell   =3D 0x00100401,
+	/** Intel Silvermont microarchitecture (22 nm out-of-order Atom). */
+	cpuinfo_uarch_silvermont =3D 0x00100402,
+	/** Intel Airmont microarchitecture (14 nm out-of-order Atom). */
+	cpuinfo_uarch_airmont    =3D 0x00100403,
+
+	/** Intel Knights Ferry HPC boards. */
+	cpuinfo_uarch_knights_ferry   =3D 0x00100500,
+	/** Intel Knights Corner HPC boards (aka Xeon Phi). */
+	cpuinfo_uarch_knights_corner  =3D 0x00100501,
+	/** Intel Knights Landing microarchitecture (second-gen MIC). */
+	cpuinfo_uarch_knights_landing =3D 0x00100502,
+	/** Intel Knights Hill microarchitecture (third-gen MIC). */
+	cpuinfo_uarch_knights_hill    =3D 0x00100503,
+	/** Intel Knights Mill Xeon Phi. */
+	cpuinfo_uarch_knights_mill    =3D 0x00100504,
+
+	/** Intel/Marvell XScale series. */
+	cpuinfo_uarch_xscale =3D 0x00100600,
+
+	/** AMD K5. */
+	cpuinfo_uarch_k5        =3D 0x00200100,
+	/** AMD K6 and alike. */
+	cpuinfo_uarch_k6        =3D 0x00200101,
+	/** AMD Athlon and Duron. */
+	cpuinfo_uarch_k7        =3D 0x00200102,
+	/** AMD Athlon 64, Opteron 64. */
+	cpuinfo_uarch_k8        =3D 0x00200103,
+	/** AMD Family 10h (Barcelona, Istambul, Magny-Cours). */
+	cpuinfo_uarch_k10       =3D 0x00200104,
+	/**
+	 * AMD Bulldozer microarchitecture
+	 * Zambezi FX-series CPUs, Zurich, Valencia and Interlagos Opteron CPUs=
.
+	 */
+	cpuinfo_uarch_bulldozer =3D 0x00200105,
+	/**
+	 * AMD Piledriver microarchitecture
+	 * Vishera FX-series CPUs, Trinity and Richland APUs, Delhi, Seoul, Abu=
 Dhabi Opteron CPUs.
+	 */
+	cpuinfo_uarch_piledriver  =3D 0x00200106,
+	/** AMD Steamroller microarchitecture (Kaveri APUs). */
+	cpuinfo_uarch_steamroller =3D 0x00200107,
+	/** AMD Excavator microarchitecture (Carizzo APUs). */
+	cpuinfo_uarch_excavator   =3D 0x00200108,
+	/** AMD Zen microarchitecture (Ryzen CPUs). */
+	cpuinfo_uarch_zen         =3D 0x00200109,
+
+	/** NSC Geode and AMD Geode GX and LX. */
+	cpuinfo_uarch_geode  =3D 0x00200200,
+	/** AMD Bobcat mobile microarchitecture. */
+	cpuinfo_uarch_bobcat =3D 0x00200201,
+	/** AMD Jaguar mobile microarchitecture. */
+	cpuinfo_uarch_jaguar =3D 0x00200202,
+	/** AMD Puma mobile microarchitecture. */
+	cpuinfo_uarch_puma   =3D 0x00200203,
+
+	/** ARM7 series. */
+	cpuinfo_uarch_arm7  =3D 0x00300100,
+	/** ARM9 series. */
+	cpuinfo_uarch_arm9  =3D 0x00300101,
+	/** ARM 1136, ARM 1156, ARM 1176, or ARM 11MPCore. */
+	cpuinfo_uarch_arm11 =3D 0x00300102,
+
+	/** ARM Cortex-A5. */
+	cpuinfo_uarch_cortex_a5  =3D 0x00300205,
+	/** ARM Cortex-A7. */
+	cpuinfo_uarch_cortex_a7  =3D 0x00300207,
+	/** ARM Cortex-A8. */
+	cpuinfo_uarch_cortex_a8  =3D 0x00300208,
+	/** ARM Cortex-A9. */
+	cpuinfo_uarch_cortex_a9  =3D 0x00300209,
+	/** ARM Cortex-A12. */
+	cpuinfo_uarch_cortex_a12 =3D 0x00300212,
+	/** ARM Cortex-A15. */
+	cpuinfo_uarch_cortex_a15 =3D 0x00300215,
+	/** ARM Cortex-A17. */
+	cpuinfo_uarch_cortex_a17 =3D 0x00300217,
+
+	/** ARM Cortex-A32. */
+	cpuinfo_uarch_cortex_a32 =3D 0x00300332,
+	/** ARM Cortex-A35. */
+	cpuinfo_uarch_cortex_a35 =3D 0x00300335,
+	/** ARM Cortex-A53. */
+	cpuinfo_uarch_cortex_a53 =3D 0x00300353,
+	/** ARM Cortex-A55. */
+	cpuinfo_uarch_cortex_a55 =3D 0x00300355,
+	/** ARM Cortex-A57. */
+	cpuinfo_uarch_cortex_a57 =3D 0x00300357,
+	/** ARM Cortex-A72. */
+	cpuinfo_uarch_cortex_a72 =3D 0x00300372,
+	/** ARM Cortex-A73. */
+	cpuinfo_uarch_cortex_a73 =3D 0x00300373,
+	/** ARM Cortex-A75. */
+	cpuinfo_uarch_cortex_a75 =3D 0x00300375,
+	/** ARM Cortex-A76. */
+	cpuinfo_uarch_cortex_a76 =3D 0x00300376,
+
+	/** Qualcomm Scorpion. */
+	cpuinfo_uarch_scorpion =3D 0x00400100,
+	/** Qualcomm Krait. */
+	cpuinfo_uarch_krait    =3D 0x00400101,
+	/** Qualcomm Kryo. */
+	cpuinfo_uarch_kryo     =3D 0x00400102,
+	/** Qualcomm Falkor. */
+	cpuinfo_uarch_falkor   =3D 0x00400103,
+	/** Qualcomm Saphira. */
+	cpuinfo_uarch_saphira  =3D 0x00400104,
+
+	/** Nvidia Denver. */
+	cpuinfo_uarch_denver   =3D 0x00500100,
+	/** Nvidia Denver 2. */
+	cpuinfo_uarch_denver2  =3D 0x00500101,
+	/** Nvidia Carmel. */
+	cpuinfo_uarch_carmel   =3D 0x00500102,
+
+	/** Samsung Mongoose M1 (Exynos 8890 big cores). */
+	cpuinfo_uarch_mongoose_m1 =3D 0x00600100,
+	/** Samsung Mongoose M2 (Exynos 8895 big cores). */
+	cpuinfo_uarch_mongoose_m2 =3D 0x00600101,
+	/** Samsung Meerkat M3 (Exynos 9810 big cores). */
+	cpuinfo_uarch_meerkat_m3  =3D 0x00600102,
+
+	/** Apple A6 and A6X processors. */
+	cpuinfo_uarch_swift     =3D 0x00700100,
+	/** Apple A7 processor. */
+	cpuinfo_uarch_cyclone   =3D 0x00700101,
+	/** Apple A8 and A8X processor. */
+	cpuinfo_uarch_typhoon   =3D 0x00700102,
+	/** Apple A9 and A9X processor. */
+	cpuinfo_uarch_twister   =3D 0x00700103,
+	/** Apple A10 and A10X processor. */
+	cpuinfo_uarch_hurricane =3D 0x00700104,
+	/** Apple A11 processor (big cores). */
+	cpuinfo_uarch_monsoon   =3D 0x00700105,
+	/** Apple A11 processor (little cores). */
+	cpuinfo_uarch_mistral   =3D 0x00700106,
+
+	/** Cavium ThunderX. */
+	cpuinfo_uarch_thunderx =3D 0x00800100,
+	/** Cavium ThunderX2 (originally Broadcom Vulkan). */
+	cpuinfo_uarch_thunderx2 =3D 0x00800200,
+
+	/** Marvell PJ4. */
+	cpuinfo_uarch_pj4 =3D 0x00900100,
+
+	/** Broadcom Brahma B15. */
+	cpuinfo_uarch_brahma_b15 =3D 0x00A00100,
+	/** Broadcom Brahma B53. */
+	cpuinfo_uarch_brahma_b53 =3D 0x00A00101,
+
+	/** Applied Micro X-Gene. */
+	cpuinfo_uarch_xgene =3D 0x00B00100,
+};
+
+struct cpuinfo_processor {
+	/** SMT (hyperthread) ID within a core */
+	uint32_t smt_id;
+	/** Core containing this logical processor */
+	const struct cpuinfo_core* core;
+	/** Cluster of cores containing this logical processor */
+	const struct cpuinfo_cluster* cluster;
+	/** Physical package containing this logical processor */
+	const struct cpuinfo_package* package;
+#if defined(__linux__)
+	/**
+	 * Linux-specific ID for the logical processor:
+	 * - Linux kernel exposes information about this logical processor in /=
sys/devices/system/cpu/cpu<linux_id>/
+	 * - Bit <linux_id> in the cpu_set_t identifies this logical processor
+	 */
+	int linux_id;
+#endif
+#if defined(_WIN32)
+	/** Windows-specific ID for the group containing the logical processor.=
 */
+	uint16_t windows_group_id;
+	/**
+	 * Windows-specific ID of the logical processor within its group:
+	 * - Bit <windows_processor_id> in the KAFFINITY mask identifies this l=
ogical processor within its group.
+	 */
+	uint16_t windows_processor_id;
+#endif
+#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+	/** APIC ID (unique x86-specific ID of the logical processor) */
+	uint32_t apic_id;
+#endif
+	struct {
+		/** Level 1 instruction cache */
+		const struct cpuinfo_cache* l1i;
+		/** Level 1 data cache */
+		const struct cpuinfo_cache* l1d;
+		/** Level 2 unified or data cache */
+		const struct cpuinfo_cache* l2;
+		/** Level 3 unified or data cache */
+		const struct cpuinfo_cache* l3;
+		/** Level 4 unified or data cache */
+		const struct cpuinfo_cache* l4;
+	} cache;
+};
+
+struct cpuinfo_core {
+	/** Index of the first logical processor on this core. */
+	uint32_t processor_start;
+	/** Number of logical processors on this core */
+	uint32_t processor_count;
+	/** Core ID within a package */
+	uint32_t core_id;
+	/** Cluster containing this core */
+	const struct cpuinfo_cluster* cluster;
+	/** Physical package containing this core. */
+	const struct cpuinfo_package* package;
+	/** Vendor of the CPU microarchitecture for this core */
+	enum cpuinfo_vendor vendor;
+	/** CPU microarchitecture for this core */
+	enum cpuinfo_uarch uarch;
+#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+	/** Value of CPUID leaf 1 EAX register for this core */
+	uint32_t cpuid;
+#elif CPUINFO_ARCH_ARM || CPUINFO_ARCH_ARM64
+	/** Value of Main ID Register (MIDR) for this core */
+	uint32_t midr;
+#endif
+	/** Clock rate (non-Turbo) of the core, in Hz */
+	uint64_t frequency;
+};
+
+struct cpuinfo_cluster {
+	/** Index of the first logical processor in the cluster */
+	uint32_t processor_start;
+	/** Number of logical processors in the cluster */
+	uint32_t processor_count;
+	/** Index of the first core in the cluster */
+	uint32_t core_start;
+	/** Number of cores on the cluster */
+	uint32_t core_count;
+	/** Cluster ID within a package */
+	uint32_t cluster_id;
+	/** Physical package containing the cluster */
+	const struct cpuinfo_package* package;
+	/** CPU microarchitecture vendor of the cores in the cluster */
+	enum cpuinfo_vendor vendor;
+	/** CPU microarchitecture of the cores in the cluster */
+	enum cpuinfo_uarch uarch;
+#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+	/** Value of CPUID leaf 1 EAX register of the cores in the cluster */
+	uint32_t cpuid;
+#elif CPUINFO_ARCH_ARM || CPUINFO_ARCH_ARM64
+	/** Value of Main ID Register (MIDR) of the cores in the cluster */
+	uint32_t midr;
+#endif
+	/** Clock rate (non-Turbo) of the cores in the cluster, in Hz */
+	uint64_t frequency;
+};
+
+#define CPUINFO_PACKAGE_NAME_MAX 48
+
+struct cpuinfo_package {
+	/** SoC or processor chip model name */
+	char name[CPUINFO_PACKAGE_NAME_MAX];
+	/** Index of the first logical processor on this physical package */
+	uint32_t processor_start;
+	/** Number of logical processors on this physical package */
+	uint32_t processor_count;
+	/** Index of the first core on this physical package */
+	uint32_t core_start;
+	/** Number of cores on this physical package */
+	uint32_t core_count;
+	/** Index of the first cluster of cores on this physical package */
+	uint32_t cluster_start;
+	/** Number of clusters of cores on this physical package */
+	uint32_t cluster_count;
+};
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define cpuinfo_initialize() true
+#define cpuinfo_deinitialize() true
+//bool CPUINFO_ABI cpuinfo_initialize(void)
+//{
+//	return 1;
+//}
+
+//void CPUINFO_ABI cpuinfo_deinitialize(void)
+//{
+
+//}
+
+#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+	/* This structure is not a part of stable API. Use cpuinfo_has_x86_* fu=
nctions instead. */
+	struct cpuinfo_x86_isa {
+		#if CPUINFO_ARCH_X86
+			bool rdtsc;
+		#endif
+		bool rdtscp;
+		bool rdpid;
+		bool sysenter;
+		#if CPUINFO_ARCH_X86
+			bool syscall;
+		#endif
+		bool msr;
+		bool clzero;
+		bool clflush;
+		bool clflushopt;
+		bool mwait;
+		bool mwaitx;
+		#if CPUINFO_ARCH_X86
+			bool emmx;
+		#endif
+		bool fxsave;
+		bool xsave;
+		#if CPUINFO_ARCH_X86
+			bool fpu;
+			bool mmx;
+			bool mmx_plus;
+		#endif
+		bool three_d_now;
+		bool three_d_now_plus;
+		#if CPUINFO_ARCH_X86
+			bool three_d_now_geode;
+		#endif
+		bool prefetch;
+		bool prefetchw;
+		bool prefetchwt1;
+		#if CPUINFO_ARCH_X86
+			bool daz;
+			bool sse;
+			bool sse2;
+		#endif
+		bool sse3;
+		bool ssse3;
+		bool sse4_1;
+		bool sse4_2;
+		bool sse4a;
+		bool misaligned_sse;
+		bool avx;
+		bool fma3;
+		bool fma4;
+		bool xop;
+		bool f16c;
+		bool avx2;
+		bool avx512f;
+		bool avx512pf;
+		bool avx512er;
+		bool avx512cd;
+		bool avx512dq;
+		bool avx512bw;
+		bool avx512vl;
+		bool avx512ifma;
+		bool avx512vbmi;
+		bool avx512vbmi2;
+		bool avx512bitalg;
+		bool avx512vpopcntdq;
+		bool avx512vnni;
+		bool avx512_4vnniw;
+		bool avx512_4fmaps;
+		bool hle;
+		bool rtm;
+		bool xtest;
+		bool mpx;
+		#if CPUINFO_ARCH_X86
+			bool cmov;
+			bool cmpxchg8b;
+		#endif
+		bool cmpxchg16b;
+		bool clwb;
+		bool movbe;
+		#if CPUINFO_ARCH_X86_64
+			bool lahf_sahf;
+		#endif
+		bool fs_gs_base;
+		bool lzcnt;
+		bool popcnt;
+		bool tbm;
+		bool bmi;
+		bool bmi2;
+		bool adx;
+		bool aes;
+		bool vaes;
+		bool pclmulqdq;
+		bool vpclmulqdq;
+		bool gfni;
+		bool rdrand;
+		bool rdseed;
+		bool sha;
+		bool rng;
+		bool ace;
+		bool ace2;
+		bool phe;
+		bool pmm;
+		bool lwp;
+	};
+
+	extern struct cpuinfo_x86_isa cpuinfo_isa;
+#endif
+
+	/*
+static inline bool cpuinfo_has_x86_rdtsc(void) {
+	#if CPUINFO_ARCH_X86_64
+		return true;
+	#elif CPUINFO_ARCH_X86
+		#if defined(__ANDROID__)
+			return true;
+		#else
+			return cpuinfo_isa.rdtsc;
+		#endif
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_rdtscp(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.rdtscp;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_rdpid(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.rdpid;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_clzero(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.clzero;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_mwait(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.mwait;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_mwaitx(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.mwaitx;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_fxsave(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.fxsave;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_xsave(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.xsave;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_fpu(void) {
+	#if CPUINFO_ARCH_X86_64
+		return true;
+	#elif CPUINFO_ARCH_X86
+		#if defined(__ANDROID__)
+			return true;
+		#else
+			return cpuinfo_isa.fpu;
+		#endif
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_mmx(void) {
+	#if CPUINFO_ARCH_X86_64
+		return true;
+	#elif CPUINFO_ARCH_X86
+		#if defined(__ANDROID__)
+			return true;
+		#else
+			return cpuinfo_isa.mmx;
+		#endif
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_mmx_plus(void) {
+	#if CPUINFO_ARCH_X86_64
+		return true;
+	#elif CPUINFO_ARCH_X86
+		#if defined(__ANDROID__)
+			return true;
+		#else
+			return cpuinfo_isa.mmx_plus;
+		#endif
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_3dnow(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.three_d_now;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_3dnow_plus(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.three_d_now_plus;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_3dnow_geode(void) {
+	#if CPUINFO_ARCH_X86_64
+		return false;
+	#elif CPUINFO_ARCH_X86
+		#if defined(__ANDROID__)
+			return false;
+		#else
+			return cpuinfo_isa.three_d_now_geode;
+		#endif
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_prefetch(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.prefetch;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_prefetchw(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.prefetchw;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_prefetchwt1(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.prefetchwt1;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_daz(void) {
+	#if CPUINFO_ARCH_X86_64
+		return true;
+	#elif CPUINFO_ARCH_X86
+		#if defined(__ANDROID__)
+			return true;
+		#else
+			return cpuinfo_isa.daz;
+		#endif
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_sse(void) {
+	#if CPUINFO_ARCH_X86_64
+		return true;
+	#elif CPUINFO_ARCH_X86
+		#if defined(__ANDROID__)
+			return true;
+		#else
+			return cpuinfo_isa.sse;
+		#endif
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_sse2(void) {
+	#if CPUINFO_ARCH_X86_64
+		return true;
+	#elif CPUINFO_ARCH_X86
+		#if defined(__ANDROID__)
+			return true;
+		#else
+			return cpuinfo_isa.sse2;
+		#endif
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_sse3(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		#if defined(__ANDROID__)
+			return true;
+		#else
+			return cpuinfo_isa.sse3;
+		#endif
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_ssse3(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		#if defined(__ANDROID__)
+			return true;
+		#else
+			return cpuinfo_isa.ssse3;
+		#endif
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_sse4_1(void) {
+	#if CPUINFO_ARCH_X86_64
+		#if defined(__ANDROID__)
+			return true;
+		#else
+			return cpuinfo_isa.sse4_1;
+		#endif
+	#elif CPUINFO_ARCH_X86
+		return cpuinfo_isa.sse4_1;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_sse4_2(void) {
+	#if CPUINFO_ARCH_X86_64
+		#if defined(__ANDROID__)
+			return true;
+		#else
+			return cpuinfo_isa.sse4_2;
+		#endif
+	#elif CPUINFO_ARCH_X86
+		return cpuinfo_isa.sse4_2;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_sse4a(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.sse4a;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_misaligned_sse(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.misaligned_sse;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_avx(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		//return cpuinfo_isa.avx;
+        return false;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_fma3(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		//return cpuinfo_isa.fma3;
+        return false;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_fma4(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.fma4;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_xop(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.xop;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_f16c(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.f16c;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_avx2(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+        return false;
+		//return cpuinfo_isa.avx2;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_avx512f(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.avx512f;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_avx512pf(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.avx512pf;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_avx512er(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.avx512er;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_avx512cd(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.avx512cd;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_avx512dq(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.avx512dq;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_avx512bw(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.avx512bw;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_avx512vl(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.avx512vl;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_avx512ifma(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.avx512ifma;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_avx512vbmi(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.avx512vbmi;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_avx512vbmi2(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.avx512vbmi2;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_avx512bitalg(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.avx512bitalg;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_avx512vpopcntdq(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.avx512vpopcntdq;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_avx512vnni(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.avx512vnni;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_avx512_4vnniw(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.avx512_4vnniw;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_avx512_4fmaps(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.avx512_4fmaps;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_hle(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.hle;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_rtm(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.rtm;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_xtest(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.xtest;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_mpx(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.mpx;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_cmov(void) {
+	#if CPUINFO_ARCH_X86_64
+		return true;
+	#elif CPUINFO_ARCH_X86
+		return cpuinfo_isa.cmov;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_cmpxchg8b(void) {
+	#if CPUINFO_ARCH_X86_64
+		return true;
+	#elif CPUINFO_ARCH_X86
+		return cpuinfo_isa.cmpxchg8b;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_cmpxchg16b(void) {
+	#if CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.cmpxchg16b;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_clwb(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.clwb;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_movbe(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.movbe;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_lahf_sahf(void) {
+	#if CPUINFO_ARCH_X86
+		return true;
+	#elif CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.lahf_sahf;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_lzcnt(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.lzcnt;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_popcnt(void) {
+	#if CPUINFO_ARCH_X86_64
+		#if defined(__ANDROID__)
+			return true;
+		#else
+			return cpuinfo_isa.popcnt;
+		#endif
+	#elif CPUINFO_ARCH_X86
+		return cpuinfo_isa.popcnt;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_tbm(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.tbm;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_bmi(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.bmi;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_bmi2(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.bmi2;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_adx(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.adx;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_aes(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.aes;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_vaes(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.vaes;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_pclmulqdq(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.pclmulqdq;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_vpclmulqdq(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.vpclmulqdq;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_gfni(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.gfni;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_rdrand(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.rdrand;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_rdseed(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.rdseed;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_sha(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.sha;
+	#else
+		return false;
+	#endif
+}
+*/
+#define cpuinfo_has_x86_avx2() false
+#define cpuinfo_has_x86_fma3() false
+#define cpuinfo_has_x86_avx() true
+#define cpuinfo_has_x86_daz() true
+const struct cpuinfo_processor* CPUINFO_ABI cpuinfo_get_processor(uint32=
_t index);
+#define cpuinfo_get_processors_count() 1
+
+#if CPUINFO_ARCH_ARM || CPUINFO_ARCH_ARM64
+	/* This structure is not a part of stable API. Use cpuinfo_has_arm_* fu=
nctions instead. */
+	struct cpuinfo_arm_isa {
+		#if CPUINFO_ARCH_ARM
+			bool thumb;
+			bool thumb2;
+			bool thumbee;
+			bool jazelle;
+			bool armv5e;
+			bool armv6;
+			bool armv6k;
+			bool armv7;
+			bool armv7mp;
+			bool idiv;
+
+			bool vfpv2;
+			bool vfpv3;
+			bool d32;
+			bool fp16;
+			bool fma;
+
+			bool wmmx;
+			bool wmmx2;
+			bool neon;
+		#endif
+		#if CPUINFO_ARCH_ARM64
+			bool atomics;
+		#endif
+		bool rdm;
+		bool fp16arith;
+		bool dot;
+		bool jscvt;
+		bool fcma;
+
+		bool aes;
+		bool sha1;
+		bool sha2;
+		bool pmull;
+		bool crc32;
+	};
+
+	extern struct cpuinfo_arm_isa cpuinfo_isa;
+#endif
+
+/*
+static inline bool cpuinfo_has_arm_thumb(void) {
+	#if CPUINFO_ARCH_ARM
+		return cpuinfo_isa.thumb;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_thumb2(void) {
+	#if CPUINFO_ARCH_ARM
+		return cpuinfo_isa.thumb2;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_v5e(void) {
+	#if CPUINFO_ARCH_ARM
+		return cpuinfo_isa.armv5e;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_v6(void) {
+	#if CPUINFO_ARCH_ARM
+		return cpuinfo_isa.armv6;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_v6k(void) {
+	#if CPUINFO_ARCH_ARM
+		return cpuinfo_isa.armv6k;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_v7(void) {
+	#if CPUINFO_ARCH_ARM
+		return cpuinfo_isa.armv7;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_v7mp(void) {
+	#if CPUINFO_ARCH_ARM
+		return cpuinfo_isa.armv7mp;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_idiv(void) {
+	#if CPUINFO_ARCH_ARM64
+		return true;
+	#elif CPUINFO_ARCH_ARM
+		return cpuinfo_isa.idiv;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_vfpv2(void) {
+	#if CPUINFO_ARCH_ARM
+		return cpuinfo_isa.vfpv2;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_vfpv3(void) {
+	#if CPUINFO_ARCH_ARM64
+		return true;
+	#elif CPUINFO_ARCH_ARM
+		return cpuinfo_isa.vfpv3;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_vfpv3_d32(void) {
+	#if CPUINFO_ARCH_ARM64
+		return true;
+	#elif CPUINFO_ARCH_ARM
+		return cpuinfo_isa.vfpv3 && cpuinfo_isa.d32;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_vfpv3_fp16(void) {
+	#if CPUINFO_ARCH_ARM64
+		return true;
+	#elif CPUINFO_ARCH_ARM
+		return cpuinfo_isa.vfpv3 && cpuinfo_isa.fp16;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_vfpv3_fp16_d32(void) {
+	#if CPUINFO_ARCH_ARM64
+		return true;
+	#elif CPUINFO_ARCH_ARM
+		return cpuinfo_isa.vfpv3 && cpuinfo_isa.fp16 && cpuinfo_isa.d32;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_vfpv4(void) {
+	#if CPUINFO_ARCH_ARM64
+		return true;
+	#elif CPUINFO_ARCH_ARM
+		return cpuinfo_isa.vfpv3 && cpuinfo_isa.fma;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_vfpv4_d32(void) {
+	#if CPUINFO_ARCH_ARM64
+		return true;
+	#elif CPUINFO_ARCH_ARM
+		return cpuinfo_isa.vfpv3 && cpuinfo_isa.fma && cpuinfo_isa.d32;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_wmmx(void) {
+	#if CPUINFO_ARCH_ARM
+		return cpuinfo_isa.wmmx;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_wmmx2(void) {
+	#if CPUINFO_ARCH_ARM
+		return cpuinfo_isa.wmmx2;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_neon(void) {
+	#if CPUINFO_ARCH_ARM64
+		return true;
+	#elif CPUINFO_ARCH_ARM
+		return cpuinfo_isa.neon;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_neon_fp16(void) {
+	#if CPUINFO_ARCH_ARM64
+		return true;
+	#elif CPUINFO_ARCH_ARM
+		return cpuinfo_isa.neon && cpuinfo_isa.fp16;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_neon_fma(void) {
+	#if CPUINFO_ARCH_ARM64
+		return true;
+	#elif CPUINFO_ARCH_ARM
+		return cpuinfo_isa.neon && cpuinfo_isa.fma;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_atomics(void) {
+	#if CPUINFO_ARCH_ARM64
+		return cpuinfo_isa.atomics;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_neon_rdm(void) {
+	#if CPUINFO_ARCH_ARM || CPUINFO_ARCH_ARM64
+		return cpuinfo_isa.rdm;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_neon_fp16_arith(void) {
+	#if CPUINFO_ARCH_ARM
+		return cpuinfo_isa.neon && cpuinfo_isa.fp16arith;
+	#elif CPUINFO_ARCH_ARM64
+		return cpuinfo_isa.fp16arith;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_fp16_arith(void) {
+	#if CPUINFO_ARCH_ARM || CPUINFO_ARCH_ARM64
+		return cpuinfo_isa.fp16arith;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_neon_dot(void) {
+	#if CPUINFO_ARCH_ARM || CPUINFO_ARCH_ARM64
+		return cpuinfo_isa.dot;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_jscvt(void) {
+	#if CPUINFO_ARCH_ARM || CPUINFO_ARCH_ARM64
+		return cpuinfo_isa.jscvt;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_fcma(void) {
+	#if CPUINFO_ARCH_ARM || CPUINFO_ARCH_ARM64
+		return cpuinfo_isa.fcma;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_aes(void) {
+	#if CPUINFO_ARCH_ARM || CPUINFO_ARCH_ARM64
+		return cpuinfo_isa.aes;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_sha1(void) {
+	#if CPUINFO_ARCH_ARM || CPUINFO_ARCH_ARM64
+		return cpuinfo_isa.sha1;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_sha2(void) {
+	#if CPUINFO_ARCH_ARM || CPUINFO_ARCH_ARM64
+		return cpuinfo_isa.sha2;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_pmull(void) {
+	#if CPUINFO_ARCH_ARM || CPUINFO_ARCH_ARM64
+		return cpuinfo_isa.pmull;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_crc32(void) {
+	#if CPUINFO_ARCH_ARM || CPUINFO_ARCH_ARM64
+		return cpuinfo_isa.crc32;
+	#else
+		return false;
+	#endif
+}
+
+const struct cpuinfo_processor* CPUINFO_ABI cpuinfo_get_processors(void)=
;
+const struct cpuinfo_core* CPUINFO_ABI cpuinfo_get_cores(void);
+const struct cpuinfo_cluster* CPUINFO_ABI cpuinfo_get_clusters(void);
+const struct cpuinfo_package* CPUINFO_ABI cpuinfo_get_packages(void);
+const struct cpuinfo_cache* CPUINFO_ABI cpuinfo_get_l1i_caches(void);
+const struct cpuinfo_cache* CPUINFO_ABI cpuinfo_get_l1d_caches(void);
+const struct cpuinfo_cache* CPUINFO_ABI cpuinfo_get_l2_caches(void)
+{
+	static struct cpuinfo_cache cc;
+	cc.size =3D 64 * 512 * 12;
+	cc.associativity =3D 12;
+	cc.associativity =3D 512;
+	cc.partitions =3D 64;
+	cc.line_size =3D 64;
+	cc.flags=3DCPUINFO_CACHE_INCLUSIVE;
+	cc.processor_start =3D 0;
+	cc.processor_count =3D 1;
+	return &cc;
+}
+const struct cpuinfo_cache* CPUINFO_ABI cpuinfo_get_l3_caches(void)
+{
+	static struct cpuinfo_cache cc;
+	cc.size =3D 64 * 512 * 12;
+	cc.associativity =3D 12;
+	cc.associativity =3D 512;
+	cc.partitions =3D 64;
+	cc.line_size =3D 64;
+	cc.flags=3DCPUINFO_CACHE_INCLUSIVE;
+	cc.processor_start =3D 0;
+	cc.processor_count =3D 1;
+	return &cc;
+}
+const struct cpuinfo_cache* CPUINFO_ABI cpuinfo_get_l4_caches(void)
+{
+	static struct cpuinfo_cache cc;
+	cc.size =3D 64 * 512 * 12;
+	cc.associativity =3D 12;
+	cc.associativity =3D 512;
+	cc.partitions =3D 64;
+	cc.line_size =3D 64;
+	cc.flags=3DCPUINFO_CACHE_INCLUSIVE;
+	cc.processor_start =3D 0;
+	cc.processor_count =3D 1;
+	return &cc;
+}
+
+const struct cpuinfo_processor* CPUINFO_ABI cpuinfo_get_processor(uint32=
_t index);
+const struct cpuinfo_core* CPUINFO_ABI cpuinfo_get_core(uint32_t index);
+const struct cpuinfo_cluster* CPUINFO_ABI cpuinfo_get_cluster(uint32_t i=
ndex);
+const struct cpuinfo_package* CPUINFO_ABI cpuinfo_get_package(uint32_t i=
ndex);
+const struct cpuinfo_cache* CPUINFO_ABI cpuinfo_get_l1i_cache(uint32_t i=
ndex);
+const struct cpuinfo_cache* CPUINFO_ABI cpuinfo_get_l1d_cache(uint32_t i=
ndex)
+{
+	static struct cpuinfo_cache cc;
+	cc.size =3D 64 * 512 * 12;
+	cc.associativity =3D 12;
+	cc.associativity =3D 512;
+	cc.partitions =3D 64;
+	cc.line_size =3D 64;
+	cc.flags=3DCPUINFO_CACHE_INCLUSIVE;
+	cc.processor_start =3D 0;
+	cc.processor_count =3D 1;
+	return &cc;
+}
+const struct cpuinfo_cache* CPUINFO_ABI cpuinfo_get_l2_cache(uint32_t in=
dex)
+{
+	static struct cpuinfo_cache cc;
+	cc.size =3D 64 * 512 * 12;
+	cc.associativity =3D 12;
+	cc.associativity =3D 512;
+	cc.partitions =3D 64;
+	cc.line_size =3D 64;
+	cc.flags=3DCPUINFO_CACHE_INCLUSIVE;
+	cc.processor_start =3D 0;
+	cc.processor_count =3D 1;
+	return &cc;
+}
+const struct cpuinfo_cache* CPUINFO_ABI cpuinfo_get_l3_cache(uint32_t in=
dex)
+{
+	static struct cpuinfo_cache cc;
+	cc.size =3D 64 * 512 * 12;
+	cc.associativity =3D 12;
+	cc.associativity =3D 512;
+	cc.partitions =3D 64;
+	cc.line_size =3D 64;
+	cc.flags=3DCPUINFO_CACHE_INCLUSIVE;
+	cc.processor_start =3D 0;
+	cc.processor_count =3D 1;
+	return &cc;
+}
+const struct cpuinfo_cache* CPUINFO_ABI cpuinfo_get_l4_cache(uint32_t in=
dex)
+{
+	static struct cpuinfo_cache cc;
+	cc.size =3D 64 * 512 * 12;
+	cc.associativity =3D 12;
+	cc.associativity =3D 512;
+	cc.partitions =3D 64;
+	cc.line_size =3D 64;
+	cc.flags=3DCPUINFO_CACHE_INCLUSIVE;
+	cc.processor_start =3D 0;
+	cc.processor_count =3D 1;
+	return &cc;
+}
+uint32_t CPUINFO_ABI cpuinfo_get_processors_count(void);
+uint32_t CPUINFO_ABI cpuinfo_get_cores_count(void);
+uint32_t CPUINFO_ABI cpuinfo_get_clusters_count(void);
+uint32_t CPUINFO_ABI cpuinfo_get_packages_count(void);
+uint32_t CPUINFO_ABI cpuinfo_get_l1i_caches_count(void);
+uint32_t CPUINFO_ABI cpuinfo_get_l1d_caches_count(void);
+uint32_t CPUINFO_ABI cpuinfo_get_l2_caches_count(void);
+uint32_t CPUINFO_ABI cpuinfo_get_l3_caches_count(void);
+uint32_t CPUINFO_ABI cpuinfo_get_l4_caches_count(void);
+
+const struct cpuinfo_processor* CPUINFO_ABI cpuinfo_get_current_processo=
r(void);
+const struct cpuinfo_core* CPUINFO_ABI cpuinfo_get_current_core(void);
+*/
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* CPUINFO_H */
+
diff --git a/include/fenv.h b/include/fenv.h
new file mode 100644
index 0000000..4e31c43
--- /dev/null
+++ b/include/fenv.h
@@ -0,0 +1,27 @@
+#ifndef _FENV_H
+#define _FENV_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <bits/fenv.h>
+
+int feclearexcept(int);
+int fegetexceptflag(fexcept_t *, int);
+int feraiseexcept(int);
+int fesetexceptflag(const fexcept_t *, int);
+int fetestexcept(int);
+
+int fegetround(void);
+int fesetround(int);
+
+int fegetenv(fenv_t *);
+int feholdexcept(fenv_t *);
+int fesetenv(const fenv_t *);
+int feupdateenv(const fenv_t *);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
--=20
2.20.1



From minios-devel-bounces@lists.xenproject.org Wed Apr 08 00:22:55 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 08 Apr 2020 00:22: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 1jLyUZ-0001ie-FR; Wed, 08 Apr 2020 00:22: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=hVdw=5Y=upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1jLyUY-0001iO-OR
 for minios-devel@lists.xen.org; Wed, 08 Apr 2020 00:22:54 +0000
X-Inumbo-ID: 0f5d0432-792f-11ea-818c-12813bfff9fa
Received: from mx.upb.ro (unknown [141.85.13.200])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 0f5d0432-792f-11ea-818c-12813bfff9fa;
 Wed, 08 Apr 2020 00:22:42 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id 6AF58B5625D0;
 Wed,  8 Apr 2020 03:22:41 +0300 (EEST)
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10032)
 with ESMTP id Ml2oulGVmkeo; Wed,  8 Apr 2020 03:22:37 +0300 (EEST)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id F0DB1B5625DF;
 Wed,  8 Apr 2020 03:22:35 +0300 (EEST)
DKIM-Filter: OpenDKIM Filter v2.10.3 mx.upb.ro F0DB1B5625DF
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=upb.ro;
 s=96342B8A-77E4-11E5-BA93-D93D0963A2DF; t=1586305356;
 bh=tZxXuE6PcRMOh6IdbKE/m6k0G9dLZZkTkb0ib/QrFYc=;
 h=From:To:Date:Message-Id:MIME-Version;
 b=toE7aaWMjd4AmfxoRKT7KVkI5S/CLMHzgrSW3b16wQg879a86lrh+QMUCg7t8Mu37
 oj+z+OSmVCE5DttW4bIbB9T8wdLdWt8icgn7e/gE3lKP9j4jArlAPkQaPBuAXnfhCn
 LUDQxcooJTsa+/UCSPPCrQ3Tb7dfrvtDZf0TqgOk=
X-Virus-Scanned: amavisd-new at upb.ro
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id JMkEcMELeD9B; Wed,  8 Apr 2020 03:22:35 +0300 (EEST)
Received: from localhost.localdomain (unknown [86.127.159.73])
 by mx.upb.ro (Postfix) with ESMTPSA id 9C0FDB5625DB;
 Wed,  8 Apr 2020 03:22:35 +0300 (EEST)
From: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
To: minios-devel@lists.xen.org
Subject: [UNIKRAFT/PYTORCH PATCH 4/4] Add patches
Date: Wed,  8 Apr 2020 03:22:03 +0300
Message-Id: <20200408002204.31260-9-vlad_andrei.badoiu@upb.ro>
X-Mailer: git-send-email 2.20.1
In-Reply-To: <20200408002204.31260-1-vlad_andrei.badoiu@upb.ro>
References: <20200408002204.31260-1-vlad_andrei.badoiu@upb.ro>
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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, Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

In this patch we add several patches for:
disabling some features such as backtracking,
remove calls to functions from cpuinfo, remove
calls for other missing symbols.

Signed-off-by: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
---
 ...ds-to-suppress-redefinition-warnings.patch | 37 +++++++++++++++++
 .../0002-Comment-out-calls-to-enable_if.patch | 40 +++++++++++++++++++
 patches/0003-Comment-out-waitpid-call.patch   | 27 +++++++++++++
 ...variable-to-avoid-compilation-errors.patch | 28 +++++++++++++
 patches/0005-Disable-backtrace-support.patch  | 34 ++++++++++++++++
 patches/0006-Disable-demangle.patch           | 25 ++++++++++++
 .../0007-Comment-out-nexttoward-call.patch    | 26 ++++++++++++
 ...8-Remove-cpuinfo_get_processor-calls.patch | 34 ++++++++++++++++
 patches/0009-Comment-out-runJITCPPTests.patch | 29 ++++++++++++++
 ...emove-calls-to-cpuinfo_get_processor.patch | 25 ++++++++++++
 10 files changed, 305 insertions(+)
 create mode 100644 patches/0001-Add-guards-to-suppress-redefinition-warn=
ings.patch
 create mode 100644 patches/0002-Comment-out-calls-to-enable_if.patch
 create mode 100644 patches/0003-Comment-out-waitpid-call.patch
 create mode 100644 patches/0004-Rename-variable-to-avoid-compilation-err=
ors.patch
 create mode 100644 patches/0005-Disable-backtrace-support.patch
 create mode 100644 patches/0006-Disable-demangle.patch
 create mode 100644 patches/0007-Comment-out-nexttoward-call.patch
 create mode 100644 patches/0008-Remove-cpuinfo_get_processor-calls.patch
 create mode 100644 patches/0009-Comment-out-runJITCPPTests.patch
 create mode 100644 patches/0010-Remove-calls-to-cpuinfo_get_processor.pa=
tch

diff --git a/patches/0001-Add-guards-to-suppress-redefinition-warnings.pa=
tch b/patches/0001-Add-guards-to-suppress-redefinition-warnings.patch
new file mode 100644
index 0000000..b8fd7b1
--- /dev/null
+++ b/patches/0001-Add-guards-to-suppress-redefinition-warnings.patch
@@ -0,0 +1,37 @@
+From d4645e726ef513d1a22eb0d6be1d610cd2a01b62 Mon Sep 17 00:00:00 2001
+From: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
+Date: Tue, 7 Apr 2020 22:07:49 +0000
+Subject: [PATCH 1/8] Add guards to suppress redefinition warnings
+
+Signed-off-by: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
+---
+ c10/macros/Export.h | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/c10/macros/Export.h b/c10/macros/Export.h
+index 0a213ed..7fce4f4 100644
+--- a/c10/macros/Export.h
++++ b/c10/macros/Export.h
+@@ -86,7 +86,9 @@
+=20
+ // This one is being used by libc10.so
+ #ifdef C10_BUILD_MAIN_LIB
++#ifndef C10_API
+ #define C10_API C10_EXPORT
++#endif
+ #else
+ #define C10_API C10_IMPORT
+ #endif
+@@ -94,7 +96,9 @@
+ // This one is being used by libtorch.so
+ // TODO: rename this to TORCH_API
+ #ifdef CAFFE2_BUILD_MAIN_LIB
++#ifndef CAFFE2_API
+ #define CAFFE2_API C10_EXPORT
++#endif
+ #else
+ #define CAFFE2_API C10_IMPORT
+ #endif
+--=20
+2.11.0
+
diff --git a/patches/0002-Comment-out-calls-to-enable_if.patch b/patches/=
0002-Comment-out-calls-to-enable_if.patch
new file mode 100644
index 0000000..0195485
--- /dev/null
+++ b/patches/0002-Comment-out-calls-to-enable_if.patch
@@ -0,0 +1,40 @@
+From f844c7363c909ffa3d1bc8c692ce24e38be6c988 Mon Sep 17 00:00:00 2001
+From: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
+Date: Tue, 7 Apr 2020 22:22:37 +0000
+Subject: [PATCH 2/8] Comment out calls to enable_if
+
+Signed-off-by: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
+---
+ aten/src/ATen/native/cpu/MultinomialKernel.cpp | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/aten/src/ATen/native/cpu/MultinomialKernel.cpp b/aten/src/A=
Ten/native/cpu/MultinomialKernel.cpp
+index c00c4c0..352cbc4 100644
+--- a/aten/src/ATen/native/cpu/MultinomialKernel.cpp
++++ b/aten/src/ATen/native/cpu/MultinomialKernel.cpp
+@@ -48,8 +48,8 @@ void multinomial_apply(Tensor& result, const Tensor& s=
elf, const int64_t n_sampl
+       TORCH_CHECK(std::isfinite(static_cast<double>(val)),
+                   "invalid multinomial distribution (encountering proba=
bility entry =3D infinity or NaN)");
+ #else
+-      TORCH_CHECK(std::isfinite(val),
+-                  "invalid multinomial distribution (encountering proba=
bility entry =3D infinity or NaN)");
++      //TORCH_CHECK(std::isfinite(val),
++      //            "invalid multinomial distribution (encountering pro=
bability entry =3D infinity or NaN)");
+ #endif
+=20
+       sum +=3D val;
+@@ -130,9 +130,11 @@ void multinomial_apply(Tensor& result, const Tensor=
& self, const int64_t n_sampl
+ }
+=20
+ static void multinomial_kernel_impl(Tensor& result, const Tensor& self,=
 const int64_t n_sample, const bool with_replacement, Generator *gen) {
++  /*
+   AT_DISPATCH_FLOATING_TYPES_AND_HALF(self.scalar_type(), "multinomial"=
, [&] {
+     multinomial_apply<scalar_t>(result, self, n_sample, with_replacemen=
t, gen);
+   });
++  */
+ }
+=20
+ }
+--=20
+2.11.0
+
diff --git a/patches/0003-Comment-out-waitpid-call.patch b/patches/0003-C=
omment-out-waitpid-call.patch
new file mode 100644
index 0000000..1c09da7
--- /dev/null
+++ b/patches/0003-Comment-out-waitpid-call.patch
@@ -0,0 +1,27 @@
+From 972caf96f8ad327d281e7287c48c14e0e8fa2dc9 Mon Sep 17 00:00:00 2001
+From: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
+Date: Tue, 7 Apr 2020 22:27:39 +0000
+Subject: [PATCH 3/8] Comment out waitpid call
+
+Signed-off-by: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
+---
+ torch/csrc/DataLoader.cpp | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/torch/csrc/DataLoader.cpp b/torch/csrc/DataLoader.cpp
+index 164a7ce..5f438ea 100644
+--- a/torch/csrc/DataLoader.cpp
++++ b/torch/csrc/DataLoader.cpp
+@@ -113,7 +113,8 @@ static PyObject *THPModule_errorIfAnyWorkerFails(PyO=
bject *module, PyObject *noa
+       // Use waitid rather than waitpid so that we can set NOWAIT, and =
that Python
+       // and other handlers can get whatever info they want about the c=
hild.
+       infop.si_pid =3D 0;
+-      error =3D waitid(P_PID, worker_pid, &infop, WEXITED|WNOHANG|WNOWA=
IT);
++      // error =3D waitid(P_PID, worker_pid, &infop, WEXITED|WNOHANG|WN=
OWAIT);
++      error =3D 0;
+       // ignore errors and case with no waitable child
+       if (error < 0 || infop.si_pid =3D=3D 0)
+         continue;
+--=20
+2.11.0
+
diff --git a/patches/0004-Rename-variable-to-avoid-compilation-errors.pat=
ch b/patches/0004-Rename-variable-to-avoid-compilation-errors.patch
new file mode 100644
index 0000000..89ce0bb
--- /dev/null
+++ b/patches/0004-Rename-variable-to-avoid-compilation-errors.patch
@@ -0,0 +1,28 @@
+From 22f0829c951dc358b7fa6b40c67dbed8c36cc6e1 Mon Sep 17 00:00:00 2001
+From: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
+Date: Tue, 7 Apr 2020 22:34:46 +0000
+Subject: [PATCH 4/8] Rename variable to avoid compilation errors
+
+Signed-off-by: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
+---
+ torch/csrc/jit/script/python_tree_views.cpp | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/torch/csrc/jit/script/python_tree_views.cpp b/torch/csrc/ji=
t/script/python_tree_views.cpp
+index b7726d6..4d89ea3 100644
+--- a/torch/csrc/jit/script/python_tree_views.cpp
++++ b/torch/csrc/jit/script/python_tree_views.cpp
+@@ -74,8 +74,8 @@ Maybe<T> wrap_maybe(const SourceRange& fallback_pos, T=
* val) {
+ }
+=20
+ void initTreeViewBindings(PyObject* module) {
+-  auto _C =3D py::handle(module).cast<py::module>();
+-  auto m =3D _C.def_submodule("_jit_tree_views");
++  auto C =3D py::handle(module).cast<py::module>();
++  auto m =3D C.def_submodule("_jit_tree_views");
+=20
+   py::class_<SourceRange>(m, "SourceRange")
+       .def(
+--=20
+2.11.0
+
diff --git a/patches/0005-Disable-backtrace-support.patch b/patches/0005-=
Disable-backtrace-support.patch
new file mode 100644
index 0000000..6551681
--- /dev/null
+++ b/patches/0005-Disable-backtrace-support.patch
@@ -0,0 +1,34 @@
+From 290fb52ee2cecba86f3585ef9e500dc168063934 Mon Sep 17 00:00:00 2001
+From: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
+Date: Tue, 7 Apr 2020 22:37:49 +0000
+Subject: [PATCH 5/8] Disable backtrace support
+
+Signed-off-by: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
+---
+ c10/util/Backtrace.cpp | 8 +++++---
+ 1 file changed, 5 insertions(+), 3 deletions(-)
+
+diff --git a/c10/util/Backtrace.cpp b/c10/util/Backtrace.cpp
+index 3abfc08..6e09abc 100644
+--- a/c10/util/Backtrace.cpp
++++ b/c10/util/Backtrace.cpp
+@@ -15,11 +15,13 @@
+ // No backtrace on mobile, windows and emscripten platforms.
+ #define SUPPORTS_BACKTRACE 0
+ #else
+-#define SUPPORTS_BACKTRACE 1
+-#include <cxxabi.h>
+-#include <execinfo.h>
++//#define SUPPORTS_BACKTRACE 1
++//#include <cxxabi.h>
++//#include <execinfo.h>
+ #endif
+=20
++#define SUPPORTS_BACKTRACE 0
++
+ namespace c10 {
+=20
+ // TODO: This backtrace retrieval can be implemented on Windows via the=
 Windows
+--=20
+2.11.0
+
diff --git a/patches/0006-Disable-demangle.patch b/patches/0006-Disable-d=
emangle.patch
new file mode 100644
index 0000000..2f4c59d
--- /dev/null
+++ b/patches/0006-Disable-demangle.patch
@@ -0,0 +1,25 @@
+From 0a32adf17fcd86ef28a51b3f68e4130f7db26ee2 Mon Sep 17 00:00:00 2001
+From: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
+Date: Tue, 7 Apr 2020 22:39:52 +0000
+Subject: [PATCH 6/8] Disable demangle
+
+Signed-off-by: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
+---
+ c10/util/Type.cpp | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/c10/util/Type.cpp b/c10/util/Type.cpp
+index 3e00055..dc18ab2 100644
+--- a/c10/util/Type.cpp
++++ b/c10/util/Type.cpp
+@@ -13,6 +13,7 @@
+ #define HAS_DEMANGLE 1
+ #endif
+=20
++#define HAS_DEMANGLE 0
+ #if HAS_DEMANGLE
+=20
+ #include <cxxabi.h>
+--=20
+2.11.0
+
diff --git a/patches/0007-Comment-out-nexttoward-call.patch b/patches/000=
7-Comment-out-nexttoward-call.patch
new file mode 100644
index 0000000..369ce10
--- /dev/null
+++ b/patches/0007-Comment-out-nexttoward-call.patch
@@ -0,0 +1,26 @@
+From 511ccc836b30d8eb303b151c3b47e79d0c4c4097 Mon Sep 17 00:00:00 2001
+From: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
+Date: Tue, 7 Apr 2020 22:49:24 +0000
+Subject: [PATCH 7/8] Comment out nexttoward call
+
+Signed-off-by: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
+---
+ aten/src/ATen/native/Distributions.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/aten/src/ATen/native/Distributions.cpp b/aten/src/ATen/nati=
ve/Distributions.cpp
+index 644888a..0accb3b 100644
+--- a/aten/src/ATen/native/Distributions.cpp
++++ b/aten/src/ATen/native/Distributions.cpp
+@@ -289,7 +289,7 @@ Tensor _s_dirichlet_cpu(const Tensor& alpha, Generat=
or *gen) {
+       [](scalar_t& ret_val, const double& gamma, const double& gamma_su=
m){
+         ret_val =3D gamma / gamma_sum;
+         auto min_val =3D std::numeric_limits<scalar_t>::min();
+-        auto max_val =3D std::nexttoward(static_cast<scalar_t>(1.0f), 0=
.0f);
++        auto max_val =3D static_cast<scalar_t>(1.0f);//std::nexttoward(=
static_cast<scalar_t>(1.0f), 0.0f);
+         ret_val =3D std::min(max_val, std::max(min_val, ret_val));
+         ret_val =3D static_cast<scalar_t>(ret_val);
+       }
+--=20
+2.11.0
+
diff --git a/patches/0008-Remove-cpuinfo_get_processor-calls.patch b/patc=
hes/0008-Remove-cpuinfo_get_processor-calls.patch
new file mode 100644
index 0000000..ffdf274
--- /dev/null
+++ b/patches/0008-Remove-cpuinfo_get_processor-calls.patch
@@ -0,0 +1,34 @@
+From ffa7d398d11a2f8a93b69feb9dc1d147801da943 Mon Sep 17 00:00:00 2001
+From: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
+Date: Tue, 7 Apr 2020 22:54:06 +0000
+Subject: [PATCH 8/8] Remove cpuinfo_get_processor calls
+
+Signed-off-by: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
+---
+ caffe2/utils/bench_utils.cc | 10 +---------
+ 1 file changed, 1 insertion(+), 9 deletions(-)
+
+diff --git a/caffe2/utils/bench_utils.cc b/caffe2/utils/bench_utils.cc
+index df77512..93384cc 100644
+--- a/caffe2/utils/bench_utils.cc
++++ b/caffe2/utils/bench_utils.cc
+@@ -14,15 +14,7 @@ uint32_t wipe_cache() {
+   if (wipe_buffer =3D=3D nullptr) {
+     CAFFE_ENFORCE(cpuinfo_initialize(), "failed to initialize cpuinfo")=
;
+     const cpuinfo_processor* processor =3D cpuinfo_get_processor(0);
+-    if (processor->cache.l4 !=3D nullptr) {
+-      wipe_size =3D processor->cache.l4->size;
+-    } else if (processor->cache.l3 !=3D nullptr) {
+-      wipe_size =3D processor->cache.l3->size;
+-    } else if (processor->cache.l2 !=3D nullptr) {
+-      wipe_size =3D processor->cache.l2->size;
+-    } else {
+-      wipe_size =3D processor->cache.l1d->size;
+-    }
++    wipe_size =3D 64 * 1024;
+ #if CPUINFO_ARCH_ARM || CPUINFO_ARCH_ARM64
+     /*
+      * On ARM precise cache size is not available, and cpuinfo may
+--=20
+2.11.0
+
diff --git a/patches/0009-Comment-out-runJITCPPTests.patch b/patches/0009=
-Comment-out-runJITCPPTests.patch
new file mode 100644
index 0000000..cc49951
--- /dev/null
+++ b/patches/0009-Comment-out-runJITCPPTests.patch
@@ -0,0 +1,29 @@
+From 2f2f760fac6b14f7ce63ee1858262b4c3bbae4a7 Mon Sep 17 00:00:00 2001
+From: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
+Date: Tue, 7 Apr 2020 23:52:29 +0000
+Subject: [PATCH 1/1] Comment out runJITCPPTests
+
+We comment out runJITCPPTests calls because we
+are not running the unit tests.
+
+Signed-off-by: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
+---
+ torch/csrc/jit/init.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/torch/csrc/jit/init.cpp b/torch/csrc/jit/init.cpp
+index 9745464..cf99b95 100644
+--- a/torch/csrc/jit/init.cpp
++++ b/torch/csrc/jit/init.cpp
+@@ -286,7 +286,7 @@ void initJITBindings(PyObject* module) {
+             // newly spawned worker threads will try to initialize thei=
r
+             // PyThreadState*, and they need the GIL for this.
+             AutoNoGIL _no_gil;
+-            return runJITCPPTests(runCuda);
++            //return runJITCPPTests(runCuda);
+           },
+           py::arg("run_cuda"))
+       .def(
+--=20
+2.11.0
+
diff --git a/patches/0010-Remove-calls-to-cpuinfo_get_processor.patch b/p=
atches/0010-Remove-calls-to-cpuinfo_get_processor.patch
new file mode 100644
index 0000000..b9582b9
--- /dev/null
+++ b/patches/0010-Remove-calls-to-cpuinfo_get_processor.patch
@@ -0,0 +1,25 @@
+iFrom d8d7f7b02d983bb3e00728648dceb462f0f2155f Mon Sep 17 00:00:00 2001
+From: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
+Date: Tue, 7 Apr 2020 23:57:21 +0000
+Subject: [PATCH 1/1] Remove calls to cpuinfo_get_processor
+
+Signed-off-by: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
+---
+ caffe2/utils/bench_utils.cc | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/caffe2/utils/bench_utils.cc b/caffe2/utils/bench_utils.cc
+index 93384cc..facf095 100644
+--- a/caffe2/utils/bench_utils.cc
++++ b/caffe2/utils/bench_utils.cc
+@@ -13,7 +13,7 @@ uint32_t wipe_cache() {
+=20
+   if (wipe_buffer =3D=3D nullptr) {
+     CAFFE_ENFORCE(cpuinfo_initialize(), "failed to initialize cpuinfo")=
;
+-    const cpuinfo_processor* processor =3D cpuinfo_get_processor(0);
++    const cpuinfo_processor* processor;// =3D cpuinfo_get_processor(0);
+     wipe_size =3D 64 * 1024;
+ #if CPUINFO_ARCH_ARM || CPUINFO_ARCH_ARM64
+     /*
+--=20
+2.11.0
--=20
2.20.1



From minios-devel-bounces@lists.xenproject.org Wed Apr 08 00:23:00 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 08 Apr 2020 00:23: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 1jLyUe-0001kG-It; Wed, 08 Apr 2020 00:23: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=hVdw=5Y=upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1jLyUd-0001k3-OX
 for minios-devel@lists.xen.org; Wed, 08 Apr 2020 00:22:59 +0000
X-Inumbo-ID: 1001abb8-792f-11ea-818c-12813bfff9fa
Received: from mx.upb.ro (unknown [141.85.13.200])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 1001abb8-792f-11ea-818c-12813bfff9fa;
 Wed, 08 Apr 2020 00:22:43 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id 7E44BB5625D5;
 Wed,  8 Apr 2020 03:22:42 +0300 (EEST)
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10032)
 with ESMTP id tQvdlplQ-ODy; Wed,  8 Apr 2020 03:22:38 +0300 (EEST)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id 2645DB5625DB;
 Wed,  8 Apr 2020 03:22:36 +0300 (EEST)
DKIM-Filter: OpenDKIM Filter v2.10.3 mx.upb.ro 2645DB5625DB
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=upb.ro;
 s=96342B8A-77E4-11E5-BA93-D93D0963A2DF; t=1586305356;
 bh=tZxXuE6PcRMOh6IdbKE/m6k0G9dLZZkTkb0ib/QrFYc=;
 h=From:To:Date:Message-Id:MIME-Version;
 b=pG+WQ5WvVNPx0BmDJzKMSc2BRhZe/T4o7vhs3SCwGztONiD1GSnIU8BN0eW5L5ZeN
 6uAXfPCeoiKYz0ntx8HYTje2X0iShC/X7SGctz2oyfJEU58ct5zkAQo3Hksdso+oU9
 009IjHCB1FkL5etUqxCn+etGlvxwYK0pE4cJNU3w=
X-Virus-Scanned: amavisd-new at upb.ro
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id APR1GXapO8Nd; Wed,  8 Apr 2020 03:22:36 +0300 (EEST)
Received: from localhost.localdomain (unknown [86.127.159.73])
 by mx.upb.ro (Postfix) with ESMTPSA id DF83DB5625DC;
 Wed,  8 Apr 2020 03:22:35 +0300 (EEST)
From: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
To: minios-devel@lists.xen.org
Subject: [UNIKRAFT/PYTORCH PATCH 5/5] Add patches
Date: Wed,  8 Apr 2020 03:22:04 +0300
Message-Id: <20200408002204.31260-10-vlad_andrei.badoiu@upb.ro>
X-Mailer: git-send-email 2.20.1
In-Reply-To: <20200408002204.31260-1-vlad_andrei.badoiu@upb.ro>
References: <20200408002204.31260-1-vlad_andrei.badoiu@upb.ro>
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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, Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

In this patch we add several patches for:
disabling some features such as backtracking,
remove calls to functions from cpuinfo, remove
calls for other missing symbols.

Signed-off-by: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
---
 ...ds-to-suppress-redefinition-warnings.patch | 37 +++++++++++++++++
 .../0002-Comment-out-calls-to-enable_if.patch | 40 +++++++++++++++++++
 patches/0003-Comment-out-waitpid-call.patch   | 27 +++++++++++++
 ...variable-to-avoid-compilation-errors.patch | 28 +++++++++++++
 patches/0005-Disable-backtrace-support.patch  | 34 ++++++++++++++++
 patches/0006-Disable-demangle.patch           | 25 ++++++++++++
 .../0007-Comment-out-nexttoward-call.patch    | 26 ++++++++++++
 ...8-Remove-cpuinfo_get_processor-calls.patch | 34 ++++++++++++++++
 patches/0009-Comment-out-runJITCPPTests.patch | 29 ++++++++++++++
 ...emove-calls-to-cpuinfo_get_processor.patch | 25 ++++++++++++
 10 files changed, 305 insertions(+)
 create mode 100644 patches/0001-Add-guards-to-suppress-redefinition-warn=
ings.patch
 create mode 100644 patches/0002-Comment-out-calls-to-enable_if.patch
 create mode 100644 patches/0003-Comment-out-waitpid-call.patch
 create mode 100644 patches/0004-Rename-variable-to-avoid-compilation-err=
ors.patch
 create mode 100644 patches/0005-Disable-backtrace-support.patch
 create mode 100644 patches/0006-Disable-demangle.patch
 create mode 100644 patches/0007-Comment-out-nexttoward-call.patch
 create mode 100644 patches/0008-Remove-cpuinfo_get_processor-calls.patch
 create mode 100644 patches/0009-Comment-out-runJITCPPTests.patch
 create mode 100644 patches/0010-Remove-calls-to-cpuinfo_get_processor.pa=
tch

diff --git a/patches/0001-Add-guards-to-suppress-redefinition-warnings.pa=
tch b/patches/0001-Add-guards-to-suppress-redefinition-warnings.patch
new file mode 100644
index 0000000..b8fd7b1
--- /dev/null
+++ b/patches/0001-Add-guards-to-suppress-redefinition-warnings.patch
@@ -0,0 +1,37 @@
+From d4645e726ef513d1a22eb0d6be1d610cd2a01b62 Mon Sep 17 00:00:00 2001
+From: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
+Date: Tue, 7 Apr 2020 22:07:49 +0000
+Subject: [PATCH 1/8] Add guards to suppress redefinition warnings
+
+Signed-off-by: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
+---
+ c10/macros/Export.h | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/c10/macros/Export.h b/c10/macros/Export.h
+index 0a213ed..7fce4f4 100644
+--- a/c10/macros/Export.h
++++ b/c10/macros/Export.h
+@@ -86,7 +86,9 @@
+=20
+ // This one is being used by libc10.so
+ #ifdef C10_BUILD_MAIN_LIB
++#ifndef C10_API
+ #define C10_API C10_EXPORT
++#endif
+ #else
+ #define C10_API C10_IMPORT
+ #endif
+@@ -94,7 +96,9 @@
+ // This one is being used by libtorch.so
+ // TODO: rename this to TORCH_API
+ #ifdef CAFFE2_BUILD_MAIN_LIB
++#ifndef CAFFE2_API
+ #define CAFFE2_API C10_EXPORT
++#endif
+ #else
+ #define CAFFE2_API C10_IMPORT
+ #endif
+--=20
+2.11.0
+
diff --git a/patches/0002-Comment-out-calls-to-enable_if.patch b/patches/=
0002-Comment-out-calls-to-enable_if.patch
new file mode 100644
index 0000000..0195485
--- /dev/null
+++ b/patches/0002-Comment-out-calls-to-enable_if.patch
@@ -0,0 +1,40 @@
+From f844c7363c909ffa3d1bc8c692ce24e38be6c988 Mon Sep 17 00:00:00 2001
+From: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
+Date: Tue, 7 Apr 2020 22:22:37 +0000
+Subject: [PATCH 2/8] Comment out calls to enable_if
+
+Signed-off-by: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
+---
+ aten/src/ATen/native/cpu/MultinomialKernel.cpp | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/aten/src/ATen/native/cpu/MultinomialKernel.cpp b/aten/src/A=
Ten/native/cpu/MultinomialKernel.cpp
+index c00c4c0..352cbc4 100644
+--- a/aten/src/ATen/native/cpu/MultinomialKernel.cpp
++++ b/aten/src/ATen/native/cpu/MultinomialKernel.cpp
+@@ -48,8 +48,8 @@ void multinomial_apply(Tensor& result, const Tensor& s=
elf, const int64_t n_sampl
+       TORCH_CHECK(std::isfinite(static_cast<double>(val)),
+                   "invalid multinomial distribution (encountering proba=
bility entry =3D infinity or NaN)");
+ #else
+-      TORCH_CHECK(std::isfinite(val),
+-                  "invalid multinomial distribution (encountering proba=
bility entry =3D infinity or NaN)");
++      //TORCH_CHECK(std::isfinite(val),
++      //            "invalid multinomial distribution (encountering pro=
bability entry =3D infinity or NaN)");
+ #endif
+=20
+       sum +=3D val;
+@@ -130,9 +130,11 @@ void multinomial_apply(Tensor& result, const Tensor=
& self, const int64_t n_sampl
+ }
+=20
+ static void multinomial_kernel_impl(Tensor& result, const Tensor& self,=
 const int64_t n_sample, const bool with_replacement, Generator *gen) {
++  /*
+   AT_DISPATCH_FLOATING_TYPES_AND_HALF(self.scalar_type(), "multinomial"=
, [&] {
+     multinomial_apply<scalar_t>(result, self, n_sample, with_replacemen=
t, gen);
+   });
++  */
+ }
+=20
+ }
+--=20
+2.11.0
+
diff --git a/patches/0003-Comment-out-waitpid-call.patch b/patches/0003-C=
omment-out-waitpid-call.patch
new file mode 100644
index 0000000..1c09da7
--- /dev/null
+++ b/patches/0003-Comment-out-waitpid-call.patch
@@ -0,0 +1,27 @@
+From 972caf96f8ad327d281e7287c48c14e0e8fa2dc9 Mon Sep 17 00:00:00 2001
+From: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
+Date: Tue, 7 Apr 2020 22:27:39 +0000
+Subject: [PATCH 3/8] Comment out waitpid call
+
+Signed-off-by: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
+---
+ torch/csrc/DataLoader.cpp | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/torch/csrc/DataLoader.cpp b/torch/csrc/DataLoader.cpp
+index 164a7ce..5f438ea 100644
+--- a/torch/csrc/DataLoader.cpp
++++ b/torch/csrc/DataLoader.cpp
+@@ -113,7 +113,8 @@ static PyObject *THPModule_errorIfAnyWorkerFails(PyO=
bject *module, PyObject *noa
+       // Use waitid rather than waitpid so that we can set NOWAIT, and =
that Python
+       // and other handlers can get whatever info they want about the c=
hild.
+       infop.si_pid =3D 0;
+-      error =3D waitid(P_PID, worker_pid, &infop, WEXITED|WNOHANG|WNOWA=
IT);
++      // error =3D waitid(P_PID, worker_pid, &infop, WEXITED|WNOHANG|WN=
OWAIT);
++      error =3D 0;
+       // ignore errors and case with no waitable child
+       if (error < 0 || infop.si_pid =3D=3D 0)
+         continue;
+--=20
+2.11.0
+
diff --git a/patches/0004-Rename-variable-to-avoid-compilation-errors.pat=
ch b/patches/0004-Rename-variable-to-avoid-compilation-errors.patch
new file mode 100644
index 0000000..89ce0bb
--- /dev/null
+++ b/patches/0004-Rename-variable-to-avoid-compilation-errors.patch
@@ -0,0 +1,28 @@
+From 22f0829c951dc358b7fa6b40c67dbed8c36cc6e1 Mon Sep 17 00:00:00 2001
+From: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
+Date: Tue, 7 Apr 2020 22:34:46 +0000
+Subject: [PATCH 4/8] Rename variable to avoid compilation errors
+
+Signed-off-by: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
+---
+ torch/csrc/jit/script/python_tree_views.cpp | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/torch/csrc/jit/script/python_tree_views.cpp b/torch/csrc/ji=
t/script/python_tree_views.cpp
+index b7726d6..4d89ea3 100644
+--- a/torch/csrc/jit/script/python_tree_views.cpp
++++ b/torch/csrc/jit/script/python_tree_views.cpp
+@@ -74,8 +74,8 @@ Maybe<T> wrap_maybe(const SourceRange& fallback_pos, T=
* val) {
+ }
+=20
+ void initTreeViewBindings(PyObject* module) {
+-  auto _C =3D py::handle(module).cast<py::module>();
+-  auto m =3D _C.def_submodule("_jit_tree_views");
++  auto C =3D py::handle(module).cast<py::module>();
++  auto m =3D C.def_submodule("_jit_tree_views");
+=20
+   py::class_<SourceRange>(m, "SourceRange")
+       .def(
+--=20
+2.11.0
+
diff --git a/patches/0005-Disable-backtrace-support.patch b/patches/0005-=
Disable-backtrace-support.patch
new file mode 100644
index 0000000..6551681
--- /dev/null
+++ b/patches/0005-Disable-backtrace-support.patch
@@ -0,0 +1,34 @@
+From 290fb52ee2cecba86f3585ef9e500dc168063934 Mon Sep 17 00:00:00 2001
+From: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
+Date: Tue, 7 Apr 2020 22:37:49 +0000
+Subject: [PATCH 5/8] Disable backtrace support
+
+Signed-off-by: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
+---
+ c10/util/Backtrace.cpp | 8 +++++---
+ 1 file changed, 5 insertions(+), 3 deletions(-)
+
+diff --git a/c10/util/Backtrace.cpp b/c10/util/Backtrace.cpp
+index 3abfc08..6e09abc 100644
+--- a/c10/util/Backtrace.cpp
++++ b/c10/util/Backtrace.cpp
+@@ -15,11 +15,13 @@
+ // No backtrace on mobile, windows and emscripten platforms.
+ #define SUPPORTS_BACKTRACE 0
+ #else
+-#define SUPPORTS_BACKTRACE 1
+-#include <cxxabi.h>
+-#include <execinfo.h>
++//#define SUPPORTS_BACKTRACE 1
++//#include <cxxabi.h>
++//#include <execinfo.h>
+ #endif
+=20
++#define SUPPORTS_BACKTRACE 0
++
+ namespace c10 {
+=20
+ // TODO: This backtrace retrieval can be implemented on Windows via the=
 Windows
+--=20
+2.11.0
+
diff --git a/patches/0006-Disable-demangle.patch b/patches/0006-Disable-d=
emangle.patch
new file mode 100644
index 0000000..2f4c59d
--- /dev/null
+++ b/patches/0006-Disable-demangle.patch
@@ -0,0 +1,25 @@
+From 0a32adf17fcd86ef28a51b3f68e4130f7db26ee2 Mon Sep 17 00:00:00 2001
+From: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
+Date: Tue, 7 Apr 2020 22:39:52 +0000
+Subject: [PATCH 6/8] Disable demangle
+
+Signed-off-by: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
+---
+ c10/util/Type.cpp | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/c10/util/Type.cpp b/c10/util/Type.cpp
+index 3e00055..dc18ab2 100644
+--- a/c10/util/Type.cpp
++++ b/c10/util/Type.cpp
+@@ -13,6 +13,7 @@
+ #define HAS_DEMANGLE 1
+ #endif
+=20
++#define HAS_DEMANGLE 0
+ #if HAS_DEMANGLE
+=20
+ #include <cxxabi.h>
+--=20
+2.11.0
+
diff --git a/patches/0007-Comment-out-nexttoward-call.patch b/patches/000=
7-Comment-out-nexttoward-call.patch
new file mode 100644
index 0000000..369ce10
--- /dev/null
+++ b/patches/0007-Comment-out-nexttoward-call.patch
@@ -0,0 +1,26 @@
+From 511ccc836b30d8eb303b151c3b47e79d0c4c4097 Mon Sep 17 00:00:00 2001
+From: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
+Date: Tue, 7 Apr 2020 22:49:24 +0000
+Subject: [PATCH 7/8] Comment out nexttoward call
+
+Signed-off-by: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
+---
+ aten/src/ATen/native/Distributions.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/aten/src/ATen/native/Distributions.cpp b/aten/src/ATen/nati=
ve/Distributions.cpp
+index 644888a..0accb3b 100644
+--- a/aten/src/ATen/native/Distributions.cpp
++++ b/aten/src/ATen/native/Distributions.cpp
+@@ -289,7 +289,7 @@ Tensor _s_dirichlet_cpu(const Tensor& alpha, Generat=
or *gen) {
+       [](scalar_t& ret_val, const double& gamma, const double& gamma_su=
m){
+         ret_val =3D gamma / gamma_sum;
+         auto min_val =3D std::numeric_limits<scalar_t>::min();
+-        auto max_val =3D std::nexttoward(static_cast<scalar_t>(1.0f), 0=
.0f);
++        auto max_val =3D static_cast<scalar_t>(1.0f);//std::nexttoward(=
static_cast<scalar_t>(1.0f), 0.0f);
+         ret_val =3D std::min(max_val, std::max(min_val, ret_val));
+         ret_val =3D static_cast<scalar_t>(ret_val);
+       }
+--=20
+2.11.0
+
diff --git a/patches/0008-Remove-cpuinfo_get_processor-calls.patch b/patc=
hes/0008-Remove-cpuinfo_get_processor-calls.patch
new file mode 100644
index 0000000..ffdf274
--- /dev/null
+++ b/patches/0008-Remove-cpuinfo_get_processor-calls.patch
@@ -0,0 +1,34 @@
+From ffa7d398d11a2f8a93b69feb9dc1d147801da943 Mon Sep 17 00:00:00 2001
+From: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
+Date: Tue, 7 Apr 2020 22:54:06 +0000
+Subject: [PATCH 8/8] Remove cpuinfo_get_processor calls
+
+Signed-off-by: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
+---
+ caffe2/utils/bench_utils.cc | 10 +---------
+ 1 file changed, 1 insertion(+), 9 deletions(-)
+
+diff --git a/caffe2/utils/bench_utils.cc b/caffe2/utils/bench_utils.cc
+index df77512..93384cc 100644
+--- a/caffe2/utils/bench_utils.cc
++++ b/caffe2/utils/bench_utils.cc
+@@ -14,15 +14,7 @@ uint32_t wipe_cache() {
+   if (wipe_buffer =3D=3D nullptr) {
+     CAFFE_ENFORCE(cpuinfo_initialize(), "failed to initialize cpuinfo")=
;
+     const cpuinfo_processor* processor =3D cpuinfo_get_processor(0);
+-    if (processor->cache.l4 !=3D nullptr) {
+-      wipe_size =3D processor->cache.l4->size;
+-    } else if (processor->cache.l3 !=3D nullptr) {
+-      wipe_size =3D processor->cache.l3->size;
+-    } else if (processor->cache.l2 !=3D nullptr) {
+-      wipe_size =3D processor->cache.l2->size;
+-    } else {
+-      wipe_size =3D processor->cache.l1d->size;
+-    }
++    wipe_size =3D 64 * 1024;
+ #if CPUINFO_ARCH_ARM || CPUINFO_ARCH_ARM64
+     /*
+      * On ARM precise cache size is not available, and cpuinfo may
+--=20
+2.11.0
+
diff --git a/patches/0009-Comment-out-runJITCPPTests.patch b/patches/0009=
-Comment-out-runJITCPPTests.patch
new file mode 100644
index 0000000..cc49951
--- /dev/null
+++ b/patches/0009-Comment-out-runJITCPPTests.patch
@@ -0,0 +1,29 @@
+From 2f2f760fac6b14f7ce63ee1858262b4c3bbae4a7 Mon Sep 17 00:00:00 2001
+From: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
+Date: Tue, 7 Apr 2020 23:52:29 +0000
+Subject: [PATCH 1/1] Comment out runJITCPPTests
+
+We comment out runJITCPPTests calls because we
+are not running the unit tests.
+
+Signed-off-by: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
+---
+ torch/csrc/jit/init.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/torch/csrc/jit/init.cpp b/torch/csrc/jit/init.cpp
+index 9745464..cf99b95 100644
+--- a/torch/csrc/jit/init.cpp
++++ b/torch/csrc/jit/init.cpp
+@@ -286,7 +286,7 @@ void initJITBindings(PyObject* module) {
+             // newly spawned worker threads will try to initialize thei=
r
+             // PyThreadState*, and they need the GIL for this.
+             AutoNoGIL _no_gil;
+-            return runJITCPPTests(runCuda);
++            //return runJITCPPTests(runCuda);
+           },
+           py::arg("run_cuda"))
+       .def(
+--=20
+2.11.0
+
diff --git a/patches/0010-Remove-calls-to-cpuinfo_get_processor.patch b/p=
atches/0010-Remove-calls-to-cpuinfo_get_processor.patch
new file mode 100644
index 0000000..b9582b9
--- /dev/null
+++ b/patches/0010-Remove-calls-to-cpuinfo_get_processor.patch
@@ -0,0 +1,25 @@
+iFrom d8d7f7b02d983bb3e00728648dceb462f0f2155f Mon Sep 17 00:00:00 2001
+From: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
+Date: Tue, 7 Apr 2020 23:57:21 +0000
+Subject: [PATCH 1/1] Remove calls to cpuinfo_get_processor
+
+Signed-off-by: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
+---
+ caffe2/utils/bench_utils.cc | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/caffe2/utils/bench_utils.cc b/caffe2/utils/bench_utils.cc
+index 93384cc..facf095 100644
+--- a/caffe2/utils/bench_utils.cc
++++ b/caffe2/utils/bench_utils.cc
+@@ -13,7 +13,7 @@ uint32_t wipe_cache() {
+=20
+   if (wipe_buffer =3D=3D nullptr) {
+     CAFFE_ENFORCE(cpuinfo_initialize(), "failed to initialize cpuinfo")=
;
+-    const cpuinfo_processor* processor =3D cpuinfo_get_processor(0);
++    const cpuinfo_processor* processor;// =3D cpuinfo_get_processor(0);
+     wipe_size =3D 64 * 1024;
+ #if CPUINFO_ARCH_ARM || CPUINFO_ARCH_ARM64
+     /*
+--=20
+2.11.0
--=20
2.20.1



From minios-devel-bounces@lists.xenproject.org Wed Apr 08 00:23:05 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 08 Apr 2020 00:23: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 1jLyUj-0001la-Lg; Wed, 08 Apr 2020 00:23: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=hVdw=5Y=upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1jLyUi-0001lQ-Oh
 for minios-devel@lists.xen.org; Wed, 08 Apr 2020 00:23:04 +0000
X-Inumbo-ID: 1379f840-792f-11ea-818c-12813bfff9fa
Received: from mx.upb.ro (unknown [141.85.13.220])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 1379f840-792f-11ea-818c-12813bfff9fa;
 Wed, 08 Apr 2020 00:22:49 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id 53081B5625D0;
 Wed,  8 Apr 2020 03:22:48 +0300 (EEST)
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10032)
 with ESMTP id O20BkNWtt_Hw; Wed,  8 Apr 2020 03:22:36 +0300 (EEST)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id 62ECFB5625DD;
 Wed,  8 Apr 2020 03:22:35 +0300 (EEST)
DKIM-Filter: OpenDKIM Filter v2.10.3 mx.upb.ro 62ECFB5625DD
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=upb.ro;
 s=96342B8A-77E4-11E5-BA93-D93D0963A2DF; t=1586305355;
 bh=r6cxf1fYiZeYZUS+oxPyQSqUSGPmilDpULA/5QE/vnE=;
 h=From:To:Date:Message-Id:MIME-Version;
 b=Uz5LrL1qzEUTqhI8d2OB9bxQYgVrWvPKfNyAkQSaEblGe7UrIVig0LvQ95omU8nXd
 r/bOe93qb/OTfEIRmHLguu1vkaxeAVxD8b3ooTyby9LwiY9gK16T9PfYRJwRjc38G5
 APwT7icvuzLQypBmG8MR7iHBLHbZ7Q1b5h8HyXuk=
X-Virus-Scanned: amavisd-new at upb.ro
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id ShuCQkhe3T1T; Wed,  8 Apr 2020 03:22:35 +0300 (EEST)
Received: from localhost.localdomain (unknown [86.127.159.73])
 by mx.upb.ro (Postfix) with ESMTPSA id 0AF2DB5625D8;
 Wed,  8 Apr 2020 03:22:34 +0300 (EEST)
From: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
To: minios-devel@lists.xen.org
Subject: [UNIKRAFT/PYTORCH PATCH 3/4] Add includes: config headers and missing
 headers
Date: Wed,  8 Apr 2020 03:22:01 +0300
Message-Id: <20200408002204.31260-7-vlad_andrei.badoiu@upb.ro>
X-Mailer: git-send-email 2.20.1
In-Reply-To: <20200408002204.31260-1-vlad_andrei.badoiu@upb.ro>
References: <20200408002204.31260-1-vlad_andrei.badoiu@upb.ro>
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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, Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Signed-off-by: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
---
 include/aten/src/ATen/Config.h          |   12 +
 include/aten/src/ATen/cuda/CUDAConfig.h |   13 +
 include/aten/src/TH/THGeneral.h         |  166 +++
 include/aten/src/TH/THGeneral.h.in      |  172 +++
 include/bits/fenv.h                     |   18 +
 include/c10/macros/cmake_macros.h       |   22 +
 include/cpuinfo.h                       | 1821 +++++++++++++++++++++++
 include/fenv.h                          |   27 +
 8 files changed, 2251 insertions(+)
 create mode 100644 include/aten/src/ATen/Config.h
 create mode 100644 include/aten/src/ATen/cuda/CUDAConfig.h
 create mode 100644 include/aten/src/TH/THGeneral.h
 create mode 100644 include/aten/src/TH/THGeneral.h.in
 create mode 100644 include/bits/fenv.h
 create mode 100644 include/c10/macros/cmake_macros.h
 create mode 100644 include/cpuinfo.h
 create mode 100644 include/fenv.h

diff --git a/include/aten/src/ATen/Config.h b/include/aten/src/ATen/Confi=
g.h
new file mode 100644
index 0000000..08bba18
--- /dev/null
+++ b/include/aten/src/ATen/Config.h
@@ -0,0 +1,12 @@
+#pragma once
+
+// Test these using #if AT_MKL_ENABLED(), not #ifdef, so that it's
+// obvious if you forgot to include Config.h
+//    c.f. https://stackoverflow.com/questions/33759787/generating-an-er=
ror-if-checked-boolean-macro-is-not-defined
+//
+// DO NOT put the macros for CUDA libraries in this file; they belong in=
 cuda/CUDAConfig.h
+
+#define AT_MKLDNN_ENABLED() 0
+#define AT_MKL_ENABLED() 0
+#define AT_NNPACK_ENABLED() 0
+#define CAFFE2_STATIC_LINK_CUDA() 0
diff --git a/include/aten/src/ATen/cuda/CUDAConfig.h b/include/aten/src/A=
Ten/cuda/CUDAConfig.h
new file mode 100644
index 0000000..ca23913
--- /dev/null
+++ b/include/aten/src/ATen/cuda/CUDAConfig.h
@@ -0,0 +1,13 @@
+#pragma once
+
+// Test these using #if AT_CUDNN_ENABLED(), not #ifdef, so that it's
+// obvious if you forgot to include Config.h
+//    c.f. https://stackoverflow.com/questions/33759787/generating-an-er=
ror-if-checked-boolean-macro-is-not-defined
+//
+// NB: This header MUST NOT be included from other headers; it should
+// only be included from C++ files.
+
+#define AT_CUDNN_ENABLED() 0
+#define AT_ROCM_ENABLED() 0
+
+#define NVCC_FLAGS_EXTRA ""
diff --git a/include/aten/src/TH/THGeneral.h b/include/aten/src/TH/THGene=
ral.h
new file mode 100644
index 0000000..6923bcb
--- /dev/null
+++ b/include/aten/src/TH/THGeneral.h
@@ -0,0 +1,166 @@
+#ifndef TH_GENERAL_INC
+#define TH_GENERAL_INC
+
+#ifndef __STDC_FORMAT_MACROS
+#define __STDC_FORMAT_MACROS
+#endif
+
+#include <stdint.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <stdarg.h>
+#include <math.h>
+#include <limits.h>
+#include <float.h>
+#include <time.h>
+#include <string.h>
+#include <stddef.h>
+#include <inttypes.h>
+
+#ifdef TH_BLAS_MKL
+#include <mkl_vsl.h>
+#endif
+
+/* #undef USE_BLAS */
+/* #undef USE_LAPACK */
+/* #undef BLAS_F2C */
+/* #undef BLAS_USE_CBLAS_DOT */
+
+# define TH_EXTERNC extern "C"
+
+// Note(jiayq): copied from ATen/core/Macros.h. Because internal build o=
f TH
+// and ATen are not unified yet, we need to duplicate code for now. Long=
 term
+// we should merge macros.
+#ifdef _WIN32
+#if !defined(AT_CORE_STATIC_WINDOWS)
+// TODO: unify the controlling macros.
+#if defined(CAFFE2_BUILD_MAIN_LIBS) || defined(ATen_cpu_EXPORTS) || defi=
ned(caffe2_EXPORTS)
+#define TH_CPP_API __declspec(dllexport)
+#else // defined(CAFFE2_BUILD_MAIN_LIBS) || defined(ATen_cpu_EXPORTS) ||=
 defined(caffe2_EXPORTS)
+#define TH_CPP_API __declspec(dllimport)
+#endif // defined(CAFFE2_BUILD_MAIN_LIBS) || defined(ATen_cpu_EXPORTS) |=
| defined(caffe2_EXPORTS)
+#else // !defined(AT_CORE_STATIC_WINDOWS)
+#define TH_CPP_API
+#endif // !defined(AT_CORE_STATIC_WINDOWS)
+#else  // _WIN32
+#if defined(__GNUC__)
+#define TH_CPP_API __attribute__((__visibility__("default")))
+#endif // defined(__GNUC__)
+#endif  // _WIN32
+
+#ifdef NO_EXPORT
+#undef TH_CPP_API
+#define TH_CPP_API
+#endif
+
+#define TH_API TH_EXTERNC TH_CPP_API
+
+#ifdef _WIN32
+# define TH_NO_RETURN __declspec(noreturn)
+# define TH_UNREACHABLE
+#else
+# define TH_NO_RETURN __attribute__((noreturn))
+# define TH_UNREACHABLE __builtin_unreachable();
+#endif
+
+#if defined(__GNUC__) && ((__GNUC__ > 2) || (__GNUC__ =3D=3D 2 && __GNUC=
_MINOR__ > 4))
+# define TH_UNUSED __attribute__((unused))
+#else
+# define TH_UNUSED
+#endif
+
+#ifndef M_PI
+# define M_PI 3.14159265358979323846
+#endif
+
+typedef void (*THErrorHandlerFunction)(const char *msg, void *data);
+typedef void (*THArgErrorHandlerFunction)(int argNumber, const char *msg=
, void *data);
+
+#define TH_DESC_BUFF_LEN 64
+typedef struct {
+    char str[TH_DESC_BUFF_LEN];
+} THDescBuff;
+
+
+TH_API THDescBuff _THSizeDesc(const int64_t *size, const int64_t ndim);
+TH_API TH_NO_RETURN void _THError(const char *file, const int line, cons=
t char *fmt, ...);
+TH_API void _THAssertionFailed(const char *file, const int line, const c=
har *exp, const char *fmt, ...);
+TH_API void THSetErrorHandler(THErrorHandlerFunction new_handler, void *=
data);
+TH_API void THSetDefaultErrorHandler(THErrorHandlerFunction new_handler,=
 void *data);
+TH_API void _THArgCheck(const char *file, int line, int condition, int a=
rgNumber, const char *fmt, ...);
+TH_API void THSetArgErrorHandler(THArgErrorHandlerFunction new_handler, =
void *data);
+TH_API void THSetDefaultArgErrorHandler(THArgErrorHandlerFunction new_ha=
ndler, void *data);
+TH_API void* THAlloc(ptrdiff_t size);
+TH_API void* THRealloc(void *ptr, ptrdiff_t size);
+TH_API void THFree(void *ptr);
+TH_API void THSetGCHandler( void (*torchGCHandlerFunction)(void *data), =
void *data );
+// this hook should only be called by custom allocator functions
+TH_API void THHeapUpdate(ptrdiff_t size);
+
+#define THError(...) _THError(__FILE__, __LINE__, __VA_ARGS__)
+
+#define THCleanup(...) __VA_ARGS__
+
+#define THArgCheck(...)                                               \
+do {                                                                  \
+  _THArgCheck(__FILE__, __LINE__, __VA_ARGS__);                       \
+} while(0)
+
+#define THArgError(...)                                               \
+do {                                                                  \
+  _THArgCheck(__FILE__, __LINE__, false, __VA_ARGS__);                \
+  TH_UNREACHABLE                                                      \
+} while(0)
+
+#define THArgCheckWithCleanup(condition, cleanup, ...)                \
+do if (!(condition)) {                                                \
+  cleanup                                                             \
+  _THArgCheck(__FILE__, __LINE__, 0, __VA_ARGS__);                    \
+} while(0)
+
+#define THAssert(exp)                                                 \
+do {                                                                  \
+  if (!(exp)) {                                                       \
+    _THAssertionFailed(__FILE__, __LINE__, #exp, "");                 \
+  }                                                                   \
+} while(0)
+
+#define THAssertMsg(exp, ...)                                         \
+do {                                                                  \
+  if (!(exp)) {                                                       \
+    _THAssertionFailed(__FILE__, __LINE__, #exp, __VA_ARGS__);        \
+  }                                                                   \
+} while(0)
+
+#define TH_CONCAT_STRING_2(x,y) TH_CONCAT_STRING_2_EXPAND(x,y)
+#define TH_CONCAT_STRING_2_EXPAND(x,y) #x #y
+
+#define TH_CONCAT_STRING_3(x,y,z) TH_CONCAT_STRING_3_EXPAND(x,y,z)
+#define TH_CONCAT_STRING_3_EXPAND(x,y,z) #x #y #z
+
+#define TH_CONCAT_STRING_4(x,y,z,w) TH_CONCAT_STRING_4_EXPAND(x,y,z,w)
+#define TH_CONCAT_STRING_4_EXPAND(x,y,z,w) #x #y #z #w
+
+#define TH_CONCAT_2(x,y) TH_CONCAT_2_EXPAND(x,y)
+#define TH_CONCAT_2_EXPAND(x,y) x ## y
+
+#define TH_CONCAT_3(x,y,z) TH_CONCAT_3_EXPAND(x,y,z)
+#define TH_CONCAT_3_EXPAND(x,y,z) x ## y ## z
+
+#define TH_CONCAT_4_EXPAND(x,y,z,w) x ## y ## z ## w
+#define TH_CONCAT_4(x,y,z,w) TH_CONCAT_4_EXPAND(x,y,z,w)
+
+#define THMin(X, Y)  ((X) < (Y) ? (X) : (Y))
+#define THMax(X, Y)  ((X) > (Y) ? (X) : (Y))
+
+#if (defined(_MSC_VER) || defined(__MINGW32__))
+#define snprintf _snprintf
+#define popen _popen
+#define pclose _pclose
+#include <BaseTsd.h>
+#if !defined(HAVE_SSIZE_T)
+typedef SSIZE_T ssize_t;
+#endif
+#endif
+
+#endif
diff --git a/include/aten/src/TH/THGeneral.h.in b/include/aten/src/TH/THG=
eneral.h.in
new file mode 100644
index 0000000..9597581
--- /dev/null
+++ b/include/aten/src/TH/THGeneral.h.in
@@ -0,0 +1,172 @@
+#ifndef TH_GENERAL_INC
+#define TH_GENERAL_INC
+
+#ifndef __STDC_FORMAT_MACROS
+#define __STDC_FORMAT_MACROS
+#endif
+
+#include <stdint.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <stdarg.h>
+#include <math.h>
+#include <limits.h>
+#include <float.h>
+#include <time.h>
+#include <string.h>
+#include <stddef.h>
+#include <inttypes.h>
+
+#ifdef TH_BLAS_MKL
+#include <mkl_vsl.h>
+#endif
+
+#cmakedefine USE_BLAS
+#cmakedefine USE_LAPACK
+#cmakedefine BLAS_F2C
+#cmakedefine BLAS_USE_CBLAS_DOT
+
+# define TH_EXTERNC extern "C"
+
+// Note(jiayq): copied from ATen/core/Macros.h. Because internal build o=
f TH
+// and ATen are not unified yet, we need to duplicate code for now. Long=
 term
+// we should merge macros.
+#ifdef _WIN32
+#if !defined(AT_CORE_STATIC_WINDOWS)
+// TODO: unfiy the controlling macros.
+#if defined(CAFFE2_BUILD_MAIN_LIBS) || defined(ATen_cpu_EXPORTS) || defi=
ned(caffe2_EXPORTS)
+#define TH_CPP_API __declspec(dllexport)
+#else // defined(CAFFE2_BUILD_MAIN_LIBS) || defined(ATen_cpu_EXPORTS) ||=
 defined(caffe2_EXPORTS)
+#define TH_CPP_API __declspec(dllimport)
+#endif // defined(CAFFE2_BUILD_MAIN_LIBS) || defined(ATen_cpu_EXPORTS) |=
| defined(caffe2_EXPORTS)
+#else // !defined(AT_CORE_STATIC_WINDOWS)
+#define TH_CPP_API
+#endif // !defined(AT_CORE_STATIC_WINDOWS)
+#else  // _WIN32
+#if defined(__GNUC__)
+#define TH_CPP_API __attribute__((__visibility__("default")))
+#endif // defined(__GNUC__)
+#endif  // _WIN32
+
+#ifdef NO_EXPORT
+#undef TH_CPP_API
+#define TH_CPP_API
+#endif
+
+#define TH_API TH_EXTERNC TH_CPP_API
+
+#ifdef _WIN32
+# define TH_NO_RETURN __declspec(noreturn)
+# define TH_UNREACHABLE
+#else
+# define TH_NO_RETURN __attribute__((noreturn))
+# define TH_UNREACHABLE __builtin_unreachable();
+#endif
+
+#if defined(__GNUC__) && ((__GNUC__ > 2) || (__GNUC__ =3D=3D 2 && __GNUC=
_MINOR__ > 4))
+# define TH_UNUSED __attribute__((unused))
+#else
+# define TH_UNUSED
+#endif
+
+#if defined(__clang__)
+#define __ubsan_ignore_float_divide_by_zero__ __attribute__((no_sanitize=
("float-divide-by-zero")))
+#else
+#define __ubsan_ignore_float_divide_by_zero__
+#endif
+
+#ifndef M_PI
+# define M_PI 3.14159265358979323846
+#endif
+
+typedef void (*THErrorHandlerFunction)(const char *msg, void *data);
+typedef void (*THArgErrorHandlerFunction)(int argNumber, const char *msg=
, void *data);
+
+#define TH_DESC_BUFF_LEN 64
+typedef struct {
+    char str[TH_DESC_BUFF_LEN];
+} THDescBuff;
+
+
+TH_API THDescBuff _THSizeDesc(const int64_t *size, const int64_t ndim);
+TH_API TH_NO_RETURN void _THError(const char *file, const int line, cons=
t char *fmt, ...);
+TH_API void _THAssertionFailed(const char *file, const int line, const c=
har *exp, const char *fmt, ...);
+TH_API void THSetErrorHandler(THErrorHandlerFunction new_handler, void *=
data);
+TH_API void THSetDefaultErrorHandler(THErrorHandlerFunction new_handler,=
 void *data);
+TH_API void _THArgCheck(const char *file, int line, int condition, int a=
rgNumber, const char *fmt, ...);
+TH_API void THSetArgErrorHandler(THArgErrorHandlerFunction new_handler, =
void *data);
+TH_API void THSetDefaultArgErrorHandler(THArgErrorHandlerFunction new_ha=
ndler, void *data);
+TH_API void* THAlloc(ptrdiff_t size);
+TH_API void* THRealloc(void *ptr, ptrdiff_t size);
+TH_API void THFree(void *ptr);
+TH_API void THSetGCHandler( void (*torchGCHandlerFunction)(void *data), =
void *data );
+// this hook should only be called by custom allocator functions
+TH_API void THHeapUpdate(ptrdiff_t size);
+
+#define THError(...) _THError(__FILE__, __LINE__, __VA_ARGS__)
+
+#define THCleanup(...) __VA_ARGS__
+
+#define THArgCheck(...)                                               \
+do {                                                                  \
+  _THArgCheck(__FILE__, __LINE__, __VA_ARGS__);                       \
+} while(0)
+
+#define THArgError(...)                                               \
+do {                                                                  \
+  _THArgCheck(__FILE__, __LINE__, false, __VA_ARGS__);                \
+  TH_UNREACHABLE                                                      \
+} while(0)
+
+#define THArgCheckWithCleanup(condition, cleanup, ...)                \
+do if (!(condition)) {                                                \
+  cleanup                                                             \
+  _THArgCheck(__FILE__, __LINE__, 0, __VA_ARGS__);                    \
+} while(0)
+
+#define THAssert(exp)                                                 \
+do {                                                                  \
+  if (!(exp)) {                                                       \
+    _THAssertionFailed(__FILE__, __LINE__, #exp, "");                 \
+  }                                                                   \
+} while(0)
+
+#define THAssertMsg(exp, ...)                                         \
+do {                                                                  \
+  if (!(exp)) {                                                       \
+    _THAssertionFailed(__FILE__, __LINE__, #exp, __VA_ARGS__);        \
+  }                                                                   \
+} while(0)
+
+#define TH_CONCAT_STRING_2(x,y) TH_CONCAT_STRING_2_EXPAND(x,y)
+#define TH_CONCAT_STRING_2_EXPAND(x,y) #x #y
+
+#define TH_CONCAT_STRING_3(x,y,z) TH_CONCAT_STRING_3_EXPAND(x,y,z)
+#define TH_CONCAT_STRING_3_EXPAND(x,y,z) #x #y #z
+
+#define TH_CONCAT_STRING_4(x,y,z,w) TH_CONCAT_STRING_4_EXPAND(x,y,z,w)
+#define TH_CONCAT_STRING_4_EXPAND(x,y,z,w) #x #y #z #w
+
+#define TH_CONCAT_2(x,y) TH_CONCAT_2_EXPAND(x,y)
+#define TH_CONCAT_2_EXPAND(x,y) x ## y
+
+#define TH_CONCAT_3(x,y,z) TH_CONCAT_3_EXPAND(x,y,z)
+#define TH_CONCAT_3_EXPAND(x,y,z) x ## y ## z
+
+#define TH_CONCAT_4_EXPAND(x,y,z,w) x ## y ## z ## w
+#define TH_CONCAT_4(x,y,z,w) TH_CONCAT_4_EXPAND(x,y,z,w)
+
+#define THMin(X, Y)  ((X) < (Y) ? (X) : (Y))
+#define THMax(X, Y)  ((X) > (Y) ? (X) : (Y))
+
+#if (defined(_MSC_VER) || defined(__MINGW32__))
+#define snprintf _snprintf
+#define popen _popen
+#define pclose _pclose
+#include <BaseTsd.h>
+#if !defined(HAVE_SSIZE_T)
+typedef SSIZE_T ssize_t;
+#endif
+#endif
+
+#endif
diff --git a/include/bits/fenv.h b/include/bits/fenv.h
new file mode 100644
index 0000000..c113b7c
--- /dev/null
+++ b/include/bits/fenv.h
@@ -0,0 +1,18 @@
+#define FE_INVALID    1
+#define FE_DIVBYZERO  2
+#define FE_OVERFLOW   4
+#define FE_UNDERFLOW  8
+#define FE_INEXACT    16
+#define FE_ALL_EXCEPT 31
+#define FE_TONEAREST  0
+#define FE_DOWNWARD   0x800000
+#define FE_UPWARD     0x400000
+#define FE_TOWARDZERO 0xc00000
+
+typedef unsigned long fexcept_t;
+
+typedef struct {
+	unsigned long __cw;
+} fenv_t;
+
+#define FE_DFL_ENV      ((const fenv_t *) -1)
diff --git a/include/c10/macros/cmake_macros.h b/include/c10/macros/cmake=
_macros.h
new file mode 100644
index 0000000..837195f
--- /dev/null
+++ b/include/c10/macros/cmake_macros.h
@@ -0,0 +1,22 @@
+#ifndef C10_MACROS_CMAKE_MACROS_H_
+#define C10_MACROS_CMAKE_MACROS_H_
+
+// Automatically generated header file for the C10 library.
+// Do not include this file directly. Instead, include c10/macros/Macros=
.h.
+
+// #define C10_BUILD_SHARED_LIBS
+/* #undef C10_USE_GLOG */
+/* #undef C10_USE_GFLAGS */
+/* #undef C10_USE_NUMA */
+
+// Used by libtorch mobile build to enable features that are not enabled=
 by
+// caffe2 mobile build. Should only use it when necessary as we are comm=
itted
+// to converging libtorch and caffe2 mobile builds and removing it event=
ually.
+/* #undef FEATURE_TORCH_MOBILE */
+
+// If defined it will use static dispatch for ATen operators.
+// Should expose this macro for projects including ATen headers to inher=
ient
+// the same option.
+/* #undef USE_STATIC_DISPATCH */
+
+#endif // C10_MACROS_CMAKE_MACROS_H_
diff --git a/include/cpuinfo.h b/include/cpuinfo.h
new file mode 100644
index 0000000..fc0abcf
--- /dev/null
+++ b/include/cpuinfo.h
@@ -0,0 +1,1821 @@
+/*
+ Copyright (c) 2017-2018 Facebook Inc.
+ Copyright (C) 2012-2017 Georgia Institute of Technology
+ Copyright (C) 2010-2012 Marat Dukhan
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are =
met:
+
+ * Redistributions of source code must retain the above copyright notice=
, this
+   list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright not=
ice,
+   this list of conditions and the following disclaimer in the documenta=
tion
+   and/or other materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS=
 IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, T=
HE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURP=
OSE ARE
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE L=
IABLE
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENT=
IAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS=
 OR
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWE=
VER
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIAB=
ILITY,
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF T=
HE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#pragma once
+#ifndef CPUINFO_H
+#define CPUINFO_H
+
+#ifndef __cplusplus
+	#include <stdbool.h>
+#endif
+
+#ifdef __APPLE__
+	#include <TargetConditionals.h>
+#endif
+
+#include <stdint.h>
+
+/* Identify architecture and define corresponding macro */
+
+#if defined(__i386__) || defined(__i486__) || defined(__i586__) || defin=
ed(__i686__) || defined(_M_IX86)
+	#define CPUINFO_ARCH_X86 1
+#endif
+
+#if defined(__x86_64__) || defined(__x86_64) || defined(_M_X64) || defin=
ed(_M_AMD64)
+	#define CPUINFO_ARCH_X86_64 1
+#endif
+
+#if defined(__arm__) || defined(_M_ARM)
+	#define CPUINFO_ARCH_ARM 1
+#endif
+
+#if defined(__aarch64__) || defined(_M_ARM64)
+	#define CPUINFO_ARCH_ARM64 1
+#endif
+
+#if defined(__PPC64__) || defined(__powerpc64__) || defined(_ARCH_PPC64)
+	#define CPUINFO_ARCH_PPC64 1
+#endif
+
+#if defined(__pnacl__)
+	#define CPUINFO_ARCH_PNACL 1
+#endif
+
+#if defined(EMSCRIPTEN)
+	#define CPUINFO_ARCH_ASMJS 1
+#endif
+
+#if CPUINFO_ARCH_X86 && defined(_MSC_VER)
+	#define CPUINFO_ABI __cdecl
+#elif CPUINFO_ARCH_X86 && defined(__GNUC__)
+	#define CPUINFO_ABI __attribute__((__cdecl__))
+#else
+	#define CPUINFO_ABI
+#endif
+
+/* Define other architecture-specific macros as 0 */
+
+#ifndef CPUINFO_ARCH_X86
+	#define CPUINFO_ARCH_X86 0
+#endif
+
+#ifndef CPUINFO_ARCH_X86_64
+	#define CPUINFO_ARCH_X86_64 0
+#endif
+
+#ifndef CPUINFO_ARCH_ARM
+	#define CPUINFO_ARCH_ARM 0
+#endif
+
+#ifndef CPUINFO_ARCH_ARM64
+	#define CPUINFO_ARCH_ARM64 0
+#endif
+
+#ifndef CPUINFO_ARCH_PPC64
+	#define CPUINFO_ARCH_PPC64 0
+#endif
+
+#ifndef CPUINFO_ARCH_PNACL
+	#define CPUINFO_ARCH_PNACL 0
+#endif
+
+#ifndef CPUINFO_ARCH_ASMJS
+	#define CPUINFO_ARCH_ASMJS 0
+#endif
+
+#define CPUINFO_CACHE_UNIFIED          0x00000001
+#define CPUINFO_CACHE_INCLUSIVE        0x00000002
+#define CPUINFO_CACHE_COMPLEX_INDEXING 0x00000004
+
+struct cpuinfo_cache {
+	/** Cache size in bytes */
+	uint32_t size;
+	/** Number of ways of associativity */
+	uint32_t associativity;
+	/** Number of sets */
+	uint32_t sets;
+	/** Number of partitions */
+	uint32_t partitions;
+	/** Line size in bytes */
+	uint32_t line_size;
+	/**
+	 * Binary characteristics of the cache (unified cache, inclusive cache,=
 cache with complex indexing).
+	 *
+	 * @see CPUINFO_CACHE_UNIFIED, CPUINFO_CACHE_INCLUSIVE, CPUINFO_CACHE_C=
OMPLEX_INDEXING
+	 */
+	uint32_t flags;
+	/** Index of the first logical processor that shares this cache */
+	uint32_t processor_start;
+	/** Number of logical processors that share this cache */
+	uint32_t processor_count;
+};
+
+struct cpuinfo_trace_cache {
+	uint32_t uops;
+	uint32_t associativity;
+};
+
+#define CPUINFO_PAGE_SIZE_4KB  0x1000
+#define CPUINFO_PAGE_SIZE_1MB  0x100000
+#define CPUINFO_PAGE_SIZE_2MB  0x200000
+#define CPUINFO_PAGE_SIZE_4MB  0x400000
+#define CPUINFO_PAGE_SIZE_16MB 0x1000000
+#define CPUINFO_PAGE_SIZE_1GB  0x40000000
+
+struct cpuinfo_tlb {
+	uint32_t entries;
+	uint32_t associativity;
+	uint64_t pages;
+};
+
+/** Vendor of processor core design */
+enum cpuinfo_vendor {
+	/** Processor vendor is not known to the library, or the library failed=
 to get vendor information from the OS. */
+	cpuinfo_vendor_unknown =3D 0,
+
+	/* Active vendors of modern CPUs */
+
+	/**
+	 * Intel Corporation. Vendor of x86, x86-64, IA64, and ARM processor mi=
croarchitectures.
+	 *
+	 * Sold its ARM design subsidiary in 2006. The last ARM processor desig=
n was released in 2004.
+	 */
+	cpuinfo_vendor_intel    =3D 1,
+	/** Advanced Micro Devices, Inc. Vendor of x86 and x86-64 processor mic=
roarchitectures. */
+	cpuinfo_vendor_amd      =3D 2,
+	/** ARM Holdings plc. Vendor of ARM and ARM64 processor microarchitectu=
res. */
+	cpuinfo_vendor_arm      =3D 3,
+	/** Qualcomm Incorporated. Vendor of ARM and ARM64 processor microarchi=
tectures. */
+	cpuinfo_vendor_qualcomm =3D 4,
+	/** Apple Inc. Vendor of ARM and ARM64 processor microarchitectures. */
+	cpuinfo_vendor_apple    =3D 5,
+	/** Samsung Electronics Co., Ltd. Vendir if ARM64 processor microarchit=
ectures. */
+	cpuinfo_vendor_samsung  =3D 6,
+	/** Nvidia Corporation. Vendor of ARM64-compatible processor microarchi=
tectures. */
+	cpuinfo_vendor_nvidia   =3D 7,
+	/** MIPS Technologies, Inc. Vendor of MIPS processor microarchitectures=
. */
+	cpuinfo_vendor_mips     =3D 8,
+	/** International Business Machines Corporation. Vendor of PowerPC proc=
essor microarchitectures. */
+	cpuinfo_vendor_ibm      =3D 9,
+	/** Ingenic Semiconductor. Vendor of MIPS processor microarchitectures.=
 */
+	cpuinfo_vendor_ingenic  =3D 10,
+	/**
+	 * VIA Technologies, Inc. Vendor of x86 and x86-64 processor microarchi=
tectures.
+	 *
+	 * Processors are designed by Centaur Technology, a subsidiary of VIA T=
echnologies.
+	 */
+	cpuinfo_vendor_via      =3D 11,
+	/** Cavium, Inc. Vendor of ARM64 processor microarchitectures. */
+	cpuinfo_vendor_cavium   =3D 12,
+	/** Broadcom, Inc. Vendor of ARM processor microarchitectures. */
+	cpuinfo_vendor_broadcom =3D 13,
+	/** Applied Micro Circuits Corporation (APM). Vendor of ARM64 processor=
 microarchitectures. */
+	cpuinfo_vendor_apm      =3D 14,
+	/**
+	 * Huawei Technologies Co., Ltd. Vendor of ARM64 processor microarchite=
ctures.
+	 *
+	 * Processors are designed by HiSilicon, a subsidiary of Huawei.
+	 */
+	cpuinfo_vendor_huawei   =3D 15,
+
+	/* Active vendors of embedded CPUs */
+
+	/** Texas Instruments Inc. Vendor of ARM processor microarchitectures. =
*/
+	cpuinfo_vendor_texas_instruments =3D 30,
+	/** Marvell Technology Group Ltd. Vendor of ARM processor microarchitec=
tures. */
+	cpuinfo_vendor_marvell           =3D 31,
+	/** RDC Semiconductor Co., Ltd. Vendor of x86 processor microarchitectu=
res. */
+	cpuinfo_vendor_rdc               =3D 32,
+	/** DM&P Electronics Inc. Vendor of x86 processor microarchitectures. *=
/
+	cpuinfo_vendor_dmp               =3D 33,
+	/** Motorola, Inc. Vendor of PowerPC and ARM processor microarchitectur=
es. */
+	cpuinfo_vendor_motorola          =3D 34,
+
+	/* Defunct CPU vendors */
+
+	/**
+	 * Transmeta Corporation. Vendor of x86 processor microarchitectures.
+	 *
+	 * Now defunct. The last processor design was released in 2004.
+	 * Transmeta processors implemented VLIW ISA and used binary translatio=
n to execute x86 code.
+	 */
+	cpuinfo_vendor_transmeta =3D 50,
+	/**
+	 * Cyrix Corporation. Vendor of x86 processor microarchitectures.
+	 *
+	 * Now defunct. The last processor design was released in 1996.
+	 */
+	cpuinfo_vendor_cyrix     =3D 51,
+	/**
+	 * Rise Technology. Vendor of x86 processor microarchitectures.
+	 *
+	 * Now defunct. The last processor design was released in 1999.
+	 */
+	cpuinfo_vendor_rise      =3D 52,
+	/**
+	 * National Semiconductor. Vendor of x86 processor microarchitectures.
+	 *
+	 * Sold its x86 design subsidiary in 1999. The last processor design wa=
s released in 1998.
+	 */
+	cpuinfo_vendor_nsc       =3D 53,
+	/**
+	 * Silicon Integrated Systems. Vendor of x86 processor microarchitectur=
es.
+	 *
+	 * Sold its x86 design subsidiary in 2001. The last processor design wa=
s released in 2001.
+	 */
+	cpuinfo_vendor_sis       =3D 54,
+	/**
+	 * NexGen. Vendor of x86 processor microarchitectures.
+	 *
+	 * Now defunct. The last processor design was released in 1994.
+	 * NexGen designed the first x86 microarchitecture which decomposed x86=
 instructions into simple microoperations.
+	 */
+	cpuinfo_vendor_nexgen    =3D 55,
+	/**
+	 * United Microelectronics Corporation. Vendor of x86 processor microar=
chitectures.
+	 *
+	 * Ceased x86 in the early 1990s. The last processor design was release=
d in 1991.
+	 * Designed U5C and U5D processors. Both are 486 level.
+	 */
+	cpuinfo_vendor_umc       =3D 56,
+	/**
+	 * Digital Equipment Corporation. Vendor of ARM processor microarchitec=
ture.
+	 *
+	 * Sold its ARM designs in 1997. The last processor design was released=
 in 1997.
+	 */
+	cpuinfo_vendor_dec       =3D 57,
+};
+
+/**
+ * Processor microarchitecture
+ *
+ * Processors with different microarchitectures often have different ins=
truction performance characteristics,
+ * and may have dramatically different pipeline organization.
+ */
+enum cpuinfo_uarch {
+	/** Microarchitecture is unknown, or the library failed to get informat=
ion about the microarchitecture from OS */
+	cpuinfo_uarch_unknown =3D 0,
+
+	/** Pentium and Pentium MMX microarchitecture. */
+	cpuinfo_uarch_p5    =3D 0x00100100,
+	/** Intel Quark microarchitecture. */
+	cpuinfo_uarch_quark =3D 0x00100101,
+
+	/** Pentium Pro, Pentium II, and Pentium III. */
+	cpuinfo_uarch_p6           =3D 0x00100200,
+	/** Pentium M. */
+	cpuinfo_uarch_dothan       =3D 0x00100201,
+	/** Intel Core microarchitecture. */
+	cpuinfo_uarch_yonah        =3D 0x00100202,
+	/** Intel Core 2 microarchitecture on 65 nm process. */
+	cpuinfo_uarch_conroe       =3D 0x00100203,
+	/** Intel Core 2 microarchitecture on 45 nm process. */
+	cpuinfo_uarch_penryn       =3D 0x00100204,
+	/** Intel Nehalem and Westmere microarchitectures (Core i3/i5/i7 1st ge=
n). */
+	cpuinfo_uarch_nehalem      =3D 0x00100205,
+	/** Intel Sandy Bridge microarchitecture (Core i3/i5/i7 2nd gen). */
+	cpuinfo_uarch_sandy_bridge =3D 0x00100206,
+	/** Intel Ivy Bridge microarchitecture (Core i3/i5/i7 3rd gen). */
+	cpuinfo_uarch_ivy_bridge   =3D 0x00100207,
+	/** Intel Haswell microarchitecture (Core i3/i5/i7 4th gen). */
+	cpuinfo_uarch_haswell      =3D 0x00100208,
+	/** Intel Broadwell microarchitecture. */
+	cpuinfo_uarch_broadwell    =3D 0x00100209,
+	/** Intel Sky Lake microarchitecture. */
+	cpuinfo_uarch_sky_lake     =3D 0x0010020A,
+	/** Intel Kaby Lake microarchitecture. */
+	cpuinfo_uarch_kaby_lake    =3D 0x0010020B,
+
+	/** Pentium 4 with Willamette, Northwood, or Foster cores. */
+	cpuinfo_uarch_willamette =3D 0x00100300,
+	/** Pentium 4 with Prescott and later cores. */
+	cpuinfo_uarch_prescott   =3D 0x00100301,
+
+	/** Intel Atom on 45 nm process. */
+	cpuinfo_uarch_bonnell    =3D 0x00100400,
+	/** Intel Atom on 32 nm process. */
+	cpuinfo_uarch_saltwell   =3D 0x00100401,
+	/** Intel Silvermont microarchitecture (22 nm out-of-order Atom). */
+	cpuinfo_uarch_silvermont =3D 0x00100402,
+	/** Intel Airmont microarchitecture (14 nm out-of-order Atom). */
+	cpuinfo_uarch_airmont    =3D 0x00100403,
+
+	/** Intel Knights Ferry HPC boards. */
+	cpuinfo_uarch_knights_ferry   =3D 0x00100500,
+	/** Intel Knights Corner HPC boards (aka Xeon Phi). */
+	cpuinfo_uarch_knights_corner  =3D 0x00100501,
+	/** Intel Knights Landing microarchitecture (second-gen MIC). */
+	cpuinfo_uarch_knights_landing =3D 0x00100502,
+	/** Intel Knights Hill microarchitecture (third-gen MIC). */
+	cpuinfo_uarch_knights_hill    =3D 0x00100503,
+	/** Intel Knights Mill Xeon Phi. */
+	cpuinfo_uarch_knights_mill    =3D 0x00100504,
+
+	/** Intel/Marvell XScale series. */
+	cpuinfo_uarch_xscale =3D 0x00100600,
+
+	/** AMD K5. */
+	cpuinfo_uarch_k5        =3D 0x00200100,
+	/** AMD K6 and alike. */
+	cpuinfo_uarch_k6        =3D 0x00200101,
+	/** AMD Athlon and Duron. */
+	cpuinfo_uarch_k7        =3D 0x00200102,
+	/** AMD Athlon 64, Opteron 64. */
+	cpuinfo_uarch_k8        =3D 0x00200103,
+	/** AMD Family 10h (Barcelona, Istambul, Magny-Cours). */
+	cpuinfo_uarch_k10       =3D 0x00200104,
+	/**
+	 * AMD Bulldozer microarchitecture
+	 * Zambezi FX-series CPUs, Zurich, Valencia and Interlagos Opteron CPUs=
.
+	 */
+	cpuinfo_uarch_bulldozer =3D 0x00200105,
+	/**
+	 * AMD Piledriver microarchitecture
+	 * Vishera FX-series CPUs, Trinity and Richland APUs, Delhi, Seoul, Abu=
 Dhabi Opteron CPUs.
+	 */
+	cpuinfo_uarch_piledriver  =3D 0x00200106,
+	/** AMD Steamroller microarchitecture (Kaveri APUs). */
+	cpuinfo_uarch_steamroller =3D 0x00200107,
+	/** AMD Excavator microarchitecture (Carizzo APUs). */
+	cpuinfo_uarch_excavator   =3D 0x00200108,
+	/** AMD Zen microarchitecture (Ryzen CPUs). */
+	cpuinfo_uarch_zen         =3D 0x00200109,
+
+	/** NSC Geode and AMD Geode GX and LX. */
+	cpuinfo_uarch_geode  =3D 0x00200200,
+	/** AMD Bobcat mobile microarchitecture. */
+	cpuinfo_uarch_bobcat =3D 0x00200201,
+	/** AMD Jaguar mobile microarchitecture. */
+	cpuinfo_uarch_jaguar =3D 0x00200202,
+	/** AMD Puma mobile microarchitecture. */
+	cpuinfo_uarch_puma   =3D 0x00200203,
+
+	/** ARM7 series. */
+	cpuinfo_uarch_arm7  =3D 0x00300100,
+	/** ARM9 series. */
+	cpuinfo_uarch_arm9  =3D 0x00300101,
+	/** ARM 1136, ARM 1156, ARM 1176, or ARM 11MPCore. */
+	cpuinfo_uarch_arm11 =3D 0x00300102,
+
+	/** ARM Cortex-A5. */
+	cpuinfo_uarch_cortex_a5  =3D 0x00300205,
+	/** ARM Cortex-A7. */
+	cpuinfo_uarch_cortex_a7  =3D 0x00300207,
+	/** ARM Cortex-A8. */
+	cpuinfo_uarch_cortex_a8  =3D 0x00300208,
+	/** ARM Cortex-A9. */
+	cpuinfo_uarch_cortex_a9  =3D 0x00300209,
+	/** ARM Cortex-A12. */
+	cpuinfo_uarch_cortex_a12 =3D 0x00300212,
+	/** ARM Cortex-A15. */
+	cpuinfo_uarch_cortex_a15 =3D 0x00300215,
+	/** ARM Cortex-A17. */
+	cpuinfo_uarch_cortex_a17 =3D 0x00300217,
+
+	/** ARM Cortex-A32. */
+	cpuinfo_uarch_cortex_a32 =3D 0x00300332,
+	/** ARM Cortex-A35. */
+	cpuinfo_uarch_cortex_a35 =3D 0x00300335,
+	/** ARM Cortex-A53. */
+	cpuinfo_uarch_cortex_a53 =3D 0x00300353,
+	/** ARM Cortex-A55. */
+	cpuinfo_uarch_cortex_a55 =3D 0x00300355,
+	/** ARM Cortex-A57. */
+	cpuinfo_uarch_cortex_a57 =3D 0x00300357,
+	/** ARM Cortex-A72. */
+	cpuinfo_uarch_cortex_a72 =3D 0x00300372,
+	/** ARM Cortex-A73. */
+	cpuinfo_uarch_cortex_a73 =3D 0x00300373,
+	/** ARM Cortex-A75. */
+	cpuinfo_uarch_cortex_a75 =3D 0x00300375,
+	/** ARM Cortex-A76. */
+	cpuinfo_uarch_cortex_a76 =3D 0x00300376,
+
+	/** Qualcomm Scorpion. */
+	cpuinfo_uarch_scorpion =3D 0x00400100,
+	/** Qualcomm Krait. */
+	cpuinfo_uarch_krait    =3D 0x00400101,
+	/** Qualcomm Kryo. */
+	cpuinfo_uarch_kryo     =3D 0x00400102,
+	/** Qualcomm Falkor. */
+	cpuinfo_uarch_falkor   =3D 0x00400103,
+	/** Qualcomm Saphira. */
+	cpuinfo_uarch_saphira  =3D 0x00400104,
+
+	/** Nvidia Denver. */
+	cpuinfo_uarch_denver   =3D 0x00500100,
+	/** Nvidia Denver 2. */
+	cpuinfo_uarch_denver2  =3D 0x00500101,
+	/** Nvidia Carmel. */
+	cpuinfo_uarch_carmel   =3D 0x00500102,
+
+	/** Samsung Mongoose M1 (Exynos 8890 big cores). */
+	cpuinfo_uarch_mongoose_m1 =3D 0x00600100,
+	/** Samsung Mongoose M2 (Exynos 8895 big cores). */
+	cpuinfo_uarch_mongoose_m2 =3D 0x00600101,
+	/** Samsung Meerkat M3 (Exynos 9810 big cores). */
+	cpuinfo_uarch_meerkat_m3  =3D 0x00600102,
+
+	/** Apple A6 and A6X processors. */
+	cpuinfo_uarch_swift     =3D 0x00700100,
+	/** Apple A7 processor. */
+	cpuinfo_uarch_cyclone   =3D 0x00700101,
+	/** Apple A8 and A8X processor. */
+	cpuinfo_uarch_typhoon   =3D 0x00700102,
+	/** Apple A9 and A9X processor. */
+	cpuinfo_uarch_twister   =3D 0x00700103,
+	/** Apple A10 and A10X processor. */
+	cpuinfo_uarch_hurricane =3D 0x00700104,
+	/** Apple A11 processor (big cores). */
+	cpuinfo_uarch_monsoon   =3D 0x00700105,
+	/** Apple A11 processor (little cores). */
+	cpuinfo_uarch_mistral   =3D 0x00700106,
+
+	/** Cavium ThunderX. */
+	cpuinfo_uarch_thunderx =3D 0x00800100,
+	/** Cavium ThunderX2 (originally Broadcom Vulkan). */
+	cpuinfo_uarch_thunderx2 =3D 0x00800200,
+
+	/** Marvell PJ4. */
+	cpuinfo_uarch_pj4 =3D 0x00900100,
+
+	/** Broadcom Brahma B15. */
+	cpuinfo_uarch_brahma_b15 =3D 0x00A00100,
+	/** Broadcom Brahma B53. */
+	cpuinfo_uarch_brahma_b53 =3D 0x00A00101,
+
+	/** Applied Micro X-Gene. */
+	cpuinfo_uarch_xgene =3D 0x00B00100,
+};
+
+struct cpuinfo_processor {
+	/** SMT (hyperthread) ID within a core */
+	uint32_t smt_id;
+	/** Core containing this logical processor */
+	const struct cpuinfo_core* core;
+	/** Cluster of cores containing this logical processor */
+	const struct cpuinfo_cluster* cluster;
+	/** Physical package containing this logical processor */
+	const struct cpuinfo_package* package;
+#if defined(__linux__)
+	/**
+	 * Linux-specific ID for the logical processor:
+	 * - Linux kernel exposes information about this logical processor in /=
sys/devices/system/cpu/cpu<linux_id>/
+	 * - Bit <linux_id> in the cpu_set_t identifies this logical processor
+	 */
+	int linux_id;
+#endif
+#if defined(_WIN32)
+	/** Windows-specific ID for the group containing the logical processor.=
 */
+	uint16_t windows_group_id;
+	/**
+	 * Windows-specific ID of the logical processor within its group:
+	 * - Bit <windows_processor_id> in the KAFFINITY mask identifies this l=
ogical processor within its group.
+	 */
+	uint16_t windows_processor_id;
+#endif
+#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+	/** APIC ID (unique x86-specific ID of the logical processor) */
+	uint32_t apic_id;
+#endif
+	struct {
+		/** Level 1 instruction cache */
+		const struct cpuinfo_cache* l1i;
+		/** Level 1 data cache */
+		const struct cpuinfo_cache* l1d;
+		/** Level 2 unified or data cache */
+		const struct cpuinfo_cache* l2;
+		/** Level 3 unified or data cache */
+		const struct cpuinfo_cache* l3;
+		/** Level 4 unified or data cache */
+		const struct cpuinfo_cache* l4;
+	} cache;
+};
+
+struct cpuinfo_core {
+	/** Index of the first logical processor on this core. */
+	uint32_t processor_start;
+	/** Number of logical processors on this core */
+	uint32_t processor_count;
+	/** Core ID within a package */
+	uint32_t core_id;
+	/** Cluster containing this core */
+	const struct cpuinfo_cluster* cluster;
+	/** Physical package containing this core. */
+	const struct cpuinfo_package* package;
+	/** Vendor of the CPU microarchitecture for this core */
+	enum cpuinfo_vendor vendor;
+	/** CPU microarchitecture for this core */
+	enum cpuinfo_uarch uarch;
+#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+	/** Value of CPUID leaf 1 EAX register for this core */
+	uint32_t cpuid;
+#elif CPUINFO_ARCH_ARM || CPUINFO_ARCH_ARM64
+	/** Value of Main ID Register (MIDR) for this core */
+	uint32_t midr;
+#endif
+	/** Clock rate (non-Turbo) of the core, in Hz */
+	uint64_t frequency;
+};
+
+struct cpuinfo_cluster {
+	/** Index of the first logical processor in the cluster */
+	uint32_t processor_start;
+	/** Number of logical processors in the cluster */
+	uint32_t processor_count;
+	/** Index of the first core in the cluster */
+	uint32_t core_start;
+	/** Number of cores on the cluster */
+	uint32_t core_count;
+	/** Cluster ID within a package */
+	uint32_t cluster_id;
+	/** Physical package containing the cluster */
+	const struct cpuinfo_package* package;
+	/** CPU microarchitecture vendor of the cores in the cluster */
+	enum cpuinfo_vendor vendor;
+	/** CPU microarchitecture of the cores in the cluster */
+	enum cpuinfo_uarch uarch;
+#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+	/** Value of CPUID leaf 1 EAX register of the cores in the cluster */
+	uint32_t cpuid;
+#elif CPUINFO_ARCH_ARM || CPUINFO_ARCH_ARM64
+	/** Value of Main ID Register (MIDR) of the cores in the cluster */
+	uint32_t midr;
+#endif
+	/** Clock rate (non-Turbo) of the cores in the cluster, in Hz */
+	uint64_t frequency;
+};
+
+#define CPUINFO_PACKAGE_NAME_MAX 48
+
+struct cpuinfo_package {
+	/** SoC or processor chip model name */
+	char name[CPUINFO_PACKAGE_NAME_MAX];
+	/** Index of the first logical processor on this physical package */
+	uint32_t processor_start;
+	/** Number of logical processors on this physical package */
+	uint32_t processor_count;
+	/** Index of the first core on this physical package */
+	uint32_t core_start;
+	/** Number of cores on this physical package */
+	uint32_t core_count;
+	/** Index of the first cluster of cores on this physical package */
+	uint32_t cluster_start;
+	/** Number of clusters of cores on this physical package */
+	uint32_t cluster_count;
+};
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define cpuinfo_initialize() true
+#define cpuinfo_deinitialize() true
+//bool CPUINFO_ABI cpuinfo_initialize(void)
+//{
+//	return 1;
+//}
+
+//void CPUINFO_ABI cpuinfo_deinitialize(void)
+//{
+
+//}
+
+#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+	/* This structure is not a part of stable API. Use cpuinfo_has_x86_* fu=
nctions instead. */
+	struct cpuinfo_x86_isa {
+		#if CPUINFO_ARCH_X86
+			bool rdtsc;
+		#endif
+		bool rdtscp;
+		bool rdpid;
+		bool sysenter;
+		#if CPUINFO_ARCH_X86
+			bool syscall;
+		#endif
+		bool msr;
+		bool clzero;
+		bool clflush;
+		bool clflushopt;
+		bool mwait;
+		bool mwaitx;
+		#if CPUINFO_ARCH_X86
+			bool emmx;
+		#endif
+		bool fxsave;
+		bool xsave;
+		#if CPUINFO_ARCH_X86
+			bool fpu;
+			bool mmx;
+			bool mmx_plus;
+		#endif
+		bool three_d_now;
+		bool three_d_now_plus;
+		#if CPUINFO_ARCH_X86
+			bool three_d_now_geode;
+		#endif
+		bool prefetch;
+		bool prefetchw;
+		bool prefetchwt1;
+		#if CPUINFO_ARCH_X86
+			bool daz;
+			bool sse;
+			bool sse2;
+		#endif
+		bool sse3;
+		bool ssse3;
+		bool sse4_1;
+		bool sse4_2;
+		bool sse4a;
+		bool misaligned_sse;
+		bool avx;
+		bool fma3;
+		bool fma4;
+		bool xop;
+		bool f16c;
+		bool avx2;
+		bool avx512f;
+		bool avx512pf;
+		bool avx512er;
+		bool avx512cd;
+		bool avx512dq;
+		bool avx512bw;
+		bool avx512vl;
+		bool avx512ifma;
+		bool avx512vbmi;
+		bool avx512vbmi2;
+		bool avx512bitalg;
+		bool avx512vpopcntdq;
+		bool avx512vnni;
+		bool avx512_4vnniw;
+		bool avx512_4fmaps;
+		bool hle;
+		bool rtm;
+		bool xtest;
+		bool mpx;
+		#if CPUINFO_ARCH_X86
+			bool cmov;
+			bool cmpxchg8b;
+		#endif
+		bool cmpxchg16b;
+		bool clwb;
+		bool movbe;
+		#if CPUINFO_ARCH_X86_64
+			bool lahf_sahf;
+		#endif
+		bool fs_gs_base;
+		bool lzcnt;
+		bool popcnt;
+		bool tbm;
+		bool bmi;
+		bool bmi2;
+		bool adx;
+		bool aes;
+		bool vaes;
+		bool pclmulqdq;
+		bool vpclmulqdq;
+		bool gfni;
+		bool rdrand;
+		bool rdseed;
+		bool sha;
+		bool rng;
+		bool ace;
+		bool ace2;
+		bool phe;
+		bool pmm;
+		bool lwp;
+	};
+
+	extern struct cpuinfo_x86_isa cpuinfo_isa;
+#endif
+
+	/*
+static inline bool cpuinfo_has_x86_rdtsc(void) {
+	#if CPUINFO_ARCH_X86_64
+		return true;
+	#elif CPUINFO_ARCH_X86
+		#if defined(__ANDROID__)
+			return true;
+		#else
+			return cpuinfo_isa.rdtsc;
+		#endif
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_rdtscp(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.rdtscp;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_rdpid(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.rdpid;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_clzero(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.clzero;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_mwait(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.mwait;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_mwaitx(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.mwaitx;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_fxsave(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.fxsave;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_xsave(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.xsave;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_fpu(void) {
+	#if CPUINFO_ARCH_X86_64
+		return true;
+	#elif CPUINFO_ARCH_X86
+		#if defined(__ANDROID__)
+			return true;
+		#else
+			return cpuinfo_isa.fpu;
+		#endif
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_mmx(void) {
+	#if CPUINFO_ARCH_X86_64
+		return true;
+	#elif CPUINFO_ARCH_X86
+		#if defined(__ANDROID__)
+			return true;
+		#else
+			return cpuinfo_isa.mmx;
+		#endif
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_mmx_plus(void) {
+	#if CPUINFO_ARCH_X86_64
+		return true;
+	#elif CPUINFO_ARCH_X86
+		#if defined(__ANDROID__)
+			return true;
+		#else
+			return cpuinfo_isa.mmx_plus;
+		#endif
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_3dnow(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.three_d_now;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_3dnow_plus(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.three_d_now_plus;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_3dnow_geode(void) {
+	#if CPUINFO_ARCH_X86_64
+		return false;
+	#elif CPUINFO_ARCH_X86
+		#if defined(__ANDROID__)
+			return false;
+		#else
+			return cpuinfo_isa.three_d_now_geode;
+		#endif
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_prefetch(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.prefetch;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_prefetchw(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.prefetchw;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_prefetchwt1(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.prefetchwt1;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_daz(void) {
+	#if CPUINFO_ARCH_X86_64
+		return true;
+	#elif CPUINFO_ARCH_X86
+		#if defined(__ANDROID__)
+			return true;
+		#else
+			return cpuinfo_isa.daz;
+		#endif
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_sse(void) {
+	#if CPUINFO_ARCH_X86_64
+		return true;
+	#elif CPUINFO_ARCH_X86
+		#if defined(__ANDROID__)
+			return true;
+		#else
+			return cpuinfo_isa.sse;
+		#endif
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_sse2(void) {
+	#if CPUINFO_ARCH_X86_64
+		return true;
+	#elif CPUINFO_ARCH_X86
+		#if defined(__ANDROID__)
+			return true;
+		#else
+			return cpuinfo_isa.sse2;
+		#endif
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_sse3(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		#if defined(__ANDROID__)
+			return true;
+		#else
+			return cpuinfo_isa.sse3;
+		#endif
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_ssse3(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		#if defined(__ANDROID__)
+			return true;
+		#else
+			return cpuinfo_isa.ssse3;
+		#endif
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_sse4_1(void) {
+	#if CPUINFO_ARCH_X86_64
+		#if defined(__ANDROID__)
+			return true;
+		#else
+			return cpuinfo_isa.sse4_1;
+		#endif
+	#elif CPUINFO_ARCH_X86
+		return cpuinfo_isa.sse4_1;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_sse4_2(void) {
+	#if CPUINFO_ARCH_X86_64
+		#if defined(__ANDROID__)
+			return true;
+		#else
+			return cpuinfo_isa.sse4_2;
+		#endif
+	#elif CPUINFO_ARCH_X86
+		return cpuinfo_isa.sse4_2;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_sse4a(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.sse4a;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_misaligned_sse(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.misaligned_sse;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_avx(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		//return cpuinfo_isa.avx;
+        return false;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_fma3(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		//return cpuinfo_isa.fma3;
+        return false;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_fma4(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.fma4;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_xop(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.xop;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_f16c(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.f16c;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_avx2(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+        return false;
+		//return cpuinfo_isa.avx2;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_avx512f(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.avx512f;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_avx512pf(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.avx512pf;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_avx512er(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.avx512er;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_avx512cd(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.avx512cd;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_avx512dq(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.avx512dq;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_avx512bw(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.avx512bw;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_avx512vl(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.avx512vl;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_avx512ifma(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.avx512ifma;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_avx512vbmi(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.avx512vbmi;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_avx512vbmi2(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.avx512vbmi2;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_avx512bitalg(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.avx512bitalg;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_avx512vpopcntdq(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.avx512vpopcntdq;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_avx512vnni(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.avx512vnni;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_avx512_4vnniw(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.avx512_4vnniw;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_avx512_4fmaps(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.avx512_4fmaps;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_hle(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.hle;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_rtm(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.rtm;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_xtest(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.xtest;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_mpx(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.mpx;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_cmov(void) {
+	#if CPUINFO_ARCH_X86_64
+		return true;
+	#elif CPUINFO_ARCH_X86
+		return cpuinfo_isa.cmov;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_cmpxchg8b(void) {
+	#if CPUINFO_ARCH_X86_64
+		return true;
+	#elif CPUINFO_ARCH_X86
+		return cpuinfo_isa.cmpxchg8b;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_cmpxchg16b(void) {
+	#if CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.cmpxchg16b;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_clwb(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.clwb;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_movbe(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.movbe;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_lahf_sahf(void) {
+	#if CPUINFO_ARCH_X86
+		return true;
+	#elif CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.lahf_sahf;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_lzcnt(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.lzcnt;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_popcnt(void) {
+	#if CPUINFO_ARCH_X86_64
+		#if defined(__ANDROID__)
+			return true;
+		#else
+			return cpuinfo_isa.popcnt;
+		#endif
+	#elif CPUINFO_ARCH_X86
+		return cpuinfo_isa.popcnt;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_tbm(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.tbm;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_bmi(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.bmi;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_bmi2(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.bmi2;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_adx(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.adx;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_aes(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.aes;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_vaes(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.vaes;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_pclmulqdq(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.pclmulqdq;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_vpclmulqdq(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.vpclmulqdq;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_gfni(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.gfni;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_rdrand(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.rdrand;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_rdseed(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.rdseed;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_sha(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.sha;
+	#else
+		return false;
+	#endif
+}
+*/
+#define cpuinfo_has_x86_avx2() false
+#define cpuinfo_has_x86_fma3() false
+#define cpuinfo_has_x86_avx() true
+#define cpuinfo_has_x86_daz() true
+const struct cpuinfo_processor* CPUINFO_ABI cpuinfo_get_processor(uint32=
_t index);
+#define cpuinfo_get_processors_count() 1
+
+#if CPUINFO_ARCH_ARM || CPUINFO_ARCH_ARM64
+	/* This structure is not a part of stable API. Use cpuinfo_has_arm_* fu=
nctions instead. */
+	struct cpuinfo_arm_isa {
+		#if CPUINFO_ARCH_ARM
+			bool thumb;
+			bool thumb2;
+			bool thumbee;
+			bool jazelle;
+			bool armv5e;
+			bool armv6;
+			bool armv6k;
+			bool armv7;
+			bool armv7mp;
+			bool idiv;
+
+			bool vfpv2;
+			bool vfpv3;
+			bool d32;
+			bool fp16;
+			bool fma;
+
+			bool wmmx;
+			bool wmmx2;
+			bool neon;
+		#endif
+		#if CPUINFO_ARCH_ARM64
+			bool atomics;
+		#endif
+		bool rdm;
+		bool fp16arith;
+		bool dot;
+		bool jscvt;
+		bool fcma;
+
+		bool aes;
+		bool sha1;
+		bool sha2;
+		bool pmull;
+		bool crc32;
+	};
+
+	extern struct cpuinfo_arm_isa cpuinfo_isa;
+#endif
+
+/*
+static inline bool cpuinfo_has_arm_thumb(void) {
+	#if CPUINFO_ARCH_ARM
+		return cpuinfo_isa.thumb;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_thumb2(void) {
+	#if CPUINFO_ARCH_ARM
+		return cpuinfo_isa.thumb2;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_v5e(void) {
+	#if CPUINFO_ARCH_ARM
+		return cpuinfo_isa.armv5e;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_v6(void) {
+	#if CPUINFO_ARCH_ARM
+		return cpuinfo_isa.armv6;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_v6k(void) {
+	#if CPUINFO_ARCH_ARM
+		return cpuinfo_isa.armv6k;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_v7(void) {
+	#if CPUINFO_ARCH_ARM
+		return cpuinfo_isa.armv7;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_v7mp(void) {
+	#if CPUINFO_ARCH_ARM
+		return cpuinfo_isa.armv7mp;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_idiv(void) {
+	#if CPUINFO_ARCH_ARM64
+		return true;
+	#elif CPUINFO_ARCH_ARM
+		return cpuinfo_isa.idiv;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_vfpv2(void) {
+	#if CPUINFO_ARCH_ARM
+		return cpuinfo_isa.vfpv2;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_vfpv3(void) {
+	#if CPUINFO_ARCH_ARM64
+		return true;
+	#elif CPUINFO_ARCH_ARM
+		return cpuinfo_isa.vfpv3;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_vfpv3_d32(void) {
+	#if CPUINFO_ARCH_ARM64
+		return true;
+	#elif CPUINFO_ARCH_ARM
+		return cpuinfo_isa.vfpv3 && cpuinfo_isa.d32;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_vfpv3_fp16(void) {
+	#if CPUINFO_ARCH_ARM64
+		return true;
+	#elif CPUINFO_ARCH_ARM
+		return cpuinfo_isa.vfpv3 && cpuinfo_isa.fp16;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_vfpv3_fp16_d32(void) {
+	#if CPUINFO_ARCH_ARM64
+		return true;
+	#elif CPUINFO_ARCH_ARM
+		return cpuinfo_isa.vfpv3 && cpuinfo_isa.fp16 && cpuinfo_isa.d32;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_vfpv4(void) {
+	#if CPUINFO_ARCH_ARM64
+		return true;
+	#elif CPUINFO_ARCH_ARM
+		return cpuinfo_isa.vfpv3 && cpuinfo_isa.fma;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_vfpv4_d32(void) {
+	#if CPUINFO_ARCH_ARM64
+		return true;
+	#elif CPUINFO_ARCH_ARM
+		return cpuinfo_isa.vfpv3 && cpuinfo_isa.fma && cpuinfo_isa.d32;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_wmmx(void) {
+	#if CPUINFO_ARCH_ARM
+		return cpuinfo_isa.wmmx;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_wmmx2(void) {
+	#if CPUINFO_ARCH_ARM
+		return cpuinfo_isa.wmmx2;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_neon(void) {
+	#if CPUINFO_ARCH_ARM64
+		return true;
+	#elif CPUINFO_ARCH_ARM
+		return cpuinfo_isa.neon;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_neon_fp16(void) {
+	#if CPUINFO_ARCH_ARM64
+		return true;
+	#elif CPUINFO_ARCH_ARM
+		return cpuinfo_isa.neon && cpuinfo_isa.fp16;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_neon_fma(void) {
+	#if CPUINFO_ARCH_ARM64
+		return true;
+	#elif CPUINFO_ARCH_ARM
+		return cpuinfo_isa.neon && cpuinfo_isa.fma;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_atomics(void) {
+	#if CPUINFO_ARCH_ARM64
+		return cpuinfo_isa.atomics;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_neon_rdm(void) {
+	#if CPUINFO_ARCH_ARM || CPUINFO_ARCH_ARM64
+		return cpuinfo_isa.rdm;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_neon_fp16_arith(void) {
+	#if CPUINFO_ARCH_ARM
+		return cpuinfo_isa.neon && cpuinfo_isa.fp16arith;
+	#elif CPUINFO_ARCH_ARM64
+		return cpuinfo_isa.fp16arith;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_fp16_arith(void) {
+	#if CPUINFO_ARCH_ARM || CPUINFO_ARCH_ARM64
+		return cpuinfo_isa.fp16arith;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_neon_dot(void) {
+	#if CPUINFO_ARCH_ARM || CPUINFO_ARCH_ARM64
+		return cpuinfo_isa.dot;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_jscvt(void) {
+	#if CPUINFO_ARCH_ARM || CPUINFO_ARCH_ARM64
+		return cpuinfo_isa.jscvt;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_fcma(void) {
+	#if CPUINFO_ARCH_ARM || CPUINFO_ARCH_ARM64
+		return cpuinfo_isa.fcma;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_aes(void) {
+	#if CPUINFO_ARCH_ARM || CPUINFO_ARCH_ARM64
+		return cpuinfo_isa.aes;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_sha1(void) {
+	#if CPUINFO_ARCH_ARM || CPUINFO_ARCH_ARM64
+		return cpuinfo_isa.sha1;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_sha2(void) {
+	#if CPUINFO_ARCH_ARM || CPUINFO_ARCH_ARM64
+		return cpuinfo_isa.sha2;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_pmull(void) {
+	#if CPUINFO_ARCH_ARM || CPUINFO_ARCH_ARM64
+		return cpuinfo_isa.pmull;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_crc32(void) {
+	#if CPUINFO_ARCH_ARM || CPUINFO_ARCH_ARM64
+		return cpuinfo_isa.crc32;
+	#else
+		return false;
+	#endif
+}
+
+const struct cpuinfo_processor* CPUINFO_ABI cpuinfo_get_processors(void)=
;
+const struct cpuinfo_core* CPUINFO_ABI cpuinfo_get_cores(void);
+const struct cpuinfo_cluster* CPUINFO_ABI cpuinfo_get_clusters(void);
+const struct cpuinfo_package* CPUINFO_ABI cpuinfo_get_packages(void);
+const struct cpuinfo_cache* CPUINFO_ABI cpuinfo_get_l1i_caches(void);
+const struct cpuinfo_cache* CPUINFO_ABI cpuinfo_get_l1d_caches(void);
+const struct cpuinfo_cache* CPUINFO_ABI cpuinfo_get_l2_caches(void)
+{
+	static struct cpuinfo_cache cc;
+	cc.size =3D 64 * 512 * 12;
+	cc.associativity =3D 12;
+	cc.associativity =3D 512;
+	cc.partitions =3D 64;
+	cc.line_size =3D 64;
+	cc.flags=3DCPUINFO_CACHE_INCLUSIVE;
+	cc.processor_start =3D 0;
+	cc.processor_count =3D 1;
+	return &cc;
+}
+const struct cpuinfo_cache* CPUINFO_ABI cpuinfo_get_l3_caches(void)
+{
+	static struct cpuinfo_cache cc;
+	cc.size =3D 64 * 512 * 12;
+	cc.associativity =3D 12;
+	cc.associativity =3D 512;
+	cc.partitions =3D 64;
+	cc.line_size =3D 64;
+	cc.flags=3DCPUINFO_CACHE_INCLUSIVE;
+	cc.processor_start =3D 0;
+	cc.processor_count =3D 1;
+	return &cc;
+}
+const struct cpuinfo_cache* CPUINFO_ABI cpuinfo_get_l4_caches(void)
+{
+	static struct cpuinfo_cache cc;
+	cc.size =3D 64 * 512 * 12;
+	cc.associativity =3D 12;
+	cc.associativity =3D 512;
+	cc.partitions =3D 64;
+	cc.line_size =3D 64;
+	cc.flags=3DCPUINFO_CACHE_INCLUSIVE;
+	cc.processor_start =3D 0;
+	cc.processor_count =3D 1;
+	return &cc;
+}
+
+const struct cpuinfo_processor* CPUINFO_ABI cpuinfo_get_processor(uint32=
_t index);
+const struct cpuinfo_core* CPUINFO_ABI cpuinfo_get_core(uint32_t index);
+const struct cpuinfo_cluster* CPUINFO_ABI cpuinfo_get_cluster(uint32_t i=
ndex);
+const struct cpuinfo_package* CPUINFO_ABI cpuinfo_get_package(uint32_t i=
ndex);
+const struct cpuinfo_cache* CPUINFO_ABI cpuinfo_get_l1i_cache(uint32_t i=
ndex);
+const struct cpuinfo_cache* CPUINFO_ABI cpuinfo_get_l1d_cache(uint32_t i=
ndex)
+{
+	static struct cpuinfo_cache cc;
+	cc.size =3D 64 * 512 * 12;
+	cc.associativity =3D 12;
+	cc.associativity =3D 512;
+	cc.partitions =3D 64;
+	cc.line_size =3D 64;
+	cc.flags=3DCPUINFO_CACHE_INCLUSIVE;
+	cc.processor_start =3D 0;
+	cc.processor_count =3D 1;
+	return &cc;
+}
+const struct cpuinfo_cache* CPUINFO_ABI cpuinfo_get_l2_cache(uint32_t in=
dex)
+{
+	static struct cpuinfo_cache cc;
+	cc.size =3D 64 * 512 * 12;
+	cc.associativity =3D 12;
+	cc.associativity =3D 512;
+	cc.partitions =3D 64;
+	cc.line_size =3D 64;
+	cc.flags=3DCPUINFO_CACHE_INCLUSIVE;
+	cc.processor_start =3D 0;
+	cc.processor_count =3D 1;
+	return &cc;
+}
+const struct cpuinfo_cache* CPUINFO_ABI cpuinfo_get_l3_cache(uint32_t in=
dex)
+{
+	static struct cpuinfo_cache cc;
+	cc.size =3D 64 * 512 * 12;
+	cc.associativity =3D 12;
+	cc.associativity =3D 512;
+	cc.partitions =3D 64;
+	cc.line_size =3D 64;
+	cc.flags=3DCPUINFO_CACHE_INCLUSIVE;
+	cc.processor_start =3D 0;
+	cc.processor_count =3D 1;
+	return &cc;
+}
+const struct cpuinfo_cache* CPUINFO_ABI cpuinfo_get_l4_cache(uint32_t in=
dex)
+{
+	static struct cpuinfo_cache cc;
+	cc.size =3D 64 * 512 * 12;
+	cc.associativity =3D 12;
+	cc.associativity =3D 512;
+	cc.partitions =3D 64;
+	cc.line_size =3D 64;
+	cc.flags=3DCPUINFO_CACHE_INCLUSIVE;
+	cc.processor_start =3D 0;
+	cc.processor_count =3D 1;
+	return &cc;
+}
+uint32_t CPUINFO_ABI cpuinfo_get_processors_count(void);
+uint32_t CPUINFO_ABI cpuinfo_get_cores_count(void);
+uint32_t CPUINFO_ABI cpuinfo_get_clusters_count(void);
+uint32_t CPUINFO_ABI cpuinfo_get_packages_count(void);
+uint32_t CPUINFO_ABI cpuinfo_get_l1i_caches_count(void);
+uint32_t CPUINFO_ABI cpuinfo_get_l1d_caches_count(void);
+uint32_t CPUINFO_ABI cpuinfo_get_l2_caches_count(void);
+uint32_t CPUINFO_ABI cpuinfo_get_l3_caches_count(void);
+uint32_t CPUINFO_ABI cpuinfo_get_l4_caches_count(void);
+
+const struct cpuinfo_processor* CPUINFO_ABI cpuinfo_get_current_processo=
r(void);
+const struct cpuinfo_core* CPUINFO_ABI cpuinfo_get_current_core(void);
+*/
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* CPUINFO_H */
+
diff --git a/include/fenv.h b/include/fenv.h
new file mode 100644
index 0000000..4e31c43
--- /dev/null
+++ b/include/fenv.h
@@ -0,0 +1,27 @@
+#ifndef _FENV_H
+#define _FENV_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <bits/fenv.h>
+
+int feclearexcept(int);
+int fegetexceptflag(fexcept_t *, int);
+int feraiseexcept(int);
+int fesetexceptflag(const fexcept_t *, int);
+int fetestexcept(int);
+
+int fegetround(void);
+int fesetround(int);
+
+int fegetenv(fenv_t *);
+int feholdexcept(fenv_t *);
+int fesetenv(const fenv_t *);
+int feupdateenv(const fenv_t *);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
--=20
2.20.1



From minios-devel-bounces@lists.xenproject.org Wed Apr 08 00:23:08 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 08 Apr 2020 00:23: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 1jLyUm-0001mV-Qe; Wed, 08 Apr 2020 00:23:08 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=hVdw=5Y=upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1jLyUl-0001mG-Uk
 for minios-devel@lists.xen.org; Wed, 08 Apr 2020 00:23:08 +0000
X-Inumbo-ID: 1941c50a-792f-11ea-b58d-bc764e2007e4
Received: from mx.upb.ro (unknown [141.85.13.5])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 1941c50a-792f-11ea-b58d-bc764e2007e4;
 Wed, 08 Apr 2020 00:22:58 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id F18F3B5625CF;
 Wed,  8 Apr 2020 03:22:57 +0300 (EEST)
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10032)
 with ESMTP id Vp0hsYTIeizF; Wed,  8 Apr 2020 03:22:34 +0300 (EEST)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id 209F9B5625D4;
 Wed,  8 Apr 2020 03:22:34 +0300 (EEST)
DKIM-Filter: OpenDKIM Filter v2.10.3 mx.upb.ro 209F9B5625D4
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=upb.ro;
 s=96342B8A-77E4-11E5-BA93-D93D0963A2DF; t=1586305354;
 bh=44xof9r52rfngq5MS3LQXdmJQZRJOi6HsZVD6WnuUDY=;
 h=From:To:Date:Message-Id:MIME-Version;
 b=kmvHTZdNG7TfmET/CRVH0IN95E9DRsj5Bvom6Bxyt+2gm7e3NGCUTXKAn/P6CXvIZ
 VWB2g6YYzeLepDzhaO6afMhZJ/VDWeFD7+uy7aFtR9MaRvb5Cm+ayBrk+F69ExuRzc
 7usUnjU23GYR7ELwmNpbI3b7S8zqmZzEza9ihQto=
X-Virus-Scanned: amavisd-new at upb.ro
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id dkBj8PjUJzt3; Wed,  8 Apr 2020 03:22:33 +0300 (EEST)
Received: from localhost.localdomain (unknown [86.127.159.73])
 by mx.upb.ro (Postfix) with ESMTPSA id B283FB5625D0;
 Wed,  8 Apr 2020 03:22:33 +0300 (EEST)
From: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
To: minios-devel@lists.xen.org
Subject: [UNIKRAFT/PYTORCH PATCH 1/4] Add Makefile
Date: Wed,  8 Apr 2020 03:21:56 +0300
Message-Id: <20200408002204.31260-2-vlad_andrei.badoiu@upb.ro>
X-Mailer: git-send-email 2.20.1
In-Reply-To: <20200408002204.31260-1-vlad_andrei.badoiu@upb.ro>
References: <20200408002204.31260-1-vlad_andrei.badoiu@upb.ro>
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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, Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Signed-off-by: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
---
 Makefile.uk | 1793 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 1793 insertions(+)
 create mode 100644 Makefile.uk

diff --git a/Makefile.uk b/Makefile.uk
new file mode 100644
index 0000000..78ed0f9
--- /dev/null
+++ b/Makefile.uk
@@ -0,0 +1,1793 @@
+#  pytorch config file
+#
+#  Authors: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
+#
+#  Copyright (c) 2020, University Politehnica of Bucharest. All rights r=
eserved.
+#
+#  Redistribution and use in source and binary forms, with or without
+#  modification, are permitted provided that the following conditions
+#  are met:
+#
+#  1. Redistributions of source code must retain the above copyright
+#     notice, this list of conditions and the following disclaimer.
+#  2. Redistributions in binary form must reproduce the above copyright
+#     notice, this list of conditions and the following disclaimer in th=
e
+#     documentation and/or other materials provided with the distributio=
n.
+#  3. Neither the name of the copyright holder nor the names of its
+#     contributors may be used to endorse or promote products derived fr=
om
+#     this software without specific prior written permission.
+#
+#  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "=
AS IS"
+#  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,=
 THE
+#  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PU=
RPOSE
+#  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTOR=
S BE
+#  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+#  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+#  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSIN=
ESS
+#  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER =
IN
+#  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWIS=
E)
+#  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED O=
F THE
+#  POSSIBILITY OF SUCH DAMAGE.
+#
+#  THIS HEADER MAY NOT BE EXTRACTED OR MODIFIED IN ANY WAY.
+
+########################################################################=
########
+# Library registration
+########################################################################=
########
+$(eval $(call addlib_s,libpytorch,$(CONFIG_LIBPYTORCH)))
+
+########################################################################=
########
+# Sources
+########################################################################=
########
+LIBPYTORCH_VERSION=3D1.4.0
+LIBPYTORCH_URL=3Dhttps://github.com/pytorch/pytorch/archive/v1.4.0.tar.g=
z
+LIBPYTORCH_PATCHDIR=3D$(LIBPYTORCH_BASE)/patches
+$(eval $(call fetch,libpytorch,$(LIBPYTORCH_URL)))
+$(eval $(call patch,libpytorch,$(LIBPYTORCH_PATCHDIR),pytorch-$(LIBPYTOR=
CH_VERSION)))
+
+########################################################################=
########
+# Helpers
+# ######################################################################=
##########
+LIBPYTORCH_SUBDIR=3Dpytorch-$(LIBPYTORCH_VERSION)
+LIBPYTORCH_SRC=3D$(LIBPYTORCH_ORIGIN)/$(LIBPYTORCH_SUBDIR)
+
+########################################################################=
########
+# Library includes
+########################################################################=
########
+CINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/torch
+CINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/modules
+CINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/aten/src
+CINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/aten/src/TH
+CINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/aten
+CINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/aten/src/ATen/na=
tive/quantized/cpu/qnnpack/src/
+CINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/aten/src/ATen/na=
tive/quantized/cpu/qnnpack/include/
+CINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/aten/src/ATen/na=
tive/quantized/cpu/qnnpack/deps/clog/include/
+CINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/tools
+CINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)
+CINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/build/aten/src/
+CINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/build/
+CINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_BASE)/include
+CINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_BASE)/include/aten/sr=
c
+CINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/build/caffe2/ate=
n/src/
+CINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/torch/lib/libshm=
/
+CINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/torch/csrc/api/i=
nclude/
+CINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/torch/lib/
+CINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/third_party/mini=
z-2.0.8/
+
+CXXINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/torch
+CXXINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/modules
+CXXINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/aten/src
+CXXINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/aten/src/TH
+CXXINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/aten
+CXXINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/aten/src/ATen/=
native/quantized/cpu/qnnpack/include/
+CXXINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/aten/src/ATen/=
native/quantized/cpu/qnnpack/src/
+CXXINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/aten/src/ATen/=
native/quantized/cpu/qnnpack/deps/clog/include/
+CXXINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/tools
+CXXINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)
+CXXINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/build/aten/src=
/
+CXXINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/build/caffe2/a=
ten/src/
+CXXINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_BASE)/include
+CXXINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_BASE)/include/aten/=
src
+CXXINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/build/
+CXXINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/torch/lib/libs=
hm/
+CXXINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/torch/csrc/api=
/include/
+CXXINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/torch/lib/
+CXXINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/third_party/mi=
niz-2.0.8/
+
+########################################################################=
########
+# Global flags
+########################################################################=
########
+# Suppress some warnings to make the build process look neater
+LIBPYTORCH_SUPPRESS_FLAGS +=3D -Wno-unused-parameter -Wno-unused-variabl=
e -Wno-nonnull		\
+-Wno-unused-but-set-variable -Wno-unused-label -Wno-char-subscripts				\
+-Wno-unused-function -Wno-missing-field-initializers -Wno-uninitialized	=
	    		\
+-Wno-array-bounds -Wno-maybe-uninitialized -Wno-unused-value -Wno-attrib=
utes			\
+-Wno-unused-macros -Wno-parentheses -Wno-unknown-pragmas -Wno-deprecated=
-declarations		\
+-Wno-missing-braces -Wno-endif-labels -Wno-unused-but-set-variable		    =
    	\
+-Wno-type-limits -Wno-sign-compare -fpermissive
+
+LIBPYTORCH_CFLAGS-y	+=3D  $(LIBPYTORCH_SUPPRESS_FLAGS) -D CAFFE2_DISABLE=
_NUMA -D CAFFE2_USE_EIGEN_FOR_BLAS -D C10_BUILD_MAIN_LIB -DC10_USING_CUST=
OM_GENERATED_MACROS -DAT_PARALLEL_NATIVE  -DHAVE_MMAP -DC10_DISABLE_NUMA =
-DCAFFE2_BUILD_MAIN_LIB -DCAFFE2_API=3D"__attribute__((__visibility__(\"d=
efault\")))" -DC10_API=3D"__attribute__((__visibility__(\"default\")))" -=
DONNX_NAMESPACE=3Donnx -DCAFFE2_DISABLE_SIGNAL_HANDLERS -DCPU_CAPABILITY=3D=
DEFAULT
+
+LIBPYTORCH_CXXFLAGS-y	+=3D $(LIBPYTORCH_SUPPRESS_FLAGS) -D CAFFE2_DISABL=
E_NUMA -D CAFFE2_USE_EIGEN_FOR_BLAS -D C10_BUILD_MAIN_LIB -DC10_USING_CUS=
TOM_GENERATED_MACROS -DAT_PARALLEL_NATIVE  -DHAVE_MMAP -DC10_DISABLE_NUMA=
 -DCAFFE2_BUILD_MAIN_LIB -DCAFFE2_API=3D"__attribute__((__visibility__(\"=
default\")))" -DC10_API=3D"__attribute__((__visibility__(\"default\")))" =
-DONNX_NAMESPACE=3Donnx -DCAFFE2_DISABLE_SIGNAL_HANDLERS -DCPU_CAPABILITY=
=3DDEFAULT
+
+# TODO: for better performance
+# USE_STATIC_DISPATCH
+# HAVE_AVX_CPU_DEFINITION
+
+########################################################################=
########
+# Library sources
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_BASE)/glue.c
+
+########################################################################=
########
+# modules/observers
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/modules/observers/net_observer_=
reporter_print.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/modules/observers/observer_conf=
ig.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/modules/observers/perf_observer=
.cc
+
+########################################################################=
########
+# modules/rocksdb
+########################################################################=
########
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/modules/rocksdb/rocksdb.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/modules/module_test/module_tes=
t_dynamic.cc
+
+########################################################################=
########
+# modules/detectron
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/modules/detectron/roi_pool_f_op=
.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/modules/detectron/sample_as_op.=
cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/modules/detectron/spatial_narro=
w_as_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/modules/detectron/upsample_near=
est_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/modules/detectron/softmax_focal=
_loss_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/modules/detectron/smooth_l1_los=
s_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/modules/detectron/select_smooth=
_l1_loss_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/modules/detectron/ps_roi_pool_o=
p.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/modules/detectron/sigmoid_focal=
_loss_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/modules/detectron/sigmoid_cross=
_entropy_loss_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/modules/detectron/group_spatial=
_softmax_op.cc
+
+########################################################################=
########
+# caffe2/queue
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/queue/rebatching_queue_o=
ps.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/queue/blobs_queue.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/queue/blobs_queue_db.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/queue/queue_ops.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/queue/rebatching_queue.c=
c
+
+########################################################################=
########
+# caffe2/quantization/server
+########################################################################=
########
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/ful=
ly_connected_dnnlowp_acc16_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/ful=
ly_connected_dnnlowp_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/p99=
.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/dnn=
lowp_partition.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/dnn=
lowp.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/fbg=
emm_pack_matrix_cache.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/sig=
moid.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/act=
ivation_distribution_observer.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/ele=
mentwise_sum_relu_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/qua=
ntize_dnnlowp_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/ele=
mentwise_mul_dnnlowp_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/cha=
nnel_shuffle_dnnlowp_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/lst=
m_unit_dnnlowp_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/ful=
ly_connected_fake_lowp_op_avx2.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/p99=
_example.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/uti=
lity_dnnlowp_ops.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/con=
cat_dnnlowp_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/spa=
tial_batch_norm_dnnlowp_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/gro=
up_norm_dnnlowp_op_avx2.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/poo=
l_dnnlowp_op_avx2.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/tra=
nspose.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/kl_=
minimization.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/deq=
uantize_dnnlowp_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/tan=
h.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/l2_=
minimization_example.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/nor=
m_minimization_avx2.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/con=
v_relu_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/spa=
tial_batch_norm_dnnlowp_op_avx2.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/caf=
fe2_dnnlowp_utils.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/con=
v_dnnlowp_acc16_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/spa=
tial_batch_norm_relu_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/gro=
up_norm_dnnlowp_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/fc_=
fake_lowp_test.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/con=
v_dnnlowp_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/pyb=
ind.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/poo=
l_dnnlowp_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/rel=
u_dnnlowp_op_avx2.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/kl_=
minimization_example.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/tan=
h_test.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/ele=
mentwise_linear_dnnlowp_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/bat=
ch_matmul_dnnlowp_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/ele=
mentwise_sum_dnnlowp_op_avx2.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/ful=
ly_connected_fake_lowp_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/sig=
moid_dnnlowp_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/l2_=
minimization_test.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/l1_=
minimization_example.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/bat=
ch_permutation_dnnlowp_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/l2_=
minimization_approx_example.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/ele=
mentwise_add_dnnlowp_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/tan=
h_dnnlowp_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/ele=
mentwise_sum_dnnlowp_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/rel=
u_dnnlowp_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/res=
ize_nearest_dnnlowp_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/fbg=
emm_pack_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/req=
uantization_test.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/dyn=
amic_histogram_test.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/dyn=
amic_histogram.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/ele=
mentwise_sum_benchmark.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/sig=
moid_test.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/nor=
m_minimization.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/res=
ize_nearest_3d_dnnlowp_op.cc
+
+########################################################################=
########
+# caffe2/operators
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/find_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/spatial_batch_=
norm_gradient_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/unique_ops.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/given_tensor_b=
yte_string_to_uint8_fill_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/half_float_ops=
.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/lengths_pad_op=
.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/summarize_op.c=
c
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/utility_ops.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/batch_matmul_o=
p.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/ceil_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/flatten_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/acos_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/rsqrt_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/integral_image=
_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/elementwise_di=
v_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/boolean_mask_o=
ps.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/relu_n_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/softmax_utils.=
cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/perplexity_op.=
cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/gelu_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/locally_connec=
ted_op_util.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/softplus_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/space_batch_op=
.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/normalize_l1_o=
p.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/reciprocal_op.=
cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/elementwise_op=
s.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/remove_data_bl=
ocks_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/index_ops.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/copy_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/floor_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/gather_fused_=
8bit_rowwise_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/feed_blob_op.c=
c
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/fc_inference.c=
c
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/length_split_o=
p.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/jsd_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/reduce_front_b=
ack_max_ops.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/sparse_normali=
ze_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/segment_reduct=
ion_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/fused_rowwise=
_8bit_conversion_ops.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/batch_bucketiz=
e_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/stats_put_ops.=
cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/ctc_beam_searc=
h_decoder_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/find_duplicate=
_elements_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/tan_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/roi_align_grad=
ient_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/sin_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/instance_norm_=
gradient_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/workspace_ops.=
cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/exp_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/sqrt_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/expand_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/conv_transpose=
_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/roi_align_rota=
ted_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/do_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/pow_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/reshape_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/elementwise_su=
b_gradient_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/free_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/elementwise_lo=
gical_ops.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/loss_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/ngram_ops.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/expand_squeeze=
_dims_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/sparse_to_dens=
e_mask_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/cosh_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/roi_align_rota=
ted_gradient_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/elementwise_di=
v_gradient_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/bbox_transform=
_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/upsample_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/tanh_gradient_=
op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/shape_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/im2col_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/multi_class_ac=
curacy_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/lengths_reduc=
er_fused_8bit_rowwise_ops.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/scale_blobs_op=
.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/sqr_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/variable_lengt=
h_sequence_padding.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/text_file_read=
er_utils.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/cast_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/cosine_embeddi=
ng_criterion_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/dropout_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/minmax_ops.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/reverse_packed=
_segs_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/accuracy_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/one_hot_ops.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/sparse_dropout=
_with_replacement_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/negative_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/square_root_di=
vide_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/local_response=
_normalization_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/ensure_cpu_out=
put_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/roi_pool_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/elementwise_op=
s_utils.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/bisect_percent=
ile_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/hard_sigmoid_o=
p.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/thresholded_re=
lu_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/cbrt_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/conv_transpose=
_gradient_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/quant_decode_o=
p.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/rowmul_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/erf_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/conditional_op=
.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/sparse_to_dens=
e_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/elementwise_su=
m_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/lstm_unit_op.c=
c
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/alias_with_nam=
e.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/onnx_while_op.=
cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/atomic_ops.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/elu_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/load_save_op_u=
til.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/partition_ops.=
cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/merge_id_lists=
_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/arg_ops.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/fused_rowwise=
_random_quantization_ops.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/reduction_ops.=
cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/reservoir_samp=
ling.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/bucketize_op.c=
c
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/top_k.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/order_switch_o=
ps.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/replace_nan_op=
.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/stylizer_ops.c=
c
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/stop_gradient.=
cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/tensor_protos_=
db_input.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/cross_entropy_=
op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/norm_planar_yu=
v_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/pool_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/selu_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/transpose_op.c=
c
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/rank_loss_op.c=
c
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/spatial_batch_=
norm_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/boolean_unmask=
_ops.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/generate_propo=
sals_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/negate_gradien=
t_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/lengths_reduce=
r_rowwise_8bit_ops.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/affine_channel=
_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/reciprocal_gra=
dient_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/conv_op_shared=
.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/elementwise_op=
s_schema.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/elementwise_su=
b_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/leaky_relu_op.=
cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/elementwise_li=
near_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/atan_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/feature_maps_o=
ps.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/experimental/c=
10/cpu/filler_cpu.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/experimental/c=
10/cpu/sparse_lengths_sum_cpu.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/experimental/c=
10/cpu/flatten_cpu.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/experimental/c=
10/cpu/averaged_loss_cpu.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/experimental/c=
10/cpu/batch_matmul_cpu.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/experimental/c=
10/cpu/enforce_finite_cpu.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/experimental/c=
10/cpu/relu_cpu.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/experimental/c=
10/cpu/batch_gather_cpu.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/experimental/c=
10/cpu/stop_gradient_cpu.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/experimental/c=
10/cpu/sigmoid_cross_entropy_with_logits_cpu.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/experimental/c=
10/cpu/fc_cpu.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/experimental/c=
10/cpu/mul_cpu.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/experimental/c=
10/cpu/concat_cpu.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/experimental/c=
10/cpu/cast_cpu.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/experimental/c=
10/cpu/expand_dims_cpu.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/experimental/c=
10/cpu/sigmoid_cpu.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/experimental/c=
10/cpu/add_cpu.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/mod_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/deform_conv_op=
.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/inference_lstm=
_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/enforce_finite=
_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/batch_moments_=
op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/h_softmax_op.c=
c
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/elementwise_mu=
l_gradient_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/last_n_window_=
collector.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/sinusoid_posit=
ion_encoding_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/numpy_tile_op.=
cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/flexible_top_k=
.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/swish_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/distance_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/dense_vector_t=
o_id_list_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/box_with_nms_l=
imit_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/piecewise_line=
ar_transform_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/text_file_read=
er.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/group_norm_op.=
cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/ctc_greedy_dec=
oder_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/relu_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/instance_norm_=
op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/conv_transpose=
_op_mobile.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/lengths_top_k_=
op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/pack_rnn_seque=
nce_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/sigmoid_gradie=
nt_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/spatial_softma=
x_with_loss_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/cos_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/resize_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/lpnorm_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/reduce_ops.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/fully_connecte=
d_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/layer_norm_op.=
cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/data_couple.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/copy_rows_to_t=
ensor_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/scale_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/softsign_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/clip_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/lp_pool_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/batch_gather_o=
ps.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/create_scope_o=
p.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/conv_op_eigen.=
cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/stats_ops.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/asin_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/tt_linear_op.c=
c
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/ensure_clipped=
_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/elementwise_ad=
d_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/collect_and_di=
stribute_fpn_rpn_proposals_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/load_save_op.c=
c
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/softmax_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/weighted_sampl=
e_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/given_tensor_f=
ill_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/batch_box_cox_=
op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/locally_connec=
ted_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/channel_backpr=
op_stats_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/log_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/zero_gradient_=
op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/prepend_dim_op=
.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/byte_weight_de=
quant_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/conv_gradient_=
op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/lengths_tile_o=
p.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/percentile_op.=
cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/sequence_ops.c=
c
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/elementwise_ad=
d_gradient_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/abs_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/margin_ranking=
_criterion_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/glu_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/channel_stats_=
op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/gather_ranges_=
to_dense_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/softmax_with_l=
oss_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/reduce_front_b=
ack_mean_ops.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/resize_3d_op.c=
c
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/moments_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/slice_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/assert_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/dataset_ops.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/lengths_reduce=
r_ops.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/conv_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/heatmap_max_ke=
ypoint_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/pad_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/channel_shuffl=
e_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/normalize_op.c=
c
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/deform_conv_gr=
adient_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/mean_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/prelu_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/rmac_regions_o=
p.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/cube_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/tanh_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/communicator_o=
p.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/string_ops.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/apmeter_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/gru_unit_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/concat_split_o=
p.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/pool_op_util.c=
c
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/is_empty_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/cc_bmm_bg_op.c=
c
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/crash_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/sinh_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/logit_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/index_hash_ops=
.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/tile_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/reduce_front_b=
ack_sum_ops.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/batch_permutat=
ion_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/gather_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/if_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/stump_func_op.=
cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/roi_align_op.c=
c
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/key_split_ops.=
cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/while_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/listwise_l2r_o=
p.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/map_ops.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/elementwise_mu=
l_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/pool_gradient_=
op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/minmax_gradien=
t_ops.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/sigmoid_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/weighted_multi=
_sampling_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/crf_viterbi_op=
.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/counter_ops.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/pack_segments.=
cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/accumulate_op.=
cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/matmul_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/filler_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/rnn/recurrent_=
network_executor.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/rnn/recurrent_=
network_blob_fetcher_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/rnn/recurrent_=
network_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/batch_sparse_t=
o_dense_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/utils/signal_handler.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/utils/math/elementwise.c=
c
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/utils/math/reduce.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/utils/math/utils.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/utils/math/broadcast.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/utils/math/transpose.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/utils/smart_tensor_print=
er.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/utils/murmur_hash3.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/utils/bench_utils.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/utils/math_cpu.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/utils/proto_utils.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/utils/string_utils.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/utils/cpuid.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/utils/threadpool/ThreadP=
ool.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/utils/threadpool/pthrea=
dpool_impl.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/utils/threadpool/Thread=
PoolMobile.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/utils/threadpool/pthrea=
dpool.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/utils/proto_convert.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/utils/proto_wrap.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/observers/time_observer.=
cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/observers/runcnt_observe=
r.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/observers/profile_observ=
er.cc
+
+########################################################################=
########
+# caffe2/operators/quantized
+########################################################################=
########
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/quantized/int=
8_slice_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/quantized/int=
8_flatten_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/quantized/int=
8_add_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/quantized/ini=
t_qnnpack.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/quantized/int=
8_relu_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/quantized/int=
8_resize_nearest_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/quantized/int=
8_fc_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/quantized/int=
8_concat_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/quantized/int=
8_softmax_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/quantized/int=
8_conv_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/quantized/int=
8_roi_align_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/quantized/int=
8_sigmoid_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/quantized/int=
8_channel_shuffle_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/quantized/int=
8_average_pool_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/quantized/int=
8_given_tensor_fill_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/quantized/int=
8_quantize_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/quantized/int=
8_max_pool_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/quantized/int=
8_roi_align_op_test.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/quantized/int=
8_reshape_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/quantized/int=
8_conv_transpose_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/quantized/int=
8_leaky_relu_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/quantized/int=
8_conv_op_relu.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/quantized/int=
8_transpose_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/quantized/int=
8_dequantize_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/quantized/int=
8_test.cc
+
+########################################################################=
########
+# caffe2/operators/ideep
+########################################################################=
########
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/utility=
_ops.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/quantiz=
ation/int8_add_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/quantiz=
ation/int8_relu_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/quantiz=
ation/int8_fully_connected_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/quantiz=
ation/int8_conv_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/quantiz=
ation/int8_given_tensor_fill_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/quantiz=
ation/int8_quantize_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/quantiz=
ation/int8_pool_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/quantiz=
ation/int8_dequantize_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/conv_tr=
anspose_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/reshape=
_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/expand_=
squeeze_dims_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/shape_o=
p.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/dropout=
_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/local_r=
esponse_normalization_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/element=
wise_sum_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/order_s=
witch_ops.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/pool_op=
.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/transpo=
se_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/spatial=
_batch_norm_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/relu_op=
.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/adam_op=
.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/momentu=
m_sgd_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/fully_c=
onnected_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/queue_o=
ps.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/conv_op=
.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/channel=
_shuffle_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/concat_=
split_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/sigmoid=
_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/operato=
r_fallback_ideep.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/utils/ideep_regis=
ter.cc
+
+########################################################################=
########
+# caffe2/contrib
+########################################################################=
########
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/pytorch/script_=
module_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/shm_mutex/shm_m=
utex.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/nnpack/nnpack_o=
ps.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/opencl/context.=
cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/opencl/context_=
test.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/nccl/cuda_nccl_=
gpu.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/nccl/cuda_nccl_=
op_gpu.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/prof/prof_dag_s=
tats_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/prof/cuda_profi=
le_ops.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/aten/aten_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/aten/aten_op_gp=
u.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/gloo/allgather_=
ops.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/gloo/common_wor=
ld_ops_gpu.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/gloo/store_hand=
ler.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/gloo/common.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/gloo/broadcast_=
ops_gpu.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/gloo/py_export.=
cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/gloo/common_wor=
ld_ops.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/gloo/barrier_op=
s.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/gloo/context.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/gloo/allreduce_=
ops.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/gloo/allreduce_=
ops_gpu.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/gloo/broadcast_=
ops.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/gloo/reduce_sca=
tter_ops.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/tensorrt/tensor=
rt_op_trt.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/tensorrt/trt_ut=
ils.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/tensorrt/tensor=
rt_tranformer.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/image/image_input_op_gp=
u.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/image/image_input_op.cc
+
+########################################################################=
########
+# caffe2/predictor
+########################################################################=
########
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/predictor/predictor_uti=
ls.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/predictor/predictor.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/predictor/emulator/data=
_filler_test.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/predictor/emulator/benc=
hmark.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/predictor/emulator/data=
_filler.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/predictor/transforms.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/predictor/ThreadLocalPt=
r.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/predictor/predictor_con=
fig.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/predictor/predictor_tes=
t.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/experiments/operators/s=
parse_matrix_reshape_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/experiments/operators/f=
unhash_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/experiments/operators/t=
t_pad_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/experiments/operators/t=
t_contraction_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/experiments/operators/f=
ully_connected_op_sparse.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/experiments/operators/s=
parse_funhash_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/experiments/operators/f=
ully_connected_op_prune.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/experiments/operators/t=
t_contraction_op_gpu.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/experiments/operators/f=
ully_connected_op_decomposition.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/experiments/operators/f=
ully_connected_op_decomposition_gpu.cc
+
+########################################################################=
########
+# caffe2/opt
+########################################################################=
########
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/fusion.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/onnxifi_transformer=
.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/mobile_test.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/tvm_transformer.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/distributed_test.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/passes.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/converter_nomigraph=
_test.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/custom/converter_te=
st.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/custom/concat_elim.=
cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/custom/fakefp16_tra=
nsform.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/custom/concat_elim_=
test.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/custom/cc_amrc.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/custom/pointwise_el=
im.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/custom/converter.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/custom/glow_net_tra=
nsform.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/dead_code_elim.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/backend_cutting_tes=
t.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/distributed.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/nql/tests/GraphMatc=
herTest.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/nql/graphmatcher.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/backend_cutting.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/onnxifi_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/device.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/distributed_convert=
er.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/bound_shape_inferen=
cer.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/backend_transformer=
_base.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/annotations.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/shape_info.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/device_test.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/dead_code_elim_test=
.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/mobile.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/bound_shape_inferen=
ce_test.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/optimize_ideep.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/converter.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/optimizer.cc
+
+########################################################################=
########
+# caffe2/onnx
+########################################################################=
########
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/onnx/offline_tensor.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/onnx/torch_ops/defs.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/onnx/torch_ops/schema.c=
c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/onnx/device.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/onnx/onnx_exporter.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/onnx/ssa_test.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/onnx/onnxifi_graph_info=
.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/onnx/backend_rep.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/onnx/backend.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/onnx/onnxifi_init.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/onnx/helper.cc
+
+########################################################################=
########
+# caffe2/mpi
+########################################################################=
########
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/mpi/mpi_gpu_test.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/mpi/mpi_common.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/mpi/mpi_ops_gpu.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/mpi/mpi_test.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/mpi/mpi_ops.cc
+
+########################################################################=
########
+# caffe2/video
+########################################################################=
########
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/video/video_decoder.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/video/video_input_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/video/video_input_op_gp=
u.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/video/optical_flow.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/video/video_io.cc
+
+########################################################################=
########
+# caffe2/sgd
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/sgd/ftrl_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/sgd/yellowfin_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/sgd/wngrad_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/sgd/iter_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/sgd/adagrad_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/sgd/clip_tensor_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/sgd/learning_rate_adapti=
on_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/sgd/adadelta_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/sgd/lars_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/sgd/rmsprop_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/sgd/adam_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/sgd/momentum_sgd_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/sgd/gftrl_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/sgd/learning_rate_op.cc
+
+
+########################################################################=
########
+# caffe2/serialize
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/serialize/inline_contain=
er.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/serialize/file_adapter.c=
c
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/serialize/istream_adapte=
r.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/serialize/read_adapter_i=
nterface.cc|caffe2_serialize
+
+########################################################################=
########
+# caffe2/core
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/net_parallel.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/int8_serialization.=
cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/net.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/blob_serialization.=
cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/net_simple.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/memonger.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/tensor.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/net_async_task.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/transform.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/net_async_task_grap=
h.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/net_dag_utils.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/net_simple_refcount=
.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/operator_schema.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/module.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/init.cc|caffe2
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/net_async_tracing.c=
c
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/common.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/workspace.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/types.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/allocator.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/prof_dag_counters.c=
c
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/init_intrinsics_che=
ck.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/operator.cc|caffe2_=
core
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/net_async_base.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/event.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/graph.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/qtensor_serializati=
on.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/context.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/tensor_int8.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/db.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/net_async_schedulin=
g.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/net_async_task_futu=
re.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/numa.cc|caffe2
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/export_c10_op_to_ca=
ffe2.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/context_base.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/blob_stats.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/init_denormals.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/stats.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/qtensor.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/plan_executor.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/nomnigraph/Represe=
ntations/NeuralNet.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/init_omp.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/python/pybind_state_int=
8.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/python/pybind_state_dlp=
ack.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/python/pybind_state_hip=
.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/python/mpi_python.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/python/pybind_state_gpu=
.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/python/pybind_state.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/python/pybind_state_nom=
ni.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/python/pybind_state_ide=
ep.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/python/pybind_state_reg=
istry.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/db/lmdb.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/db/create_db_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/db/leveldb.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/db/create_db_op_gpu.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/db/zmqdb.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/db/protodb.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/db/db_test.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/distributed/redis_store=
_handler.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/distributed/file_store_=
handler_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/distributed/redis_store=
_handler_op_gpu.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/distributed/redis_store=
_handler_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/distributed/store_handl=
er.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/distributed/file_store_=
handler.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/distributed/py_export.c=
c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/distributed/file_store_=
handler_op_gpu.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/distributed/store_ops.c=
c
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/transforms/single_op_tra=
nsform.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/transforms/common_subexp=
ression_elimination.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/transforms/pattern_net_t=
ransform.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/transforms/conv_to_nnpac=
k_transform.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/perfkernels/fused_8bit_=
rowwise_embedding_lookup_idx.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/perfkernels/adagrad_avx=
.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/perfkernels/embedding_l=
ookup_idx_avx2.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/perfkernels/embedding_lo=
okup.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/perfkernels/typed_axpy_=
avx2.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/perfkernels/embedding_l=
ookup_fused_8bit_rowwise_avx2.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/perfkernels/common_avx5=
12.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/perfkernels/fused_8bit_=
rowwise_embedding_lookup.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/perfkernels/embedding_lo=
okup_idx.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/perfkernels/math_cpu_bas=
e.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/perfkernels/common_avx2=
.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/perfkernels/common_avx.=
cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/perfkernels/embedding_l=
ookup_avx2.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/perfkernels/adagrad.cc|a=
dagrad
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/perfkernels/embedding_l=
ookup_fused_8bit_rowwise_idx_avx2.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/perfkernels/math_cpu_av=
x2.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/perfkernels/typed_axpy_=
avx.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/perfkernels/typed_axpy.=
cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/share/contrib/nnpack/nn=
pack_test.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/share/contrib/nnpack/co=
nv_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/share/contrib/zstd/quan=
t_decomp_zstd_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/share/contrib/depthwise=
/depthwise3x3_conv_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/share/contrib/depthwise=
/depthwise3x3_conv_op_test.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/test/caffe2_gtest_main.=
cc
+
+########################################################################=
########
+# aten/src/ATen
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/TensorNames.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/mkldnn/Runtime.c=
pp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/Utils.cpp|aten
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/ParallelNative.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/build/aten/src/ATen/core/OpsAlr=
eadyMovedToC10.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/build/aten/src/ATen/LegacyTHFun=
ctionsCPU.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/build/aten/src/ATen/TypeDefault=
.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/Context.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/build/aten/src/ATen/CPUType.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/build/aten/src/ATen/QuantizedCP=
UType.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/build/aten/src/ATen/SparseCPUTy=
pe.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/MemoryOverlap.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/ExpandUtils.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/ParallelNativeTBB=
.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/quantized/QTensor=
Impl.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/quantized/Quantiz=
er.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/DLConvertor.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/ThreadLocalDebugI=
nfo.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/Version.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/stub/CombinedStub=
.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/TensorUtils.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/SparseTensorImpl.=
cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/NamedTensorUtils.=
cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/ParallelThreadPoo=
lNative.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/CPUGenerator.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/ParallelCommon.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/DynamicLibrary.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/TensorGeometry.cp=
p
+
+########################################################################=
########
+# aten/src/Aten/core
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/core/dispatch/Dis=
patcher.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/core/dispatch/Ope=
ratorEntry.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/core/VariableHook=
sInterface.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/core/LegacyDevice=
TypeInit.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/core/grad_mode.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/core/interned_str=
ings.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/core/ATenGeneral.=
cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/core/blob.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/core/register_sym=
bols.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/core/op_registrat=
ion/op_registration.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/core/op_registrat=
ion/infer_schema.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/core/DeprecatedTy=
pePropertiesRegistry.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/core/Generator.cp=
p|aten_core
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/core/Formatting.c=
pp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/core/DeprecatedTy=
peProperties.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/core/type.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/core/ivalue.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/core/Dimname.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/core/NamedTensor.=
cpp|core
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/core/LegacyTypeDi=
spatch.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/core/Range.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/core/Tensor.cpp
+
+########################################################################=
########
+# aten/src/Aten/native/quantizied
+########################################################################=
########
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/leaky-relu.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/average-pooling.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/init.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8dwconv/up8x9-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8dwconv/mp8x25-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/u8rmax/sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8gemm/2x4c8-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/channel-shuffle.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/sdwconv/up4x9-psimd.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8gemm/4x4c2-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8conv/4x4c2-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8gavgpool/up8xm-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8gavgpool/up8x7-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8gavgpool/mp8x7p7q-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/indirection.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/convolution.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/x8zip/x2-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/x8zip/x4-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/x8zip/x3-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/x8zip/xm-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/fully-connected.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/x8lut/scalar.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/clamp.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/requantization/q31-scalar.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/requantization/q31-ssse3.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/requantization/fp32-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/requantization/precise-psimd.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/requantization/precise-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/requantization/q31-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/requantization/fp32-scalar.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/requantization/fp32-psimd.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/requantization/q31-sse4.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/requantization/gemmlowp-ssse3.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/requantization/precise-sse4.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/requantization/gemmlowp-sse4.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/requantization/gemmlowp-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/requantization/precise-ssse3.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/requantization/gemmlowp-scalar.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/requantization/precise-scalar.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/operator-delete.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/global-average-pooling.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/u8lut32norm/scalar.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/u8maxpool/sub16-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/u8maxpool/16x9p8q-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/sconv/6x8-psimd.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/add.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/max-pooling.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/sigmoid.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/u8clamp/sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/sgemm/6x8-psimd.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/operator-run.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/softargmax.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8vadd/sse2.c|q8vadd
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/deconvolution.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8avgpool/up8x9-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8avgpool/up8xm-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8avgpool/mp8x9p8q-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/fc-run.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/fc-prepack.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/conv-run.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/conv-prepack.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/deps/clog/src/clog.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8dwconv/up8x9-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8dwconv/mp8x25-sse2.c
+#
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/u8rmax/sse2.c|u8rmax
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8gemm/2x4c8-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8gemm/4x4c2-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8conv/4x4c2-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8gavgpool/up8xm-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8gavgpool/up8x7-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8gavgpool/mp8x7p7q-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/dummy.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/x8zip/x2-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/x8zip/x4-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/x8zip/x3-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/x8zip/xm-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/x8lut/scalar.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/requantization/q31-scalar.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/requantization/q31-ssse3.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/requantization/fp32-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/requantization/precise-psimd.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/requantization/precise-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/requantization/q31-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/requantization/fp32-scalar.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/requantization/fp32-psimd.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/requantization/q31-sse4.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/requantization/gemmlowp-ssse3.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/requantization/precise-sse4.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/requantization/gemmlowp-sse4.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/requantization/gemmlowp-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/requantization/precise-ssse3.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/requantization/gemmlowp-scalar.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/requantization/precise-scalar.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/u8lut32norm/scalar.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/u8maxpool/sub16-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/u8maxpool/16x9p8q-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/u8clamp/sse2.c|u8clamp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/sgemm/6x8-psimd.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8vadd/sse2.c|q8vadd
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8avgpool/up8x9-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8avgpool/up8xm-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8avgpool/mp8x9p8q-sse2.c
+
+# ARM
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8dwconv/up8x9-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8dwconv/mp8x25-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/u8rmax/neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8gemm/4x-sumrows-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8gemm/8x8-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8gemm/4x8c2-xzp-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8gemm/4x8-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8gemm/6x4-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8conv/8x8-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8conv/4x8-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8gavgpool/mp8x7p7q-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8gavgpool/up8xm-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8gavgpool/up8x7-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/x8zip/xm-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/x8zip/x4-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/x8zip/x3-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/x8zip/x2-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/hgemm/8x8-neonfp16arith.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/u8maxpool/sub16-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/u8maxpool/16x9p8q-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/u8clamp/neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/sgemm/6x8-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/sgemm/5x8-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8vadd/neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8avgpool/mp8x9p8q-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/requantization/precise-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/requantization/gemmlowp-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/requantization/q31-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/requantization/fp32-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8dwconv/up8x9-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8dwconv/mp8x25-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8gavgpool/mp8x7p7q-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8gavgpool/up8xm-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8gavgpool/up8x7-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8gemm/6x4-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8conv/8x8-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8conv/4x8-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8gemm/8x8-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8gemm/4x8c2-xzp-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8gemm/4x8-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/u8rmax/neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8gemm/4x-sumrows-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8vadd/neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8avgpool/mp8x9p8q-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8avgpool/up8x9-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8avgpool/up8xm-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/x8zip/xm-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/requantization/precise-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/requantization/gemmlowp-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8avgpool/up8x9-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8avgpool/up8xm-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/sgemm/5x8-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/u8clamp/neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/sgemm/6x8-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/requantization/fp32-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/u8maxpool/sub16-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/u8maxpool/16x9p8q-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/requantization/q31-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/x8zip/x2-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/x8zip/x3-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/x8zip/x4-neon.c
+
+########################################################################=
########
+# aten/src/ATen/mkldnn
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/mkldnn/Ten=
sorShape.cpp|mkldnn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/mkldnn/IDe=
epRegistration.cpp|mkldnn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/mkldnn/Una=
ryOps.cpp|mkldnn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/mkldnn/MKL=
DNNCommon.cpp|mkldnn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/mkldnn/Uti=
ls.cpp|mkldnn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/mkldnn/Rel=
u.cpp|mkldnn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/mkldnn/Mkl=
dnnTensorMath.cpp|mkldnn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/mkldnn/Lin=
ear.cpp|mkldnn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/mkldnn/MKL=
DNNConversions.cpp|mkldnn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/mkldnn/Nor=
malization.cpp|mkldnn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/mkldnn/Bin=
aryOps.cpp|mkldnn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/mkldnn/Ten=
sorFactories.cpp|mkldnn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/mkldnn/Poo=
ling.cpp|mkldnn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/mkldnn/Con=
v.cpp|mkldnn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/mkldnn/Sof=
tMax.cpp|mkldnn
+
+########################################################################=
########
+# aten/src/ATen/native
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/TensorShap=
e.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Im2Col.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Indexing.c=
pp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/UnaryOps.c=
pp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/PointwiseO=
ps.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/layer_norm=
.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/WeightNorm=
.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/mkl/Linear=
Algebra.cpp|mkl
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/mkl/Spectr=
alOps.cpp|mkl
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/NaiveDilat=
edConvolution.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/PixelShuff=
le.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Convolutio=
nMM3d.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Fill.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/TensorTran=
sformations.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Embedding.=
cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Sorting.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Integratio=
n.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/RNN.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/SummaryOps=
.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/NNPACK.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Lerp.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/BatchLinea=
rAlgebra.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Cross.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/UpSampleLi=
near1d.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Scalar.cpp=
|aten
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Unique.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Repeat.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Itertools.=
cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/DilatedMax=
Pool3d.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/LinearAlge=
bra.cpp|native
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/LossCTC.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Linear.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/ReduceOps.=
cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/LossNLL.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Unfold2d.c=
pp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/UpSampleNe=
arest1d.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/RangeFacto=
ries.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/VariableMe=
thodStubs.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Col2Im.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Resize.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Distributi=
ons.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/LossNLL2d.=
cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Convolutio=
nMM2d.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/ConstantPa=
dNd.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Distance.c=
pp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/sparse/Spa=
rseTensor.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/sparse/Spa=
rseTensorMath.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/DispatchSt=
ub.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/AffineGrid=
Generator.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/AdaptiveMa=
xPooling3d.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/TensorIter=
ator.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/miopen/RNN=
_miopen.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/miopen/Con=
v_miopen.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/miopen/Bat=
chNorm_miopen.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Reflection=
Pad.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Copy.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Normalizat=
ion.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/UpSampleBi=
linear2d.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Dropout.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/DilatedMax=
Pool2d.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/TensorConv=
ersions.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/NaiveConvo=
lutionTranspose3d.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/LegacyDefi=
nitions.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/BinaryOps.=
cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/UpSampleNe=
arest3d.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Loss.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/TensorFact=
ories.cpp|native
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/TensorProp=
erties.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/AdaptiveAv=
eragePooling.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/LegacyBrid=
ge.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/TensorComp=
are.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/EmbeddingB=
ag.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Pooling.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/UpSampleNe=
arest2d.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/MaxUnpooli=
ng.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Onehot.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/AveragePoo=
l3d.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/AdaptiveMa=
xPooling2d.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Convolutio=
n.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/TypeProper=
ties.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/UpSampleBi=
cubic2d.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/NamedTenso=
r.cpp|native
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Replicatio=
nPadding.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Pow.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/AdaptiveAv=
eragePooling3d.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Unfold3d.c=
pp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/UpSampleTr=
ilinear3d.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Fractional=
MaxPool2d.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/SobolEngin=
eOps.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Convolutio=
nTBC.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/NaiveConvo=
lutionTranspose2d.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/LossMultiL=
abelMargin.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Memory.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/LossMultiM=
argin.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/LegacyNNDe=
finitions.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/AveragePoo=
l2d.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/GridSample=
r.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/SpectralOp=
s.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Activation=
.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Triangular=
Ops.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/SoftMax.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/PackedSequ=
ence.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/QuantizedL=
inear.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/TensorIter=
atorReduce.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Fractional=
MaxPool3d.cpp
+
+########################################################################=
########
+# aten/src/ATen/native/cpu
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/cpu/Distan=
ceOpsKernel.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/cpu/Sortin=
gKernel.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/cpu/Multin=
omialKernel.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/cpu/FillKe=
rnel.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/cpu/PowKer=
nel.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/cpu/Depthw=
iseConvKernel.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/cpu/IndexK=
ernel.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/cpu/Tensor=
CompareKernel.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/cpu/Pointw=
iseOpsKernel.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/cpu/Reduce=
OpsKernel.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/cpu/CopyKe=
rnel.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/cpu/layer_=
norm_kernel.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/cpu/SoftMa=
xKernel.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/cpu/Unfold=
2d.cpp|native_cpu
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/cpu/GridSa=
mplerKernel.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/cpu/CrossK=
ernel.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/cpu/LerpKe=
rnel.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/cpu/Binary=
OpsKernel.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/cpu/UnaryO=
psKernel.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/cpu/Activa=
tion.cpp|native_cpu
+
+
+########################################################################=
########
+# aten/src/ATen/native/quantized
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
QTensor.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
Copy.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
TensorFactories.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
TensorCompare.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
cpu/init_qnnpack.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
cpu/q_avgpool.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
cpu/qreduction.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
cpu/qconv.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
cpu/qlinear.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
cpu/fbgemm_utils.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
cpu/fake_quantize_per_tensor_affine.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
cpu/qupsample_bilinear2d.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
cpu/qlinear_dynamic.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
cpu/fake_quantize_core.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
cpu/qconv_unpack.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
cpu/qconv_prepack.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
cpu/fake_quantize_per_channel_affine.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
cpu/qlinear_prepack.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
cpu/qmul.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
cpu/qsort.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
cpu/tensor_operators.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
cpu/qadd.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
cpu/qupsample_nearest2d.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
cpu/qrelu.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
cpu/qlinear_unpack.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
cpu/qconcat.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
cpu/qpool.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
cpu/q_adaavgpool.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
cpu/kernels/QuantizedOpKernels.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/cpu/FlushDenormal=
.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/detail/CUDAHooksI=
nterface.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/detail/HIPHooksIn=
terface.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/detail/CPUGuardIm=
pl.cpp
+
+########################################################################=
########
+# aten/src/THNN
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/THNN/init.cpp|thnn
+
+########################################################################=
########
+# aten/src/THC
+########################################################################=
########
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/THC/THCStorageCopy.cp=
p
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/THC/THCStorage.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/THC/generic/THCStorag=
eCopy.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/THC/generic/THCStorag=
e.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/THC/generic/THCTensor=
.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/THC/THCTensor.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/THC/THCCachingHostAll=
ocator.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/THC/THCGeneral.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/THC/THCStream.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/THC/THCAllocator.cpp
+
+########################################################################=
########
+# aten/src/TH
+########################################################################=
########
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/TH/vector/NEON.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/TH/vector/AVX2.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/TH/vector/VSX.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/TH/vector/AVX.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/TH/THTensorMoreMath.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/TH/THDiskFile.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/TH/THSize.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/TH/THTensorFill.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/TH/THLapack.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/TH/THStorageFunctions.=
cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/TH/THGeneral.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/TH/THTensorMath.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/TH/THMemoryFile.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/TH/THTensor.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/TH/THTensorEvenMoreMat=
h.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/TH/THVector.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/TH/THTensorRandom.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/TH/THTensorConv.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/TH/THBlas.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/TH/THLogAdd.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/TH/THAllocator.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/TH/THFile.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/TH/THTensorLapack.cpp
+
+########################################################################=
########
+# torch/csrc
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/dl.c
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/MemoryFormat.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/DataLoader.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/DynamicTypes.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/Dtype.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/tensor/python_tensor=
.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/Exceptions.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/TypeInfo.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/onnx/init.cpp|csrc_o=
nnx
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/Device.cpp|csrc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/Size.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/PtrWrapper.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/Generator.cpp|torch_=
csrc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/utils.cpp|csrc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/serialization.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/Module.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/Storage.cpp|csrc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/QScheme.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/multiprocessing/init=
.cpp|csrc_multiprocessing
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/stub.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/python_dimname.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/Layout.cpp
+
+########################################################################=
########
+# csrc/utils
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/utils/object_ptr.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/utils/tensor_layouts=
.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/utils/byte_order.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/utils/python_arg_par=
ser.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/utils/tuple_parser.c=
pp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/utils/tensor_flatten=
.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/utils/init.cpp|csrc_=
utils
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/utils/tensor_numpy.c=
pp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/utils/tensor_new.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/utils/invalid_argume=
nts.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/utils/tensor_dtypes.=
cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/utils/tensor_qscheme=
s.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/utils/tensor_types.c=
pp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/utils/structseq.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/utils/variadic.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/utils/tensor_memoryf=
ormats.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/utils/throughput_ben=
chmark.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/utils/cuda_lazy_init=
.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/utils/tensor_list.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/utils/tensor_apply.c=
pp
+
+########################################################################=
########
+# csrc/api
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/jit.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/cuda.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/enum.cpp
+
+########################################################################=
########
+# csrc/data
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/data/dataset=
s/mnist.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/data/sampler=
s/distributed.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/data/sampler=
s/random.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/data/sampler=
s/sequential.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/data/sampler=
s/stream.cpp
+
+########################################################################=
########
+# csrc/nn
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/init.cpp|=
scrc_api
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/modules/d=
ropout.cpp|nn_modules
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/modules/l=
inear.cpp|nn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/modules/u=
psampling.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/modules/f=
old.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/modules/n=
ormalization.cpp|nn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/modules/p=
adding.cpp|nn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/modules/l=
oss.cpp|nn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/modules/a=
ctivation.cpp|nn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/modules/e=
mbedding.cpp|nn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/modules/c=
ontainer/functional.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/modules/c=
ontainer/named_any.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/modules/c=
onv.cpp|nn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/modules/d=
istance.cpp|nn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/modules/b=
atchnorm.cpp|nn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/modules/p=
ixelshuffle.cpp|nn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/modules/i=
nstancenorm.cpp|nn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/modules/p=
ooling.cpp|nn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/modules/_=
functions.cpp|nn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/modules/r=
nn.cpp|nn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/module.cp=
p|nn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/options/d=
ropout.cpp|nn_options
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/options/l=
inear.cpp|nn_options
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/options/n=
ormalization.cpp|nn_options
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/options/v=
ision.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/options/p=
adding.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/options/a=
ctivation.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/options/e=
mbedding.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/options/c=
onv.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/options/b=
atchnorm.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/options/i=
nstancenorm.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/options/p=
ooling.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/options/r=
nn.cpp|options
+
+########################################################################=
########
+# csrc/serialize
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/serialize/in=
put-archive.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/serialize/ou=
tput-archive.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/serialize.cp=
p|api_src
+
+########################################################################=
########
+# csrc/python
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/python/init.=
cpp|python
+
+########################################################################=
########
+# csrc/optim
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/optim/sgd.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/optim/lbfgs.=
cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/optim/rmspro=
p.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/optim/adam.c=
pp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/optim/adagra=
d.cpp|optim
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/optim/serial=
ize.cpp|api_optim
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/optim/optimi=
zer.cpp
+
+########################################################################=
########
+# csrc/distributed
+########################################################################=
########
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/rpc/req=
uest_callback_impl.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/rpc/rre=
f_proto.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/rpc/pro=
cess_group_agent.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/rpc/rpc=
_agent.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/rpc/pyt=
hon_call.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/rpc/req=
uest_callback.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/rpc/scr=
ipt_resp.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/rpc/ini=
t.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/rpc/rre=
f_context.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/rpc/rre=
f.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/rpc/pyt=
hon_functions.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/rpc/scr=
ipt_call.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/rpc/scr=
ipt_remote_call.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/rpc/pyt=
hon_rpc_handler.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/rpc/uti=
ls.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/rpc/pyt=
hon_resp.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/rpc/typ=
es.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/rpc/mes=
sage.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/rpc/fut=
ure_message.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/rpc/py_=
rref.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/rpc/pyt=
hon_remote_call.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/autogra=
d/context/context.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/autogra=
d/context/container.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/autogra=
d/init.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/autogra=
d/engine/dist_engine.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/autogra=
d/functions/sendrpc_backward.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/autogra=
d/functions/recvrpc_backward.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/autogra=
d/utils.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/autogra=
d/rpc_messages/propagate_gradients_resp.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/autogra=
d/rpc_messages/propagate_gradients_req.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/autogra=
d/rpc_messages/cleanup_autograd_context_resp.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/autogra=
d/rpc_messages/autograd_metadata.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/autogra=
d/rpc_messages/rpc_with_autograd.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/autogra=
d/rpc_messages/cleanup_autograd_context_req.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/c10d/re=
ducer.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/c10d/in=
it.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/c10d/dd=
p.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/c10d/co=
mm.cpp
+
+########################################################################=
########
+# torch/csrc/jit
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/profiling_record=
.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/source_range.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/graph_executor.c=
pp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/import_legacy.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/operator.cpp|jit
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/python_ir.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/ir.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/attributes.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/constants.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/profiling_graph_=
executor_impl.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/register_c10_ops=
.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/scope.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/vararg_functions=
.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/function.cpp|csr=
c_jit
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/export_module.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/register_prim_op=
s.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/init.cpp|jit
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/symbolic_script.=
cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/import.cpp|jit
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/testing/file_che=
ck.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/instruction.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/python_arg_flatt=
en.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/unpickler.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/pickler.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/source_range_ser=
ialization.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/netdef_converter=
.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/print_handler.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/pass_manager.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/import_export_he=
lpers.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/hooks_for_testin=
g.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/pickle.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/jit_log.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/register_string_=
ops.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/argument_spec.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/irparser.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/register_special=
_ops.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/subgraph_matcher=
.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/export.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/node_hashing.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/interpreter.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/operator_option=
s.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/autodiff.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/python_tracer.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/import_source.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/python_interpret=
er.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/update_graph_exe=
cutor_opt.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/tracer.cpp
+
+########################################################################=
########
+# csrc/jit/fuser
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/fuser/executor.c=
pp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/fuser/cuda/fuse=
d_kernel.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/fuser/codegen.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/fuser/kernel_cac=
he.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/fuser/interface.=
cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/fuser/fallback.c=
pp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/fuser/compiler.c=
pp|jit_fuser
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/fuser/cpu/fused_=
kernel.cpp
+
+########################################################################=
########
+# torch/csrc/passes
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/inplace_c=
heck.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/dead_code=
_elimination.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/loop_unro=
lling.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/lower_tup=
les.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/remove_ex=
pands.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/alias_ana=
lysis.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/canonical=
ize.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/remove_in=
place_ops.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/onnx.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/utils/mem=
ory_dag.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/utils/sub=
graph_utils.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/utils/che=
ck_alias_annotation.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/constant_=
propagation.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/canonical=
ize_ops.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/create_au=
todiff_subgraphs.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/constant_=
pooling.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/specializ=
e_autogradzero.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/peephole.=
cpp|jit
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/insert_gu=
ards.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/shape_ana=
lysis.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/inline_fo=
rk_wait.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/subgraph_=
rewrite.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/clear_und=
efinedness.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/inline_fo=
rked_closures.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/lower_gra=
d_of.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/python_pr=
int.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/onnx/help=
er.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/onnx/unpa=
ck_quantized_weights.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/onnx/peep=
hole.cpp|onnx
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/onnx/scal=
ar_type_analysis.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/onnx/cast=
_all_constant_to_floating.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/onnx/cons=
tant_fold.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/onnx/prep=
are_division_for_onnx.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/onnx/fixu=
p_onnx_loop.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/bailout_g=
raph.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/quantizat=
ion.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/liveness.=
cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/batch_mm.=
cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/decompose=
_ops.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/inliner.c=
pp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/requires_=
grad_analysis.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/lower_gra=
ph.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/graph_fus=
er.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/lift_clos=
ures.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/guard_eli=
mination.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/inline_au=
todiff_subgraphs.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/erase_num=
ber_types.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/fuse_line=
ar.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/common_su=
bexpression_elimination.cpp|jit_passes
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/fixup_tra=
ce_scope_blocks.cpp
+
+########################################################################=
########
+# csrc/script
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/script/strtod.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/script/function_=
schema_parser.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/script/convert_t=
o_ssa.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/script/error_rep=
ort.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/script/module_sa=
ve.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/script/schema_ma=
tching.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/script/logging.c=
pp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/script/init.cpp|=
jit_scripts
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/script/concrete_=
module_type.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/script/lexer.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/script/schema_ty=
pe_parser.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/script/sugared_v=
alue.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/script/class_typ=
e.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/script/module.cp=
p|jit_script
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/script/python_su=
gared_value.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/script/canonical=
ize_modified_loop.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/script/python_tr=
ee_views.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/script/inline_lo=
op_condition.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/script/parser.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/script/exit_tran=
sforms.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/script/compiler.=
cpp|jit_script
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/script/jit_excep=
tion.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/script/script_ty=
pe_parser.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/script/builtin_f=
unctions.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/script/object.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/script/edit_dist=
ance.cpp
+
+########################################################################=
########
+# csrc/jit/mobile
+########################################################################=
########
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/mobile/function=
.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/mobile/import.c=
pp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/mobile/module.c=
pp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/mobile/interpre=
ter.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/mobile/register=
_mobile_ops.cpp
+
+########################################################################=
########
+# csrc/autograd
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/python_lega=
cy_variable.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/python_vari=
able.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/python_engi=
ne.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/python_cpp_=
function.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/engine.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/function.cp=
p|csrc_autograd
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/profiler_c=
uda.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/init.cpp|au=
tograd
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/anomaly_mod=
e.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/input_buffe=
r.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/record_func=
tion.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/autograd.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/VariableTyp=
eManual.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/profiler.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/variable.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/cpp_hook.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/saved_varia=
ble.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/python_func=
tion.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/python_hook=
.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/python_vari=
able_indexing.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/record_func=
tion_ops.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/python_anom=
aly_mode.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/custom_func=
tion.cpp
+
+########################################################################=
########
+# csrc/autograd/functions
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/function_ho=
ok.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/functions/t=
ensor.cpp|atuograd_functions
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/functions/i=
nit.cpp|autograd_functions
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/functions/a=
ccumulate_grad.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/functions/u=
tils.cpp|auograd_functions
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/functions/b=
asic_ops.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/functions/=
comm.cpp
+
+########################################################################=
########
+# csrc/lib/libshm
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/lib/libshm/core.cpp|libsh=
m
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/lib/libshm/manager.cpp
+
+########################################################################=
########
+# c10d
+########################################################################=
########
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/lib/c10d/Utils.cpp|c10d
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/lib/c10d/ProcessGroupNCC=
L.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/lib/c10d/ProcessGroup.cp=
p
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/lib/c10d/HashStore.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/lib/c10d/example/allredu=
ce.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/lib/c10d/ProcessGroupGlo=
o.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/lib/c10d/Store.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/lib/c10d/TCPStore.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/lib/c10d/ProcessGroupMPI=
.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/lib/c10d/PrefixStore.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/lib/c10d/FileStore.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/lib/c10d/NCCLUtils.cpp
+
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/warpctc/ctc_op_=
gpu.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/warpctc/ctc_op.=
cpp
+
+########################################################################=
########
+# c10/util
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/util/numa.cpp|c10
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/util/UniqueVoidPtr.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/util/Logging.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/util/TypeTraits.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/util/StringUtil.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/util/Backtrace.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/util/flags_use_gflags.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/util/Half.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/util/Exception.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/util/flags_use_no_gflags.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/util/TypeList.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/util/thread_name.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/util/Type.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/util/LeftRight.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/util/Metaprogramming.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/util/typeid.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/util/C++17.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/util/Array.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/util/intrusive_ptr.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/util/SmallVector.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/util/Optional.cpp
+
+########################################################################=
########
+# c10/core
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/core/Storage.cpp|c10
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/core/Allocator.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/core/Stream.cpp|c10
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/core/Scalar.cpp|c10
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/core/DefaultDtype.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/core/impl/DeviceGuardImplIn=
terface.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/core/impl/LocalTensorTypeSe=
t.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/core/Device.cpp|c10
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/core/CopyBytes.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/core/TensorTypeId.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/core/DeviceType.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/core/UndefinedTensorImpl.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/core/thread_pool.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/core/TensorTypeSet.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/core/CPUAllocator.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/core/TensorImpl.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/core/TensorOptions.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/core/StorageImpl.cpp
+
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/build/caffe2/proto/caffe2.pb.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/build/caffe2/proto/caffe2_legac=
y.pb.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/build/caffe2/proto/hsm.pb.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/build/caffe2/proto/torch.pb.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/build/caffe2/proto/metanet.pb.=
cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/build/caffe2/proto/predictor_co=
nsts.pb.cc
+LIBPYTORCH_SRCS-y+=3D $(LIBPYTORCH_SRC)/build/caffe2/proto/prof_dag.pb.c=
c
+
+########################################################################=
########
+# third_party/miniz
+########################################################################=
########
+LIBPYTORCH_SRCS-y+=3D $(LIBPYTORCH_SRC)/third_party/miniz-2.0.8/miniz.c
+
+########################################################################=
########
+# torch/csrc/autograd/generated
+########################################################################=
########
+LIBPYTORCH_SRCS-y+=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/generated/Fu=
nctions.cpp
+LIBPYTORCH_SRCS-y+=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/generated/Va=
riableType_4.cpp
+LIBPYTORCH_SRCS-y+=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/generated/Va=
riableType_0.cpp
+LIBPYTORCH_SRCS-y+=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/generated/Va=
riableType_1.cpp
+LIBPYTORCH_SRCS-y+=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/generated/Va=
riableType_2.cpp
+LIBPYTORCH_SRCS-y+=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/generated/Va=
riableType_3.cpp
+LIBPYTORCH_SRCS-y+=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/generated/py=
thon_functions.cpp
+LIBPYTORCH_SRCS-y+=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/generated/py=
thon_nn_functions.cpp
+LIBPYTORCH_SRCS-y+=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/generated/py=
thon_torch_functions.cpp
+LIBPYTORCH_SRCS-y+=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/generated/py=
thon_variable_methods.cpp
+
+$(LIBPYTORCH_BUILD)/.prepared: $(LIBPYTORCH_BUILD)/.origin
+	cd $(LIBPYTORCH_SRC) && mkdir -p build/caffe2/proto && mkdir -p build/a=
ten/src/ATen
+	cd $(LIBPYTORCH_SRC) && \
+		python3 aten/src/ATen/gen.py --source-path aten/src/ATen/ --install_di=
r build/aten/src/ATen/ aten/src/ATen/Declarations.cwrap aten/src/THNN/gen=
eric/THNN.h aten/src/THCUNN/generic/THCUNN.h aten/src/ATen/nn.yaml aten/s=
rc/ATen/native/native_functions.yaml
+	cd $(LIBPYTORCH_SRC) && \
+		cp aten/src/ATen/common_with_cwrap.py tools/shared/cwrap_common.py && =
\
+		cp torch/_utils_internal.py tools/shared && \
+		python3 tools/setup_helpers/generate_code.py  --declarations-path buil=
d/aten/src/ATen/Declarations.yaml --nn-path aten/src/
+	cd $(LIBPYTORCH_SRC) && \
+		protoc -I. --cpp_out=3Ddllexport_decl=3DCAFFE2_API:build/ caffe2/proto=
/caffe2_legacy.proto && \
+		protoc -I. --cpp_out=3Ddllexport_decl=3DCAFFE2_API:build/ caffe2/proto=
/hsm.proto && \
+		protoc -I. --cpp_out=3Ddllexport_decl=3DCAFFE2_API:build/ caffe2/proto=
/torch.proto && \
+		protoc -I. --cpp_out=3Ddllexport_decl=3DCAFFE2_API:build/ caffe2/proto=
/metanet.proto && \
+		protoc -I. --cpp_out=3Ddllexport_decl=3DCAFFE2_API:build/ caffe2/proto=
/predictor_consts.proto && \
+		protoc -I. --cpp_out=3Ddllexport_decl=3DCAFFE2_API:build/ caffe2/proto=
/prof_dag.proto &&\
+		protoc -I. --cpp_out=3Ddllexport_decl=3DCAFFE2_API:build/ caffe2/proto=
/caffe2.proto
+
+UK_PREPARE +=3D $(LIBPYTORCH_BUILD)/.prepared
--=20
2.20.1





From minios-devel-bounces@lists.xenproject.org Wed Apr 08 00:23:11 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 08 Apr 2020 00:23: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 1jLyUo-0001nH-W5; Wed, 08 Apr 2020 00:23: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=hVdw=5Y=upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1jLyUn-0001n2-Om
 for minios-devel@lists.xen.org; Wed, 08 Apr 2020 00:23:09 +0000
X-Inumbo-ID: 199bc802-792f-11ea-818c-12813bfff9fa
Received: from mx.upb.ro (unknown [141.85.13.220])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 199bc802-792f-11ea-818c-12813bfff9fa;
 Wed, 08 Apr 2020 00:22:59 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id 8E655B562529;
 Wed,  8 Apr 2020 03:22:58 +0300 (EEST)
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10032)
 with ESMTP id w6dBkOThTMT3; Wed,  8 Apr 2020 03:22:35 +0300 (EEST)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id CE93CB5625DA;
 Wed,  8 Apr 2020 03:22:34 +0300 (EEST)
DKIM-Filter: OpenDKIM Filter v2.10.3 mx.upb.ro CE93CB5625DA
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=upb.ro;
 s=96342B8A-77E4-11E5-BA93-D93D0963A2DF; t=1586305354;
 bh=44xof9r52rfngq5MS3LQXdmJQZRJOi6HsZVD6WnuUDY=;
 h=From:To:Date:Message-Id:MIME-Version;
 b=S+LCgh8qoSwWom4k4+66qNRNUXykVc8MlHVYfNzGjqEujcJpY6Tom792DDRw9EghQ
 HsazbteyyjaDeHwnUrPoqcO8piMHikcRVDGYR04uCOPNojRdPla98L8YY8gJOCjoDJ
 drFy8+vej7UoFLfituppw+Uqo9dS56qOok7MFqmI=
X-Virus-Scanned: amavisd-new at upb.ro
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id 2Z8mV7fKAu-l; Wed,  8 Apr 2020 03:22:34 +0300 (EEST)
Received: from localhost.localdomain (unknown [86.127.159.73])
 by mx.upb.ro (Postfix) with ESMTPSA id 753B9B5625D8;
 Wed,  8 Apr 2020 03:22:34 +0300 (EEST)
From: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
To: minios-devel@lists.xen.org
Subject: [UNIKRAFT/PYTORCH PATCH 2/5] Add Makefile
Date: Wed,  8 Apr 2020 03:21:59 +0300
Message-Id: <20200408002204.31260-5-vlad_andrei.badoiu@upb.ro>
X-Mailer: git-send-email 2.20.1
In-Reply-To: <20200408002204.31260-1-vlad_andrei.badoiu@upb.ro>
References: <20200408002204.31260-1-vlad_andrei.badoiu@upb.ro>
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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, Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Signed-off-by: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
---
 Makefile.uk | 1793 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 1793 insertions(+)
 create mode 100644 Makefile.uk

diff --git a/Makefile.uk b/Makefile.uk
new file mode 100644
index 0000000..78ed0f9
--- /dev/null
+++ b/Makefile.uk
@@ -0,0 +1,1793 @@
+#  pytorch config file
+#
+#  Authors: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
+#
+#  Copyright (c) 2020, University Politehnica of Bucharest. All rights r=
eserved.
+#
+#  Redistribution and use in source and binary forms, with or without
+#  modification, are permitted provided that the following conditions
+#  are met:
+#
+#  1. Redistributions of source code must retain the above copyright
+#     notice, this list of conditions and the following disclaimer.
+#  2. Redistributions in binary form must reproduce the above copyright
+#     notice, this list of conditions and the following disclaimer in th=
e
+#     documentation and/or other materials provided with the distributio=
n.
+#  3. Neither the name of the copyright holder nor the names of its
+#     contributors may be used to endorse or promote products derived fr=
om
+#     this software without specific prior written permission.
+#
+#  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "=
AS IS"
+#  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,=
 THE
+#  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PU=
RPOSE
+#  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTOR=
S BE
+#  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+#  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+#  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSIN=
ESS
+#  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER =
IN
+#  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWIS=
E)
+#  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED O=
F THE
+#  POSSIBILITY OF SUCH DAMAGE.
+#
+#  THIS HEADER MAY NOT BE EXTRACTED OR MODIFIED IN ANY WAY.
+
+########################################################################=
########
+# Library registration
+########################################################################=
########
+$(eval $(call addlib_s,libpytorch,$(CONFIG_LIBPYTORCH)))
+
+########################################################################=
########
+# Sources
+########################################################################=
########
+LIBPYTORCH_VERSION=3D1.4.0
+LIBPYTORCH_URL=3Dhttps://github.com/pytorch/pytorch/archive/v1.4.0.tar.g=
z
+LIBPYTORCH_PATCHDIR=3D$(LIBPYTORCH_BASE)/patches
+$(eval $(call fetch,libpytorch,$(LIBPYTORCH_URL)))
+$(eval $(call patch,libpytorch,$(LIBPYTORCH_PATCHDIR),pytorch-$(LIBPYTOR=
CH_VERSION)))
+
+########################################################################=
########
+# Helpers
+# ######################################################################=
##########
+LIBPYTORCH_SUBDIR=3Dpytorch-$(LIBPYTORCH_VERSION)
+LIBPYTORCH_SRC=3D$(LIBPYTORCH_ORIGIN)/$(LIBPYTORCH_SUBDIR)
+
+########################################################################=
########
+# Library includes
+########################################################################=
########
+CINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/torch
+CINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/modules
+CINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/aten/src
+CINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/aten/src/TH
+CINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/aten
+CINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/aten/src/ATen/na=
tive/quantized/cpu/qnnpack/src/
+CINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/aten/src/ATen/na=
tive/quantized/cpu/qnnpack/include/
+CINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/aten/src/ATen/na=
tive/quantized/cpu/qnnpack/deps/clog/include/
+CINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/tools
+CINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)
+CINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/build/aten/src/
+CINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/build/
+CINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_BASE)/include
+CINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_BASE)/include/aten/sr=
c
+CINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/build/caffe2/ate=
n/src/
+CINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/torch/lib/libshm=
/
+CINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/torch/csrc/api/i=
nclude/
+CINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/torch/lib/
+CINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/third_party/mini=
z-2.0.8/
+
+CXXINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/torch
+CXXINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/modules
+CXXINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/aten/src
+CXXINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/aten/src/TH
+CXXINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/aten
+CXXINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/aten/src/ATen/=
native/quantized/cpu/qnnpack/include/
+CXXINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/aten/src/ATen/=
native/quantized/cpu/qnnpack/src/
+CXXINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/aten/src/ATen/=
native/quantized/cpu/qnnpack/deps/clog/include/
+CXXINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/tools
+CXXINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)
+CXXINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/build/aten/src=
/
+CXXINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/build/caffe2/a=
ten/src/
+CXXINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_BASE)/include
+CXXINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_BASE)/include/aten/=
src
+CXXINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/build/
+CXXINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/torch/lib/libs=
hm/
+CXXINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/torch/csrc/api=
/include/
+CXXINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/torch/lib/
+CXXINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/third_party/mi=
niz-2.0.8/
+
+########################################################################=
########
+# Global flags
+########################################################################=
########
+# Suppress some warnings to make the build process look neater
+LIBPYTORCH_SUPPRESS_FLAGS +=3D -Wno-unused-parameter -Wno-unused-variabl=
e -Wno-nonnull		\
+-Wno-unused-but-set-variable -Wno-unused-label -Wno-char-subscripts				\
+-Wno-unused-function -Wno-missing-field-initializers -Wno-uninitialized	=
	    		\
+-Wno-array-bounds -Wno-maybe-uninitialized -Wno-unused-value -Wno-attrib=
utes			\
+-Wno-unused-macros -Wno-parentheses -Wno-unknown-pragmas -Wno-deprecated=
-declarations		\
+-Wno-missing-braces -Wno-endif-labels -Wno-unused-but-set-variable		    =
    	\
+-Wno-type-limits -Wno-sign-compare -fpermissive
+
+LIBPYTORCH_CFLAGS-y	+=3D  $(LIBPYTORCH_SUPPRESS_FLAGS) -D CAFFE2_DISABLE=
_NUMA -D CAFFE2_USE_EIGEN_FOR_BLAS -D C10_BUILD_MAIN_LIB -DC10_USING_CUST=
OM_GENERATED_MACROS -DAT_PARALLEL_NATIVE  -DHAVE_MMAP -DC10_DISABLE_NUMA =
-DCAFFE2_BUILD_MAIN_LIB -DCAFFE2_API=3D"__attribute__((__visibility__(\"d=
efault\")))" -DC10_API=3D"__attribute__((__visibility__(\"default\")))" -=
DONNX_NAMESPACE=3Donnx -DCAFFE2_DISABLE_SIGNAL_HANDLERS -DCPU_CAPABILITY=3D=
DEFAULT
+
+LIBPYTORCH_CXXFLAGS-y	+=3D $(LIBPYTORCH_SUPPRESS_FLAGS) -D CAFFE2_DISABL=
E_NUMA -D CAFFE2_USE_EIGEN_FOR_BLAS -D C10_BUILD_MAIN_LIB -DC10_USING_CUS=
TOM_GENERATED_MACROS -DAT_PARALLEL_NATIVE  -DHAVE_MMAP -DC10_DISABLE_NUMA=
 -DCAFFE2_BUILD_MAIN_LIB -DCAFFE2_API=3D"__attribute__((__visibility__(\"=
default\")))" -DC10_API=3D"__attribute__((__visibility__(\"default\")))" =
-DONNX_NAMESPACE=3Donnx -DCAFFE2_DISABLE_SIGNAL_HANDLERS -DCPU_CAPABILITY=
=3DDEFAULT
+
+# TODO: for better performance
+# USE_STATIC_DISPATCH
+# HAVE_AVX_CPU_DEFINITION
+
+########################################################################=
########
+# Library sources
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_BASE)/glue.c
+
+########################################################################=
########
+# modules/observers
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/modules/observers/net_observer_=
reporter_print.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/modules/observers/observer_conf=
ig.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/modules/observers/perf_observer=
.cc
+
+########################################################################=
########
+# modules/rocksdb
+########################################################################=
########
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/modules/rocksdb/rocksdb.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/modules/module_test/module_tes=
t_dynamic.cc
+
+########################################################################=
########
+# modules/detectron
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/modules/detectron/roi_pool_f_op=
.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/modules/detectron/sample_as_op.=
cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/modules/detectron/spatial_narro=
w_as_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/modules/detectron/upsample_near=
est_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/modules/detectron/softmax_focal=
_loss_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/modules/detectron/smooth_l1_los=
s_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/modules/detectron/select_smooth=
_l1_loss_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/modules/detectron/ps_roi_pool_o=
p.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/modules/detectron/sigmoid_focal=
_loss_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/modules/detectron/sigmoid_cross=
_entropy_loss_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/modules/detectron/group_spatial=
_softmax_op.cc
+
+########################################################################=
########
+# caffe2/queue
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/queue/rebatching_queue_o=
ps.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/queue/blobs_queue.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/queue/blobs_queue_db.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/queue/queue_ops.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/queue/rebatching_queue.c=
c
+
+########################################################################=
########
+# caffe2/quantization/server
+########################################################################=
########
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/ful=
ly_connected_dnnlowp_acc16_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/ful=
ly_connected_dnnlowp_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/p99=
.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/dnn=
lowp_partition.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/dnn=
lowp.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/fbg=
emm_pack_matrix_cache.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/sig=
moid.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/act=
ivation_distribution_observer.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/ele=
mentwise_sum_relu_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/qua=
ntize_dnnlowp_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/ele=
mentwise_mul_dnnlowp_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/cha=
nnel_shuffle_dnnlowp_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/lst=
m_unit_dnnlowp_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/ful=
ly_connected_fake_lowp_op_avx2.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/p99=
_example.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/uti=
lity_dnnlowp_ops.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/con=
cat_dnnlowp_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/spa=
tial_batch_norm_dnnlowp_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/gro=
up_norm_dnnlowp_op_avx2.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/poo=
l_dnnlowp_op_avx2.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/tra=
nspose.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/kl_=
minimization.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/deq=
uantize_dnnlowp_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/tan=
h.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/l2_=
minimization_example.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/nor=
m_minimization_avx2.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/con=
v_relu_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/spa=
tial_batch_norm_dnnlowp_op_avx2.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/caf=
fe2_dnnlowp_utils.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/con=
v_dnnlowp_acc16_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/spa=
tial_batch_norm_relu_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/gro=
up_norm_dnnlowp_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/fc_=
fake_lowp_test.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/con=
v_dnnlowp_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/pyb=
ind.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/poo=
l_dnnlowp_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/rel=
u_dnnlowp_op_avx2.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/kl_=
minimization_example.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/tan=
h_test.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/ele=
mentwise_linear_dnnlowp_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/bat=
ch_matmul_dnnlowp_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/ele=
mentwise_sum_dnnlowp_op_avx2.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/ful=
ly_connected_fake_lowp_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/sig=
moid_dnnlowp_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/l2_=
minimization_test.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/l1_=
minimization_example.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/bat=
ch_permutation_dnnlowp_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/l2_=
minimization_approx_example.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/ele=
mentwise_add_dnnlowp_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/tan=
h_dnnlowp_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/ele=
mentwise_sum_dnnlowp_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/rel=
u_dnnlowp_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/res=
ize_nearest_dnnlowp_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/fbg=
emm_pack_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/req=
uantization_test.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/dyn=
amic_histogram_test.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/dyn=
amic_histogram.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/ele=
mentwise_sum_benchmark.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/sig=
moid_test.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/nor=
m_minimization.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/res=
ize_nearest_3d_dnnlowp_op.cc
+
+########################################################################=
########
+# caffe2/operators
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/find_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/spatial_batch_=
norm_gradient_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/unique_ops.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/given_tensor_b=
yte_string_to_uint8_fill_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/half_float_ops=
.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/lengths_pad_op=
.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/summarize_op.c=
c
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/utility_ops.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/batch_matmul_o=
p.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/ceil_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/flatten_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/acos_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/rsqrt_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/integral_image=
_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/elementwise_di=
v_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/boolean_mask_o=
ps.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/relu_n_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/softmax_utils.=
cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/perplexity_op.=
cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/gelu_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/locally_connec=
ted_op_util.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/softplus_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/space_batch_op=
.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/normalize_l1_o=
p.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/reciprocal_op.=
cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/elementwise_op=
s.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/remove_data_bl=
ocks_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/index_ops.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/copy_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/floor_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/gather_fused_=
8bit_rowwise_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/feed_blob_op.c=
c
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/fc_inference.c=
c
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/length_split_o=
p.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/jsd_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/reduce_front_b=
ack_max_ops.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/sparse_normali=
ze_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/segment_reduct=
ion_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/fused_rowwise=
_8bit_conversion_ops.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/batch_bucketiz=
e_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/stats_put_ops.=
cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/ctc_beam_searc=
h_decoder_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/find_duplicate=
_elements_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/tan_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/roi_align_grad=
ient_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/sin_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/instance_norm_=
gradient_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/workspace_ops.=
cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/exp_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/sqrt_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/expand_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/conv_transpose=
_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/roi_align_rota=
ted_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/do_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/pow_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/reshape_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/elementwise_su=
b_gradient_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/free_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/elementwise_lo=
gical_ops.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/loss_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/ngram_ops.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/expand_squeeze=
_dims_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/sparse_to_dens=
e_mask_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/cosh_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/roi_align_rota=
ted_gradient_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/elementwise_di=
v_gradient_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/bbox_transform=
_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/upsample_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/tanh_gradient_=
op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/shape_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/im2col_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/multi_class_ac=
curacy_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/lengths_reduc=
er_fused_8bit_rowwise_ops.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/scale_blobs_op=
.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/sqr_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/variable_lengt=
h_sequence_padding.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/text_file_read=
er_utils.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/cast_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/cosine_embeddi=
ng_criterion_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/dropout_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/minmax_ops.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/reverse_packed=
_segs_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/accuracy_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/one_hot_ops.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/sparse_dropout=
_with_replacement_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/negative_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/square_root_di=
vide_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/local_response=
_normalization_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/ensure_cpu_out=
put_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/roi_pool_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/elementwise_op=
s_utils.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/bisect_percent=
ile_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/hard_sigmoid_o=
p.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/thresholded_re=
lu_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/cbrt_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/conv_transpose=
_gradient_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/quant_decode_o=
p.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/rowmul_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/erf_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/conditional_op=
.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/sparse_to_dens=
e_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/elementwise_su=
m_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/lstm_unit_op.c=
c
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/alias_with_nam=
e.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/onnx_while_op.=
cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/atomic_ops.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/elu_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/load_save_op_u=
til.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/partition_ops.=
cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/merge_id_lists=
_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/arg_ops.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/fused_rowwise=
_random_quantization_ops.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/reduction_ops.=
cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/reservoir_samp=
ling.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/bucketize_op.c=
c
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/top_k.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/order_switch_o=
ps.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/replace_nan_op=
.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/stylizer_ops.c=
c
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/stop_gradient.=
cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/tensor_protos_=
db_input.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/cross_entropy_=
op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/norm_planar_yu=
v_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/pool_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/selu_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/transpose_op.c=
c
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/rank_loss_op.c=
c
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/spatial_batch_=
norm_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/boolean_unmask=
_ops.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/generate_propo=
sals_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/negate_gradien=
t_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/lengths_reduce=
r_rowwise_8bit_ops.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/affine_channel=
_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/reciprocal_gra=
dient_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/conv_op_shared=
.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/elementwise_op=
s_schema.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/elementwise_su=
b_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/leaky_relu_op.=
cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/elementwise_li=
near_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/atan_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/feature_maps_o=
ps.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/experimental/c=
10/cpu/filler_cpu.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/experimental/c=
10/cpu/sparse_lengths_sum_cpu.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/experimental/c=
10/cpu/flatten_cpu.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/experimental/c=
10/cpu/averaged_loss_cpu.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/experimental/c=
10/cpu/batch_matmul_cpu.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/experimental/c=
10/cpu/enforce_finite_cpu.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/experimental/c=
10/cpu/relu_cpu.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/experimental/c=
10/cpu/batch_gather_cpu.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/experimental/c=
10/cpu/stop_gradient_cpu.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/experimental/c=
10/cpu/sigmoid_cross_entropy_with_logits_cpu.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/experimental/c=
10/cpu/fc_cpu.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/experimental/c=
10/cpu/mul_cpu.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/experimental/c=
10/cpu/concat_cpu.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/experimental/c=
10/cpu/cast_cpu.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/experimental/c=
10/cpu/expand_dims_cpu.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/experimental/c=
10/cpu/sigmoid_cpu.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/experimental/c=
10/cpu/add_cpu.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/mod_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/deform_conv_op=
.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/inference_lstm=
_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/enforce_finite=
_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/batch_moments_=
op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/h_softmax_op.c=
c
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/elementwise_mu=
l_gradient_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/last_n_window_=
collector.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/sinusoid_posit=
ion_encoding_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/numpy_tile_op.=
cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/flexible_top_k=
.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/swish_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/distance_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/dense_vector_t=
o_id_list_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/box_with_nms_l=
imit_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/piecewise_line=
ar_transform_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/text_file_read=
er.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/group_norm_op.=
cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/ctc_greedy_dec=
oder_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/relu_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/instance_norm_=
op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/conv_transpose=
_op_mobile.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/lengths_top_k_=
op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/pack_rnn_seque=
nce_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/sigmoid_gradie=
nt_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/spatial_softma=
x_with_loss_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/cos_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/resize_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/lpnorm_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/reduce_ops.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/fully_connecte=
d_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/layer_norm_op.=
cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/data_couple.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/copy_rows_to_t=
ensor_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/scale_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/softsign_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/clip_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/lp_pool_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/batch_gather_o=
ps.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/create_scope_o=
p.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/conv_op_eigen.=
cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/stats_ops.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/asin_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/tt_linear_op.c=
c
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/ensure_clipped=
_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/elementwise_ad=
d_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/collect_and_di=
stribute_fpn_rpn_proposals_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/load_save_op.c=
c
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/softmax_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/weighted_sampl=
e_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/given_tensor_f=
ill_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/batch_box_cox_=
op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/locally_connec=
ted_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/channel_backpr=
op_stats_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/log_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/zero_gradient_=
op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/prepend_dim_op=
.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/byte_weight_de=
quant_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/conv_gradient_=
op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/lengths_tile_o=
p.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/percentile_op.=
cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/sequence_ops.c=
c
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/elementwise_ad=
d_gradient_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/abs_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/margin_ranking=
_criterion_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/glu_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/channel_stats_=
op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/gather_ranges_=
to_dense_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/softmax_with_l=
oss_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/reduce_front_b=
ack_mean_ops.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/resize_3d_op.c=
c
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/moments_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/slice_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/assert_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/dataset_ops.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/lengths_reduce=
r_ops.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/conv_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/heatmap_max_ke=
ypoint_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/pad_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/channel_shuffl=
e_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/normalize_op.c=
c
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/deform_conv_gr=
adient_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/mean_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/prelu_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/rmac_regions_o=
p.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/cube_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/tanh_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/communicator_o=
p.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/string_ops.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/apmeter_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/gru_unit_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/concat_split_o=
p.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/pool_op_util.c=
c
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/is_empty_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/cc_bmm_bg_op.c=
c
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/crash_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/sinh_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/logit_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/index_hash_ops=
.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/tile_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/reduce_front_b=
ack_sum_ops.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/batch_permutat=
ion_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/gather_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/if_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/stump_func_op.=
cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/roi_align_op.c=
c
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/key_split_ops.=
cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/while_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/listwise_l2r_o=
p.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/map_ops.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/elementwise_mu=
l_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/pool_gradient_=
op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/minmax_gradien=
t_ops.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/sigmoid_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/weighted_multi=
_sampling_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/crf_viterbi_op=
.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/counter_ops.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/pack_segments.=
cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/accumulate_op.=
cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/matmul_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/filler_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/rnn/recurrent_=
network_executor.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/rnn/recurrent_=
network_blob_fetcher_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/rnn/recurrent_=
network_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/batch_sparse_t=
o_dense_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/utils/signal_handler.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/utils/math/elementwise.c=
c
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/utils/math/reduce.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/utils/math/utils.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/utils/math/broadcast.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/utils/math/transpose.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/utils/smart_tensor_print=
er.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/utils/murmur_hash3.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/utils/bench_utils.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/utils/math_cpu.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/utils/proto_utils.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/utils/string_utils.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/utils/cpuid.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/utils/threadpool/ThreadP=
ool.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/utils/threadpool/pthrea=
dpool_impl.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/utils/threadpool/Thread=
PoolMobile.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/utils/threadpool/pthrea=
dpool.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/utils/proto_convert.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/utils/proto_wrap.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/observers/time_observer.=
cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/observers/runcnt_observe=
r.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/observers/profile_observ=
er.cc
+
+########################################################################=
########
+# caffe2/operators/quantized
+########################################################################=
########
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/quantized/int=
8_slice_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/quantized/int=
8_flatten_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/quantized/int=
8_add_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/quantized/ini=
t_qnnpack.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/quantized/int=
8_relu_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/quantized/int=
8_resize_nearest_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/quantized/int=
8_fc_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/quantized/int=
8_concat_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/quantized/int=
8_softmax_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/quantized/int=
8_conv_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/quantized/int=
8_roi_align_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/quantized/int=
8_sigmoid_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/quantized/int=
8_channel_shuffle_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/quantized/int=
8_average_pool_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/quantized/int=
8_given_tensor_fill_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/quantized/int=
8_quantize_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/quantized/int=
8_max_pool_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/quantized/int=
8_roi_align_op_test.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/quantized/int=
8_reshape_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/quantized/int=
8_conv_transpose_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/quantized/int=
8_leaky_relu_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/quantized/int=
8_conv_op_relu.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/quantized/int=
8_transpose_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/quantized/int=
8_dequantize_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/quantized/int=
8_test.cc
+
+########################################################################=
########
+# caffe2/operators/ideep
+########################################################################=
########
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/utility=
_ops.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/quantiz=
ation/int8_add_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/quantiz=
ation/int8_relu_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/quantiz=
ation/int8_fully_connected_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/quantiz=
ation/int8_conv_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/quantiz=
ation/int8_given_tensor_fill_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/quantiz=
ation/int8_quantize_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/quantiz=
ation/int8_pool_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/quantiz=
ation/int8_dequantize_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/conv_tr=
anspose_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/reshape=
_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/expand_=
squeeze_dims_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/shape_o=
p.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/dropout=
_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/local_r=
esponse_normalization_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/element=
wise_sum_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/order_s=
witch_ops.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/pool_op=
.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/transpo=
se_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/spatial=
_batch_norm_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/relu_op=
.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/adam_op=
.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/momentu=
m_sgd_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/fully_c=
onnected_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/queue_o=
ps.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/conv_op=
.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/channel=
_shuffle_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/concat_=
split_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/sigmoid=
_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/operato=
r_fallback_ideep.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/utils/ideep_regis=
ter.cc
+
+########################################################################=
########
+# caffe2/contrib
+########################################################################=
########
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/pytorch/script_=
module_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/shm_mutex/shm_m=
utex.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/nnpack/nnpack_o=
ps.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/opencl/context.=
cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/opencl/context_=
test.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/nccl/cuda_nccl_=
gpu.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/nccl/cuda_nccl_=
op_gpu.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/prof/prof_dag_s=
tats_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/prof/cuda_profi=
le_ops.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/aten/aten_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/aten/aten_op_gp=
u.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/gloo/allgather_=
ops.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/gloo/common_wor=
ld_ops_gpu.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/gloo/store_hand=
ler.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/gloo/common.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/gloo/broadcast_=
ops_gpu.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/gloo/py_export.=
cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/gloo/common_wor=
ld_ops.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/gloo/barrier_op=
s.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/gloo/context.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/gloo/allreduce_=
ops.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/gloo/allreduce_=
ops_gpu.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/gloo/broadcast_=
ops.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/gloo/reduce_sca=
tter_ops.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/tensorrt/tensor=
rt_op_trt.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/tensorrt/trt_ut=
ils.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/tensorrt/tensor=
rt_tranformer.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/image/image_input_op_gp=
u.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/image/image_input_op.cc
+
+########################################################################=
########
+# caffe2/predictor
+########################################################################=
########
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/predictor/predictor_uti=
ls.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/predictor/predictor.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/predictor/emulator/data=
_filler_test.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/predictor/emulator/benc=
hmark.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/predictor/emulator/data=
_filler.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/predictor/transforms.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/predictor/ThreadLocalPt=
r.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/predictor/predictor_con=
fig.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/predictor/predictor_tes=
t.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/experiments/operators/s=
parse_matrix_reshape_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/experiments/operators/f=
unhash_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/experiments/operators/t=
t_pad_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/experiments/operators/t=
t_contraction_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/experiments/operators/f=
ully_connected_op_sparse.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/experiments/operators/s=
parse_funhash_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/experiments/operators/f=
ully_connected_op_prune.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/experiments/operators/t=
t_contraction_op_gpu.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/experiments/operators/f=
ully_connected_op_decomposition.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/experiments/operators/f=
ully_connected_op_decomposition_gpu.cc
+
+########################################################################=
########
+# caffe2/opt
+########################################################################=
########
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/fusion.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/onnxifi_transformer=
.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/mobile_test.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/tvm_transformer.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/distributed_test.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/passes.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/converter_nomigraph=
_test.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/custom/converter_te=
st.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/custom/concat_elim.=
cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/custom/fakefp16_tra=
nsform.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/custom/concat_elim_=
test.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/custom/cc_amrc.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/custom/pointwise_el=
im.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/custom/converter.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/custom/glow_net_tra=
nsform.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/dead_code_elim.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/backend_cutting_tes=
t.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/distributed.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/nql/tests/GraphMatc=
herTest.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/nql/graphmatcher.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/backend_cutting.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/onnxifi_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/device.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/distributed_convert=
er.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/bound_shape_inferen=
cer.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/backend_transformer=
_base.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/annotations.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/shape_info.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/device_test.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/dead_code_elim_test=
.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/mobile.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/bound_shape_inferen=
ce_test.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/optimize_ideep.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/converter.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/optimizer.cc
+
+########################################################################=
########
+# caffe2/onnx
+########################################################################=
########
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/onnx/offline_tensor.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/onnx/torch_ops/defs.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/onnx/torch_ops/schema.c=
c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/onnx/device.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/onnx/onnx_exporter.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/onnx/ssa_test.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/onnx/onnxifi_graph_info=
.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/onnx/backend_rep.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/onnx/backend.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/onnx/onnxifi_init.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/onnx/helper.cc
+
+########################################################################=
########
+# caffe2/mpi
+########################################################################=
########
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/mpi/mpi_gpu_test.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/mpi/mpi_common.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/mpi/mpi_ops_gpu.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/mpi/mpi_test.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/mpi/mpi_ops.cc
+
+########################################################################=
########
+# caffe2/video
+########################################################################=
########
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/video/video_decoder.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/video/video_input_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/video/video_input_op_gp=
u.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/video/optical_flow.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/video/video_io.cc
+
+########################################################################=
########
+# caffe2/sgd
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/sgd/ftrl_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/sgd/yellowfin_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/sgd/wngrad_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/sgd/iter_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/sgd/adagrad_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/sgd/clip_tensor_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/sgd/learning_rate_adapti=
on_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/sgd/adadelta_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/sgd/lars_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/sgd/rmsprop_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/sgd/adam_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/sgd/momentum_sgd_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/sgd/gftrl_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/sgd/learning_rate_op.cc
+
+
+########################################################################=
########
+# caffe2/serialize
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/serialize/inline_contain=
er.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/serialize/file_adapter.c=
c
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/serialize/istream_adapte=
r.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/serialize/read_adapter_i=
nterface.cc|caffe2_serialize
+
+########################################################################=
########
+# caffe2/core
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/net_parallel.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/int8_serialization.=
cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/net.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/blob_serialization.=
cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/net_simple.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/memonger.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/tensor.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/net_async_task.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/transform.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/net_async_task_grap=
h.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/net_dag_utils.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/net_simple_refcount=
.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/operator_schema.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/module.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/init.cc|caffe2
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/net_async_tracing.c=
c
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/common.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/workspace.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/types.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/allocator.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/prof_dag_counters.c=
c
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/init_intrinsics_che=
ck.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/operator.cc|caffe2_=
core
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/net_async_base.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/event.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/graph.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/qtensor_serializati=
on.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/context.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/tensor_int8.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/db.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/net_async_schedulin=
g.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/net_async_task_futu=
re.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/numa.cc|caffe2
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/export_c10_op_to_ca=
ffe2.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/context_base.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/blob_stats.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/init_denormals.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/stats.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/qtensor.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/plan_executor.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/nomnigraph/Represe=
ntations/NeuralNet.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/init_omp.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/python/pybind_state_int=
8.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/python/pybind_state_dlp=
ack.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/python/pybind_state_hip=
.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/python/mpi_python.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/python/pybind_state_gpu=
.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/python/pybind_state.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/python/pybind_state_nom=
ni.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/python/pybind_state_ide=
ep.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/python/pybind_state_reg=
istry.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/db/lmdb.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/db/create_db_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/db/leveldb.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/db/create_db_op_gpu.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/db/zmqdb.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/db/protodb.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/db/db_test.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/distributed/redis_store=
_handler.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/distributed/file_store_=
handler_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/distributed/redis_store=
_handler_op_gpu.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/distributed/redis_store=
_handler_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/distributed/store_handl=
er.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/distributed/file_store_=
handler.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/distributed/py_export.c=
c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/distributed/file_store_=
handler_op_gpu.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/distributed/store_ops.c=
c
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/transforms/single_op_tra=
nsform.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/transforms/common_subexp=
ression_elimination.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/transforms/pattern_net_t=
ransform.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/transforms/conv_to_nnpac=
k_transform.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/perfkernels/fused_8bit_=
rowwise_embedding_lookup_idx.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/perfkernels/adagrad_avx=
.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/perfkernels/embedding_l=
ookup_idx_avx2.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/perfkernels/embedding_lo=
okup.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/perfkernels/typed_axpy_=
avx2.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/perfkernels/embedding_l=
ookup_fused_8bit_rowwise_avx2.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/perfkernels/common_avx5=
12.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/perfkernels/fused_8bit_=
rowwise_embedding_lookup.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/perfkernels/embedding_lo=
okup_idx.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/perfkernels/math_cpu_bas=
e.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/perfkernels/common_avx2=
.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/perfkernels/common_avx.=
cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/perfkernels/embedding_l=
ookup_avx2.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/perfkernels/adagrad.cc|a=
dagrad
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/perfkernels/embedding_l=
ookup_fused_8bit_rowwise_idx_avx2.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/perfkernels/math_cpu_av=
x2.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/perfkernels/typed_axpy_=
avx.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/perfkernels/typed_axpy.=
cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/share/contrib/nnpack/nn=
pack_test.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/share/contrib/nnpack/co=
nv_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/share/contrib/zstd/quan=
t_decomp_zstd_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/share/contrib/depthwise=
/depthwise3x3_conv_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/share/contrib/depthwise=
/depthwise3x3_conv_op_test.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/test/caffe2_gtest_main.=
cc
+
+########################################################################=
########
+# aten/src/ATen
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/TensorNames.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/mkldnn/Runtime.c=
pp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/Utils.cpp|aten
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/ParallelNative.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/build/aten/src/ATen/core/OpsAlr=
eadyMovedToC10.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/build/aten/src/ATen/LegacyTHFun=
ctionsCPU.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/build/aten/src/ATen/TypeDefault=
.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/Context.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/build/aten/src/ATen/CPUType.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/build/aten/src/ATen/QuantizedCP=
UType.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/build/aten/src/ATen/SparseCPUTy=
pe.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/MemoryOverlap.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/ExpandUtils.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/ParallelNativeTBB=
.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/quantized/QTensor=
Impl.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/quantized/Quantiz=
er.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/DLConvertor.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/ThreadLocalDebugI=
nfo.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/Version.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/stub/CombinedStub=
.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/TensorUtils.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/SparseTensorImpl.=
cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/NamedTensorUtils.=
cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/ParallelThreadPoo=
lNative.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/CPUGenerator.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/ParallelCommon.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/DynamicLibrary.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/TensorGeometry.cp=
p
+
+########################################################################=
########
+# aten/src/Aten/core
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/core/dispatch/Dis=
patcher.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/core/dispatch/Ope=
ratorEntry.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/core/VariableHook=
sInterface.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/core/LegacyDevice=
TypeInit.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/core/grad_mode.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/core/interned_str=
ings.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/core/ATenGeneral.=
cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/core/blob.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/core/register_sym=
bols.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/core/op_registrat=
ion/op_registration.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/core/op_registrat=
ion/infer_schema.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/core/DeprecatedTy=
pePropertiesRegistry.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/core/Generator.cp=
p|aten_core
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/core/Formatting.c=
pp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/core/DeprecatedTy=
peProperties.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/core/type.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/core/ivalue.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/core/Dimname.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/core/NamedTensor.=
cpp|core
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/core/LegacyTypeDi=
spatch.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/core/Range.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/core/Tensor.cpp
+
+########################################################################=
########
+# aten/src/Aten/native/quantizied
+########################################################################=
########
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/leaky-relu.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/average-pooling.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/init.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8dwconv/up8x9-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8dwconv/mp8x25-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/u8rmax/sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8gemm/2x4c8-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/channel-shuffle.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/sdwconv/up4x9-psimd.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8gemm/4x4c2-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8conv/4x4c2-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8gavgpool/up8xm-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8gavgpool/up8x7-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8gavgpool/mp8x7p7q-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/indirection.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/convolution.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/x8zip/x2-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/x8zip/x4-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/x8zip/x3-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/x8zip/xm-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/fully-connected.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/x8lut/scalar.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/clamp.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/requantization/q31-scalar.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/requantization/q31-ssse3.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/requantization/fp32-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/requantization/precise-psimd.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/requantization/precise-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/requantization/q31-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/requantization/fp32-scalar.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/requantization/fp32-psimd.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/requantization/q31-sse4.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/requantization/gemmlowp-ssse3.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/requantization/precise-sse4.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/requantization/gemmlowp-sse4.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/requantization/gemmlowp-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/requantization/precise-ssse3.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/requantization/gemmlowp-scalar.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/requantization/precise-scalar.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/operator-delete.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/global-average-pooling.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/u8lut32norm/scalar.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/u8maxpool/sub16-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/u8maxpool/16x9p8q-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/sconv/6x8-psimd.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/add.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/max-pooling.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/sigmoid.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/u8clamp/sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/sgemm/6x8-psimd.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/operator-run.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/softargmax.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8vadd/sse2.c|q8vadd
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/deconvolution.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8avgpool/up8x9-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8avgpool/up8xm-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8avgpool/mp8x9p8q-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/fc-run.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/fc-prepack.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/conv-run.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/conv-prepack.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/deps/clog/src/clog.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8dwconv/up8x9-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8dwconv/mp8x25-sse2.c
+#
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/u8rmax/sse2.c|u8rmax
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8gemm/2x4c8-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8gemm/4x4c2-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8conv/4x4c2-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8gavgpool/up8xm-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8gavgpool/up8x7-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8gavgpool/mp8x7p7q-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/dummy.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/x8zip/x2-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/x8zip/x4-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/x8zip/x3-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/x8zip/xm-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/x8lut/scalar.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/requantization/q31-scalar.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/requantization/q31-ssse3.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/requantization/fp32-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/requantization/precise-psimd.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/requantization/precise-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/requantization/q31-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/requantization/fp32-scalar.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/requantization/fp32-psimd.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/requantization/q31-sse4.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/requantization/gemmlowp-ssse3.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/requantization/precise-sse4.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/requantization/gemmlowp-sse4.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/requantization/gemmlowp-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/requantization/precise-ssse3.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/requantization/gemmlowp-scalar.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/requantization/precise-scalar.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/u8lut32norm/scalar.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/u8maxpool/sub16-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/u8maxpool/16x9p8q-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/u8clamp/sse2.c|u8clamp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/sgemm/6x8-psimd.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8vadd/sse2.c|q8vadd
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8avgpool/up8x9-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8avgpool/up8xm-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8avgpool/mp8x9p8q-sse2.c
+
+# ARM
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8dwconv/up8x9-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8dwconv/mp8x25-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/u8rmax/neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8gemm/4x-sumrows-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8gemm/8x8-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8gemm/4x8c2-xzp-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8gemm/4x8-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8gemm/6x4-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8conv/8x8-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8conv/4x8-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8gavgpool/mp8x7p7q-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8gavgpool/up8xm-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8gavgpool/up8x7-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/x8zip/xm-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/x8zip/x4-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/x8zip/x3-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/x8zip/x2-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/hgemm/8x8-neonfp16arith.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/u8maxpool/sub16-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/u8maxpool/16x9p8q-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/u8clamp/neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/sgemm/6x8-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/sgemm/5x8-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8vadd/neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8avgpool/mp8x9p8q-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/requantization/precise-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/requantization/gemmlowp-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/requantization/q31-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/requantization/fp32-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8dwconv/up8x9-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8dwconv/mp8x25-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8gavgpool/mp8x7p7q-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8gavgpool/up8xm-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8gavgpool/up8x7-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8gemm/6x4-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8conv/8x8-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8conv/4x8-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8gemm/8x8-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8gemm/4x8c2-xzp-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8gemm/4x8-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/u8rmax/neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8gemm/4x-sumrows-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8vadd/neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8avgpool/mp8x9p8q-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8avgpool/up8x9-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8avgpool/up8xm-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/x8zip/xm-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/requantization/precise-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/requantization/gemmlowp-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8avgpool/up8x9-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8avgpool/up8xm-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/sgemm/5x8-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/u8clamp/neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/sgemm/6x8-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/requantization/fp32-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/u8maxpool/sub16-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/u8maxpool/16x9p8q-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/requantization/q31-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/x8zip/x2-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/x8zip/x3-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/x8zip/x4-neon.c
+
+########################################################################=
########
+# aten/src/ATen/mkldnn
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/mkldnn/Ten=
sorShape.cpp|mkldnn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/mkldnn/IDe=
epRegistration.cpp|mkldnn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/mkldnn/Una=
ryOps.cpp|mkldnn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/mkldnn/MKL=
DNNCommon.cpp|mkldnn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/mkldnn/Uti=
ls.cpp|mkldnn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/mkldnn/Rel=
u.cpp|mkldnn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/mkldnn/Mkl=
dnnTensorMath.cpp|mkldnn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/mkldnn/Lin=
ear.cpp|mkldnn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/mkldnn/MKL=
DNNConversions.cpp|mkldnn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/mkldnn/Nor=
malization.cpp|mkldnn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/mkldnn/Bin=
aryOps.cpp|mkldnn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/mkldnn/Ten=
sorFactories.cpp|mkldnn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/mkldnn/Poo=
ling.cpp|mkldnn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/mkldnn/Con=
v.cpp|mkldnn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/mkldnn/Sof=
tMax.cpp|mkldnn
+
+########################################################################=
########
+# aten/src/ATen/native
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/TensorShap=
e.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Im2Col.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Indexing.c=
pp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/UnaryOps.c=
pp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/PointwiseO=
ps.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/layer_norm=
.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/WeightNorm=
.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/mkl/Linear=
Algebra.cpp|mkl
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/mkl/Spectr=
alOps.cpp|mkl
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/NaiveDilat=
edConvolution.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/PixelShuff=
le.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Convolutio=
nMM3d.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Fill.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/TensorTran=
sformations.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Embedding.=
cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Sorting.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Integratio=
n.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/RNN.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/SummaryOps=
.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/NNPACK.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Lerp.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/BatchLinea=
rAlgebra.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Cross.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/UpSampleLi=
near1d.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Scalar.cpp=
|aten
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Unique.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Repeat.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Itertools.=
cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/DilatedMax=
Pool3d.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/LinearAlge=
bra.cpp|native
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/LossCTC.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Linear.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/ReduceOps.=
cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/LossNLL.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Unfold2d.c=
pp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/UpSampleNe=
arest1d.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/RangeFacto=
ries.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/VariableMe=
thodStubs.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Col2Im.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Resize.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Distributi=
ons.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/LossNLL2d.=
cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Convolutio=
nMM2d.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/ConstantPa=
dNd.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Distance.c=
pp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/sparse/Spa=
rseTensor.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/sparse/Spa=
rseTensorMath.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/DispatchSt=
ub.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/AffineGrid=
Generator.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/AdaptiveMa=
xPooling3d.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/TensorIter=
ator.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/miopen/RNN=
_miopen.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/miopen/Con=
v_miopen.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/miopen/Bat=
chNorm_miopen.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Reflection=
Pad.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Copy.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Normalizat=
ion.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/UpSampleBi=
linear2d.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Dropout.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/DilatedMax=
Pool2d.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/TensorConv=
ersions.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/NaiveConvo=
lutionTranspose3d.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/LegacyDefi=
nitions.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/BinaryOps.=
cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/UpSampleNe=
arest3d.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Loss.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/TensorFact=
ories.cpp|native
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/TensorProp=
erties.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/AdaptiveAv=
eragePooling.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/LegacyBrid=
ge.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/TensorComp=
are.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/EmbeddingB=
ag.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Pooling.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/UpSampleNe=
arest2d.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/MaxUnpooli=
ng.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Onehot.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/AveragePoo=
l3d.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/AdaptiveMa=
xPooling2d.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Convolutio=
n.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/TypeProper=
ties.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/UpSampleBi=
cubic2d.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/NamedTenso=
r.cpp|native
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Replicatio=
nPadding.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Pow.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/AdaptiveAv=
eragePooling3d.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Unfold3d.c=
pp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/UpSampleTr=
ilinear3d.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Fractional=
MaxPool2d.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/SobolEngin=
eOps.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Convolutio=
nTBC.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/NaiveConvo=
lutionTranspose2d.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/LossMultiL=
abelMargin.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Memory.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/LossMultiM=
argin.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/LegacyNNDe=
finitions.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/AveragePoo=
l2d.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/GridSample=
r.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/SpectralOp=
s.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Activation=
.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Triangular=
Ops.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/SoftMax.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/PackedSequ=
ence.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/QuantizedL=
inear.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/TensorIter=
atorReduce.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Fractional=
MaxPool3d.cpp
+
+########################################################################=
########
+# aten/src/ATen/native/cpu
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/cpu/Distan=
ceOpsKernel.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/cpu/Sortin=
gKernel.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/cpu/Multin=
omialKernel.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/cpu/FillKe=
rnel.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/cpu/PowKer=
nel.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/cpu/Depthw=
iseConvKernel.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/cpu/IndexK=
ernel.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/cpu/Tensor=
CompareKernel.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/cpu/Pointw=
iseOpsKernel.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/cpu/Reduce=
OpsKernel.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/cpu/CopyKe=
rnel.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/cpu/layer_=
norm_kernel.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/cpu/SoftMa=
xKernel.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/cpu/Unfold=
2d.cpp|native_cpu
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/cpu/GridSa=
mplerKernel.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/cpu/CrossK=
ernel.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/cpu/LerpKe=
rnel.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/cpu/Binary=
OpsKernel.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/cpu/UnaryO=
psKernel.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/cpu/Activa=
tion.cpp|native_cpu
+
+
+########################################################################=
########
+# aten/src/ATen/native/quantized
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
QTensor.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
Copy.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
TensorFactories.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
TensorCompare.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
cpu/init_qnnpack.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
cpu/q_avgpool.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
cpu/qreduction.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
cpu/qconv.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
cpu/qlinear.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
cpu/fbgemm_utils.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
cpu/fake_quantize_per_tensor_affine.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
cpu/qupsample_bilinear2d.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
cpu/qlinear_dynamic.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
cpu/fake_quantize_core.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
cpu/qconv_unpack.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
cpu/qconv_prepack.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
cpu/fake_quantize_per_channel_affine.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
cpu/qlinear_prepack.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
cpu/qmul.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
cpu/qsort.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
cpu/tensor_operators.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
cpu/qadd.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
cpu/qupsample_nearest2d.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
cpu/qrelu.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
cpu/qlinear_unpack.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
cpu/qconcat.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
cpu/qpool.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
cpu/q_adaavgpool.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
cpu/kernels/QuantizedOpKernels.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/cpu/FlushDenormal=
.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/detail/CUDAHooksI=
nterface.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/detail/HIPHooksIn=
terface.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/detail/CPUGuardIm=
pl.cpp
+
+########################################################################=
########
+# aten/src/THNN
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/THNN/init.cpp|thnn
+
+########################################################################=
########
+# aten/src/THC
+########################################################################=
########
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/THC/THCStorageCopy.cp=
p
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/THC/THCStorage.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/THC/generic/THCStorag=
eCopy.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/THC/generic/THCStorag=
e.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/THC/generic/THCTensor=
.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/THC/THCTensor.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/THC/THCCachingHostAll=
ocator.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/THC/THCGeneral.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/THC/THCStream.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/THC/THCAllocator.cpp
+
+########################################################################=
########
+# aten/src/TH
+########################################################################=
########
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/TH/vector/NEON.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/TH/vector/AVX2.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/TH/vector/VSX.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/TH/vector/AVX.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/TH/THTensorMoreMath.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/TH/THDiskFile.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/TH/THSize.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/TH/THTensorFill.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/TH/THLapack.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/TH/THStorageFunctions.=
cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/TH/THGeneral.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/TH/THTensorMath.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/TH/THMemoryFile.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/TH/THTensor.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/TH/THTensorEvenMoreMat=
h.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/TH/THVector.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/TH/THTensorRandom.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/TH/THTensorConv.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/TH/THBlas.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/TH/THLogAdd.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/TH/THAllocator.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/TH/THFile.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/TH/THTensorLapack.cpp
+
+########################################################################=
########
+# torch/csrc
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/dl.c
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/MemoryFormat.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/DataLoader.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/DynamicTypes.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/Dtype.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/tensor/python_tensor=
.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/Exceptions.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/TypeInfo.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/onnx/init.cpp|csrc_o=
nnx
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/Device.cpp|csrc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/Size.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/PtrWrapper.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/Generator.cpp|torch_=
csrc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/utils.cpp|csrc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/serialization.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/Module.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/Storage.cpp|csrc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/QScheme.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/multiprocessing/init=
.cpp|csrc_multiprocessing
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/stub.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/python_dimname.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/Layout.cpp
+
+########################################################################=
########
+# csrc/utils
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/utils/object_ptr.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/utils/tensor_layouts=
.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/utils/byte_order.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/utils/python_arg_par=
ser.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/utils/tuple_parser.c=
pp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/utils/tensor_flatten=
.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/utils/init.cpp|csrc_=
utils
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/utils/tensor_numpy.c=
pp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/utils/tensor_new.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/utils/invalid_argume=
nts.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/utils/tensor_dtypes.=
cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/utils/tensor_qscheme=
s.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/utils/tensor_types.c=
pp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/utils/structseq.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/utils/variadic.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/utils/tensor_memoryf=
ormats.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/utils/throughput_ben=
chmark.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/utils/cuda_lazy_init=
.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/utils/tensor_list.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/utils/tensor_apply.c=
pp
+
+########################################################################=
########
+# csrc/api
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/jit.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/cuda.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/enum.cpp
+
+########################################################################=
########
+# csrc/data
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/data/dataset=
s/mnist.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/data/sampler=
s/distributed.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/data/sampler=
s/random.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/data/sampler=
s/sequential.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/data/sampler=
s/stream.cpp
+
+########################################################################=
########
+# csrc/nn
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/init.cpp|=
scrc_api
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/modules/d=
ropout.cpp|nn_modules
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/modules/l=
inear.cpp|nn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/modules/u=
psampling.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/modules/f=
old.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/modules/n=
ormalization.cpp|nn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/modules/p=
adding.cpp|nn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/modules/l=
oss.cpp|nn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/modules/a=
ctivation.cpp|nn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/modules/e=
mbedding.cpp|nn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/modules/c=
ontainer/functional.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/modules/c=
ontainer/named_any.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/modules/c=
onv.cpp|nn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/modules/d=
istance.cpp|nn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/modules/b=
atchnorm.cpp|nn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/modules/p=
ixelshuffle.cpp|nn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/modules/i=
nstancenorm.cpp|nn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/modules/p=
ooling.cpp|nn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/modules/_=
functions.cpp|nn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/modules/r=
nn.cpp|nn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/module.cp=
p|nn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/options/d=
ropout.cpp|nn_options
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/options/l=
inear.cpp|nn_options
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/options/n=
ormalization.cpp|nn_options
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/options/v=
ision.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/options/p=
adding.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/options/a=
ctivation.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/options/e=
mbedding.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/options/c=
onv.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/options/b=
atchnorm.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/options/i=
nstancenorm.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/options/p=
ooling.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/options/r=
nn.cpp|options
+
+########################################################################=
########
+# csrc/serialize
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/serialize/in=
put-archive.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/serialize/ou=
tput-archive.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/serialize.cp=
p|api_src
+
+########################################################################=
########
+# csrc/python
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/python/init.=
cpp|python
+
+########################################################################=
########
+# csrc/optim
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/optim/sgd.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/optim/lbfgs.=
cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/optim/rmspro=
p.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/optim/adam.c=
pp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/optim/adagra=
d.cpp|optim
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/optim/serial=
ize.cpp|api_optim
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/optim/optimi=
zer.cpp
+
+########################################################################=
########
+# csrc/distributed
+########################################################################=
########
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/rpc/req=
uest_callback_impl.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/rpc/rre=
f_proto.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/rpc/pro=
cess_group_agent.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/rpc/rpc=
_agent.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/rpc/pyt=
hon_call.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/rpc/req=
uest_callback.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/rpc/scr=
ipt_resp.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/rpc/ini=
t.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/rpc/rre=
f_context.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/rpc/rre=
f.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/rpc/pyt=
hon_functions.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/rpc/scr=
ipt_call.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/rpc/scr=
ipt_remote_call.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/rpc/pyt=
hon_rpc_handler.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/rpc/uti=
ls.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/rpc/pyt=
hon_resp.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/rpc/typ=
es.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/rpc/mes=
sage.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/rpc/fut=
ure_message.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/rpc/py_=
rref.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/rpc/pyt=
hon_remote_call.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/autogra=
d/context/context.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/autogra=
d/context/container.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/autogra=
d/init.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/autogra=
d/engine/dist_engine.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/autogra=
d/functions/sendrpc_backward.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/autogra=
d/functions/recvrpc_backward.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/autogra=
d/utils.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/autogra=
d/rpc_messages/propagate_gradients_resp.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/autogra=
d/rpc_messages/propagate_gradients_req.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/autogra=
d/rpc_messages/cleanup_autograd_context_resp.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/autogra=
d/rpc_messages/autograd_metadata.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/autogra=
d/rpc_messages/rpc_with_autograd.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/autogra=
d/rpc_messages/cleanup_autograd_context_req.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/c10d/re=
ducer.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/c10d/in=
it.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/c10d/dd=
p.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/c10d/co=
mm.cpp
+
+########################################################################=
########
+# torch/csrc/jit
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/profiling_record=
.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/source_range.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/graph_executor.c=
pp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/import_legacy.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/operator.cpp|jit
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/python_ir.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/ir.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/attributes.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/constants.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/profiling_graph_=
executor_impl.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/register_c10_ops=
.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/scope.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/vararg_functions=
.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/function.cpp|csr=
c_jit
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/export_module.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/register_prim_op=
s.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/init.cpp|jit
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/symbolic_script.=
cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/import.cpp|jit
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/testing/file_che=
ck.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/instruction.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/python_arg_flatt=
en.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/unpickler.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/pickler.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/source_range_ser=
ialization.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/netdef_converter=
.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/print_handler.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/pass_manager.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/import_export_he=
lpers.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/hooks_for_testin=
g.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/pickle.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/jit_log.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/register_string_=
ops.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/argument_spec.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/irparser.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/register_special=
_ops.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/subgraph_matcher=
.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/export.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/node_hashing.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/interpreter.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/operator_option=
s.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/autodiff.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/python_tracer.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/import_source.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/python_interpret=
er.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/update_graph_exe=
cutor_opt.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/tracer.cpp
+
+########################################################################=
########
+# csrc/jit/fuser
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/fuser/executor.c=
pp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/fuser/cuda/fuse=
d_kernel.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/fuser/codegen.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/fuser/kernel_cac=
he.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/fuser/interface.=
cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/fuser/fallback.c=
pp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/fuser/compiler.c=
pp|jit_fuser
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/fuser/cpu/fused_=
kernel.cpp
+
+########################################################################=
########
+# torch/csrc/passes
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/inplace_c=
heck.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/dead_code=
_elimination.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/loop_unro=
lling.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/lower_tup=
les.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/remove_ex=
pands.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/alias_ana=
lysis.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/canonical=
ize.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/remove_in=
place_ops.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/onnx.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/utils/mem=
ory_dag.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/utils/sub=
graph_utils.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/utils/che=
ck_alias_annotation.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/constant_=
propagation.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/canonical=
ize_ops.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/create_au=
todiff_subgraphs.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/constant_=
pooling.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/specializ=
e_autogradzero.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/peephole.=
cpp|jit
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/insert_gu=
ards.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/shape_ana=
lysis.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/inline_fo=
rk_wait.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/subgraph_=
rewrite.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/clear_und=
efinedness.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/inline_fo=
rked_closures.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/lower_gra=
d_of.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/python_pr=
int.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/onnx/help=
er.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/onnx/unpa=
ck_quantized_weights.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/onnx/peep=
hole.cpp|onnx
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/onnx/scal=
ar_type_analysis.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/onnx/cast=
_all_constant_to_floating.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/onnx/cons=
tant_fold.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/onnx/prep=
are_division_for_onnx.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/onnx/fixu=
p_onnx_loop.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/bailout_g=
raph.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/quantizat=
ion.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/liveness.=
cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/batch_mm.=
cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/decompose=
_ops.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/inliner.c=
pp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/requires_=
grad_analysis.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/lower_gra=
ph.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/graph_fus=
er.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/lift_clos=
ures.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/guard_eli=
mination.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/inline_au=
todiff_subgraphs.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/erase_num=
ber_types.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/fuse_line=
ar.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/common_su=
bexpression_elimination.cpp|jit_passes
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/fixup_tra=
ce_scope_blocks.cpp
+
+########################################################################=
########
+# csrc/script
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/script/strtod.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/script/function_=
schema_parser.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/script/convert_t=
o_ssa.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/script/error_rep=
ort.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/script/module_sa=
ve.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/script/schema_ma=
tching.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/script/logging.c=
pp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/script/init.cpp|=
jit_scripts
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/script/concrete_=
module_type.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/script/lexer.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/script/schema_ty=
pe_parser.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/script/sugared_v=
alue.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/script/class_typ=
e.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/script/module.cp=
p|jit_script
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/script/python_su=
gared_value.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/script/canonical=
ize_modified_loop.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/script/python_tr=
ee_views.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/script/inline_lo=
op_condition.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/script/parser.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/script/exit_tran=
sforms.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/script/compiler.=
cpp|jit_script
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/script/jit_excep=
tion.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/script/script_ty=
pe_parser.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/script/builtin_f=
unctions.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/script/object.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/script/edit_dist=
ance.cpp
+
+########################################################################=
########
+# csrc/jit/mobile
+########################################################################=
########
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/mobile/function=
.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/mobile/import.c=
pp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/mobile/module.c=
pp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/mobile/interpre=
ter.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/mobile/register=
_mobile_ops.cpp
+
+########################################################################=
########
+# csrc/autograd
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/python_lega=
cy_variable.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/python_vari=
able.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/python_engi=
ne.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/python_cpp_=
function.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/engine.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/function.cp=
p|csrc_autograd
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/profiler_c=
uda.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/init.cpp|au=
tograd
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/anomaly_mod=
e.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/input_buffe=
r.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/record_func=
tion.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/autograd.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/VariableTyp=
eManual.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/profiler.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/variable.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/cpp_hook.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/saved_varia=
ble.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/python_func=
tion.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/python_hook=
.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/python_vari=
able_indexing.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/record_func=
tion_ops.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/python_anom=
aly_mode.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/custom_func=
tion.cpp
+
+########################################################################=
########
+# csrc/autograd/functions
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/function_ho=
ok.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/functions/t=
ensor.cpp|atuograd_functions
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/functions/i=
nit.cpp|autograd_functions
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/functions/a=
ccumulate_grad.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/functions/u=
tils.cpp|auograd_functions
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/functions/b=
asic_ops.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/functions/=
comm.cpp
+
+########################################################################=
########
+# csrc/lib/libshm
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/lib/libshm/core.cpp|libsh=
m
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/lib/libshm/manager.cpp
+
+########################################################################=
########
+# c10d
+########################################################################=
########
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/lib/c10d/Utils.cpp|c10d
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/lib/c10d/ProcessGroupNCC=
L.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/lib/c10d/ProcessGroup.cp=
p
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/lib/c10d/HashStore.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/lib/c10d/example/allredu=
ce.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/lib/c10d/ProcessGroupGlo=
o.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/lib/c10d/Store.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/lib/c10d/TCPStore.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/lib/c10d/ProcessGroupMPI=
.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/lib/c10d/PrefixStore.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/lib/c10d/FileStore.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/lib/c10d/NCCLUtils.cpp
+
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/warpctc/ctc_op_=
gpu.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/warpctc/ctc_op.=
cpp
+
+########################################################################=
########
+# c10/util
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/util/numa.cpp|c10
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/util/UniqueVoidPtr.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/util/Logging.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/util/TypeTraits.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/util/StringUtil.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/util/Backtrace.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/util/flags_use_gflags.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/util/Half.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/util/Exception.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/util/flags_use_no_gflags.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/util/TypeList.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/util/thread_name.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/util/Type.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/util/LeftRight.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/util/Metaprogramming.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/util/typeid.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/util/C++17.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/util/Array.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/util/intrusive_ptr.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/util/SmallVector.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/util/Optional.cpp
+
+########################################################################=
########
+# c10/core
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/core/Storage.cpp|c10
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/core/Allocator.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/core/Stream.cpp|c10
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/core/Scalar.cpp|c10
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/core/DefaultDtype.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/core/impl/DeviceGuardImplIn=
terface.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/core/impl/LocalTensorTypeSe=
t.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/core/Device.cpp|c10
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/core/CopyBytes.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/core/TensorTypeId.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/core/DeviceType.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/core/UndefinedTensorImpl.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/core/thread_pool.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/core/TensorTypeSet.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/core/CPUAllocator.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/core/TensorImpl.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/core/TensorOptions.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/core/StorageImpl.cpp
+
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/build/caffe2/proto/caffe2.pb.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/build/caffe2/proto/caffe2_legac=
y.pb.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/build/caffe2/proto/hsm.pb.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/build/caffe2/proto/torch.pb.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/build/caffe2/proto/metanet.pb.=
cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/build/caffe2/proto/predictor_co=
nsts.pb.cc
+LIBPYTORCH_SRCS-y+=3D $(LIBPYTORCH_SRC)/build/caffe2/proto/prof_dag.pb.c=
c
+
+########################################################################=
########
+# third_party/miniz
+########################################################################=
########
+LIBPYTORCH_SRCS-y+=3D $(LIBPYTORCH_SRC)/third_party/miniz-2.0.8/miniz.c
+
+########################################################################=
########
+# torch/csrc/autograd/generated
+########################################################################=
########
+LIBPYTORCH_SRCS-y+=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/generated/Fu=
nctions.cpp
+LIBPYTORCH_SRCS-y+=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/generated/Va=
riableType_4.cpp
+LIBPYTORCH_SRCS-y+=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/generated/Va=
riableType_0.cpp
+LIBPYTORCH_SRCS-y+=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/generated/Va=
riableType_1.cpp
+LIBPYTORCH_SRCS-y+=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/generated/Va=
riableType_2.cpp
+LIBPYTORCH_SRCS-y+=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/generated/Va=
riableType_3.cpp
+LIBPYTORCH_SRCS-y+=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/generated/py=
thon_functions.cpp
+LIBPYTORCH_SRCS-y+=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/generated/py=
thon_nn_functions.cpp
+LIBPYTORCH_SRCS-y+=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/generated/py=
thon_torch_functions.cpp
+LIBPYTORCH_SRCS-y+=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/generated/py=
thon_variable_methods.cpp
+
+$(LIBPYTORCH_BUILD)/.prepared: $(LIBPYTORCH_BUILD)/.origin
+	cd $(LIBPYTORCH_SRC) && mkdir -p build/caffe2/proto && mkdir -p build/a=
ten/src/ATen
+	cd $(LIBPYTORCH_SRC) && \
+		python3 aten/src/ATen/gen.py --source-path aten/src/ATen/ --install_di=
r build/aten/src/ATen/ aten/src/ATen/Declarations.cwrap aten/src/THNN/gen=
eric/THNN.h aten/src/THCUNN/generic/THCUNN.h aten/src/ATen/nn.yaml aten/s=
rc/ATen/native/native_functions.yaml
+	cd $(LIBPYTORCH_SRC) && \
+		cp aten/src/ATen/common_with_cwrap.py tools/shared/cwrap_common.py && =
\
+		cp torch/_utils_internal.py tools/shared && \
+		python3 tools/setup_helpers/generate_code.py  --declarations-path buil=
d/aten/src/ATen/Declarations.yaml --nn-path aten/src/
+	cd $(LIBPYTORCH_SRC) && \
+		protoc -I. --cpp_out=3Ddllexport_decl=3DCAFFE2_API:build/ caffe2/proto=
/caffe2_legacy.proto && \
+		protoc -I. --cpp_out=3Ddllexport_decl=3DCAFFE2_API:build/ caffe2/proto=
/hsm.proto && \
+		protoc -I. --cpp_out=3Ddllexport_decl=3DCAFFE2_API:build/ caffe2/proto=
/torch.proto && \
+		protoc -I. --cpp_out=3Ddllexport_decl=3DCAFFE2_API:build/ caffe2/proto=
/metanet.proto && \
+		protoc -I. --cpp_out=3Ddllexport_decl=3DCAFFE2_API:build/ caffe2/proto=
/predictor_consts.proto && \
+		protoc -I. --cpp_out=3Ddllexport_decl=3DCAFFE2_API:build/ caffe2/proto=
/prof_dag.proto &&\
+		protoc -I. --cpp_out=3Ddllexport_decl=3DCAFFE2_API:build/ caffe2/proto=
/caffe2.proto
+
+UK_PREPARE +=3D $(LIBPYTORCH_BUILD)/.prepared
--=20
2.20.1





From minios-devel-bounces@lists.xenproject.org Wed Apr 08 00:24:15 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 08 Apr 2020 00:24: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 1jLyVr-0001qq-7W; Wed, 08 Apr 2020 00:24:15 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=hVdw=5Y=upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1jLyVp-0001ql-Vt
 for minios-devel@lists.xen.org; Wed, 08 Apr 2020 00:24:14 +0000
X-Inumbo-ID: 455c9c78-792f-11ea-b58d-bc764e2007e4
Received: from mx.upb.ro (unknown [141.85.13.220])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 455c9c78-792f-11ea-b58d-bc764e2007e4;
 Wed, 08 Apr 2020 00:24:12 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id 0A842B561ECB;
 Wed,  8 Apr 2020 03:24:12 +0300 (EEST)
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10032)
 with ESMTP id b6ZWtBhddeki; Wed,  8 Apr 2020 03:24:10 +0300 (EEST)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id 471D1B561ECE;
 Wed,  8 Apr 2020 03:24:10 +0300 (EEST)
DKIM-Filter: OpenDKIM Filter v2.10.3 mx.upb.ro 471D1B561ECE
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=upb.ro;
 s=96342B8A-77E4-11E5-BA93-D93D0963A2DF; t=1586305450;
 bh=zCmDqV+xPd7zS3F0cN8pjcCZb4nUN2NAhml+P03X328=;
 h=To:From:Message-ID:Date:MIME-Version;
 b=pWKcuK8e3Y6C1iJH7u0axy4lWfNBBjIyKKWFkuyPMv8dcXNYcTQaxnI8xX4XdRL6Z
 uPCBqJh12AY5k9qiQeUhlxcdfRlsK7+P9o6/W3JU/E0soGbRSZdaXNzdfhbLW9Hd1O
 VbJmp7r11aOUXckOdT6//kfkIRM3mvcdq5EzhvTs=
X-Virus-Scanned: amavisd-new at upb.ro
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id hVbEbexKJoM0; Wed,  8 Apr 2020 03:24:10 +0300 (EEST)
Received: from [192.168.0.131] (unknown [86.127.159.73])
 by mx.upb.ro (Postfix) with ESMTPSA id 0EF6CB561EC8;
 Wed,  8 Apr 2020 03:24:09 +0300 (EEST)
Subject: Re: [UNIKRAFT/PYTORCH PATCH 0/5] Initial port of Pytorch on Unikraft
To: minios-devel@lists.xen.org
References: <20200408002204.31260-1-vlad_andrei.badoiu@upb.ro>
From: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
Message-ID: <88d53e33-debf-002c-32e6-b7391b955547@upb.ro>
Date: Wed, 8 Apr 2020 03:24:09 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101
 Thunderbird/68.4.1
MIME-Version: 1.0
In-Reply-To: <20200408002204.31260-1-vlad_andrei.badoiu@upb.ro>
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 7bit
Content-Language: en-US
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Hey,

Please ignore this series, the patches have not been sent correctly.

On 08.04.2020 03:21, Vlad-Andrei Badoiu wrote:
> This is the initial port of Pytorch on Unikraft.
> Only the C++ frontend has beend tested and SIMD support
> on x86 is not enabled yet.
>
> Vlad-Andrei Badoiu (5):
>    Introduce library skeleton
>    Add Makefile
>    Add gluecode
>    Add includes: config headers and missing headers
>    Add patches
>


From minios-devel-bounces@lists.xenproject.org Wed Apr 08 00:25:08 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 08 Apr 2020 00: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 1jLyWi-0001sl-BO; Wed, 08 Apr 2020 00:25: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=hVdw=5Y=upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1jLyWh-0001sf-D8
 for minios-devel@lists.xen.org; Wed, 08 Apr 2020 00:25:07 +0000
X-Inumbo-ID: 658fb296-792f-11ea-818c-12813bfff9fa
Received: from mx.upb.ro (unknown [141.85.13.200])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 658fb296-792f-11ea-818c-12813bfff9fa;
 Wed, 08 Apr 2020 00:25:07 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id 0DE4BB562508;
 Wed,  8 Apr 2020 03:25:06 +0300 (EEST)
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10032)
 with ESMTP id pDTiRsgEJuk2; Wed,  8 Apr 2020 03:25:04 +0300 (EEST)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id 3F70AB5625AD;
 Wed,  8 Apr 2020 03:25:04 +0300 (EEST)
DKIM-Filter: OpenDKIM Filter v2.10.3 mx.upb.ro 3F70AB5625AD
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=upb.ro;
 s=96342B8A-77E4-11E5-BA93-D93D0963A2DF; t=1586305504;
 bh=Bk384bwCE3hBmryED25QcrDCPcXTn6iQ1sJxyC94Zqw=;
 h=From:To:Date:Message-Id:MIME-Version;
 b=ZGKiZLjqVkCrlIKyJgSy9KhF5MNeUu7KlVIoeuyowSCXUlDB9YZTpjtS6hMcGOTp1
 /Qn++5KCqVZUvZsT/qv3OpO6c9rFfZ09lxlArHZ2OzCiSHX/CJsyuh4aEEAmK+HfUw
 ElCZIX+We1KqpG7MDPVe5DEQAlN4ReQ2CK3XWqLE=
X-Virus-Scanned: amavisd-new at upb.ro
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id NnaTCI3ZXyWh; Wed,  8 Apr 2020 03:25:04 +0300 (EEST)
Received: from localhost.localdomain (unknown [86.127.159.73])
 by mx.upb.ro (Postfix) with ESMTPSA id EE184B561C89;
 Wed,  8 Apr 2020 03:25:03 +0300 (EEST)
From: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
To: minios-devel@lists.xen.org
Subject: [UNIKRAFT/PYTORCH PATCH v2 0/5] Initial port of Pytorch on Unikraft
Date: Wed,  8 Apr 2020 03:24:55 +0300
Message-Id: <20200408002500.31493-1-vlad_andrei.badoiu@upb.ro>
X-Mailer: git-send-email 2.20.1
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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, Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

This is the initial port of Pytorch on Unikraft.
Only the C++ frontend has beend tested and SIMD support
on x86 is not enabled yet.

Vlad-Andrei Badoiu (5):
  Introduce library skeleton
  Add Makefile
  Add gluecode
  Add includes: config headers and missing headers
  Add patches

--=20
2.20.1



From minios-devel-bounces@lists.xenproject.org Wed Apr 08 00:25:11 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 08 Apr 2020 00:25: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 1jLyWl-0001tJ-Cy; Wed, 08 Apr 2020 00:25:11 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=hVdw=5Y=upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1jLyWj-0001t6-PX
 for minios-devel@lists.xen.org; Wed, 08 Apr 2020 00:25:09 +0000
X-Inumbo-ID: 669a9e30-792f-11ea-b58d-bc764e2007e4
Received: from mx.upb.ro (unknown [141.85.13.200])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 669a9e30-792f-11ea-b58d-bc764e2007e4;
 Wed, 08 Apr 2020 00:25:08 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id C27D6B561ECE;
 Wed,  8 Apr 2020 03:25:07 +0300 (EEST)
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10032)
 with ESMTP id uloIwiROQMRP; Wed,  8 Apr 2020 03:25:04 +0300 (EEST)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id 787EDB5625D3;
 Wed,  8 Apr 2020 03:25:04 +0300 (EEST)
DKIM-Filter: OpenDKIM Filter v2.10.3 mx.upb.ro 787EDB5625D3
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=upb.ro;
 s=96342B8A-77E4-11E5-BA93-D93D0963A2DF; t=1586305504;
 bh=V+h66duCN/SU7HZA6uaEqZ6dbFT7m2AD7EDYf6gnDW4=;
 h=From:To:Date:Message-Id:MIME-Version;
 b=X+elRKGMaN3xQwppSbtE8SHyQwfTnKzCHuHzB2Xz+jTTugBe85rQxqeyw+ZZMq+Ni
 F2NHfHv24af2i7u6oy8bvZBVlQ4w60bDYVHr2iC1Wmyb3t/MCeQtOr8krurX8FPa2g
 +6gVn0fN9QHOVzSlz7lbZ77Y08kEC2bPZ6bwGX4M=
X-Virus-Scanned: amavisd-new at upb.ro
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id Hl-K1rgYnAv3; Wed,  8 Apr 2020 03:25:04 +0300 (EEST)
Received: from localhost.localdomain (unknown [86.127.159.73])
 by mx.upb.ro (Postfix) with ESMTPSA id 3E5F5B561ECE;
 Wed,  8 Apr 2020 03:25:04 +0300 (EEST)
From: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
To: minios-devel@lists.xen.org
Subject: [UNIKRAFT/PYTORCH PATCH v2 1/5] Introduce library skeleton
Date: Wed,  8 Apr 2020 03:24:56 +0300
Message-Id: <20200408002500.31493-2-vlad_andrei.badoiu@upb.ro>
X-Mailer: git-send-email 2.20.1
In-Reply-To: <20200408002500.31493-1-vlad_andrei.badoiu@upb.ro>
References: <20200408002500.31493-1-vlad_andrei.badoiu@upb.ro>
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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, Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

We use the BSD-3-Clause license for this library glue code.

Signed-off-by: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
---
 .gitignore      | 27 +++++++++++++++++++++++++++
 CODING_STYLE.md |  4 ++++
 CONTRIBUTING.md |  4 ++++
 COPYING.md      | 39 +++++++++++++++++++++++++++++++++++++++
 Config.uk       | 25 +++++++++++++++++++++++++
 MAINTAINERS.md  | 11 +++++++++++
 README.md       | 38 ++++++++++++++++++++++++++++++++++++++
 7 files changed, 148 insertions(+)
 create mode 100644 .gitignore
 create mode 100644 CODING_STYLE.md
 create mode 100644 CONTRIBUTING.md
 create mode 100644 COPYING.md
 create mode 100644 Config.uk
 create mode 100644 MAINTAINERS.md
 create mode 100644 README.md

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..75d2fd3
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,27 @@
+*.depend
+*.o
+*.a
+*.d
+*.so
+*.orig
+*.rej
+*.bak
+*.swp
+*~
+,*
+\#*\#
+.\#*
+\#_*\#
+.\#_*
+!.gitignore
+.*
+
+# gnu global files
+GPATH
+GRTAGS
+GSYMS
+GTAGS
+
+# cscope files
+cscope.*
+ncscope.*
diff --git a/CODING_STYLE.md b/CODING_STYLE.md
new file mode 100644
index 0000000..5730041
--- /dev/null
+++ b/CODING_STYLE.md
@@ -0,0 +1,4 @@
+Coding Style
+=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
+
+Please refer to the `CODING_STYLE.md` file in the main Unikraft reposito=
ry.
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 0000000..5f55eca
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,4 @@
+Contributing to Unikraft
+=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
+
+Please refer to the `CONTRIBUTING.md` file in the main Unikraft reposito=
ry.
diff --git a/COPYING.md b/COPYING.md
new file mode 100644
index 0000000..7e11dfb
--- /dev/null
+++ b/COPYING.md
@@ -0,0 +1,39 @@
+License
+=3D=3D=3D=3D=3D=3D=3D
+
+Unikraft pytorch wrappers
+------------------------
+
+This repository contains wrapper code to build pytorch with Unikraft.
+Each C code file in this repository should declare who is the
+copyright owner and under which terms and conditions the code is
+licensed. If such a licence note is missing, the following copyright
+notice will apply:
+
+	Copyright (c) 2020, University Politehnica of Bucharest. All rights res=
erved.
+
+	Redistribution and use in source and binary forms, with or without
+	modification, are permitted provided that the following conditions
+	are met:
+
+	1. Redistributions of source code must retain the above copyright
+	   notice, this list of conditions and the following disclaimer.
+	2. Redistributions in binary form must reproduce the above copyright
+	   notice, this list of conditions and the following disclaimer in the
+	   documentation and/or other materials provided with the distribution.
+	3. Neither the name of the copyright holder nor the names of its
+	   contributors may be used to endorse or promote products derived from
+	   this software without specific prior written permission.
+
+	THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS=
 IS"
+	AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, T=
HE
+	IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURP=
OSE
+	ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS =
BE
+	LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+	CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+	SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINES=
S
+	INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+	CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+	ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF =
THE
+	POSSIBILITY OF SUCH DAMAGE.
+
diff --git a/Config.uk b/Config.uk
new file mode 100644
index 0000000..c092109
--- /dev/null
+++ b/Config.uk
@@ -0,0 +1,25 @@
+menuconfig LIBPYTORCH
+	bool "pytorch - machine learning library"
+	select LIBCXX
+	select LIBPYTHON3
+	select LIBLWIP
+	select LIBPTHREAD_EMBEDDED
+	select LIBPOSIX_SYSINFO
+	select LIBNEWLIBC
+	select LIBPROTOBUF
+	select LIBPYBIND11
+	select LIBZLIB
+	select LIBINTEL_INTRINSICS
+	select LIBPTHREADPOOL
+	select LIBFXDIV
+	select LIBEIGEN
+	select LIBGEMMLOWP
+	select LIBONNX
+	select LIBSLEEF
+	select LIBPOSIX_LIBDL
+	select LIBPOSIX_PROCESS
+	select LIBPOSIX_SYSINFO
+	select LIBUKMMAP
+	select LIBUKTIME
+	default n
+
diff --git a/MAINTAINERS.md b/MAINTAINERS.md
new file mode 100644
index 0000000..8a9bdbf
--- /dev/null
+++ b/MAINTAINERS.md
@@ -0,0 +1,11 @@
+Maintainers List
+=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
+
+For notes on how to read this information, please refer to `MAINTAINERS.=
md` in
+the main Unikraft repository.
+
+	LIBPYTORCH-UNIKRAFT
+	M:	Felipe Huici <felipe.huici@neclab.eu>
+	M:	Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
+	L:	minios-devel@lists.xen.org
+	F: *
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..9371af6
--- /dev/null
+++ b/README.md
@@ -0,0 +1,38 @@
+pytorch for Unikraft
+=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D
+
+This is the port of pytorch as a Unikraft external library. It
+depends on the following libraries that need to be added to `Makefile`
+in this order:
+
+* `pthreads`, e.g. `pthread-embedded`
+* `C++ standard library`, e.g.`libcxx`, `libunwind`, `libcxxabi`, `compi=
ler-rt`
+* `libc`, e.g. `newlib`
+*  intel intrinsics, e.g. `intel-intrinsics`a
+* `zlib`
+* `lwip`
+* `python`
+* `pybind11`
+* `pthreadpool`
+* `libfp16`
+* `psimd`
+* `libfxdiv`
+* `protobuf`
+* `eigen`
+* `gemmlowp`
+* `sleef`
+* `onnx`
+
+# Building
+This library uses protobuf to generate some of the source files. The
+version of protobuf on the host machine must be the same with the one
+compile on Unikraft. The easies way to use the binaries from github:
+e.g. `https://github.com/protocolbuffers/protobuf/releases/download/v3.1=
0.0/protoc-3.10.0-linux-x86_64.zip`
+and add the binary to the path, e.g. `PATH=3D$PATH:~/path/to/protoc-3.10=
.0-linux-x86_64/bin/`
+
+* `pyyaml` must be installed, e.g. `pip3 install pyyaml`
+
+Currently, only the C++ frontend has beend tested.
+
+Please refer to the `README.md` as well as the documentation in the `doc=
/`
+subdirectory of the main unikraft repository.
--=20
2.20.1



From minios-devel-bounces@lists.xenproject.org Wed Apr 08 00:25:13 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 08 Apr 2020 00:25: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 1jLyWn-0001tw-Ej; Wed, 08 Apr 2020 00:25: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=hVdw=5Y=upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1jLyWm-0001tj-DQ
 for minios-devel@lists.xen.org; Wed, 08 Apr 2020 00:25:12 +0000
X-Inumbo-ID: 658fb297-792f-11ea-818c-12813bfff9fa
Received: from mx.upb.ro (unknown [141.85.13.220])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 658fb297-792f-11ea-818c-12813bfff9fa;
 Wed, 08 Apr 2020 00:25:07 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id D1598B5625AD;
 Wed,  8 Apr 2020 03:25:06 +0300 (EEST)
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10032)
 with ESMTP id j-Qd7jNbvgZR; Wed,  8 Apr 2020 03:25:05 +0300 (EEST)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id EE7E7B5624E6;
 Wed,  8 Apr 2020 03:25:04 +0300 (EEST)
DKIM-Filter: OpenDKIM Filter v2.10.3 mx.upb.ro EE7E7B5624E6
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=upb.ro;
 s=96342B8A-77E4-11E5-BA93-D93D0963A2DF; t=1586305505;
 bh=AsuNaQfETT5I5vlSBf3mum724T3jPO1P8N3H/7vxEsg=;
 h=From:To:Date:Message-Id:MIME-Version;
 b=cIikZB7YMp9rffx3Y1PCHCejK1bIGzzqCNsqwKeNhyVVapxm3SsDGi97ygKo1FIY6
 68MzUW5YI4Oh0s4tNquEhCBFV1+C3qsTwr1xJxUF6xTzxQKL9J+lNz7voXf3lQfuzr
 7JpAkEeKSDhrzJjC2ZrP4s5CNqvhMpeXPf6yydu0=
X-Virus-Scanned: amavisd-new at upb.ro
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id oTricwu4JuRI; Wed,  8 Apr 2020 03:25:04 +0300 (EEST)
Received: from localhost.localdomain (unknown [86.127.159.73])
 by mx.upb.ro (Postfix) with ESMTPSA id AFD2EB561ECE;
 Wed,  8 Apr 2020 03:25:04 +0300 (EEST)
From: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
To: minios-devel@lists.xen.org
Subject: [UNIKRAFT/PYTORCH PATCH v2 3/5] Add gluecode
Date: Wed,  8 Apr 2020 03:24:58 +0300
Message-Id: <20200408002500.31493-4-vlad_andrei.badoiu@upb.ro>
X-Mailer: git-send-email 2.20.1
In-Reply-To: <20200408002500.31493-1-vlad_andrei.badoiu@upb.ro>
References: <20200408002500.31493-1-vlad_andrei.badoiu@upb.ro>
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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, Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Signed-off-by: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
---
 glue.c | 44 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 44 insertions(+)
 create mode 100644 glue.c

diff --git a/glue.c b/glue.c
new file mode 100644
index 0000000..5069484
--- /dev/null
+++ b/glue.c
@@ -0,0 +1,44 @@
+#include <sys/types.h>
+#include <sys/wait.h>
+#include <signal.h>
+
+int waitid(idtype_t idtype, id_t id, siginfo_t *infop, int options)
+{
+	return 0;
+}
+
+#include <fenv.h>
+int feclearexcept(int excepts)
+{
+
+}
+int fegetexceptflag(fexcept_t *flagp, int excepts)
+{
+}
+int feraiseexcept(int excepts)
+{
+}
+int fesetexceptflag(const fexcept_t *flagp, int excepts)
+{
+}
+int fetestexcept(int excepts)
+{
+}
+int fegetround(void)
+{
+}
+int fesetround(int rounding_mode)
+{
+}
+int fegetenv(fenv_t *envp)
+{
+}
+int feholdexcept(fenv_t *envp)
+{
+}
+int fesetenv(const fenv_t *envp)
+{
+}
+int feupdateenv(const fenv_t *envp)
+{
+}
--=20
2.20.1



From minios-devel-bounces@lists.xenproject.org Wed Apr 08 00:25:16 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 08 Apr 2020 00: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 1jLyWq-0001ui-GX; Wed, 08 Apr 2020 00:25:16 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=hVdw=5Y=upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1jLyWo-0001uN-QE
 for minios-devel@lists.xen.org; Wed, 08 Apr 2020 00:25:14 +0000
X-Inumbo-ID: 67f7951c-792f-11ea-b4f4-bc764e2007e4
Received: from mx.upb.ro (unknown [141.85.13.5])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 67f7951c-792f-11ea-b4f4-bc764e2007e4;
 Wed, 08 Apr 2020 00:25:11 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id 18392B561C89;
 Wed,  8 Apr 2020 03:25:10 +0300 (EEST)
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10032)
 with ESMTP id 3bFUFD_nkVkQ; Wed,  8 Apr 2020 03:25:06 +0300 (EEST)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id 79CD4B5625D7;
 Wed,  8 Apr 2020 03:25:05 +0300 (EEST)
DKIM-Filter: OpenDKIM Filter v2.10.3 mx.upb.ro 79CD4B5625D7
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=upb.ro;
 s=96342B8A-77E4-11E5-BA93-D93D0963A2DF; t=1586305505;
 bh=tZxXuE6PcRMOh6IdbKE/m6k0G9dLZZkTkb0ib/QrFYc=;
 h=From:To:Date:Message-Id:MIME-Version;
 b=SxzZBncJc5jkaqzWmlhmzontuINUYGD/9opKse1Mdsl8+MdipcfzGdxG8/y6wYMou
 yolngL4D8clSpveF2qNzrv8fB1ReNLmGo8BACehs9j70lhKJlksj0axQgj9hWVFNW+
 qc9PhHhuOwXVN+EHTw1EMt6FIfzQJ3CrLOjbUvwE=
X-Virus-Scanned: amavisd-new at upb.ro
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id xwmuAZZ2mpTH; Wed,  8 Apr 2020 03:25:05 +0300 (EEST)
Received: from localhost.localdomain (unknown [86.127.159.73])
 by mx.upb.ro (Postfix) with ESMTPSA id 3D6BBB562508;
 Wed,  8 Apr 2020 03:25:05 +0300 (EEST)
From: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
To: minios-devel@lists.xen.org
Subject: [UNIKRAFT/PYTORCH PATCH v2 5/5] Add patches
Date: Wed,  8 Apr 2020 03:25:00 +0300
Message-Id: <20200408002500.31493-6-vlad_andrei.badoiu@upb.ro>
X-Mailer: git-send-email 2.20.1
In-Reply-To: <20200408002500.31493-1-vlad_andrei.badoiu@upb.ro>
References: <20200408002500.31493-1-vlad_andrei.badoiu@upb.ro>
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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, Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

In this patch we add several patches for:
disabling some features such as backtracking,
remove calls to functions from cpuinfo, remove
calls for other missing symbols.

Signed-off-by: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
---
 ...ds-to-suppress-redefinition-warnings.patch | 37 +++++++++++++++++
 .../0002-Comment-out-calls-to-enable_if.patch | 40 +++++++++++++++++++
 patches/0003-Comment-out-waitpid-call.patch   | 27 +++++++++++++
 ...variable-to-avoid-compilation-errors.patch | 28 +++++++++++++
 patches/0005-Disable-backtrace-support.patch  | 34 ++++++++++++++++
 patches/0006-Disable-demangle.patch           | 25 ++++++++++++
 .../0007-Comment-out-nexttoward-call.patch    | 26 ++++++++++++
 ...8-Remove-cpuinfo_get_processor-calls.patch | 34 ++++++++++++++++
 patches/0009-Comment-out-runJITCPPTests.patch | 29 ++++++++++++++
 ...emove-calls-to-cpuinfo_get_processor.patch | 25 ++++++++++++
 10 files changed, 305 insertions(+)
 create mode 100644 patches/0001-Add-guards-to-suppress-redefinition-warn=
ings.patch
 create mode 100644 patches/0002-Comment-out-calls-to-enable_if.patch
 create mode 100644 patches/0003-Comment-out-waitpid-call.patch
 create mode 100644 patches/0004-Rename-variable-to-avoid-compilation-err=
ors.patch
 create mode 100644 patches/0005-Disable-backtrace-support.patch
 create mode 100644 patches/0006-Disable-demangle.patch
 create mode 100644 patches/0007-Comment-out-nexttoward-call.patch
 create mode 100644 patches/0008-Remove-cpuinfo_get_processor-calls.patch
 create mode 100644 patches/0009-Comment-out-runJITCPPTests.patch
 create mode 100644 patches/0010-Remove-calls-to-cpuinfo_get_processor.pa=
tch

diff --git a/patches/0001-Add-guards-to-suppress-redefinition-warnings.pa=
tch b/patches/0001-Add-guards-to-suppress-redefinition-warnings.patch
new file mode 100644
index 0000000..b8fd7b1
--- /dev/null
+++ b/patches/0001-Add-guards-to-suppress-redefinition-warnings.patch
@@ -0,0 +1,37 @@
+From d4645e726ef513d1a22eb0d6be1d610cd2a01b62 Mon Sep 17 00:00:00 2001
+From: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
+Date: Tue, 7 Apr 2020 22:07:49 +0000
+Subject: [PATCH 1/8] Add guards to suppress redefinition warnings
+
+Signed-off-by: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
+---
+ c10/macros/Export.h | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/c10/macros/Export.h b/c10/macros/Export.h
+index 0a213ed..7fce4f4 100644
+--- a/c10/macros/Export.h
++++ b/c10/macros/Export.h
+@@ -86,7 +86,9 @@
+=20
+ // This one is being used by libc10.so
+ #ifdef C10_BUILD_MAIN_LIB
++#ifndef C10_API
+ #define C10_API C10_EXPORT
++#endif
+ #else
+ #define C10_API C10_IMPORT
+ #endif
+@@ -94,7 +96,9 @@
+ // This one is being used by libtorch.so
+ // TODO: rename this to TORCH_API
+ #ifdef CAFFE2_BUILD_MAIN_LIB
++#ifndef CAFFE2_API
+ #define CAFFE2_API C10_EXPORT
++#endif
+ #else
+ #define CAFFE2_API C10_IMPORT
+ #endif
+--=20
+2.11.0
+
diff --git a/patches/0002-Comment-out-calls-to-enable_if.patch b/patches/=
0002-Comment-out-calls-to-enable_if.patch
new file mode 100644
index 0000000..0195485
--- /dev/null
+++ b/patches/0002-Comment-out-calls-to-enable_if.patch
@@ -0,0 +1,40 @@
+From f844c7363c909ffa3d1bc8c692ce24e38be6c988 Mon Sep 17 00:00:00 2001
+From: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
+Date: Tue, 7 Apr 2020 22:22:37 +0000
+Subject: [PATCH 2/8] Comment out calls to enable_if
+
+Signed-off-by: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
+---
+ aten/src/ATen/native/cpu/MultinomialKernel.cpp | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/aten/src/ATen/native/cpu/MultinomialKernel.cpp b/aten/src/A=
Ten/native/cpu/MultinomialKernel.cpp
+index c00c4c0..352cbc4 100644
+--- a/aten/src/ATen/native/cpu/MultinomialKernel.cpp
++++ b/aten/src/ATen/native/cpu/MultinomialKernel.cpp
+@@ -48,8 +48,8 @@ void multinomial_apply(Tensor& result, const Tensor& s=
elf, const int64_t n_sampl
+       TORCH_CHECK(std::isfinite(static_cast<double>(val)),
+                   "invalid multinomial distribution (encountering proba=
bility entry =3D infinity or NaN)");
+ #else
+-      TORCH_CHECK(std::isfinite(val),
+-                  "invalid multinomial distribution (encountering proba=
bility entry =3D infinity or NaN)");
++      //TORCH_CHECK(std::isfinite(val),
++      //            "invalid multinomial distribution (encountering pro=
bability entry =3D infinity or NaN)");
+ #endif
+=20
+       sum +=3D val;
+@@ -130,9 +130,11 @@ void multinomial_apply(Tensor& result, const Tensor=
& self, const int64_t n_sampl
+ }
+=20
+ static void multinomial_kernel_impl(Tensor& result, const Tensor& self,=
 const int64_t n_sample, const bool with_replacement, Generator *gen) {
++  /*
+   AT_DISPATCH_FLOATING_TYPES_AND_HALF(self.scalar_type(), "multinomial"=
, [&] {
+     multinomial_apply<scalar_t>(result, self, n_sample, with_replacemen=
t, gen);
+   });
++  */
+ }
+=20
+ }
+--=20
+2.11.0
+
diff --git a/patches/0003-Comment-out-waitpid-call.patch b/patches/0003-C=
omment-out-waitpid-call.patch
new file mode 100644
index 0000000..1c09da7
--- /dev/null
+++ b/patches/0003-Comment-out-waitpid-call.patch
@@ -0,0 +1,27 @@
+From 972caf96f8ad327d281e7287c48c14e0e8fa2dc9 Mon Sep 17 00:00:00 2001
+From: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
+Date: Tue, 7 Apr 2020 22:27:39 +0000
+Subject: [PATCH 3/8] Comment out waitpid call
+
+Signed-off-by: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
+---
+ torch/csrc/DataLoader.cpp | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/torch/csrc/DataLoader.cpp b/torch/csrc/DataLoader.cpp
+index 164a7ce..5f438ea 100644
+--- a/torch/csrc/DataLoader.cpp
++++ b/torch/csrc/DataLoader.cpp
+@@ -113,7 +113,8 @@ static PyObject *THPModule_errorIfAnyWorkerFails(PyO=
bject *module, PyObject *noa
+       // Use waitid rather than waitpid so that we can set NOWAIT, and =
that Python
+       // and other handlers can get whatever info they want about the c=
hild.
+       infop.si_pid =3D 0;
+-      error =3D waitid(P_PID, worker_pid, &infop, WEXITED|WNOHANG|WNOWA=
IT);
++      // error =3D waitid(P_PID, worker_pid, &infop, WEXITED|WNOHANG|WN=
OWAIT);
++      error =3D 0;
+       // ignore errors and case with no waitable child
+       if (error < 0 || infop.si_pid =3D=3D 0)
+         continue;
+--=20
+2.11.0
+
diff --git a/patches/0004-Rename-variable-to-avoid-compilation-errors.pat=
ch b/patches/0004-Rename-variable-to-avoid-compilation-errors.patch
new file mode 100644
index 0000000..89ce0bb
--- /dev/null
+++ b/patches/0004-Rename-variable-to-avoid-compilation-errors.patch
@@ -0,0 +1,28 @@
+From 22f0829c951dc358b7fa6b40c67dbed8c36cc6e1 Mon Sep 17 00:00:00 2001
+From: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
+Date: Tue, 7 Apr 2020 22:34:46 +0000
+Subject: [PATCH 4/8] Rename variable to avoid compilation errors
+
+Signed-off-by: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
+---
+ torch/csrc/jit/script/python_tree_views.cpp | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/torch/csrc/jit/script/python_tree_views.cpp b/torch/csrc/ji=
t/script/python_tree_views.cpp
+index b7726d6..4d89ea3 100644
+--- a/torch/csrc/jit/script/python_tree_views.cpp
++++ b/torch/csrc/jit/script/python_tree_views.cpp
+@@ -74,8 +74,8 @@ Maybe<T> wrap_maybe(const SourceRange& fallback_pos, T=
* val) {
+ }
+=20
+ void initTreeViewBindings(PyObject* module) {
+-  auto _C =3D py::handle(module).cast<py::module>();
+-  auto m =3D _C.def_submodule("_jit_tree_views");
++  auto C =3D py::handle(module).cast<py::module>();
++  auto m =3D C.def_submodule("_jit_tree_views");
+=20
+   py::class_<SourceRange>(m, "SourceRange")
+       .def(
+--=20
+2.11.0
+
diff --git a/patches/0005-Disable-backtrace-support.patch b/patches/0005-=
Disable-backtrace-support.patch
new file mode 100644
index 0000000..6551681
--- /dev/null
+++ b/patches/0005-Disable-backtrace-support.patch
@@ -0,0 +1,34 @@
+From 290fb52ee2cecba86f3585ef9e500dc168063934 Mon Sep 17 00:00:00 2001
+From: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
+Date: Tue, 7 Apr 2020 22:37:49 +0000
+Subject: [PATCH 5/8] Disable backtrace support
+
+Signed-off-by: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
+---
+ c10/util/Backtrace.cpp | 8 +++++---
+ 1 file changed, 5 insertions(+), 3 deletions(-)
+
+diff --git a/c10/util/Backtrace.cpp b/c10/util/Backtrace.cpp
+index 3abfc08..6e09abc 100644
+--- a/c10/util/Backtrace.cpp
++++ b/c10/util/Backtrace.cpp
+@@ -15,11 +15,13 @@
+ // No backtrace on mobile, windows and emscripten platforms.
+ #define SUPPORTS_BACKTRACE 0
+ #else
+-#define SUPPORTS_BACKTRACE 1
+-#include <cxxabi.h>
+-#include <execinfo.h>
++//#define SUPPORTS_BACKTRACE 1
++//#include <cxxabi.h>
++//#include <execinfo.h>
+ #endif
+=20
++#define SUPPORTS_BACKTRACE 0
++
+ namespace c10 {
+=20
+ // TODO: This backtrace retrieval can be implemented on Windows via the=
 Windows
+--=20
+2.11.0
+
diff --git a/patches/0006-Disable-demangle.patch b/patches/0006-Disable-d=
emangle.patch
new file mode 100644
index 0000000..2f4c59d
--- /dev/null
+++ b/patches/0006-Disable-demangle.patch
@@ -0,0 +1,25 @@
+From 0a32adf17fcd86ef28a51b3f68e4130f7db26ee2 Mon Sep 17 00:00:00 2001
+From: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
+Date: Tue, 7 Apr 2020 22:39:52 +0000
+Subject: [PATCH 6/8] Disable demangle
+
+Signed-off-by: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
+---
+ c10/util/Type.cpp | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/c10/util/Type.cpp b/c10/util/Type.cpp
+index 3e00055..dc18ab2 100644
+--- a/c10/util/Type.cpp
++++ b/c10/util/Type.cpp
+@@ -13,6 +13,7 @@
+ #define HAS_DEMANGLE 1
+ #endif
+=20
++#define HAS_DEMANGLE 0
+ #if HAS_DEMANGLE
+=20
+ #include <cxxabi.h>
+--=20
+2.11.0
+
diff --git a/patches/0007-Comment-out-nexttoward-call.patch b/patches/000=
7-Comment-out-nexttoward-call.patch
new file mode 100644
index 0000000..369ce10
--- /dev/null
+++ b/patches/0007-Comment-out-nexttoward-call.patch
@@ -0,0 +1,26 @@
+From 511ccc836b30d8eb303b151c3b47e79d0c4c4097 Mon Sep 17 00:00:00 2001
+From: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
+Date: Tue, 7 Apr 2020 22:49:24 +0000
+Subject: [PATCH 7/8] Comment out nexttoward call
+
+Signed-off-by: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
+---
+ aten/src/ATen/native/Distributions.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/aten/src/ATen/native/Distributions.cpp b/aten/src/ATen/nati=
ve/Distributions.cpp
+index 644888a..0accb3b 100644
+--- a/aten/src/ATen/native/Distributions.cpp
++++ b/aten/src/ATen/native/Distributions.cpp
+@@ -289,7 +289,7 @@ Tensor _s_dirichlet_cpu(const Tensor& alpha, Generat=
or *gen) {
+       [](scalar_t& ret_val, const double& gamma, const double& gamma_su=
m){
+         ret_val =3D gamma / gamma_sum;
+         auto min_val =3D std::numeric_limits<scalar_t>::min();
+-        auto max_val =3D std::nexttoward(static_cast<scalar_t>(1.0f), 0=
.0f);
++        auto max_val =3D static_cast<scalar_t>(1.0f);//std::nexttoward(=
static_cast<scalar_t>(1.0f), 0.0f);
+         ret_val =3D std::min(max_val, std::max(min_val, ret_val));
+         ret_val =3D static_cast<scalar_t>(ret_val);
+       }
+--=20
+2.11.0
+
diff --git a/patches/0008-Remove-cpuinfo_get_processor-calls.patch b/patc=
hes/0008-Remove-cpuinfo_get_processor-calls.patch
new file mode 100644
index 0000000..ffdf274
--- /dev/null
+++ b/patches/0008-Remove-cpuinfo_get_processor-calls.patch
@@ -0,0 +1,34 @@
+From ffa7d398d11a2f8a93b69feb9dc1d147801da943 Mon Sep 17 00:00:00 2001
+From: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
+Date: Tue, 7 Apr 2020 22:54:06 +0000
+Subject: [PATCH 8/8] Remove cpuinfo_get_processor calls
+
+Signed-off-by: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
+---
+ caffe2/utils/bench_utils.cc | 10 +---------
+ 1 file changed, 1 insertion(+), 9 deletions(-)
+
+diff --git a/caffe2/utils/bench_utils.cc b/caffe2/utils/bench_utils.cc
+index df77512..93384cc 100644
+--- a/caffe2/utils/bench_utils.cc
++++ b/caffe2/utils/bench_utils.cc
+@@ -14,15 +14,7 @@ uint32_t wipe_cache() {
+   if (wipe_buffer =3D=3D nullptr) {
+     CAFFE_ENFORCE(cpuinfo_initialize(), "failed to initialize cpuinfo")=
;
+     const cpuinfo_processor* processor =3D cpuinfo_get_processor(0);
+-    if (processor->cache.l4 !=3D nullptr) {
+-      wipe_size =3D processor->cache.l4->size;
+-    } else if (processor->cache.l3 !=3D nullptr) {
+-      wipe_size =3D processor->cache.l3->size;
+-    } else if (processor->cache.l2 !=3D nullptr) {
+-      wipe_size =3D processor->cache.l2->size;
+-    } else {
+-      wipe_size =3D processor->cache.l1d->size;
+-    }
++    wipe_size =3D 64 * 1024;
+ #if CPUINFO_ARCH_ARM || CPUINFO_ARCH_ARM64
+     /*
+      * On ARM precise cache size is not available, and cpuinfo may
+--=20
+2.11.0
+
diff --git a/patches/0009-Comment-out-runJITCPPTests.patch b/patches/0009=
-Comment-out-runJITCPPTests.patch
new file mode 100644
index 0000000..cc49951
--- /dev/null
+++ b/patches/0009-Comment-out-runJITCPPTests.patch
@@ -0,0 +1,29 @@
+From 2f2f760fac6b14f7ce63ee1858262b4c3bbae4a7 Mon Sep 17 00:00:00 2001
+From: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
+Date: Tue, 7 Apr 2020 23:52:29 +0000
+Subject: [PATCH 1/1] Comment out runJITCPPTests
+
+We comment out runJITCPPTests calls because we
+are not running the unit tests.
+
+Signed-off-by: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
+---
+ torch/csrc/jit/init.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/torch/csrc/jit/init.cpp b/torch/csrc/jit/init.cpp
+index 9745464..cf99b95 100644
+--- a/torch/csrc/jit/init.cpp
++++ b/torch/csrc/jit/init.cpp
+@@ -286,7 +286,7 @@ void initJITBindings(PyObject* module) {
+             // newly spawned worker threads will try to initialize thei=
r
+             // PyThreadState*, and they need the GIL for this.
+             AutoNoGIL _no_gil;
+-            return runJITCPPTests(runCuda);
++            //return runJITCPPTests(runCuda);
+           },
+           py::arg("run_cuda"))
+       .def(
+--=20
+2.11.0
+
diff --git a/patches/0010-Remove-calls-to-cpuinfo_get_processor.patch b/p=
atches/0010-Remove-calls-to-cpuinfo_get_processor.patch
new file mode 100644
index 0000000..b9582b9
--- /dev/null
+++ b/patches/0010-Remove-calls-to-cpuinfo_get_processor.patch
@@ -0,0 +1,25 @@
+iFrom d8d7f7b02d983bb3e00728648dceb462f0f2155f Mon Sep 17 00:00:00 2001
+From: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
+Date: Tue, 7 Apr 2020 23:57:21 +0000
+Subject: [PATCH 1/1] Remove calls to cpuinfo_get_processor
+
+Signed-off-by: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
+---
+ caffe2/utils/bench_utils.cc | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/caffe2/utils/bench_utils.cc b/caffe2/utils/bench_utils.cc
+index 93384cc..facf095 100644
+--- a/caffe2/utils/bench_utils.cc
++++ b/caffe2/utils/bench_utils.cc
+@@ -13,7 +13,7 @@ uint32_t wipe_cache() {
+=20
+   if (wipe_buffer =3D=3D nullptr) {
+     CAFFE_ENFORCE(cpuinfo_initialize(), "failed to initialize cpuinfo")=
;
+-    const cpuinfo_processor* processor =3D cpuinfo_get_processor(0);
++    const cpuinfo_processor* processor;// =3D cpuinfo_get_processor(0);
+     wipe_size =3D 64 * 1024;
+ #if CPUINFO_ARCH_ARM || CPUINFO_ARCH_ARM64
+     /*
+--=20
+2.11.0
--=20
2.20.1



From minios-devel-bounces@lists.xenproject.org Wed Apr 08 00:25:21 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 08 Apr 2020 00:25: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 1jLyWv-0001w1-Kf; Wed, 08 Apr 2020 00:25: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=hVdw=5Y=upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1jLyWu-0001vi-9C
 for minios-devel@lists.xen.org; Wed, 08 Apr 2020 00:25:20 +0000
X-Inumbo-ID: 6ba758aa-792f-11ea-818c-12813bfff9fa
Received: from mx.upb.ro (unknown [141.85.13.220])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 6ba758aa-792f-11ea-818c-12813bfff9fa;
 Wed, 08 Apr 2020 00:25:17 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id 428A5B5624E6;
 Wed,  8 Apr 2020 03:25:16 +0300 (EEST)
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10032)
 with ESMTP id EswkVnEcuH1o; Wed,  8 Apr 2020 03:25:05 +0300 (EEST)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id 4A93BB5625D6;
 Wed,  8 Apr 2020 03:25:05 +0300 (EEST)
DKIM-Filter: OpenDKIM Filter v2.10.3 mx.upb.ro 4A93BB5625D6
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=upb.ro;
 s=96342B8A-77E4-11E5-BA93-D93D0963A2DF; t=1586305505;
 bh=r6cxf1fYiZeYZUS+oxPyQSqUSGPmilDpULA/5QE/vnE=;
 h=From:To:Date:Message-Id:MIME-Version;
 b=HFezkzy4Zk5a0WcanESFk2V1PslbwWvL+zr5SKBqtVUgA/zud1HzAVVTBwHLKDirr
 F5FAMijz382KmPgVBBxJC5av9oAT/512D1IHTepgS7JYRe6H04HzQS8jndUdHtbnrx
 6CKqI7tFfElUGiwhYUU7EVtvsYDfC7qfPGvBlB2Y=
X-Virus-Scanned: amavisd-new at upb.ro
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id eDzjLPpXqUD0; Wed,  8 Apr 2020 03:25:05 +0300 (EEST)
Received: from localhost.localdomain (unknown [86.127.159.73])
 by mx.upb.ro (Postfix) with ESMTPSA id EC98DB5625D4;
 Wed,  8 Apr 2020 03:25:04 +0300 (EEST)
From: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
To: minios-devel@lists.xen.org
Subject: [UNIKRAFT/PYTORCH PATCH v2 4/5] Add includes: config headers and
 missing headers
Date: Wed,  8 Apr 2020 03:24:59 +0300
Message-Id: <20200408002500.31493-5-vlad_andrei.badoiu@upb.ro>
X-Mailer: git-send-email 2.20.1
In-Reply-To: <20200408002500.31493-1-vlad_andrei.badoiu@upb.ro>
References: <20200408002500.31493-1-vlad_andrei.badoiu@upb.ro>
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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, Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Signed-off-by: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
---
 include/aten/src/ATen/Config.h          |   12 +
 include/aten/src/ATen/cuda/CUDAConfig.h |   13 +
 include/aten/src/TH/THGeneral.h         |  166 +++
 include/aten/src/TH/THGeneral.h.in      |  172 +++
 include/bits/fenv.h                     |   18 +
 include/c10/macros/cmake_macros.h       |   22 +
 include/cpuinfo.h                       | 1821 +++++++++++++++++++++++
 include/fenv.h                          |   27 +
 8 files changed, 2251 insertions(+)
 create mode 100644 include/aten/src/ATen/Config.h
 create mode 100644 include/aten/src/ATen/cuda/CUDAConfig.h
 create mode 100644 include/aten/src/TH/THGeneral.h
 create mode 100644 include/aten/src/TH/THGeneral.h.in
 create mode 100644 include/bits/fenv.h
 create mode 100644 include/c10/macros/cmake_macros.h
 create mode 100644 include/cpuinfo.h
 create mode 100644 include/fenv.h

diff --git a/include/aten/src/ATen/Config.h b/include/aten/src/ATen/Confi=
g.h
new file mode 100644
index 0000000..08bba18
--- /dev/null
+++ b/include/aten/src/ATen/Config.h
@@ -0,0 +1,12 @@
+#pragma once
+
+// Test these using #if AT_MKL_ENABLED(), not #ifdef, so that it's
+// obvious if you forgot to include Config.h
+//    c.f. https://stackoverflow.com/questions/33759787/generating-an-er=
ror-if-checked-boolean-macro-is-not-defined
+//
+// DO NOT put the macros for CUDA libraries in this file; they belong in=
 cuda/CUDAConfig.h
+
+#define AT_MKLDNN_ENABLED() 0
+#define AT_MKL_ENABLED() 0
+#define AT_NNPACK_ENABLED() 0
+#define CAFFE2_STATIC_LINK_CUDA() 0
diff --git a/include/aten/src/ATen/cuda/CUDAConfig.h b/include/aten/src/A=
Ten/cuda/CUDAConfig.h
new file mode 100644
index 0000000..ca23913
--- /dev/null
+++ b/include/aten/src/ATen/cuda/CUDAConfig.h
@@ -0,0 +1,13 @@
+#pragma once
+
+// Test these using #if AT_CUDNN_ENABLED(), not #ifdef, so that it's
+// obvious if you forgot to include Config.h
+//    c.f. https://stackoverflow.com/questions/33759787/generating-an-er=
ror-if-checked-boolean-macro-is-not-defined
+//
+// NB: This header MUST NOT be included from other headers; it should
+// only be included from C++ files.
+
+#define AT_CUDNN_ENABLED() 0
+#define AT_ROCM_ENABLED() 0
+
+#define NVCC_FLAGS_EXTRA ""
diff --git a/include/aten/src/TH/THGeneral.h b/include/aten/src/TH/THGene=
ral.h
new file mode 100644
index 0000000..6923bcb
--- /dev/null
+++ b/include/aten/src/TH/THGeneral.h
@@ -0,0 +1,166 @@
+#ifndef TH_GENERAL_INC
+#define TH_GENERAL_INC
+
+#ifndef __STDC_FORMAT_MACROS
+#define __STDC_FORMAT_MACROS
+#endif
+
+#include <stdint.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <stdarg.h>
+#include <math.h>
+#include <limits.h>
+#include <float.h>
+#include <time.h>
+#include <string.h>
+#include <stddef.h>
+#include <inttypes.h>
+
+#ifdef TH_BLAS_MKL
+#include <mkl_vsl.h>
+#endif
+
+/* #undef USE_BLAS */
+/* #undef USE_LAPACK */
+/* #undef BLAS_F2C */
+/* #undef BLAS_USE_CBLAS_DOT */
+
+# define TH_EXTERNC extern "C"
+
+// Note(jiayq): copied from ATen/core/Macros.h. Because internal build o=
f TH
+// and ATen are not unified yet, we need to duplicate code for now. Long=
 term
+// we should merge macros.
+#ifdef _WIN32
+#if !defined(AT_CORE_STATIC_WINDOWS)
+// TODO: unify the controlling macros.
+#if defined(CAFFE2_BUILD_MAIN_LIBS) || defined(ATen_cpu_EXPORTS) || defi=
ned(caffe2_EXPORTS)
+#define TH_CPP_API __declspec(dllexport)
+#else // defined(CAFFE2_BUILD_MAIN_LIBS) || defined(ATen_cpu_EXPORTS) ||=
 defined(caffe2_EXPORTS)
+#define TH_CPP_API __declspec(dllimport)
+#endif // defined(CAFFE2_BUILD_MAIN_LIBS) || defined(ATen_cpu_EXPORTS) |=
| defined(caffe2_EXPORTS)
+#else // !defined(AT_CORE_STATIC_WINDOWS)
+#define TH_CPP_API
+#endif // !defined(AT_CORE_STATIC_WINDOWS)
+#else  // _WIN32
+#if defined(__GNUC__)
+#define TH_CPP_API __attribute__((__visibility__("default")))
+#endif // defined(__GNUC__)
+#endif  // _WIN32
+
+#ifdef NO_EXPORT
+#undef TH_CPP_API
+#define TH_CPP_API
+#endif
+
+#define TH_API TH_EXTERNC TH_CPP_API
+
+#ifdef _WIN32
+# define TH_NO_RETURN __declspec(noreturn)
+# define TH_UNREACHABLE
+#else
+# define TH_NO_RETURN __attribute__((noreturn))
+# define TH_UNREACHABLE __builtin_unreachable();
+#endif
+
+#if defined(__GNUC__) && ((__GNUC__ > 2) || (__GNUC__ =3D=3D 2 && __GNUC=
_MINOR__ > 4))
+# define TH_UNUSED __attribute__((unused))
+#else
+# define TH_UNUSED
+#endif
+
+#ifndef M_PI
+# define M_PI 3.14159265358979323846
+#endif
+
+typedef void (*THErrorHandlerFunction)(const char *msg, void *data);
+typedef void (*THArgErrorHandlerFunction)(int argNumber, const char *msg=
, void *data);
+
+#define TH_DESC_BUFF_LEN 64
+typedef struct {
+    char str[TH_DESC_BUFF_LEN];
+} THDescBuff;
+
+
+TH_API THDescBuff _THSizeDesc(const int64_t *size, const int64_t ndim);
+TH_API TH_NO_RETURN void _THError(const char *file, const int line, cons=
t char *fmt, ...);
+TH_API void _THAssertionFailed(const char *file, const int line, const c=
har *exp, const char *fmt, ...);
+TH_API void THSetErrorHandler(THErrorHandlerFunction new_handler, void *=
data);
+TH_API void THSetDefaultErrorHandler(THErrorHandlerFunction new_handler,=
 void *data);
+TH_API void _THArgCheck(const char *file, int line, int condition, int a=
rgNumber, const char *fmt, ...);
+TH_API void THSetArgErrorHandler(THArgErrorHandlerFunction new_handler, =
void *data);
+TH_API void THSetDefaultArgErrorHandler(THArgErrorHandlerFunction new_ha=
ndler, void *data);
+TH_API void* THAlloc(ptrdiff_t size);
+TH_API void* THRealloc(void *ptr, ptrdiff_t size);
+TH_API void THFree(void *ptr);
+TH_API void THSetGCHandler( void (*torchGCHandlerFunction)(void *data), =
void *data );
+// this hook should only be called by custom allocator functions
+TH_API void THHeapUpdate(ptrdiff_t size);
+
+#define THError(...) _THError(__FILE__, __LINE__, __VA_ARGS__)
+
+#define THCleanup(...) __VA_ARGS__
+
+#define THArgCheck(...)                                               \
+do {                                                                  \
+  _THArgCheck(__FILE__, __LINE__, __VA_ARGS__);                       \
+} while(0)
+
+#define THArgError(...)                                               \
+do {                                                                  \
+  _THArgCheck(__FILE__, __LINE__, false, __VA_ARGS__);                \
+  TH_UNREACHABLE                                                      \
+} while(0)
+
+#define THArgCheckWithCleanup(condition, cleanup, ...)                \
+do if (!(condition)) {                                                \
+  cleanup                                                             \
+  _THArgCheck(__FILE__, __LINE__, 0, __VA_ARGS__);                    \
+} while(0)
+
+#define THAssert(exp)                                                 \
+do {                                                                  \
+  if (!(exp)) {                                                       \
+    _THAssertionFailed(__FILE__, __LINE__, #exp, "");                 \
+  }                                                                   \
+} while(0)
+
+#define THAssertMsg(exp, ...)                                         \
+do {                                                                  \
+  if (!(exp)) {                                                       \
+    _THAssertionFailed(__FILE__, __LINE__, #exp, __VA_ARGS__);        \
+  }                                                                   \
+} while(0)
+
+#define TH_CONCAT_STRING_2(x,y) TH_CONCAT_STRING_2_EXPAND(x,y)
+#define TH_CONCAT_STRING_2_EXPAND(x,y) #x #y
+
+#define TH_CONCAT_STRING_3(x,y,z) TH_CONCAT_STRING_3_EXPAND(x,y,z)
+#define TH_CONCAT_STRING_3_EXPAND(x,y,z) #x #y #z
+
+#define TH_CONCAT_STRING_4(x,y,z,w) TH_CONCAT_STRING_4_EXPAND(x,y,z,w)
+#define TH_CONCAT_STRING_4_EXPAND(x,y,z,w) #x #y #z #w
+
+#define TH_CONCAT_2(x,y) TH_CONCAT_2_EXPAND(x,y)
+#define TH_CONCAT_2_EXPAND(x,y) x ## y
+
+#define TH_CONCAT_3(x,y,z) TH_CONCAT_3_EXPAND(x,y,z)
+#define TH_CONCAT_3_EXPAND(x,y,z) x ## y ## z
+
+#define TH_CONCAT_4_EXPAND(x,y,z,w) x ## y ## z ## w
+#define TH_CONCAT_4(x,y,z,w) TH_CONCAT_4_EXPAND(x,y,z,w)
+
+#define THMin(X, Y)  ((X) < (Y) ? (X) : (Y))
+#define THMax(X, Y)  ((X) > (Y) ? (X) : (Y))
+
+#if (defined(_MSC_VER) || defined(__MINGW32__))
+#define snprintf _snprintf
+#define popen _popen
+#define pclose _pclose
+#include <BaseTsd.h>
+#if !defined(HAVE_SSIZE_T)
+typedef SSIZE_T ssize_t;
+#endif
+#endif
+
+#endif
diff --git a/include/aten/src/TH/THGeneral.h.in b/include/aten/src/TH/THG=
eneral.h.in
new file mode 100644
index 0000000..9597581
--- /dev/null
+++ b/include/aten/src/TH/THGeneral.h.in
@@ -0,0 +1,172 @@
+#ifndef TH_GENERAL_INC
+#define TH_GENERAL_INC
+
+#ifndef __STDC_FORMAT_MACROS
+#define __STDC_FORMAT_MACROS
+#endif
+
+#include <stdint.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <stdarg.h>
+#include <math.h>
+#include <limits.h>
+#include <float.h>
+#include <time.h>
+#include <string.h>
+#include <stddef.h>
+#include <inttypes.h>
+
+#ifdef TH_BLAS_MKL
+#include <mkl_vsl.h>
+#endif
+
+#cmakedefine USE_BLAS
+#cmakedefine USE_LAPACK
+#cmakedefine BLAS_F2C
+#cmakedefine BLAS_USE_CBLAS_DOT
+
+# define TH_EXTERNC extern "C"
+
+// Note(jiayq): copied from ATen/core/Macros.h. Because internal build o=
f TH
+// and ATen are not unified yet, we need to duplicate code for now. Long=
 term
+// we should merge macros.
+#ifdef _WIN32
+#if !defined(AT_CORE_STATIC_WINDOWS)
+// TODO: unfiy the controlling macros.
+#if defined(CAFFE2_BUILD_MAIN_LIBS) || defined(ATen_cpu_EXPORTS) || defi=
ned(caffe2_EXPORTS)
+#define TH_CPP_API __declspec(dllexport)
+#else // defined(CAFFE2_BUILD_MAIN_LIBS) || defined(ATen_cpu_EXPORTS) ||=
 defined(caffe2_EXPORTS)
+#define TH_CPP_API __declspec(dllimport)
+#endif // defined(CAFFE2_BUILD_MAIN_LIBS) || defined(ATen_cpu_EXPORTS) |=
| defined(caffe2_EXPORTS)
+#else // !defined(AT_CORE_STATIC_WINDOWS)
+#define TH_CPP_API
+#endif // !defined(AT_CORE_STATIC_WINDOWS)
+#else  // _WIN32
+#if defined(__GNUC__)
+#define TH_CPP_API __attribute__((__visibility__("default")))
+#endif // defined(__GNUC__)
+#endif  // _WIN32
+
+#ifdef NO_EXPORT
+#undef TH_CPP_API
+#define TH_CPP_API
+#endif
+
+#define TH_API TH_EXTERNC TH_CPP_API
+
+#ifdef _WIN32
+# define TH_NO_RETURN __declspec(noreturn)
+# define TH_UNREACHABLE
+#else
+# define TH_NO_RETURN __attribute__((noreturn))
+# define TH_UNREACHABLE __builtin_unreachable();
+#endif
+
+#if defined(__GNUC__) && ((__GNUC__ > 2) || (__GNUC__ =3D=3D 2 && __GNUC=
_MINOR__ > 4))
+# define TH_UNUSED __attribute__((unused))
+#else
+# define TH_UNUSED
+#endif
+
+#if defined(__clang__)
+#define __ubsan_ignore_float_divide_by_zero__ __attribute__((no_sanitize=
("float-divide-by-zero")))
+#else
+#define __ubsan_ignore_float_divide_by_zero__
+#endif
+
+#ifndef M_PI
+# define M_PI 3.14159265358979323846
+#endif
+
+typedef void (*THErrorHandlerFunction)(const char *msg, void *data);
+typedef void (*THArgErrorHandlerFunction)(int argNumber, const char *msg=
, void *data);
+
+#define TH_DESC_BUFF_LEN 64
+typedef struct {
+    char str[TH_DESC_BUFF_LEN];
+} THDescBuff;
+
+
+TH_API THDescBuff _THSizeDesc(const int64_t *size, const int64_t ndim);
+TH_API TH_NO_RETURN void _THError(const char *file, const int line, cons=
t char *fmt, ...);
+TH_API void _THAssertionFailed(const char *file, const int line, const c=
har *exp, const char *fmt, ...);
+TH_API void THSetErrorHandler(THErrorHandlerFunction new_handler, void *=
data);
+TH_API void THSetDefaultErrorHandler(THErrorHandlerFunction new_handler,=
 void *data);
+TH_API void _THArgCheck(const char *file, int line, int condition, int a=
rgNumber, const char *fmt, ...);
+TH_API void THSetArgErrorHandler(THArgErrorHandlerFunction new_handler, =
void *data);
+TH_API void THSetDefaultArgErrorHandler(THArgErrorHandlerFunction new_ha=
ndler, void *data);
+TH_API void* THAlloc(ptrdiff_t size);
+TH_API void* THRealloc(void *ptr, ptrdiff_t size);
+TH_API void THFree(void *ptr);
+TH_API void THSetGCHandler( void (*torchGCHandlerFunction)(void *data), =
void *data );
+// this hook should only be called by custom allocator functions
+TH_API void THHeapUpdate(ptrdiff_t size);
+
+#define THError(...) _THError(__FILE__, __LINE__, __VA_ARGS__)
+
+#define THCleanup(...) __VA_ARGS__
+
+#define THArgCheck(...)                                               \
+do {                                                                  \
+  _THArgCheck(__FILE__, __LINE__, __VA_ARGS__);                       \
+} while(0)
+
+#define THArgError(...)                                               \
+do {                                                                  \
+  _THArgCheck(__FILE__, __LINE__, false, __VA_ARGS__);                \
+  TH_UNREACHABLE                                                      \
+} while(0)
+
+#define THArgCheckWithCleanup(condition, cleanup, ...)                \
+do if (!(condition)) {                                                \
+  cleanup                                                             \
+  _THArgCheck(__FILE__, __LINE__, 0, __VA_ARGS__);                    \
+} while(0)
+
+#define THAssert(exp)                                                 \
+do {                                                                  \
+  if (!(exp)) {                                                       \
+    _THAssertionFailed(__FILE__, __LINE__, #exp, "");                 \
+  }                                                                   \
+} while(0)
+
+#define THAssertMsg(exp, ...)                                         \
+do {                                                                  \
+  if (!(exp)) {                                                       \
+    _THAssertionFailed(__FILE__, __LINE__, #exp, __VA_ARGS__);        \
+  }                                                                   \
+} while(0)
+
+#define TH_CONCAT_STRING_2(x,y) TH_CONCAT_STRING_2_EXPAND(x,y)
+#define TH_CONCAT_STRING_2_EXPAND(x,y) #x #y
+
+#define TH_CONCAT_STRING_3(x,y,z) TH_CONCAT_STRING_3_EXPAND(x,y,z)
+#define TH_CONCAT_STRING_3_EXPAND(x,y,z) #x #y #z
+
+#define TH_CONCAT_STRING_4(x,y,z,w) TH_CONCAT_STRING_4_EXPAND(x,y,z,w)
+#define TH_CONCAT_STRING_4_EXPAND(x,y,z,w) #x #y #z #w
+
+#define TH_CONCAT_2(x,y) TH_CONCAT_2_EXPAND(x,y)
+#define TH_CONCAT_2_EXPAND(x,y) x ## y
+
+#define TH_CONCAT_3(x,y,z) TH_CONCAT_3_EXPAND(x,y,z)
+#define TH_CONCAT_3_EXPAND(x,y,z) x ## y ## z
+
+#define TH_CONCAT_4_EXPAND(x,y,z,w) x ## y ## z ## w
+#define TH_CONCAT_4(x,y,z,w) TH_CONCAT_4_EXPAND(x,y,z,w)
+
+#define THMin(X, Y)  ((X) < (Y) ? (X) : (Y))
+#define THMax(X, Y)  ((X) > (Y) ? (X) : (Y))
+
+#if (defined(_MSC_VER) || defined(__MINGW32__))
+#define snprintf _snprintf
+#define popen _popen
+#define pclose _pclose
+#include <BaseTsd.h>
+#if !defined(HAVE_SSIZE_T)
+typedef SSIZE_T ssize_t;
+#endif
+#endif
+
+#endif
diff --git a/include/bits/fenv.h b/include/bits/fenv.h
new file mode 100644
index 0000000..c113b7c
--- /dev/null
+++ b/include/bits/fenv.h
@@ -0,0 +1,18 @@
+#define FE_INVALID    1
+#define FE_DIVBYZERO  2
+#define FE_OVERFLOW   4
+#define FE_UNDERFLOW  8
+#define FE_INEXACT    16
+#define FE_ALL_EXCEPT 31
+#define FE_TONEAREST  0
+#define FE_DOWNWARD   0x800000
+#define FE_UPWARD     0x400000
+#define FE_TOWARDZERO 0xc00000
+
+typedef unsigned long fexcept_t;
+
+typedef struct {
+	unsigned long __cw;
+} fenv_t;
+
+#define FE_DFL_ENV      ((const fenv_t *) -1)
diff --git a/include/c10/macros/cmake_macros.h b/include/c10/macros/cmake=
_macros.h
new file mode 100644
index 0000000..837195f
--- /dev/null
+++ b/include/c10/macros/cmake_macros.h
@@ -0,0 +1,22 @@
+#ifndef C10_MACROS_CMAKE_MACROS_H_
+#define C10_MACROS_CMAKE_MACROS_H_
+
+// Automatically generated header file for the C10 library.
+// Do not include this file directly. Instead, include c10/macros/Macros=
.h.
+
+// #define C10_BUILD_SHARED_LIBS
+/* #undef C10_USE_GLOG */
+/* #undef C10_USE_GFLAGS */
+/* #undef C10_USE_NUMA */
+
+// Used by libtorch mobile build to enable features that are not enabled=
 by
+// caffe2 mobile build. Should only use it when necessary as we are comm=
itted
+// to converging libtorch and caffe2 mobile builds and removing it event=
ually.
+/* #undef FEATURE_TORCH_MOBILE */
+
+// If defined it will use static dispatch for ATen operators.
+// Should expose this macro for projects including ATen headers to inher=
ient
+// the same option.
+/* #undef USE_STATIC_DISPATCH */
+
+#endif // C10_MACROS_CMAKE_MACROS_H_
diff --git a/include/cpuinfo.h b/include/cpuinfo.h
new file mode 100644
index 0000000..fc0abcf
--- /dev/null
+++ b/include/cpuinfo.h
@@ -0,0 +1,1821 @@
+/*
+ Copyright (c) 2017-2018 Facebook Inc.
+ Copyright (C) 2012-2017 Georgia Institute of Technology
+ Copyright (C) 2010-2012 Marat Dukhan
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are =
met:
+
+ * Redistributions of source code must retain the above copyright notice=
, this
+   list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright not=
ice,
+   this list of conditions and the following disclaimer in the documenta=
tion
+   and/or other materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS=
 IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, T=
HE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURP=
OSE ARE
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE L=
IABLE
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENT=
IAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS=
 OR
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWE=
VER
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIAB=
ILITY,
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF T=
HE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#pragma once
+#ifndef CPUINFO_H
+#define CPUINFO_H
+
+#ifndef __cplusplus
+	#include <stdbool.h>
+#endif
+
+#ifdef __APPLE__
+	#include <TargetConditionals.h>
+#endif
+
+#include <stdint.h>
+
+/* Identify architecture and define corresponding macro */
+
+#if defined(__i386__) || defined(__i486__) || defined(__i586__) || defin=
ed(__i686__) || defined(_M_IX86)
+	#define CPUINFO_ARCH_X86 1
+#endif
+
+#if defined(__x86_64__) || defined(__x86_64) || defined(_M_X64) || defin=
ed(_M_AMD64)
+	#define CPUINFO_ARCH_X86_64 1
+#endif
+
+#if defined(__arm__) || defined(_M_ARM)
+	#define CPUINFO_ARCH_ARM 1
+#endif
+
+#if defined(__aarch64__) || defined(_M_ARM64)
+	#define CPUINFO_ARCH_ARM64 1
+#endif
+
+#if defined(__PPC64__) || defined(__powerpc64__) || defined(_ARCH_PPC64)
+	#define CPUINFO_ARCH_PPC64 1
+#endif
+
+#if defined(__pnacl__)
+	#define CPUINFO_ARCH_PNACL 1
+#endif
+
+#if defined(EMSCRIPTEN)
+	#define CPUINFO_ARCH_ASMJS 1
+#endif
+
+#if CPUINFO_ARCH_X86 && defined(_MSC_VER)
+	#define CPUINFO_ABI __cdecl
+#elif CPUINFO_ARCH_X86 && defined(__GNUC__)
+	#define CPUINFO_ABI __attribute__((__cdecl__))
+#else
+	#define CPUINFO_ABI
+#endif
+
+/* Define other architecture-specific macros as 0 */
+
+#ifndef CPUINFO_ARCH_X86
+	#define CPUINFO_ARCH_X86 0
+#endif
+
+#ifndef CPUINFO_ARCH_X86_64
+	#define CPUINFO_ARCH_X86_64 0
+#endif
+
+#ifndef CPUINFO_ARCH_ARM
+	#define CPUINFO_ARCH_ARM 0
+#endif
+
+#ifndef CPUINFO_ARCH_ARM64
+	#define CPUINFO_ARCH_ARM64 0
+#endif
+
+#ifndef CPUINFO_ARCH_PPC64
+	#define CPUINFO_ARCH_PPC64 0
+#endif
+
+#ifndef CPUINFO_ARCH_PNACL
+	#define CPUINFO_ARCH_PNACL 0
+#endif
+
+#ifndef CPUINFO_ARCH_ASMJS
+	#define CPUINFO_ARCH_ASMJS 0
+#endif
+
+#define CPUINFO_CACHE_UNIFIED          0x00000001
+#define CPUINFO_CACHE_INCLUSIVE        0x00000002
+#define CPUINFO_CACHE_COMPLEX_INDEXING 0x00000004
+
+struct cpuinfo_cache {
+	/** Cache size in bytes */
+	uint32_t size;
+	/** Number of ways of associativity */
+	uint32_t associativity;
+	/** Number of sets */
+	uint32_t sets;
+	/** Number of partitions */
+	uint32_t partitions;
+	/** Line size in bytes */
+	uint32_t line_size;
+	/**
+	 * Binary characteristics of the cache (unified cache, inclusive cache,=
 cache with complex indexing).
+	 *
+	 * @see CPUINFO_CACHE_UNIFIED, CPUINFO_CACHE_INCLUSIVE, CPUINFO_CACHE_C=
OMPLEX_INDEXING
+	 */
+	uint32_t flags;
+	/** Index of the first logical processor that shares this cache */
+	uint32_t processor_start;
+	/** Number of logical processors that share this cache */
+	uint32_t processor_count;
+};
+
+struct cpuinfo_trace_cache {
+	uint32_t uops;
+	uint32_t associativity;
+};
+
+#define CPUINFO_PAGE_SIZE_4KB  0x1000
+#define CPUINFO_PAGE_SIZE_1MB  0x100000
+#define CPUINFO_PAGE_SIZE_2MB  0x200000
+#define CPUINFO_PAGE_SIZE_4MB  0x400000
+#define CPUINFO_PAGE_SIZE_16MB 0x1000000
+#define CPUINFO_PAGE_SIZE_1GB  0x40000000
+
+struct cpuinfo_tlb {
+	uint32_t entries;
+	uint32_t associativity;
+	uint64_t pages;
+};
+
+/** Vendor of processor core design */
+enum cpuinfo_vendor {
+	/** Processor vendor is not known to the library, or the library failed=
 to get vendor information from the OS. */
+	cpuinfo_vendor_unknown =3D 0,
+
+	/* Active vendors of modern CPUs */
+
+	/**
+	 * Intel Corporation. Vendor of x86, x86-64, IA64, and ARM processor mi=
croarchitectures.
+	 *
+	 * Sold its ARM design subsidiary in 2006. The last ARM processor desig=
n was released in 2004.
+	 */
+	cpuinfo_vendor_intel    =3D 1,
+	/** Advanced Micro Devices, Inc. Vendor of x86 and x86-64 processor mic=
roarchitectures. */
+	cpuinfo_vendor_amd      =3D 2,
+	/** ARM Holdings plc. Vendor of ARM and ARM64 processor microarchitectu=
res. */
+	cpuinfo_vendor_arm      =3D 3,
+	/** Qualcomm Incorporated. Vendor of ARM and ARM64 processor microarchi=
tectures. */
+	cpuinfo_vendor_qualcomm =3D 4,
+	/** Apple Inc. Vendor of ARM and ARM64 processor microarchitectures. */
+	cpuinfo_vendor_apple    =3D 5,
+	/** Samsung Electronics Co., Ltd. Vendir if ARM64 processor microarchit=
ectures. */
+	cpuinfo_vendor_samsung  =3D 6,
+	/** Nvidia Corporation. Vendor of ARM64-compatible processor microarchi=
tectures. */
+	cpuinfo_vendor_nvidia   =3D 7,
+	/** MIPS Technologies, Inc. Vendor of MIPS processor microarchitectures=
. */
+	cpuinfo_vendor_mips     =3D 8,
+	/** International Business Machines Corporation. Vendor of PowerPC proc=
essor microarchitectures. */
+	cpuinfo_vendor_ibm      =3D 9,
+	/** Ingenic Semiconductor. Vendor of MIPS processor microarchitectures.=
 */
+	cpuinfo_vendor_ingenic  =3D 10,
+	/**
+	 * VIA Technologies, Inc. Vendor of x86 and x86-64 processor microarchi=
tectures.
+	 *
+	 * Processors are designed by Centaur Technology, a subsidiary of VIA T=
echnologies.
+	 */
+	cpuinfo_vendor_via      =3D 11,
+	/** Cavium, Inc. Vendor of ARM64 processor microarchitectures. */
+	cpuinfo_vendor_cavium   =3D 12,
+	/** Broadcom, Inc. Vendor of ARM processor microarchitectures. */
+	cpuinfo_vendor_broadcom =3D 13,
+	/** Applied Micro Circuits Corporation (APM). Vendor of ARM64 processor=
 microarchitectures. */
+	cpuinfo_vendor_apm      =3D 14,
+	/**
+	 * Huawei Technologies Co., Ltd. Vendor of ARM64 processor microarchite=
ctures.
+	 *
+	 * Processors are designed by HiSilicon, a subsidiary of Huawei.
+	 */
+	cpuinfo_vendor_huawei   =3D 15,
+
+	/* Active vendors of embedded CPUs */
+
+	/** Texas Instruments Inc. Vendor of ARM processor microarchitectures. =
*/
+	cpuinfo_vendor_texas_instruments =3D 30,
+	/** Marvell Technology Group Ltd. Vendor of ARM processor microarchitec=
tures. */
+	cpuinfo_vendor_marvell           =3D 31,
+	/** RDC Semiconductor Co., Ltd. Vendor of x86 processor microarchitectu=
res. */
+	cpuinfo_vendor_rdc               =3D 32,
+	/** DM&P Electronics Inc. Vendor of x86 processor microarchitectures. *=
/
+	cpuinfo_vendor_dmp               =3D 33,
+	/** Motorola, Inc. Vendor of PowerPC and ARM processor microarchitectur=
es. */
+	cpuinfo_vendor_motorola          =3D 34,
+
+	/* Defunct CPU vendors */
+
+	/**
+	 * Transmeta Corporation. Vendor of x86 processor microarchitectures.
+	 *
+	 * Now defunct. The last processor design was released in 2004.
+	 * Transmeta processors implemented VLIW ISA and used binary translatio=
n to execute x86 code.
+	 */
+	cpuinfo_vendor_transmeta =3D 50,
+	/**
+	 * Cyrix Corporation. Vendor of x86 processor microarchitectures.
+	 *
+	 * Now defunct. The last processor design was released in 1996.
+	 */
+	cpuinfo_vendor_cyrix     =3D 51,
+	/**
+	 * Rise Technology. Vendor of x86 processor microarchitectures.
+	 *
+	 * Now defunct. The last processor design was released in 1999.
+	 */
+	cpuinfo_vendor_rise      =3D 52,
+	/**
+	 * National Semiconductor. Vendor of x86 processor microarchitectures.
+	 *
+	 * Sold its x86 design subsidiary in 1999. The last processor design wa=
s released in 1998.
+	 */
+	cpuinfo_vendor_nsc       =3D 53,
+	/**
+	 * Silicon Integrated Systems. Vendor of x86 processor microarchitectur=
es.
+	 *
+	 * Sold its x86 design subsidiary in 2001. The last processor design wa=
s released in 2001.
+	 */
+	cpuinfo_vendor_sis       =3D 54,
+	/**
+	 * NexGen. Vendor of x86 processor microarchitectures.
+	 *
+	 * Now defunct. The last processor design was released in 1994.
+	 * NexGen designed the first x86 microarchitecture which decomposed x86=
 instructions into simple microoperations.
+	 */
+	cpuinfo_vendor_nexgen    =3D 55,
+	/**
+	 * United Microelectronics Corporation. Vendor of x86 processor microar=
chitectures.
+	 *
+	 * Ceased x86 in the early 1990s. The last processor design was release=
d in 1991.
+	 * Designed U5C and U5D processors. Both are 486 level.
+	 */
+	cpuinfo_vendor_umc       =3D 56,
+	/**
+	 * Digital Equipment Corporation. Vendor of ARM processor microarchitec=
ture.
+	 *
+	 * Sold its ARM designs in 1997. The last processor design was released=
 in 1997.
+	 */
+	cpuinfo_vendor_dec       =3D 57,
+};
+
+/**
+ * Processor microarchitecture
+ *
+ * Processors with different microarchitectures often have different ins=
truction performance characteristics,
+ * and may have dramatically different pipeline organization.
+ */
+enum cpuinfo_uarch {
+	/** Microarchitecture is unknown, or the library failed to get informat=
ion about the microarchitecture from OS */
+	cpuinfo_uarch_unknown =3D 0,
+
+	/** Pentium and Pentium MMX microarchitecture. */
+	cpuinfo_uarch_p5    =3D 0x00100100,
+	/** Intel Quark microarchitecture. */
+	cpuinfo_uarch_quark =3D 0x00100101,
+
+	/** Pentium Pro, Pentium II, and Pentium III. */
+	cpuinfo_uarch_p6           =3D 0x00100200,
+	/** Pentium M. */
+	cpuinfo_uarch_dothan       =3D 0x00100201,
+	/** Intel Core microarchitecture. */
+	cpuinfo_uarch_yonah        =3D 0x00100202,
+	/** Intel Core 2 microarchitecture on 65 nm process. */
+	cpuinfo_uarch_conroe       =3D 0x00100203,
+	/** Intel Core 2 microarchitecture on 45 nm process. */
+	cpuinfo_uarch_penryn       =3D 0x00100204,
+	/** Intel Nehalem and Westmere microarchitectures (Core i3/i5/i7 1st ge=
n). */
+	cpuinfo_uarch_nehalem      =3D 0x00100205,
+	/** Intel Sandy Bridge microarchitecture (Core i3/i5/i7 2nd gen). */
+	cpuinfo_uarch_sandy_bridge =3D 0x00100206,
+	/** Intel Ivy Bridge microarchitecture (Core i3/i5/i7 3rd gen). */
+	cpuinfo_uarch_ivy_bridge   =3D 0x00100207,
+	/** Intel Haswell microarchitecture (Core i3/i5/i7 4th gen). */
+	cpuinfo_uarch_haswell      =3D 0x00100208,
+	/** Intel Broadwell microarchitecture. */
+	cpuinfo_uarch_broadwell    =3D 0x00100209,
+	/** Intel Sky Lake microarchitecture. */
+	cpuinfo_uarch_sky_lake     =3D 0x0010020A,
+	/** Intel Kaby Lake microarchitecture. */
+	cpuinfo_uarch_kaby_lake    =3D 0x0010020B,
+
+	/** Pentium 4 with Willamette, Northwood, or Foster cores. */
+	cpuinfo_uarch_willamette =3D 0x00100300,
+	/** Pentium 4 with Prescott and later cores. */
+	cpuinfo_uarch_prescott   =3D 0x00100301,
+
+	/** Intel Atom on 45 nm process. */
+	cpuinfo_uarch_bonnell    =3D 0x00100400,
+	/** Intel Atom on 32 nm process. */
+	cpuinfo_uarch_saltwell   =3D 0x00100401,
+	/** Intel Silvermont microarchitecture (22 nm out-of-order Atom). */
+	cpuinfo_uarch_silvermont =3D 0x00100402,
+	/** Intel Airmont microarchitecture (14 nm out-of-order Atom). */
+	cpuinfo_uarch_airmont    =3D 0x00100403,
+
+	/** Intel Knights Ferry HPC boards. */
+	cpuinfo_uarch_knights_ferry   =3D 0x00100500,
+	/** Intel Knights Corner HPC boards (aka Xeon Phi). */
+	cpuinfo_uarch_knights_corner  =3D 0x00100501,
+	/** Intel Knights Landing microarchitecture (second-gen MIC). */
+	cpuinfo_uarch_knights_landing =3D 0x00100502,
+	/** Intel Knights Hill microarchitecture (third-gen MIC). */
+	cpuinfo_uarch_knights_hill    =3D 0x00100503,
+	/** Intel Knights Mill Xeon Phi. */
+	cpuinfo_uarch_knights_mill    =3D 0x00100504,
+
+	/** Intel/Marvell XScale series. */
+	cpuinfo_uarch_xscale =3D 0x00100600,
+
+	/** AMD K5. */
+	cpuinfo_uarch_k5        =3D 0x00200100,
+	/** AMD K6 and alike. */
+	cpuinfo_uarch_k6        =3D 0x00200101,
+	/** AMD Athlon and Duron. */
+	cpuinfo_uarch_k7        =3D 0x00200102,
+	/** AMD Athlon 64, Opteron 64. */
+	cpuinfo_uarch_k8        =3D 0x00200103,
+	/** AMD Family 10h (Barcelona, Istambul, Magny-Cours). */
+	cpuinfo_uarch_k10       =3D 0x00200104,
+	/**
+	 * AMD Bulldozer microarchitecture
+	 * Zambezi FX-series CPUs, Zurich, Valencia and Interlagos Opteron CPUs=
.
+	 */
+	cpuinfo_uarch_bulldozer =3D 0x00200105,
+	/**
+	 * AMD Piledriver microarchitecture
+	 * Vishera FX-series CPUs, Trinity and Richland APUs, Delhi, Seoul, Abu=
 Dhabi Opteron CPUs.
+	 */
+	cpuinfo_uarch_piledriver  =3D 0x00200106,
+	/** AMD Steamroller microarchitecture (Kaveri APUs). */
+	cpuinfo_uarch_steamroller =3D 0x00200107,
+	/** AMD Excavator microarchitecture (Carizzo APUs). */
+	cpuinfo_uarch_excavator   =3D 0x00200108,
+	/** AMD Zen microarchitecture (Ryzen CPUs). */
+	cpuinfo_uarch_zen         =3D 0x00200109,
+
+	/** NSC Geode and AMD Geode GX and LX. */
+	cpuinfo_uarch_geode  =3D 0x00200200,
+	/** AMD Bobcat mobile microarchitecture. */
+	cpuinfo_uarch_bobcat =3D 0x00200201,
+	/** AMD Jaguar mobile microarchitecture. */
+	cpuinfo_uarch_jaguar =3D 0x00200202,
+	/** AMD Puma mobile microarchitecture. */
+	cpuinfo_uarch_puma   =3D 0x00200203,
+
+	/** ARM7 series. */
+	cpuinfo_uarch_arm7  =3D 0x00300100,
+	/** ARM9 series. */
+	cpuinfo_uarch_arm9  =3D 0x00300101,
+	/** ARM 1136, ARM 1156, ARM 1176, or ARM 11MPCore. */
+	cpuinfo_uarch_arm11 =3D 0x00300102,
+
+	/** ARM Cortex-A5. */
+	cpuinfo_uarch_cortex_a5  =3D 0x00300205,
+	/** ARM Cortex-A7. */
+	cpuinfo_uarch_cortex_a7  =3D 0x00300207,
+	/** ARM Cortex-A8. */
+	cpuinfo_uarch_cortex_a8  =3D 0x00300208,
+	/** ARM Cortex-A9. */
+	cpuinfo_uarch_cortex_a9  =3D 0x00300209,
+	/** ARM Cortex-A12. */
+	cpuinfo_uarch_cortex_a12 =3D 0x00300212,
+	/** ARM Cortex-A15. */
+	cpuinfo_uarch_cortex_a15 =3D 0x00300215,
+	/** ARM Cortex-A17. */
+	cpuinfo_uarch_cortex_a17 =3D 0x00300217,
+
+	/** ARM Cortex-A32. */
+	cpuinfo_uarch_cortex_a32 =3D 0x00300332,
+	/** ARM Cortex-A35. */
+	cpuinfo_uarch_cortex_a35 =3D 0x00300335,
+	/** ARM Cortex-A53. */
+	cpuinfo_uarch_cortex_a53 =3D 0x00300353,
+	/** ARM Cortex-A55. */
+	cpuinfo_uarch_cortex_a55 =3D 0x00300355,
+	/** ARM Cortex-A57. */
+	cpuinfo_uarch_cortex_a57 =3D 0x00300357,
+	/** ARM Cortex-A72. */
+	cpuinfo_uarch_cortex_a72 =3D 0x00300372,
+	/** ARM Cortex-A73. */
+	cpuinfo_uarch_cortex_a73 =3D 0x00300373,
+	/** ARM Cortex-A75. */
+	cpuinfo_uarch_cortex_a75 =3D 0x00300375,
+	/** ARM Cortex-A76. */
+	cpuinfo_uarch_cortex_a76 =3D 0x00300376,
+
+	/** Qualcomm Scorpion. */
+	cpuinfo_uarch_scorpion =3D 0x00400100,
+	/** Qualcomm Krait. */
+	cpuinfo_uarch_krait    =3D 0x00400101,
+	/** Qualcomm Kryo. */
+	cpuinfo_uarch_kryo     =3D 0x00400102,
+	/** Qualcomm Falkor. */
+	cpuinfo_uarch_falkor   =3D 0x00400103,
+	/** Qualcomm Saphira. */
+	cpuinfo_uarch_saphira  =3D 0x00400104,
+
+	/** Nvidia Denver. */
+	cpuinfo_uarch_denver   =3D 0x00500100,
+	/** Nvidia Denver 2. */
+	cpuinfo_uarch_denver2  =3D 0x00500101,
+	/** Nvidia Carmel. */
+	cpuinfo_uarch_carmel   =3D 0x00500102,
+
+	/** Samsung Mongoose M1 (Exynos 8890 big cores). */
+	cpuinfo_uarch_mongoose_m1 =3D 0x00600100,
+	/** Samsung Mongoose M2 (Exynos 8895 big cores). */
+	cpuinfo_uarch_mongoose_m2 =3D 0x00600101,
+	/** Samsung Meerkat M3 (Exynos 9810 big cores). */
+	cpuinfo_uarch_meerkat_m3  =3D 0x00600102,
+
+	/** Apple A6 and A6X processors. */
+	cpuinfo_uarch_swift     =3D 0x00700100,
+	/** Apple A7 processor. */
+	cpuinfo_uarch_cyclone   =3D 0x00700101,
+	/** Apple A8 and A8X processor. */
+	cpuinfo_uarch_typhoon   =3D 0x00700102,
+	/** Apple A9 and A9X processor. */
+	cpuinfo_uarch_twister   =3D 0x00700103,
+	/** Apple A10 and A10X processor. */
+	cpuinfo_uarch_hurricane =3D 0x00700104,
+	/** Apple A11 processor (big cores). */
+	cpuinfo_uarch_monsoon   =3D 0x00700105,
+	/** Apple A11 processor (little cores). */
+	cpuinfo_uarch_mistral   =3D 0x00700106,
+
+	/** Cavium ThunderX. */
+	cpuinfo_uarch_thunderx =3D 0x00800100,
+	/** Cavium ThunderX2 (originally Broadcom Vulkan). */
+	cpuinfo_uarch_thunderx2 =3D 0x00800200,
+
+	/** Marvell PJ4. */
+	cpuinfo_uarch_pj4 =3D 0x00900100,
+
+	/** Broadcom Brahma B15. */
+	cpuinfo_uarch_brahma_b15 =3D 0x00A00100,
+	/** Broadcom Brahma B53. */
+	cpuinfo_uarch_brahma_b53 =3D 0x00A00101,
+
+	/** Applied Micro X-Gene. */
+	cpuinfo_uarch_xgene =3D 0x00B00100,
+};
+
+struct cpuinfo_processor {
+	/** SMT (hyperthread) ID within a core */
+	uint32_t smt_id;
+	/** Core containing this logical processor */
+	const struct cpuinfo_core* core;
+	/** Cluster of cores containing this logical processor */
+	const struct cpuinfo_cluster* cluster;
+	/** Physical package containing this logical processor */
+	const struct cpuinfo_package* package;
+#if defined(__linux__)
+	/**
+	 * Linux-specific ID for the logical processor:
+	 * - Linux kernel exposes information about this logical processor in /=
sys/devices/system/cpu/cpu<linux_id>/
+	 * - Bit <linux_id> in the cpu_set_t identifies this logical processor
+	 */
+	int linux_id;
+#endif
+#if defined(_WIN32)
+	/** Windows-specific ID for the group containing the logical processor.=
 */
+	uint16_t windows_group_id;
+	/**
+	 * Windows-specific ID of the logical processor within its group:
+	 * - Bit <windows_processor_id> in the KAFFINITY mask identifies this l=
ogical processor within its group.
+	 */
+	uint16_t windows_processor_id;
+#endif
+#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+	/** APIC ID (unique x86-specific ID of the logical processor) */
+	uint32_t apic_id;
+#endif
+	struct {
+		/** Level 1 instruction cache */
+		const struct cpuinfo_cache* l1i;
+		/** Level 1 data cache */
+		const struct cpuinfo_cache* l1d;
+		/** Level 2 unified or data cache */
+		const struct cpuinfo_cache* l2;
+		/** Level 3 unified or data cache */
+		const struct cpuinfo_cache* l3;
+		/** Level 4 unified or data cache */
+		const struct cpuinfo_cache* l4;
+	} cache;
+};
+
+struct cpuinfo_core {
+	/** Index of the first logical processor on this core. */
+	uint32_t processor_start;
+	/** Number of logical processors on this core */
+	uint32_t processor_count;
+	/** Core ID within a package */
+	uint32_t core_id;
+	/** Cluster containing this core */
+	const struct cpuinfo_cluster* cluster;
+	/** Physical package containing this core. */
+	const struct cpuinfo_package* package;
+	/** Vendor of the CPU microarchitecture for this core */
+	enum cpuinfo_vendor vendor;
+	/** CPU microarchitecture for this core */
+	enum cpuinfo_uarch uarch;
+#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+	/** Value of CPUID leaf 1 EAX register for this core */
+	uint32_t cpuid;
+#elif CPUINFO_ARCH_ARM || CPUINFO_ARCH_ARM64
+	/** Value of Main ID Register (MIDR) for this core */
+	uint32_t midr;
+#endif
+	/** Clock rate (non-Turbo) of the core, in Hz */
+	uint64_t frequency;
+};
+
+struct cpuinfo_cluster {
+	/** Index of the first logical processor in the cluster */
+	uint32_t processor_start;
+	/** Number of logical processors in the cluster */
+	uint32_t processor_count;
+	/** Index of the first core in the cluster */
+	uint32_t core_start;
+	/** Number of cores on the cluster */
+	uint32_t core_count;
+	/** Cluster ID within a package */
+	uint32_t cluster_id;
+	/** Physical package containing the cluster */
+	const struct cpuinfo_package* package;
+	/** CPU microarchitecture vendor of the cores in the cluster */
+	enum cpuinfo_vendor vendor;
+	/** CPU microarchitecture of the cores in the cluster */
+	enum cpuinfo_uarch uarch;
+#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+	/** Value of CPUID leaf 1 EAX register of the cores in the cluster */
+	uint32_t cpuid;
+#elif CPUINFO_ARCH_ARM || CPUINFO_ARCH_ARM64
+	/** Value of Main ID Register (MIDR) of the cores in the cluster */
+	uint32_t midr;
+#endif
+	/** Clock rate (non-Turbo) of the cores in the cluster, in Hz */
+	uint64_t frequency;
+};
+
+#define CPUINFO_PACKAGE_NAME_MAX 48
+
+struct cpuinfo_package {
+	/** SoC or processor chip model name */
+	char name[CPUINFO_PACKAGE_NAME_MAX];
+	/** Index of the first logical processor on this physical package */
+	uint32_t processor_start;
+	/** Number of logical processors on this physical package */
+	uint32_t processor_count;
+	/** Index of the first core on this physical package */
+	uint32_t core_start;
+	/** Number of cores on this physical package */
+	uint32_t core_count;
+	/** Index of the first cluster of cores on this physical package */
+	uint32_t cluster_start;
+	/** Number of clusters of cores on this physical package */
+	uint32_t cluster_count;
+};
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define cpuinfo_initialize() true
+#define cpuinfo_deinitialize() true
+//bool CPUINFO_ABI cpuinfo_initialize(void)
+//{
+//	return 1;
+//}
+
+//void CPUINFO_ABI cpuinfo_deinitialize(void)
+//{
+
+//}
+
+#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+	/* This structure is not a part of stable API. Use cpuinfo_has_x86_* fu=
nctions instead. */
+	struct cpuinfo_x86_isa {
+		#if CPUINFO_ARCH_X86
+			bool rdtsc;
+		#endif
+		bool rdtscp;
+		bool rdpid;
+		bool sysenter;
+		#if CPUINFO_ARCH_X86
+			bool syscall;
+		#endif
+		bool msr;
+		bool clzero;
+		bool clflush;
+		bool clflushopt;
+		bool mwait;
+		bool mwaitx;
+		#if CPUINFO_ARCH_X86
+			bool emmx;
+		#endif
+		bool fxsave;
+		bool xsave;
+		#if CPUINFO_ARCH_X86
+			bool fpu;
+			bool mmx;
+			bool mmx_plus;
+		#endif
+		bool three_d_now;
+		bool three_d_now_plus;
+		#if CPUINFO_ARCH_X86
+			bool three_d_now_geode;
+		#endif
+		bool prefetch;
+		bool prefetchw;
+		bool prefetchwt1;
+		#if CPUINFO_ARCH_X86
+			bool daz;
+			bool sse;
+			bool sse2;
+		#endif
+		bool sse3;
+		bool ssse3;
+		bool sse4_1;
+		bool sse4_2;
+		bool sse4a;
+		bool misaligned_sse;
+		bool avx;
+		bool fma3;
+		bool fma4;
+		bool xop;
+		bool f16c;
+		bool avx2;
+		bool avx512f;
+		bool avx512pf;
+		bool avx512er;
+		bool avx512cd;
+		bool avx512dq;
+		bool avx512bw;
+		bool avx512vl;
+		bool avx512ifma;
+		bool avx512vbmi;
+		bool avx512vbmi2;
+		bool avx512bitalg;
+		bool avx512vpopcntdq;
+		bool avx512vnni;
+		bool avx512_4vnniw;
+		bool avx512_4fmaps;
+		bool hle;
+		bool rtm;
+		bool xtest;
+		bool mpx;
+		#if CPUINFO_ARCH_X86
+			bool cmov;
+			bool cmpxchg8b;
+		#endif
+		bool cmpxchg16b;
+		bool clwb;
+		bool movbe;
+		#if CPUINFO_ARCH_X86_64
+			bool lahf_sahf;
+		#endif
+		bool fs_gs_base;
+		bool lzcnt;
+		bool popcnt;
+		bool tbm;
+		bool bmi;
+		bool bmi2;
+		bool adx;
+		bool aes;
+		bool vaes;
+		bool pclmulqdq;
+		bool vpclmulqdq;
+		bool gfni;
+		bool rdrand;
+		bool rdseed;
+		bool sha;
+		bool rng;
+		bool ace;
+		bool ace2;
+		bool phe;
+		bool pmm;
+		bool lwp;
+	};
+
+	extern struct cpuinfo_x86_isa cpuinfo_isa;
+#endif
+
+	/*
+static inline bool cpuinfo_has_x86_rdtsc(void) {
+	#if CPUINFO_ARCH_X86_64
+		return true;
+	#elif CPUINFO_ARCH_X86
+		#if defined(__ANDROID__)
+			return true;
+		#else
+			return cpuinfo_isa.rdtsc;
+		#endif
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_rdtscp(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.rdtscp;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_rdpid(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.rdpid;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_clzero(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.clzero;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_mwait(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.mwait;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_mwaitx(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.mwaitx;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_fxsave(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.fxsave;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_xsave(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.xsave;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_fpu(void) {
+	#if CPUINFO_ARCH_X86_64
+		return true;
+	#elif CPUINFO_ARCH_X86
+		#if defined(__ANDROID__)
+			return true;
+		#else
+			return cpuinfo_isa.fpu;
+		#endif
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_mmx(void) {
+	#if CPUINFO_ARCH_X86_64
+		return true;
+	#elif CPUINFO_ARCH_X86
+		#if defined(__ANDROID__)
+			return true;
+		#else
+			return cpuinfo_isa.mmx;
+		#endif
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_mmx_plus(void) {
+	#if CPUINFO_ARCH_X86_64
+		return true;
+	#elif CPUINFO_ARCH_X86
+		#if defined(__ANDROID__)
+			return true;
+		#else
+			return cpuinfo_isa.mmx_plus;
+		#endif
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_3dnow(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.three_d_now;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_3dnow_plus(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.three_d_now_plus;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_3dnow_geode(void) {
+	#if CPUINFO_ARCH_X86_64
+		return false;
+	#elif CPUINFO_ARCH_X86
+		#if defined(__ANDROID__)
+			return false;
+		#else
+			return cpuinfo_isa.three_d_now_geode;
+		#endif
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_prefetch(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.prefetch;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_prefetchw(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.prefetchw;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_prefetchwt1(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.prefetchwt1;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_daz(void) {
+	#if CPUINFO_ARCH_X86_64
+		return true;
+	#elif CPUINFO_ARCH_X86
+		#if defined(__ANDROID__)
+			return true;
+		#else
+			return cpuinfo_isa.daz;
+		#endif
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_sse(void) {
+	#if CPUINFO_ARCH_X86_64
+		return true;
+	#elif CPUINFO_ARCH_X86
+		#if defined(__ANDROID__)
+			return true;
+		#else
+			return cpuinfo_isa.sse;
+		#endif
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_sse2(void) {
+	#if CPUINFO_ARCH_X86_64
+		return true;
+	#elif CPUINFO_ARCH_X86
+		#if defined(__ANDROID__)
+			return true;
+		#else
+			return cpuinfo_isa.sse2;
+		#endif
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_sse3(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		#if defined(__ANDROID__)
+			return true;
+		#else
+			return cpuinfo_isa.sse3;
+		#endif
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_ssse3(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		#if defined(__ANDROID__)
+			return true;
+		#else
+			return cpuinfo_isa.ssse3;
+		#endif
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_sse4_1(void) {
+	#if CPUINFO_ARCH_X86_64
+		#if defined(__ANDROID__)
+			return true;
+		#else
+			return cpuinfo_isa.sse4_1;
+		#endif
+	#elif CPUINFO_ARCH_X86
+		return cpuinfo_isa.sse4_1;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_sse4_2(void) {
+	#if CPUINFO_ARCH_X86_64
+		#if defined(__ANDROID__)
+			return true;
+		#else
+			return cpuinfo_isa.sse4_2;
+		#endif
+	#elif CPUINFO_ARCH_X86
+		return cpuinfo_isa.sse4_2;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_sse4a(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.sse4a;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_misaligned_sse(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.misaligned_sse;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_avx(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		//return cpuinfo_isa.avx;
+        return false;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_fma3(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		//return cpuinfo_isa.fma3;
+        return false;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_fma4(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.fma4;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_xop(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.xop;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_f16c(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.f16c;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_avx2(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+        return false;
+		//return cpuinfo_isa.avx2;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_avx512f(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.avx512f;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_avx512pf(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.avx512pf;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_avx512er(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.avx512er;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_avx512cd(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.avx512cd;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_avx512dq(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.avx512dq;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_avx512bw(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.avx512bw;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_avx512vl(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.avx512vl;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_avx512ifma(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.avx512ifma;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_avx512vbmi(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.avx512vbmi;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_avx512vbmi2(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.avx512vbmi2;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_avx512bitalg(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.avx512bitalg;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_avx512vpopcntdq(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.avx512vpopcntdq;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_avx512vnni(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.avx512vnni;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_avx512_4vnniw(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.avx512_4vnniw;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_avx512_4fmaps(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.avx512_4fmaps;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_hle(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.hle;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_rtm(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.rtm;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_xtest(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.xtest;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_mpx(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.mpx;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_cmov(void) {
+	#if CPUINFO_ARCH_X86_64
+		return true;
+	#elif CPUINFO_ARCH_X86
+		return cpuinfo_isa.cmov;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_cmpxchg8b(void) {
+	#if CPUINFO_ARCH_X86_64
+		return true;
+	#elif CPUINFO_ARCH_X86
+		return cpuinfo_isa.cmpxchg8b;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_cmpxchg16b(void) {
+	#if CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.cmpxchg16b;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_clwb(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.clwb;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_movbe(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.movbe;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_lahf_sahf(void) {
+	#if CPUINFO_ARCH_X86
+		return true;
+	#elif CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.lahf_sahf;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_lzcnt(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.lzcnt;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_popcnt(void) {
+	#if CPUINFO_ARCH_X86_64
+		#if defined(__ANDROID__)
+			return true;
+		#else
+			return cpuinfo_isa.popcnt;
+		#endif
+	#elif CPUINFO_ARCH_X86
+		return cpuinfo_isa.popcnt;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_tbm(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.tbm;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_bmi(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.bmi;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_bmi2(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.bmi2;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_adx(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.adx;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_aes(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.aes;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_vaes(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.vaes;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_pclmulqdq(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.pclmulqdq;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_vpclmulqdq(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.vpclmulqdq;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_gfni(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.gfni;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_rdrand(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.rdrand;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_rdseed(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.rdseed;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_x86_sha(void) {
+	#if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64
+		return cpuinfo_isa.sha;
+	#else
+		return false;
+	#endif
+}
+*/
+#define cpuinfo_has_x86_avx2() false
+#define cpuinfo_has_x86_fma3() false
+#define cpuinfo_has_x86_avx() true
+#define cpuinfo_has_x86_daz() true
+const struct cpuinfo_processor* CPUINFO_ABI cpuinfo_get_processor(uint32=
_t index);
+#define cpuinfo_get_processors_count() 1
+
+#if CPUINFO_ARCH_ARM || CPUINFO_ARCH_ARM64
+	/* This structure is not a part of stable API. Use cpuinfo_has_arm_* fu=
nctions instead. */
+	struct cpuinfo_arm_isa {
+		#if CPUINFO_ARCH_ARM
+			bool thumb;
+			bool thumb2;
+			bool thumbee;
+			bool jazelle;
+			bool armv5e;
+			bool armv6;
+			bool armv6k;
+			bool armv7;
+			bool armv7mp;
+			bool idiv;
+
+			bool vfpv2;
+			bool vfpv3;
+			bool d32;
+			bool fp16;
+			bool fma;
+
+			bool wmmx;
+			bool wmmx2;
+			bool neon;
+		#endif
+		#if CPUINFO_ARCH_ARM64
+			bool atomics;
+		#endif
+		bool rdm;
+		bool fp16arith;
+		bool dot;
+		bool jscvt;
+		bool fcma;
+
+		bool aes;
+		bool sha1;
+		bool sha2;
+		bool pmull;
+		bool crc32;
+	};
+
+	extern struct cpuinfo_arm_isa cpuinfo_isa;
+#endif
+
+/*
+static inline bool cpuinfo_has_arm_thumb(void) {
+	#if CPUINFO_ARCH_ARM
+		return cpuinfo_isa.thumb;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_thumb2(void) {
+	#if CPUINFO_ARCH_ARM
+		return cpuinfo_isa.thumb2;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_v5e(void) {
+	#if CPUINFO_ARCH_ARM
+		return cpuinfo_isa.armv5e;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_v6(void) {
+	#if CPUINFO_ARCH_ARM
+		return cpuinfo_isa.armv6;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_v6k(void) {
+	#if CPUINFO_ARCH_ARM
+		return cpuinfo_isa.armv6k;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_v7(void) {
+	#if CPUINFO_ARCH_ARM
+		return cpuinfo_isa.armv7;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_v7mp(void) {
+	#if CPUINFO_ARCH_ARM
+		return cpuinfo_isa.armv7mp;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_idiv(void) {
+	#if CPUINFO_ARCH_ARM64
+		return true;
+	#elif CPUINFO_ARCH_ARM
+		return cpuinfo_isa.idiv;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_vfpv2(void) {
+	#if CPUINFO_ARCH_ARM
+		return cpuinfo_isa.vfpv2;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_vfpv3(void) {
+	#if CPUINFO_ARCH_ARM64
+		return true;
+	#elif CPUINFO_ARCH_ARM
+		return cpuinfo_isa.vfpv3;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_vfpv3_d32(void) {
+	#if CPUINFO_ARCH_ARM64
+		return true;
+	#elif CPUINFO_ARCH_ARM
+		return cpuinfo_isa.vfpv3 && cpuinfo_isa.d32;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_vfpv3_fp16(void) {
+	#if CPUINFO_ARCH_ARM64
+		return true;
+	#elif CPUINFO_ARCH_ARM
+		return cpuinfo_isa.vfpv3 && cpuinfo_isa.fp16;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_vfpv3_fp16_d32(void) {
+	#if CPUINFO_ARCH_ARM64
+		return true;
+	#elif CPUINFO_ARCH_ARM
+		return cpuinfo_isa.vfpv3 && cpuinfo_isa.fp16 && cpuinfo_isa.d32;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_vfpv4(void) {
+	#if CPUINFO_ARCH_ARM64
+		return true;
+	#elif CPUINFO_ARCH_ARM
+		return cpuinfo_isa.vfpv3 && cpuinfo_isa.fma;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_vfpv4_d32(void) {
+	#if CPUINFO_ARCH_ARM64
+		return true;
+	#elif CPUINFO_ARCH_ARM
+		return cpuinfo_isa.vfpv3 && cpuinfo_isa.fma && cpuinfo_isa.d32;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_wmmx(void) {
+	#if CPUINFO_ARCH_ARM
+		return cpuinfo_isa.wmmx;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_wmmx2(void) {
+	#if CPUINFO_ARCH_ARM
+		return cpuinfo_isa.wmmx2;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_neon(void) {
+	#if CPUINFO_ARCH_ARM64
+		return true;
+	#elif CPUINFO_ARCH_ARM
+		return cpuinfo_isa.neon;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_neon_fp16(void) {
+	#if CPUINFO_ARCH_ARM64
+		return true;
+	#elif CPUINFO_ARCH_ARM
+		return cpuinfo_isa.neon && cpuinfo_isa.fp16;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_neon_fma(void) {
+	#if CPUINFO_ARCH_ARM64
+		return true;
+	#elif CPUINFO_ARCH_ARM
+		return cpuinfo_isa.neon && cpuinfo_isa.fma;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_atomics(void) {
+	#if CPUINFO_ARCH_ARM64
+		return cpuinfo_isa.atomics;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_neon_rdm(void) {
+	#if CPUINFO_ARCH_ARM || CPUINFO_ARCH_ARM64
+		return cpuinfo_isa.rdm;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_neon_fp16_arith(void) {
+	#if CPUINFO_ARCH_ARM
+		return cpuinfo_isa.neon && cpuinfo_isa.fp16arith;
+	#elif CPUINFO_ARCH_ARM64
+		return cpuinfo_isa.fp16arith;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_fp16_arith(void) {
+	#if CPUINFO_ARCH_ARM || CPUINFO_ARCH_ARM64
+		return cpuinfo_isa.fp16arith;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_neon_dot(void) {
+	#if CPUINFO_ARCH_ARM || CPUINFO_ARCH_ARM64
+		return cpuinfo_isa.dot;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_jscvt(void) {
+	#if CPUINFO_ARCH_ARM || CPUINFO_ARCH_ARM64
+		return cpuinfo_isa.jscvt;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_fcma(void) {
+	#if CPUINFO_ARCH_ARM || CPUINFO_ARCH_ARM64
+		return cpuinfo_isa.fcma;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_aes(void) {
+	#if CPUINFO_ARCH_ARM || CPUINFO_ARCH_ARM64
+		return cpuinfo_isa.aes;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_sha1(void) {
+	#if CPUINFO_ARCH_ARM || CPUINFO_ARCH_ARM64
+		return cpuinfo_isa.sha1;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_sha2(void) {
+	#if CPUINFO_ARCH_ARM || CPUINFO_ARCH_ARM64
+		return cpuinfo_isa.sha2;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_pmull(void) {
+	#if CPUINFO_ARCH_ARM || CPUINFO_ARCH_ARM64
+		return cpuinfo_isa.pmull;
+	#else
+		return false;
+	#endif
+}
+
+static inline bool cpuinfo_has_arm_crc32(void) {
+	#if CPUINFO_ARCH_ARM || CPUINFO_ARCH_ARM64
+		return cpuinfo_isa.crc32;
+	#else
+		return false;
+	#endif
+}
+
+const struct cpuinfo_processor* CPUINFO_ABI cpuinfo_get_processors(void)=
;
+const struct cpuinfo_core* CPUINFO_ABI cpuinfo_get_cores(void);
+const struct cpuinfo_cluster* CPUINFO_ABI cpuinfo_get_clusters(void);
+const struct cpuinfo_package* CPUINFO_ABI cpuinfo_get_packages(void);
+const struct cpuinfo_cache* CPUINFO_ABI cpuinfo_get_l1i_caches(void);
+const struct cpuinfo_cache* CPUINFO_ABI cpuinfo_get_l1d_caches(void);
+const struct cpuinfo_cache* CPUINFO_ABI cpuinfo_get_l2_caches(void)
+{
+	static struct cpuinfo_cache cc;
+	cc.size =3D 64 * 512 * 12;
+	cc.associativity =3D 12;
+	cc.associativity =3D 512;
+	cc.partitions =3D 64;
+	cc.line_size =3D 64;
+	cc.flags=3DCPUINFO_CACHE_INCLUSIVE;
+	cc.processor_start =3D 0;
+	cc.processor_count =3D 1;
+	return &cc;
+}
+const struct cpuinfo_cache* CPUINFO_ABI cpuinfo_get_l3_caches(void)
+{
+	static struct cpuinfo_cache cc;
+	cc.size =3D 64 * 512 * 12;
+	cc.associativity =3D 12;
+	cc.associativity =3D 512;
+	cc.partitions =3D 64;
+	cc.line_size =3D 64;
+	cc.flags=3DCPUINFO_CACHE_INCLUSIVE;
+	cc.processor_start =3D 0;
+	cc.processor_count =3D 1;
+	return &cc;
+}
+const struct cpuinfo_cache* CPUINFO_ABI cpuinfo_get_l4_caches(void)
+{
+	static struct cpuinfo_cache cc;
+	cc.size =3D 64 * 512 * 12;
+	cc.associativity =3D 12;
+	cc.associativity =3D 512;
+	cc.partitions =3D 64;
+	cc.line_size =3D 64;
+	cc.flags=3DCPUINFO_CACHE_INCLUSIVE;
+	cc.processor_start =3D 0;
+	cc.processor_count =3D 1;
+	return &cc;
+}
+
+const struct cpuinfo_processor* CPUINFO_ABI cpuinfo_get_processor(uint32=
_t index);
+const struct cpuinfo_core* CPUINFO_ABI cpuinfo_get_core(uint32_t index);
+const struct cpuinfo_cluster* CPUINFO_ABI cpuinfo_get_cluster(uint32_t i=
ndex);
+const struct cpuinfo_package* CPUINFO_ABI cpuinfo_get_package(uint32_t i=
ndex);
+const struct cpuinfo_cache* CPUINFO_ABI cpuinfo_get_l1i_cache(uint32_t i=
ndex);
+const struct cpuinfo_cache* CPUINFO_ABI cpuinfo_get_l1d_cache(uint32_t i=
ndex)
+{
+	static struct cpuinfo_cache cc;
+	cc.size =3D 64 * 512 * 12;
+	cc.associativity =3D 12;
+	cc.associativity =3D 512;
+	cc.partitions =3D 64;
+	cc.line_size =3D 64;
+	cc.flags=3DCPUINFO_CACHE_INCLUSIVE;
+	cc.processor_start =3D 0;
+	cc.processor_count =3D 1;
+	return &cc;
+}
+const struct cpuinfo_cache* CPUINFO_ABI cpuinfo_get_l2_cache(uint32_t in=
dex)
+{
+	static struct cpuinfo_cache cc;
+	cc.size =3D 64 * 512 * 12;
+	cc.associativity =3D 12;
+	cc.associativity =3D 512;
+	cc.partitions =3D 64;
+	cc.line_size =3D 64;
+	cc.flags=3DCPUINFO_CACHE_INCLUSIVE;
+	cc.processor_start =3D 0;
+	cc.processor_count =3D 1;
+	return &cc;
+}
+const struct cpuinfo_cache* CPUINFO_ABI cpuinfo_get_l3_cache(uint32_t in=
dex)
+{
+	static struct cpuinfo_cache cc;
+	cc.size =3D 64 * 512 * 12;
+	cc.associativity =3D 12;
+	cc.associativity =3D 512;
+	cc.partitions =3D 64;
+	cc.line_size =3D 64;
+	cc.flags=3DCPUINFO_CACHE_INCLUSIVE;
+	cc.processor_start =3D 0;
+	cc.processor_count =3D 1;
+	return &cc;
+}
+const struct cpuinfo_cache* CPUINFO_ABI cpuinfo_get_l4_cache(uint32_t in=
dex)
+{
+	static struct cpuinfo_cache cc;
+	cc.size =3D 64 * 512 * 12;
+	cc.associativity =3D 12;
+	cc.associativity =3D 512;
+	cc.partitions =3D 64;
+	cc.line_size =3D 64;
+	cc.flags=3DCPUINFO_CACHE_INCLUSIVE;
+	cc.processor_start =3D 0;
+	cc.processor_count =3D 1;
+	return &cc;
+}
+uint32_t CPUINFO_ABI cpuinfo_get_processors_count(void);
+uint32_t CPUINFO_ABI cpuinfo_get_cores_count(void);
+uint32_t CPUINFO_ABI cpuinfo_get_clusters_count(void);
+uint32_t CPUINFO_ABI cpuinfo_get_packages_count(void);
+uint32_t CPUINFO_ABI cpuinfo_get_l1i_caches_count(void);
+uint32_t CPUINFO_ABI cpuinfo_get_l1d_caches_count(void);
+uint32_t CPUINFO_ABI cpuinfo_get_l2_caches_count(void);
+uint32_t CPUINFO_ABI cpuinfo_get_l3_caches_count(void);
+uint32_t CPUINFO_ABI cpuinfo_get_l4_caches_count(void);
+
+const struct cpuinfo_processor* CPUINFO_ABI cpuinfo_get_current_processo=
r(void);
+const struct cpuinfo_core* CPUINFO_ABI cpuinfo_get_current_core(void);
+*/
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* CPUINFO_H */
+
diff --git a/include/fenv.h b/include/fenv.h
new file mode 100644
index 0000000..4e31c43
--- /dev/null
+++ b/include/fenv.h
@@ -0,0 +1,27 @@
+#ifndef _FENV_H
+#define _FENV_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <bits/fenv.h>
+
+int feclearexcept(int);
+int fegetexceptflag(fexcept_t *, int);
+int feraiseexcept(int);
+int fesetexceptflag(const fexcept_t *, int);
+int fetestexcept(int);
+
+int fegetround(void);
+int fesetround(int);
+
+int fegetenv(fenv_t *);
+int feholdexcept(fenv_t *);
+int fesetenv(const fenv_t *);
+int feupdateenv(const fenv_t *);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
--=20
2.20.1



From minios-devel-bounces@lists.xenproject.org Wed Apr 08 00:25:36 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 08 Apr 2020 00: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 1jLyXA-0001xn-Q8; Wed, 08 Apr 2020 00: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=hVdw=5Y=upb.ro=vlad_andrei.badoiu@srs-us1.protection.inumbo.net>)
 id 1jLyX8-0001xg-L0
 for minios-devel@lists.xen.org; Wed, 08 Apr 2020 00:25:34 +0000
X-Inumbo-ID: 7224a2c8-792f-11ea-818c-12813bfff9fa
Received: from mx.upb.ro (unknown [141.85.13.200])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 7224a2c8-792f-11ea-818c-12813bfff9fa;
 Wed, 08 Apr 2020 00:25:28 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id 1DDA3B5625AD;
 Wed,  8 Apr 2020 03:25:27 +0300 (EEST)
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10032)
 with ESMTP id TZsY4wWdbgqP; Wed,  8 Apr 2020 03:25:04 +0300 (EEST)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id C8368B562501;
 Wed,  8 Apr 2020 03:25:04 +0300 (EEST)
DKIM-Filter: OpenDKIM Filter v2.10.3 mx.upb.ro C8368B562501
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=upb.ro;
 s=96342B8A-77E4-11E5-BA93-D93D0963A2DF; t=1586305504;
 bh=44xof9r52rfngq5MS3LQXdmJQZRJOi6HsZVD6WnuUDY=;
 h=From:To:Date:Message-Id:MIME-Version;
 b=f97CNnGCTRPhk7MvI5YWKvsHP+G1buDuVhbWDl34bb7pQZ7zzGRmzrxj8q+Hwanam
 YYqlUUyT5cA9cdX9cE/ywl2zgd+Vn7+vpwaoen/hdUys1VBnWsB1X3OBDEhZR3ZY2p
 3Qwt7qzFX6OQhNCwjKFWA3Jm5X4fmdwEA67In1vo=
X-Virus-Scanned: amavisd-new at upb.ro
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id e_yAR3CAzV6Z; Wed,  8 Apr 2020 03:25:04 +0300 (EEST)
Received: from localhost.localdomain (unknown [86.127.159.73])
 by mx.upb.ro (Postfix) with ESMTPSA id 7783CB5625CF;
 Wed,  8 Apr 2020 03:25:04 +0300 (EEST)
From: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
To: minios-devel@lists.xen.org
Subject: [UNIKRAFT/PYTORCH PATCH v2 2/5] Add Makefile
Date: Wed,  8 Apr 2020 03:24:57 +0300
Message-Id: <20200408002500.31493-3-vlad_andrei.badoiu@upb.ro>
X-Mailer: git-send-email 2.20.1
In-Reply-To: <20200408002500.31493-1-vlad_andrei.badoiu@upb.ro>
References: <20200408002500.31493-1-vlad_andrei.badoiu@upb.ro>
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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, Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Signed-off-by: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
---
 Makefile.uk | 1793 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 1793 insertions(+)
 create mode 100644 Makefile.uk

diff --git a/Makefile.uk b/Makefile.uk
new file mode 100644
index 0000000..78ed0f9
--- /dev/null
+++ b/Makefile.uk
@@ -0,0 +1,1793 @@
+#  pytorch config file
+#
+#  Authors: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
+#
+#  Copyright (c) 2020, University Politehnica of Bucharest. All rights r=
eserved.
+#
+#  Redistribution and use in source and binary forms, with or without
+#  modification, are permitted provided that the following conditions
+#  are met:
+#
+#  1. Redistributions of source code must retain the above copyright
+#     notice, this list of conditions and the following disclaimer.
+#  2. Redistributions in binary form must reproduce the above copyright
+#     notice, this list of conditions and the following disclaimer in th=
e
+#     documentation and/or other materials provided with the distributio=
n.
+#  3. Neither the name of the copyright holder nor the names of its
+#     contributors may be used to endorse or promote products derived fr=
om
+#     this software without specific prior written permission.
+#
+#  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "=
AS IS"
+#  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,=
 THE
+#  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PU=
RPOSE
+#  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTOR=
S BE
+#  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+#  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+#  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSIN=
ESS
+#  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER =
IN
+#  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWIS=
E)
+#  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED O=
F THE
+#  POSSIBILITY OF SUCH DAMAGE.
+#
+#  THIS HEADER MAY NOT BE EXTRACTED OR MODIFIED IN ANY WAY.
+
+########################################################################=
########
+# Library registration
+########################################################################=
########
+$(eval $(call addlib_s,libpytorch,$(CONFIG_LIBPYTORCH)))
+
+########################################################################=
########
+# Sources
+########################################################################=
########
+LIBPYTORCH_VERSION=3D1.4.0
+LIBPYTORCH_URL=3Dhttps://github.com/pytorch/pytorch/archive/v1.4.0.tar.g=
z
+LIBPYTORCH_PATCHDIR=3D$(LIBPYTORCH_BASE)/patches
+$(eval $(call fetch,libpytorch,$(LIBPYTORCH_URL)))
+$(eval $(call patch,libpytorch,$(LIBPYTORCH_PATCHDIR),pytorch-$(LIBPYTOR=
CH_VERSION)))
+
+########################################################################=
########
+# Helpers
+# ######################################################################=
##########
+LIBPYTORCH_SUBDIR=3Dpytorch-$(LIBPYTORCH_VERSION)
+LIBPYTORCH_SRC=3D$(LIBPYTORCH_ORIGIN)/$(LIBPYTORCH_SUBDIR)
+
+########################################################################=
########
+# Library includes
+########################################################################=
########
+CINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/torch
+CINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/modules
+CINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/aten/src
+CINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/aten/src/TH
+CINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/aten
+CINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/aten/src/ATen/na=
tive/quantized/cpu/qnnpack/src/
+CINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/aten/src/ATen/na=
tive/quantized/cpu/qnnpack/include/
+CINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/aten/src/ATen/na=
tive/quantized/cpu/qnnpack/deps/clog/include/
+CINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/tools
+CINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)
+CINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/build/aten/src/
+CINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/build/
+CINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_BASE)/include
+CINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_BASE)/include/aten/sr=
c
+CINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/build/caffe2/ate=
n/src/
+CINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/torch/lib/libshm=
/
+CINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/torch/csrc/api/i=
nclude/
+CINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/torch/lib/
+CINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/third_party/mini=
z-2.0.8/
+
+CXXINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/torch
+CXXINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/modules
+CXXINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/aten/src
+CXXINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/aten/src/TH
+CXXINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/aten
+CXXINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/aten/src/ATen/=
native/quantized/cpu/qnnpack/include/
+CXXINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/aten/src/ATen/=
native/quantized/cpu/qnnpack/src/
+CXXINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/aten/src/ATen/=
native/quantized/cpu/qnnpack/deps/clog/include/
+CXXINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/tools
+CXXINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)
+CXXINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/build/aten/src=
/
+CXXINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/build/caffe2/a=
ten/src/
+CXXINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_BASE)/include
+CXXINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_BASE)/include/aten/=
src
+CXXINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/build/
+CXXINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/torch/lib/libs=
hm/
+CXXINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/torch/csrc/api=
/include/
+CXXINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/torch/lib/
+CXXINCLUDES-$(CONFIG_LIBPYTORCH) +=3D -I$(LIBPYTORCH_SRC)/third_party/mi=
niz-2.0.8/
+
+########################################################################=
########
+# Global flags
+########################################################################=
########
+# Suppress some warnings to make the build process look neater
+LIBPYTORCH_SUPPRESS_FLAGS +=3D -Wno-unused-parameter -Wno-unused-variabl=
e -Wno-nonnull		\
+-Wno-unused-but-set-variable -Wno-unused-label -Wno-char-subscripts				\
+-Wno-unused-function -Wno-missing-field-initializers -Wno-uninitialized	=
	    		\
+-Wno-array-bounds -Wno-maybe-uninitialized -Wno-unused-value -Wno-attrib=
utes			\
+-Wno-unused-macros -Wno-parentheses -Wno-unknown-pragmas -Wno-deprecated=
-declarations		\
+-Wno-missing-braces -Wno-endif-labels -Wno-unused-but-set-variable		    =
    	\
+-Wno-type-limits -Wno-sign-compare -fpermissive
+
+LIBPYTORCH_CFLAGS-y	+=3D  $(LIBPYTORCH_SUPPRESS_FLAGS) -D CAFFE2_DISABLE=
_NUMA -D CAFFE2_USE_EIGEN_FOR_BLAS -D C10_BUILD_MAIN_LIB -DC10_USING_CUST=
OM_GENERATED_MACROS -DAT_PARALLEL_NATIVE  -DHAVE_MMAP -DC10_DISABLE_NUMA =
-DCAFFE2_BUILD_MAIN_LIB -DCAFFE2_API=3D"__attribute__((__visibility__(\"d=
efault\")))" -DC10_API=3D"__attribute__((__visibility__(\"default\")))" -=
DONNX_NAMESPACE=3Donnx -DCAFFE2_DISABLE_SIGNAL_HANDLERS -DCPU_CAPABILITY=3D=
DEFAULT
+
+LIBPYTORCH_CXXFLAGS-y	+=3D $(LIBPYTORCH_SUPPRESS_FLAGS) -D CAFFE2_DISABL=
E_NUMA -D CAFFE2_USE_EIGEN_FOR_BLAS -D C10_BUILD_MAIN_LIB -DC10_USING_CUS=
TOM_GENERATED_MACROS -DAT_PARALLEL_NATIVE  -DHAVE_MMAP -DC10_DISABLE_NUMA=
 -DCAFFE2_BUILD_MAIN_LIB -DCAFFE2_API=3D"__attribute__((__visibility__(\"=
default\")))" -DC10_API=3D"__attribute__((__visibility__(\"default\")))" =
-DONNX_NAMESPACE=3Donnx -DCAFFE2_DISABLE_SIGNAL_HANDLERS -DCPU_CAPABILITY=
=3DDEFAULT
+
+# TODO: for better performance
+# USE_STATIC_DISPATCH
+# HAVE_AVX_CPU_DEFINITION
+
+########################################################################=
########
+# Library sources
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_BASE)/glue.c
+
+########################################################################=
########
+# modules/observers
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/modules/observers/net_observer_=
reporter_print.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/modules/observers/observer_conf=
ig.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/modules/observers/perf_observer=
.cc
+
+########################################################################=
########
+# modules/rocksdb
+########################################################################=
########
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/modules/rocksdb/rocksdb.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/modules/module_test/module_tes=
t_dynamic.cc
+
+########################################################################=
########
+# modules/detectron
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/modules/detectron/roi_pool_f_op=
.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/modules/detectron/sample_as_op.=
cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/modules/detectron/spatial_narro=
w_as_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/modules/detectron/upsample_near=
est_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/modules/detectron/softmax_focal=
_loss_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/modules/detectron/smooth_l1_los=
s_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/modules/detectron/select_smooth=
_l1_loss_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/modules/detectron/ps_roi_pool_o=
p.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/modules/detectron/sigmoid_focal=
_loss_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/modules/detectron/sigmoid_cross=
_entropy_loss_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/modules/detectron/group_spatial=
_softmax_op.cc
+
+########################################################################=
########
+# caffe2/queue
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/queue/rebatching_queue_o=
ps.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/queue/blobs_queue.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/queue/blobs_queue_db.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/queue/queue_ops.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/queue/rebatching_queue.c=
c
+
+########################################################################=
########
+# caffe2/quantization/server
+########################################################################=
########
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/ful=
ly_connected_dnnlowp_acc16_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/ful=
ly_connected_dnnlowp_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/p99=
.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/dnn=
lowp_partition.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/dnn=
lowp.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/fbg=
emm_pack_matrix_cache.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/sig=
moid.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/act=
ivation_distribution_observer.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/ele=
mentwise_sum_relu_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/qua=
ntize_dnnlowp_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/ele=
mentwise_mul_dnnlowp_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/cha=
nnel_shuffle_dnnlowp_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/lst=
m_unit_dnnlowp_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/ful=
ly_connected_fake_lowp_op_avx2.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/p99=
_example.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/uti=
lity_dnnlowp_ops.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/con=
cat_dnnlowp_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/spa=
tial_batch_norm_dnnlowp_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/gro=
up_norm_dnnlowp_op_avx2.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/poo=
l_dnnlowp_op_avx2.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/tra=
nspose.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/kl_=
minimization.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/deq=
uantize_dnnlowp_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/tan=
h.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/l2_=
minimization_example.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/nor=
m_minimization_avx2.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/con=
v_relu_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/spa=
tial_batch_norm_dnnlowp_op_avx2.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/caf=
fe2_dnnlowp_utils.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/con=
v_dnnlowp_acc16_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/spa=
tial_batch_norm_relu_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/gro=
up_norm_dnnlowp_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/fc_=
fake_lowp_test.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/con=
v_dnnlowp_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/pyb=
ind.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/poo=
l_dnnlowp_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/rel=
u_dnnlowp_op_avx2.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/kl_=
minimization_example.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/tan=
h_test.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/ele=
mentwise_linear_dnnlowp_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/bat=
ch_matmul_dnnlowp_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/ele=
mentwise_sum_dnnlowp_op_avx2.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/ful=
ly_connected_fake_lowp_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/sig=
moid_dnnlowp_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/l2_=
minimization_test.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/l1_=
minimization_example.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/bat=
ch_permutation_dnnlowp_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/l2_=
minimization_approx_example.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/ele=
mentwise_add_dnnlowp_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/tan=
h_dnnlowp_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/ele=
mentwise_sum_dnnlowp_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/rel=
u_dnnlowp_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/res=
ize_nearest_dnnlowp_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/fbg=
emm_pack_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/req=
uantization_test.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/dyn=
amic_histogram_test.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/dyn=
amic_histogram.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/ele=
mentwise_sum_benchmark.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/sig=
moid_test.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/nor=
m_minimization.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/quantization/server/res=
ize_nearest_3d_dnnlowp_op.cc
+
+########################################################################=
########
+# caffe2/operators
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/find_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/spatial_batch_=
norm_gradient_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/unique_ops.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/given_tensor_b=
yte_string_to_uint8_fill_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/half_float_ops=
.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/lengths_pad_op=
.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/summarize_op.c=
c
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/utility_ops.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/batch_matmul_o=
p.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/ceil_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/flatten_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/acos_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/rsqrt_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/integral_image=
_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/elementwise_di=
v_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/boolean_mask_o=
ps.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/relu_n_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/softmax_utils.=
cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/perplexity_op.=
cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/gelu_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/locally_connec=
ted_op_util.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/softplus_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/space_batch_op=
.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/normalize_l1_o=
p.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/reciprocal_op.=
cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/elementwise_op=
s.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/remove_data_bl=
ocks_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/index_ops.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/copy_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/floor_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/gather_fused_=
8bit_rowwise_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/feed_blob_op.c=
c
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/fc_inference.c=
c
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/length_split_o=
p.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/jsd_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/reduce_front_b=
ack_max_ops.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/sparse_normali=
ze_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/segment_reduct=
ion_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/fused_rowwise=
_8bit_conversion_ops.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/batch_bucketiz=
e_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/stats_put_ops.=
cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/ctc_beam_searc=
h_decoder_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/find_duplicate=
_elements_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/tan_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/roi_align_grad=
ient_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/sin_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/instance_norm_=
gradient_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/workspace_ops.=
cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/exp_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/sqrt_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/expand_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/conv_transpose=
_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/roi_align_rota=
ted_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/do_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/pow_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/reshape_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/elementwise_su=
b_gradient_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/free_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/elementwise_lo=
gical_ops.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/loss_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/ngram_ops.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/expand_squeeze=
_dims_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/sparse_to_dens=
e_mask_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/cosh_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/roi_align_rota=
ted_gradient_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/elementwise_di=
v_gradient_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/bbox_transform=
_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/upsample_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/tanh_gradient_=
op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/shape_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/im2col_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/multi_class_ac=
curacy_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/lengths_reduc=
er_fused_8bit_rowwise_ops.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/scale_blobs_op=
.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/sqr_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/variable_lengt=
h_sequence_padding.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/text_file_read=
er_utils.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/cast_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/cosine_embeddi=
ng_criterion_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/dropout_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/minmax_ops.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/reverse_packed=
_segs_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/accuracy_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/one_hot_ops.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/sparse_dropout=
_with_replacement_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/negative_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/square_root_di=
vide_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/local_response=
_normalization_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/ensure_cpu_out=
put_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/roi_pool_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/elementwise_op=
s_utils.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/bisect_percent=
ile_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/hard_sigmoid_o=
p.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/thresholded_re=
lu_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/cbrt_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/conv_transpose=
_gradient_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/quant_decode_o=
p.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/rowmul_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/erf_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/conditional_op=
.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/sparse_to_dens=
e_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/elementwise_su=
m_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/lstm_unit_op.c=
c
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/alias_with_nam=
e.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/onnx_while_op.=
cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/atomic_ops.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/elu_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/load_save_op_u=
til.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/partition_ops.=
cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/merge_id_lists=
_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/arg_ops.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/fused_rowwise=
_random_quantization_ops.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/reduction_ops.=
cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/reservoir_samp=
ling.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/bucketize_op.c=
c
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/top_k.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/order_switch_o=
ps.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/replace_nan_op=
.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/stylizer_ops.c=
c
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/stop_gradient.=
cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/tensor_protos_=
db_input.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/cross_entropy_=
op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/norm_planar_yu=
v_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/pool_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/selu_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/transpose_op.c=
c
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/rank_loss_op.c=
c
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/spatial_batch_=
norm_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/boolean_unmask=
_ops.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/generate_propo=
sals_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/negate_gradien=
t_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/lengths_reduce=
r_rowwise_8bit_ops.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/affine_channel=
_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/reciprocal_gra=
dient_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/conv_op_shared=
.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/elementwise_op=
s_schema.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/elementwise_su=
b_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/leaky_relu_op.=
cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/elementwise_li=
near_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/atan_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/feature_maps_o=
ps.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/experimental/c=
10/cpu/filler_cpu.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/experimental/c=
10/cpu/sparse_lengths_sum_cpu.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/experimental/c=
10/cpu/flatten_cpu.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/experimental/c=
10/cpu/averaged_loss_cpu.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/experimental/c=
10/cpu/batch_matmul_cpu.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/experimental/c=
10/cpu/enforce_finite_cpu.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/experimental/c=
10/cpu/relu_cpu.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/experimental/c=
10/cpu/batch_gather_cpu.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/experimental/c=
10/cpu/stop_gradient_cpu.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/experimental/c=
10/cpu/sigmoid_cross_entropy_with_logits_cpu.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/experimental/c=
10/cpu/fc_cpu.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/experimental/c=
10/cpu/mul_cpu.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/experimental/c=
10/cpu/concat_cpu.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/experimental/c=
10/cpu/cast_cpu.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/experimental/c=
10/cpu/expand_dims_cpu.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/experimental/c=
10/cpu/sigmoid_cpu.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/experimental/c=
10/cpu/add_cpu.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/mod_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/deform_conv_op=
.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/inference_lstm=
_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/enforce_finite=
_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/batch_moments_=
op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/h_softmax_op.c=
c
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/elementwise_mu=
l_gradient_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/last_n_window_=
collector.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/sinusoid_posit=
ion_encoding_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/numpy_tile_op.=
cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/flexible_top_k=
.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/swish_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/distance_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/dense_vector_t=
o_id_list_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/box_with_nms_l=
imit_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/piecewise_line=
ar_transform_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/text_file_read=
er.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/group_norm_op.=
cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/ctc_greedy_dec=
oder_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/relu_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/instance_norm_=
op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/conv_transpose=
_op_mobile.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/lengths_top_k_=
op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/pack_rnn_seque=
nce_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/sigmoid_gradie=
nt_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/spatial_softma=
x_with_loss_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/cos_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/resize_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/lpnorm_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/reduce_ops.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/fully_connecte=
d_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/layer_norm_op.=
cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/data_couple.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/copy_rows_to_t=
ensor_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/scale_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/softsign_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/clip_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/lp_pool_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/batch_gather_o=
ps.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/create_scope_o=
p.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/conv_op_eigen.=
cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/stats_ops.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/asin_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/tt_linear_op.c=
c
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/ensure_clipped=
_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/elementwise_ad=
d_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/collect_and_di=
stribute_fpn_rpn_proposals_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/load_save_op.c=
c
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/softmax_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/weighted_sampl=
e_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/given_tensor_f=
ill_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/batch_box_cox_=
op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/locally_connec=
ted_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/channel_backpr=
op_stats_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/log_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/zero_gradient_=
op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/prepend_dim_op=
.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/byte_weight_de=
quant_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/conv_gradient_=
op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/lengths_tile_o=
p.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/percentile_op.=
cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/sequence_ops.c=
c
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/elementwise_ad=
d_gradient_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/abs_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/margin_ranking=
_criterion_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/glu_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/channel_stats_=
op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/gather_ranges_=
to_dense_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/softmax_with_l=
oss_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/reduce_front_b=
ack_mean_ops.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/resize_3d_op.c=
c
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/moments_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/slice_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/assert_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/dataset_ops.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/lengths_reduce=
r_ops.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/conv_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/heatmap_max_ke=
ypoint_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/pad_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/channel_shuffl=
e_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/normalize_op.c=
c
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/deform_conv_gr=
adient_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/mean_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/prelu_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/rmac_regions_o=
p.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/cube_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/tanh_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/communicator_o=
p.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/string_ops.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/apmeter_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/gru_unit_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/concat_split_o=
p.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/pool_op_util.c=
c
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/is_empty_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/cc_bmm_bg_op.c=
c
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/crash_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/sinh_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/logit_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/index_hash_ops=
.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/tile_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/reduce_front_b=
ack_sum_ops.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/batch_permutat=
ion_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/gather_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/if_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/stump_func_op.=
cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/roi_align_op.c=
c
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/key_split_ops.=
cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/while_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/listwise_l2r_o=
p.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/map_ops.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/elementwise_mu=
l_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/pool_gradient_=
op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/minmax_gradien=
t_ops.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/sigmoid_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/weighted_multi=
_sampling_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/crf_viterbi_op=
.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/counter_ops.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/pack_segments.=
cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/accumulate_op.=
cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/matmul_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/filler_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/rnn/recurrent_=
network_executor.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/rnn/recurrent_=
network_blob_fetcher_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/rnn/recurrent_=
network_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/batch_sparse_t=
o_dense_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/utils/signal_handler.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/utils/math/elementwise.c=
c
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/utils/math/reduce.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/utils/math/utils.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/utils/math/broadcast.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/utils/math/transpose.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/utils/smart_tensor_print=
er.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/utils/murmur_hash3.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/utils/bench_utils.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/utils/math_cpu.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/utils/proto_utils.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/utils/string_utils.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/utils/cpuid.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/utils/threadpool/ThreadP=
ool.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/utils/threadpool/pthrea=
dpool_impl.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/utils/threadpool/Thread=
PoolMobile.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/utils/threadpool/pthrea=
dpool.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/utils/proto_convert.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/utils/proto_wrap.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/observers/time_observer.=
cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/observers/runcnt_observe=
r.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/observers/profile_observ=
er.cc
+
+########################################################################=
########
+# caffe2/operators/quantized
+########################################################################=
########
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/quantized/int=
8_slice_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/quantized/int=
8_flatten_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/quantized/int=
8_add_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/quantized/ini=
t_qnnpack.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/quantized/int=
8_relu_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/quantized/int=
8_resize_nearest_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/quantized/int=
8_fc_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/quantized/int=
8_concat_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/quantized/int=
8_softmax_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/quantized/int=
8_conv_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/quantized/int=
8_roi_align_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/quantized/int=
8_sigmoid_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/quantized/int=
8_channel_shuffle_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/quantized/int=
8_average_pool_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/quantized/int=
8_given_tensor_fill_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/quantized/int=
8_quantize_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/quantized/int=
8_max_pool_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/quantized/int=
8_roi_align_op_test.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/quantized/int=
8_reshape_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/quantized/int=
8_conv_transpose_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/quantized/int=
8_leaky_relu_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/quantized/int=
8_conv_op_relu.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/quantized/int=
8_transpose_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/quantized/int=
8_dequantize_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/operators/quantized/int=
8_test.cc
+
+########################################################################=
########
+# caffe2/operators/ideep
+########################################################################=
########
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/utility=
_ops.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/quantiz=
ation/int8_add_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/quantiz=
ation/int8_relu_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/quantiz=
ation/int8_fully_connected_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/quantiz=
ation/int8_conv_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/quantiz=
ation/int8_given_tensor_fill_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/quantiz=
ation/int8_quantize_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/quantiz=
ation/int8_pool_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/quantiz=
ation/int8_dequantize_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/conv_tr=
anspose_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/reshape=
_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/expand_=
squeeze_dims_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/shape_o=
p.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/dropout=
_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/local_r=
esponse_normalization_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/element=
wise_sum_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/order_s=
witch_ops.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/pool_op=
.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/transpo=
se_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/spatial=
_batch_norm_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/relu_op=
.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/adam_op=
.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/momentu=
m_sgd_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/fully_c=
onnected_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/queue_o=
ps.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/conv_op=
.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/channel=
_shuffle_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/concat_=
split_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/sigmoid=
_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/operators/operato=
r_fallback_ideep.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/ideep/utils/ideep_regis=
ter.cc
+
+########################################################################=
########
+# caffe2/contrib
+########################################################################=
########
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/pytorch/script_=
module_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/shm_mutex/shm_m=
utex.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/nnpack/nnpack_o=
ps.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/opencl/context.=
cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/opencl/context_=
test.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/nccl/cuda_nccl_=
gpu.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/nccl/cuda_nccl_=
op_gpu.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/prof/prof_dag_s=
tats_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/prof/cuda_profi=
le_ops.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/aten/aten_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/aten/aten_op_gp=
u.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/gloo/allgather_=
ops.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/gloo/common_wor=
ld_ops_gpu.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/gloo/store_hand=
ler.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/gloo/common.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/gloo/broadcast_=
ops_gpu.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/gloo/py_export.=
cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/gloo/common_wor=
ld_ops.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/gloo/barrier_op=
s.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/gloo/context.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/gloo/allreduce_=
ops.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/gloo/allreduce_=
ops_gpu.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/gloo/broadcast_=
ops.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/gloo/reduce_sca=
tter_ops.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/tensorrt/tensor=
rt_op_trt.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/tensorrt/trt_ut=
ils.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/tensorrt/tensor=
rt_tranformer.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/image/image_input_op_gp=
u.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/image/image_input_op.cc
+
+########################################################################=
########
+# caffe2/predictor
+########################################################################=
########
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/predictor/predictor_uti=
ls.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/predictor/predictor.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/predictor/emulator/data=
_filler_test.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/predictor/emulator/benc=
hmark.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/predictor/emulator/data=
_filler.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/predictor/transforms.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/predictor/ThreadLocalPt=
r.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/predictor/predictor_con=
fig.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/predictor/predictor_tes=
t.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/experiments/operators/s=
parse_matrix_reshape_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/experiments/operators/f=
unhash_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/experiments/operators/t=
t_pad_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/experiments/operators/t=
t_contraction_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/experiments/operators/f=
ully_connected_op_sparse.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/experiments/operators/s=
parse_funhash_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/experiments/operators/f=
ully_connected_op_prune.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/experiments/operators/t=
t_contraction_op_gpu.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/experiments/operators/f=
ully_connected_op_decomposition.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/experiments/operators/f=
ully_connected_op_decomposition_gpu.cc
+
+########################################################################=
########
+# caffe2/opt
+########################################################################=
########
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/fusion.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/onnxifi_transformer=
.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/mobile_test.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/tvm_transformer.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/distributed_test.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/passes.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/converter_nomigraph=
_test.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/custom/converter_te=
st.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/custom/concat_elim.=
cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/custom/fakefp16_tra=
nsform.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/custom/concat_elim_=
test.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/custom/cc_amrc.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/custom/pointwise_el=
im.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/custom/converter.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/custom/glow_net_tra=
nsform.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/dead_code_elim.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/backend_cutting_tes=
t.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/distributed.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/nql/tests/GraphMatc=
herTest.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/nql/graphmatcher.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/backend_cutting.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/onnxifi_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/device.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/distributed_convert=
er.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/bound_shape_inferen=
cer.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/backend_transformer=
_base.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/annotations.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/shape_info.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/device_test.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/dead_code_elim_test=
.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/mobile.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/bound_shape_inferen=
ce_test.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/optimize_ideep.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/converter.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/opt/optimizer.cc
+
+########################################################################=
########
+# caffe2/onnx
+########################################################################=
########
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/onnx/offline_tensor.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/onnx/torch_ops/defs.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/onnx/torch_ops/schema.c=
c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/onnx/device.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/onnx/onnx_exporter.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/onnx/ssa_test.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/onnx/onnxifi_graph_info=
.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/onnx/backend_rep.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/onnx/backend.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/onnx/onnxifi_init.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/onnx/helper.cc
+
+########################################################################=
########
+# caffe2/mpi
+########################################################################=
########
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/mpi/mpi_gpu_test.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/mpi/mpi_common.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/mpi/mpi_ops_gpu.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/mpi/mpi_test.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/mpi/mpi_ops.cc
+
+########################################################################=
########
+# caffe2/video
+########################################################################=
########
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/video/video_decoder.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/video/video_input_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/video/video_input_op_gp=
u.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/video/optical_flow.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/video/video_io.cc
+
+########################################################################=
########
+# caffe2/sgd
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/sgd/ftrl_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/sgd/yellowfin_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/sgd/wngrad_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/sgd/iter_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/sgd/adagrad_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/sgd/clip_tensor_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/sgd/learning_rate_adapti=
on_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/sgd/adadelta_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/sgd/lars_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/sgd/rmsprop_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/sgd/adam_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/sgd/momentum_sgd_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/sgd/gftrl_op.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/sgd/learning_rate_op.cc
+
+
+########################################################################=
########
+# caffe2/serialize
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/serialize/inline_contain=
er.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/serialize/file_adapter.c=
c
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/serialize/istream_adapte=
r.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/serialize/read_adapter_i=
nterface.cc|caffe2_serialize
+
+########################################################################=
########
+# caffe2/core
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/net_parallel.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/int8_serialization.=
cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/net.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/blob_serialization.=
cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/net_simple.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/memonger.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/tensor.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/net_async_task.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/transform.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/net_async_task_grap=
h.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/net_dag_utils.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/net_simple_refcount=
.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/operator_schema.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/module.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/init.cc|caffe2
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/net_async_tracing.c=
c
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/common.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/workspace.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/types.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/allocator.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/prof_dag_counters.c=
c
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/init_intrinsics_che=
ck.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/operator.cc|caffe2_=
core
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/net_async_base.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/event.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/graph.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/qtensor_serializati=
on.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/context.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/tensor_int8.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/db.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/net_async_schedulin=
g.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/net_async_task_futu=
re.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/numa.cc|caffe2
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/export_c10_op_to_ca=
ffe2.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/context_base.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/blob_stats.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/init_denormals.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/stats.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/qtensor.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/plan_executor.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/nomnigraph/Represe=
ntations/NeuralNet.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/core/init_omp.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/python/pybind_state_int=
8.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/python/pybind_state_dlp=
ack.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/python/pybind_state_hip=
.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/python/mpi_python.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/python/pybind_state_gpu=
.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/python/pybind_state.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/python/pybind_state_nom=
ni.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/python/pybind_state_ide=
ep.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/python/pybind_state_reg=
istry.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/db/lmdb.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/db/create_db_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/db/leveldb.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/db/create_db_op_gpu.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/db/zmqdb.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/db/protodb.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/db/db_test.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/distributed/redis_store=
_handler.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/distributed/file_store_=
handler_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/distributed/redis_store=
_handler_op_gpu.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/distributed/redis_store=
_handler_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/distributed/store_handl=
er.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/distributed/file_store_=
handler.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/distributed/py_export.c=
c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/distributed/file_store_=
handler_op_gpu.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/distributed/store_ops.c=
c
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/transforms/single_op_tra=
nsform.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/transforms/common_subexp=
ression_elimination.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/transforms/pattern_net_t=
ransform.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/transforms/conv_to_nnpac=
k_transform.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/perfkernels/fused_8bit_=
rowwise_embedding_lookup_idx.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/perfkernels/adagrad_avx=
.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/perfkernels/embedding_l=
ookup_idx_avx2.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/perfkernels/embedding_lo=
okup.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/perfkernels/typed_axpy_=
avx2.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/perfkernels/embedding_l=
ookup_fused_8bit_rowwise_avx2.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/perfkernels/common_avx5=
12.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/perfkernels/fused_8bit_=
rowwise_embedding_lookup.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/perfkernels/embedding_lo=
okup_idx.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/perfkernels/math_cpu_bas=
e.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/perfkernels/common_avx2=
.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/perfkernels/common_avx.=
cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/perfkernels/embedding_l=
ookup_avx2.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/perfkernels/adagrad.cc|a=
dagrad
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/perfkernels/embedding_l=
ookup_fused_8bit_rowwise_idx_avx2.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/perfkernels/math_cpu_av=
x2.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/perfkernels/typed_axpy_=
avx.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/perfkernels/typed_axpy.=
cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/share/contrib/nnpack/nn=
pack_test.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/share/contrib/nnpack/co=
nv_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/share/contrib/zstd/quan=
t_decomp_zstd_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/share/contrib/depthwise=
/depthwise3x3_conv_op.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/share/contrib/depthwise=
/depthwise3x3_conv_op_test.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/test/caffe2_gtest_main.=
cc
+
+########################################################################=
########
+# aten/src/ATen
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/TensorNames.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/mkldnn/Runtime.c=
pp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/Utils.cpp|aten
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/ParallelNative.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/build/aten/src/ATen/core/OpsAlr=
eadyMovedToC10.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/build/aten/src/ATen/LegacyTHFun=
ctionsCPU.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/build/aten/src/ATen/TypeDefault=
.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/Context.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/build/aten/src/ATen/CPUType.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/build/aten/src/ATen/QuantizedCP=
UType.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/build/aten/src/ATen/SparseCPUTy=
pe.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/MemoryOverlap.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/ExpandUtils.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/ParallelNativeTBB=
.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/quantized/QTensor=
Impl.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/quantized/Quantiz=
er.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/DLConvertor.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/ThreadLocalDebugI=
nfo.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/Version.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/stub/CombinedStub=
.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/TensorUtils.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/SparseTensorImpl.=
cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/NamedTensorUtils.=
cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/ParallelThreadPoo=
lNative.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/CPUGenerator.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/ParallelCommon.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/DynamicLibrary.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/TensorGeometry.cp=
p
+
+########################################################################=
########
+# aten/src/Aten/core
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/core/dispatch/Dis=
patcher.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/core/dispatch/Ope=
ratorEntry.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/core/VariableHook=
sInterface.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/core/LegacyDevice=
TypeInit.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/core/grad_mode.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/core/interned_str=
ings.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/core/ATenGeneral.=
cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/core/blob.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/core/register_sym=
bols.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/core/op_registrat=
ion/op_registration.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/core/op_registrat=
ion/infer_schema.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/core/DeprecatedTy=
pePropertiesRegistry.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/core/Generator.cp=
p|aten_core
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/core/Formatting.c=
pp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/core/DeprecatedTy=
peProperties.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/core/type.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/core/ivalue.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/core/Dimname.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/core/NamedTensor.=
cpp|core
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/core/LegacyTypeDi=
spatch.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/core/Range.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/core/Tensor.cpp
+
+########################################################################=
########
+# aten/src/Aten/native/quantizied
+########################################################################=
########
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/leaky-relu.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/average-pooling.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/init.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8dwconv/up8x9-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8dwconv/mp8x25-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/u8rmax/sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8gemm/2x4c8-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/channel-shuffle.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/sdwconv/up4x9-psimd.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8gemm/4x4c2-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8conv/4x4c2-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8gavgpool/up8xm-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8gavgpool/up8x7-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8gavgpool/mp8x7p7q-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/indirection.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/convolution.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/x8zip/x2-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/x8zip/x4-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/x8zip/x3-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/x8zip/xm-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/fully-connected.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/x8lut/scalar.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/clamp.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/requantization/q31-scalar.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/requantization/q31-ssse3.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/requantization/fp32-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/requantization/precise-psimd.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/requantization/precise-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/requantization/q31-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/requantization/fp32-scalar.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/requantization/fp32-psimd.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/requantization/q31-sse4.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/requantization/gemmlowp-ssse3.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/requantization/precise-sse4.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/requantization/gemmlowp-sse4.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/requantization/gemmlowp-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/requantization/precise-ssse3.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/requantization/gemmlowp-scalar.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/requantization/precise-scalar.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/operator-delete.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/global-average-pooling.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/u8lut32norm/scalar.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/u8maxpool/sub16-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/u8maxpool/16x9p8q-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/sconv/6x8-psimd.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/add.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/max-pooling.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/sigmoid.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/u8clamp/sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/sgemm/6x8-psimd.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/operator-run.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/softargmax.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8vadd/sse2.c|q8vadd
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/deconvolution.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8avgpool/up8x9-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8avgpool/up8xm-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8avgpool/mp8x9p8q-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/fc-run.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/fc-prepack.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/conv-run.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/conv-prepack.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/deps/clog/src/clog.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8dwconv/up8x9-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8dwconv/mp8x25-sse2.c
+#
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/u8rmax/sse2.c|u8rmax
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8gemm/2x4c8-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8gemm/4x4c2-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8conv/4x4c2-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8gavgpool/up8xm-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8gavgpool/up8x7-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8gavgpool/mp8x7p7q-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/dummy.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/x8zip/x2-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/x8zip/x4-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/x8zip/x3-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/x8zip/xm-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/x8lut/scalar.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/requantization/q31-scalar.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/requantization/q31-ssse3.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/requantization/fp32-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/requantization/precise-psimd.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/requantization/precise-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/requantization/q31-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/requantization/fp32-scalar.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/requantization/fp32-psimd.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/requantization/q31-sse4.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/requantization/gemmlowp-ssse3.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/requantization/precise-sse4.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/requantization/gemmlowp-sse4.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/requantization/gemmlowp-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/requantization/precise-ssse3.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/requantization/gemmlowp-scalar.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/requantization/precise-scalar.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/u8lut32norm/scalar.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/u8maxpool/sub16-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/u8maxpool/16x9p8q-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/u8clamp/sse2.c|u8clamp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/sgemm/6x8-psimd.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8vadd/sse2.c|q8vadd
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8avgpool/up8x9-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8avgpool/up8xm-sse2.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8avgpool/mp8x9p8q-sse2.c
+
+# ARM
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8dwconv/up8x9-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8dwconv/mp8x25-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/u8rmax/neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8gemm/4x-sumrows-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8gemm/8x8-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8gemm/4x8c2-xzp-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8gemm/4x8-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8gemm/6x4-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8conv/8x8-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8conv/4x8-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8gavgpool/mp8x7p7q-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8gavgpool/up8xm-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8gavgpool/up8x7-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/x8zip/xm-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/x8zip/x4-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/x8zip/x3-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/x8zip/x2-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/hgemm/8x8-neonfp16arith.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/u8maxpool/sub16-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/u8maxpool/16x9p8q-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/u8clamp/neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/sgemm/6x8-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/sgemm/5x8-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8vadd/neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8avgpool/mp8x9p8q-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/requantization/precise-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/requantization/gemmlowp-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/requantization/q31-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/requantization/fp32-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8dwconv/up8x9-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8dwconv/mp8x25-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8gavgpool/mp8x7p7q-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8gavgpool/up8xm-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8gavgpool/up8x7-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8gemm/6x4-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8conv/8x8-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8conv/4x8-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8gemm/8x8-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8gemm/4x8c2-xzp-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8gemm/4x8-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/u8rmax/neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8gemm/4x-sumrows-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8vadd/neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8avgpool/mp8x9p8q-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8avgpool/up8x9-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/q8avgpool/up8xm-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/x8zip/xm-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/requantization/precise-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/requantization/gemmlowp-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8avgpool/up8x9-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/src/q8avgpool/up8xm-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/sgemm/5x8-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/u8clamp/neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/sgemm/6x8-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/requantization/fp32-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/u8maxpool/sub16-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/u8maxpool/16x9p8q-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/requantization/q31-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/x8zip/x2-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/x8zip/x3-neon.c
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized=
/cpu/qnnpack/wrappers/x8zip/x4-neon.c
+
+########################################################################=
########
+# aten/src/ATen/mkldnn
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/mkldnn/Ten=
sorShape.cpp|mkldnn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/mkldnn/IDe=
epRegistration.cpp|mkldnn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/mkldnn/Una=
ryOps.cpp|mkldnn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/mkldnn/MKL=
DNNCommon.cpp|mkldnn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/mkldnn/Uti=
ls.cpp|mkldnn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/mkldnn/Rel=
u.cpp|mkldnn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/mkldnn/Mkl=
dnnTensorMath.cpp|mkldnn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/mkldnn/Lin=
ear.cpp|mkldnn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/mkldnn/MKL=
DNNConversions.cpp|mkldnn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/mkldnn/Nor=
malization.cpp|mkldnn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/mkldnn/Bin=
aryOps.cpp|mkldnn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/mkldnn/Ten=
sorFactories.cpp|mkldnn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/mkldnn/Poo=
ling.cpp|mkldnn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/mkldnn/Con=
v.cpp|mkldnn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/mkldnn/Sof=
tMax.cpp|mkldnn
+
+########################################################################=
########
+# aten/src/ATen/native
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/TensorShap=
e.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Im2Col.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Indexing.c=
pp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/UnaryOps.c=
pp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/PointwiseO=
ps.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/layer_norm=
.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/WeightNorm=
.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/mkl/Linear=
Algebra.cpp|mkl
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/mkl/Spectr=
alOps.cpp|mkl
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/NaiveDilat=
edConvolution.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/PixelShuff=
le.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Convolutio=
nMM3d.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Fill.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/TensorTran=
sformations.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Embedding.=
cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Sorting.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Integratio=
n.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/RNN.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/SummaryOps=
.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/NNPACK.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Lerp.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/BatchLinea=
rAlgebra.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Cross.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/UpSampleLi=
near1d.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Scalar.cpp=
|aten
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Unique.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Repeat.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Itertools.=
cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/DilatedMax=
Pool3d.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/LinearAlge=
bra.cpp|native
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/LossCTC.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Linear.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/ReduceOps.=
cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/LossNLL.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Unfold2d.c=
pp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/UpSampleNe=
arest1d.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/RangeFacto=
ries.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/VariableMe=
thodStubs.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Col2Im.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Resize.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Distributi=
ons.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/LossNLL2d.=
cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Convolutio=
nMM2d.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/ConstantPa=
dNd.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Distance.c=
pp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/sparse/Spa=
rseTensor.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/sparse/Spa=
rseTensorMath.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/DispatchSt=
ub.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/AffineGrid=
Generator.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/AdaptiveMa=
xPooling3d.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/TensorIter=
ator.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/miopen/RNN=
_miopen.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/miopen/Con=
v_miopen.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/miopen/Bat=
chNorm_miopen.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Reflection=
Pad.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Copy.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Normalizat=
ion.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/UpSampleBi=
linear2d.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Dropout.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/DilatedMax=
Pool2d.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/TensorConv=
ersions.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/NaiveConvo=
lutionTranspose3d.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/LegacyDefi=
nitions.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/BinaryOps.=
cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/UpSampleNe=
arest3d.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Loss.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/TensorFact=
ories.cpp|native
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/TensorProp=
erties.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/AdaptiveAv=
eragePooling.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/LegacyBrid=
ge.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/TensorComp=
are.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/EmbeddingB=
ag.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Pooling.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/UpSampleNe=
arest2d.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/MaxUnpooli=
ng.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Onehot.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/AveragePoo=
l3d.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/AdaptiveMa=
xPooling2d.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Convolutio=
n.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/TypeProper=
ties.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/UpSampleBi=
cubic2d.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/NamedTenso=
r.cpp|native
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Replicatio=
nPadding.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Pow.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/AdaptiveAv=
eragePooling3d.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Unfold3d.c=
pp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/UpSampleTr=
ilinear3d.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Fractional=
MaxPool2d.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/SobolEngin=
eOps.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Convolutio=
nTBC.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/NaiveConvo=
lutionTranspose2d.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/LossMultiL=
abelMargin.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Memory.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/LossMultiM=
argin.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/LegacyNNDe=
finitions.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/AveragePoo=
l2d.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/GridSample=
r.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/SpectralOp=
s.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Activation=
.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Triangular=
Ops.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/SoftMax.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/PackedSequ=
ence.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/QuantizedL=
inear.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/TensorIter=
atorReduce.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/Fractional=
MaxPool3d.cpp
+
+########################################################################=
########
+# aten/src/ATen/native/cpu
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/cpu/Distan=
ceOpsKernel.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/cpu/Sortin=
gKernel.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/cpu/Multin=
omialKernel.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/cpu/FillKe=
rnel.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/cpu/PowKer=
nel.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/cpu/Depthw=
iseConvKernel.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/cpu/IndexK=
ernel.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/cpu/Tensor=
CompareKernel.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/cpu/Pointw=
iseOpsKernel.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/cpu/Reduce=
OpsKernel.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/cpu/CopyKe=
rnel.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/cpu/layer_=
norm_kernel.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/cpu/SoftMa=
xKernel.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/cpu/Unfold=
2d.cpp|native_cpu
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/cpu/GridSa=
mplerKernel.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/cpu/CrossK=
ernel.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/cpu/LerpKe=
rnel.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/cpu/Binary=
OpsKernel.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/cpu/UnaryO=
psKernel.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/cpu/Activa=
tion.cpp|native_cpu
+
+
+########################################################################=
########
+# aten/src/ATen/native/quantized
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
QTensor.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
Copy.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
TensorFactories.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
TensorCompare.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
cpu/init_qnnpack.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
cpu/q_avgpool.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
cpu/qreduction.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
cpu/qconv.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
cpu/qlinear.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
cpu/fbgemm_utils.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
cpu/fake_quantize_per_tensor_affine.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
cpu/qupsample_bilinear2d.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
cpu/qlinear_dynamic.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
cpu/fake_quantize_core.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
cpu/qconv_unpack.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
cpu/qconv_prepack.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
cpu/fake_quantize_per_channel_affine.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
cpu/qlinear_prepack.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
cpu/qmul.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
cpu/qsort.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
cpu/tensor_operators.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
cpu/qadd.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
cpu/qupsample_nearest2d.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
cpu/qrelu.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
cpu/qlinear_unpack.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
cpu/qconcat.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
cpu/qpool.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
cpu/q_adaavgpool.cpp|quantized
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/native/quantized/=
cpu/kernels/QuantizedOpKernels.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/cpu/FlushDenormal=
.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/detail/CUDAHooksI=
nterface.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/detail/HIPHooksIn=
terface.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/ATen/detail/CPUGuardIm=
pl.cpp
+
+########################################################################=
########
+# aten/src/THNN
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/THNN/init.cpp|thnn
+
+########################################################################=
########
+# aten/src/THC
+########################################################################=
########
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/THC/THCStorageCopy.cp=
p
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/THC/THCStorage.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/THC/generic/THCStorag=
eCopy.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/THC/generic/THCStorag=
e.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/THC/generic/THCTensor=
.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/THC/THCTensor.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/THC/THCCachingHostAll=
ocator.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/THC/THCGeneral.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/THC/THCStream.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/THC/THCAllocator.cpp
+
+########################################################################=
########
+# aten/src/TH
+########################################################################=
########
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/TH/vector/NEON.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/TH/vector/AVX2.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/TH/vector/VSX.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/TH/vector/AVX.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/TH/THTensorMoreMath.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/TH/THDiskFile.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/TH/THSize.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/TH/THTensorFill.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/TH/THLapack.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/TH/THStorageFunctions.=
cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/TH/THGeneral.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/TH/THTensorMath.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/TH/THMemoryFile.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/TH/THTensor.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/TH/THTensorEvenMoreMat=
h.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/TH/THVector.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/TH/THTensorRandom.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/TH/THTensorConv.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/TH/THBlas.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/TH/THLogAdd.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/TH/THAllocator.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/TH/THFile.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/aten/src/TH/THTensorLapack.cpp
+
+########################################################################=
########
+# torch/csrc
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/dl.c
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/MemoryFormat.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/DataLoader.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/DynamicTypes.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/Dtype.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/tensor/python_tensor=
.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/Exceptions.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/TypeInfo.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/onnx/init.cpp|csrc_o=
nnx
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/Device.cpp|csrc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/Size.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/PtrWrapper.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/Generator.cpp|torch_=
csrc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/utils.cpp|csrc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/serialization.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/Module.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/Storage.cpp|csrc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/QScheme.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/multiprocessing/init=
.cpp|csrc_multiprocessing
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/stub.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/python_dimname.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/Layout.cpp
+
+########################################################################=
########
+# csrc/utils
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/utils/object_ptr.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/utils/tensor_layouts=
.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/utils/byte_order.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/utils/python_arg_par=
ser.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/utils/tuple_parser.c=
pp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/utils/tensor_flatten=
.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/utils/init.cpp|csrc_=
utils
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/utils/tensor_numpy.c=
pp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/utils/tensor_new.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/utils/invalid_argume=
nts.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/utils/tensor_dtypes.=
cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/utils/tensor_qscheme=
s.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/utils/tensor_types.c=
pp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/utils/structseq.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/utils/variadic.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/utils/tensor_memoryf=
ormats.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/utils/throughput_ben=
chmark.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/utils/cuda_lazy_init=
.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/utils/tensor_list.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/utils/tensor_apply.c=
pp
+
+########################################################################=
########
+# csrc/api
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/jit.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/cuda.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/enum.cpp
+
+########################################################################=
########
+# csrc/data
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/data/dataset=
s/mnist.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/data/sampler=
s/distributed.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/data/sampler=
s/random.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/data/sampler=
s/sequential.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/data/sampler=
s/stream.cpp
+
+########################################################################=
########
+# csrc/nn
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/init.cpp|=
scrc_api
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/modules/d=
ropout.cpp|nn_modules
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/modules/l=
inear.cpp|nn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/modules/u=
psampling.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/modules/f=
old.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/modules/n=
ormalization.cpp|nn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/modules/p=
adding.cpp|nn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/modules/l=
oss.cpp|nn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/modules/a=
ctivation.cpp|nn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/modules/e=
mbedding.cpp|nn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/modules/c=
ontainer/functional.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/modules/c=
ontainer/named_any.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/modules/c=
onv.cpp|nn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/modules/d=
istance.cpp|nn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/modules/b=
atchnorm.cpp|nn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/modules/p=
ixelshuffle.cpp|nn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/modules/i=
nstancenorm.cpp|nn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/modules/p=
ooling.cpp|nn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/modules/_=
functions.cpp|nn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/modules/r=
nn.cpp|nn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/module.cp=
p|nn
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/options/d=
ropout.cpp|nn_options
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/options/l=
inear.cpp|nn_options
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/options/n=
ormalization.cpp|nn_options
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/options/v=
ision.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/options/p=
adding.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/options/a=
ctivation.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/options/e=
mbedding.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/options/c=
onv.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/options/b=
atchnorm.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/options/i=
nstancenorm.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/options/p=
ooling.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/nn/options/r=
nn.cpp|options
+
+########################################################################=
########
+# csrc/serialize
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/serialize/in=
put-archive.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/serialize/ou=
tput-archive.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/serialize.cp=
p|api_src
+
+########################################################################=
########
+# csrc/python
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/python/init.=
cpp|python
+
+########################################################################=
########
+# csrc/optim
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/optim/sgd.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/optim/lbfgs.=
cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/optim/rmspro=
p.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/optim/adam.c=
pp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/optim/adagra=
d.cpp|optim
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/optim/serial=
ize.cpp|api_optim
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/api/src/optim/optimi=
zer.cpp
+
+########################################################################=
########
+# csrc/distributed
+########################################################################=
########
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/rpc/req=
uest_callback_impl.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/rpc/rre=
f_proto.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/rpc/pro=
cess_group_agent.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/rpc/rpc=
_agent.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/rpc/pyt=
hon_call.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/rpc/req=
uest_callback.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/rpc/scr=
ipt_resp.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/rpc/ini=
t.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/rpc/rre=
f_context.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/rpc/rre=
f.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/rpc/pyt=
hon_functions.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/rpc/scr=
ipt_call.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/rpc/scr=
ipt_remote_call.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/rpc/pyt=
hon_rpc_handler.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/rpc/uti=
ls.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/rpc/pyt=
hon_resp.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/rpc/typ=
es.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/rpc/mes=
sage.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/rpc/fut=
ure_message.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/rpc/py_=
rref.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/rpc/pyt=
hon_remote_call.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/autogra=
d/context/context.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/autogra=
d/context/container.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/autogra=
d/init.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/autogra=
d/engine/dist_engine.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/autogra=
d/functions/sendrpc_backward.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/autogra=
d/functions/recvrpc_backward.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/autogra=
d/utils.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/autogra=
d/rpc_messages/propagate_gradients_resp.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/autogra=
d/rpc_messages/propagate_gradients_req.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/autogra=
d/rpc_messages/cleanup_autograd_context_resp.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/autogra=
d/rpc_messages/autograd_metadata.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/autogra=
d/rpc_messages/rpc_with_autograd.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/autogra=
d/rpc_messages/cleanup_autograd_context_req.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/c10d/re=
ducer.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/c10d/in=
it.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/c10d/dd=
p.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/distributed/c10d/co=
mm.cpp
+
+########################################################################=
########
+# torch/csrc/jit
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/profiling_record=
.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/source_range.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/graph_executor.c=
pp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/import_legacy.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/operator.cpp|jit
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/python_ir.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/ir.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/attributes.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/constants.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/profiling_graph_=
executor_impl.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/register_c10_ops=
.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/scope.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/vararg_functions=
.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/function.cpp|csr=
c_jit
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/export_module.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/register_prim_op=
s.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/init.cpp|jit
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/symbolic_script.=
cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/import.cpp|jit
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/testing/file_che=
ck.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/instruction.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/python_arg_flatt=
en.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/unpickler.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/pickler.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/source_range_ser=
ialization.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/netdef_converter=
.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/print_handler.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/pass_manager.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/import_export_he=
lpers.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/hooks_for_testin=
g.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/pickle.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/jit_log.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/register_string_=
ops.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/argument_spec.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/irparser.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/register_special=
_ops.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/subgraph_matcher=
.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/export.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/node_hashing.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/interpreter.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/operator_option=
s.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/autodiff.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/python_tracer.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/import_source.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/python_interpret=
er.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/update_graph_exe=
cutor_opt.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/tracer.cpp
+
+########################################################################=
########
+# csrc/jit/fuser
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/fuser/executor.c=
pp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/fuser/cuda/fuse=
d_kernel.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/fuser/codegen.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/fuser/kernel_cac=
he.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/fuser/interface.=
cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/fuser/fallback.c=
pp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/fuser/compiler.c=
pp|jit_fuser
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/fuser/cpu/fused_=
kernel.cpp
+
+########################################################################=
########
+# torch/csrc/passes
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/inplace_c=
heck.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/dead_code=
_elimination.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/loop_unro=
lling.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/lower_tup=
les.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/remove_ex=
pands.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/alias_ana=
lysis.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/canonical=
ize.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/remove_in=
place_ops.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/onnx.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/utils/mem=
ory_dag.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/utils/sub=
graph_utils.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/utils/che=
ck_alias_annotation.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/constant_=
propagation.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/canonical=
ize_ops.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/create_au=
todiff_subgraphs.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/constant_=
pooling.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/specializ=
e_autogradzero.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/peephole.=
cpp|jit
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/insert_gu=
ards.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/shape_ana=
lysis.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/inline_fo=
rk_wait.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/subgraph_=
rewrite.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/clear_und=
efinedness.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/inline_fo=
rked_closures.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/lower_gra=
d_of.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/python_pr=
int.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/onnx/help=
er.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/onnx/unpa=
ck_quantized_weights.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/onnx/peep=
hole.cpp|onnx
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/onnx/scal=
ar_type_analysis.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/onnx/cast=
_all_constant_to_floating.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/onnx/cons=
tant_fold.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/onnx/prep=
are_division_for_onnx.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/onnx/fixu=
p_onnx_loop.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/bailout_g=
raph.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/quantizat=
ion.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/liveness.=
cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/batch_mm.=
cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/decompose=
_ops.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/inliner.c=
pp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/requires_=
grad_analysis.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/lower_gra=
ph.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/graph_fus=
er.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/lift_clos=
ures.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/guard_eli=
mination.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/inline_au=
todiff_subgraphs.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/erase_num=
ber_types.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/fuse_line=
ar.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/common_su=
bexpression_elimination.cpp|jit_passes
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/passes/fixup_tra=
ce_scope_blocks.cpp
+
+########################################################################=
########
+# csrc/script
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/script/strtod.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/script/function_=
schema_parser.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/script/convert_t=
o_ssa.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/script/error_rep=
ort.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/script/module_sa=
ve.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/script/schema_ma=
tching.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/script/logging.c=
pp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/script/init.cpp|=
jit_scripts
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/script/concrete_=
module_type.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/script/lexer.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/script/schema_ty=
pe_parser.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/script/sugared_v=
alue.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/script/class_typ=
e.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/script/module.cp=
p|jit_script
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/script/python_su=
gared_value.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/script/canonical=
ize_modified_loop.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/script/python_tr=
ee_views.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/script/inline_lo=
op_condition.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/script/parser.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/script/exit_tran=
sforms.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/script/compiler.=
cpp|jit_script
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/script/jit_excep=
tion.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/script/script_ty=
pe_parser.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/script/builtin_f=
unctions.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/script/object.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/script/edit_dist=
ance.cpp
+
+########################################################################=
########
+# csrc/jit/mobile
+########################################################################=
########
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/mobile/function=
.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/mobile/import.c=
pp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/mobile/module.c=
pp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/mobile/interpre=
ter.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/jit/mobile/register=
_mobile_ops.cpp
+
+########################################################################=
########
+# csrc/autograd
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/python_lega=
cy_variable.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/python_vari=
able.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/python_engi=
ne.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/python_cpp_=
function.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/engine.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/function.cp=
p|csrc_autograd
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/profiler_c=
uda.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/init.cpp|au=
tograd
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/anomaly_mod=
e.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/input_buffe=
r.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/record_func=
tion.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/autograd.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/VariableTyp=
eManual.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/profiler.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/variable.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/cpp_hook.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/saved_varia=
ble.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/python_func=
tion.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/python_hook=
.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/python_vari=
able_indexing.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/record_func=
tion_ops.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/python_anom=
aly_mode.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/custom_func=
tion.cpp
+
+########################################################################=
########
+# csrc/autograd/functions
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/function_ho=
ok.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/functions/t=
ensor.cpp|atuograd_functions
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/functions/i=
nit.cpp|autograd_functions
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/functions/a=
ccumulate_grad.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/functions/u=
tils.cpp|auograd_functions
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/functions/b=
asic_ops.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/functions/=
comm.cpp
+
+########################################################################=
########
+# csrc/lib/libshm
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/lib/libshm/core.cpp|libsh=
m
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/lib/libshm/manager.cpp
+
+########################################################################=
########
+# c10d
+########################################################################=
########
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/lib/c10d/Utils.cpp|c10d
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/lib/c10d/ProcessGroupNCC=
L.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/lib/c10d/ProcessGroup.cp=
p
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/lib/c10d/HashStore.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/lib/c10d/example/allredu=
ce.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/lib/c10d/ProcessGroupGlo=
o.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/lib/c10d/Store.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/lib/c10d/TCPStore.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/lib/c10d/ProcessGroupMPI=
.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/lib/c10d/PrefixStore.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/lib/c10d/FileStore.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/torch/lib/c10d/NCCLUtils.cpp
+
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/warpctc/ctc_op_=
gpu.cpp
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/caffe2/contrib/warpctc/ctc_op.=
cpp
+
+########################################################################=
########
+# c10/util
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/util/numa.cpp|c10
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/util/UniqueVoidPtr.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/util/Logging.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/util/TypeTraits.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/util/StringUtil.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/util/Backtrace.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/util/flags_use_gflags.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/util/Half.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/util/Exception.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/util/flags_use_no_gflags.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/util/TypeList.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/util/thread_name.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/util/Type.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/util/LeftRight.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/util/Metaprogramming.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/util/typeid.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/util/C++17.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/util/Array.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/util/intrusive_ptr.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/util/SmallVector.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/util/Optional.cpp
+
+########################################################################=
########
+# c10/core
+########################################################################=
########
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/core/Storage.cpp|c10
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/core/Allocator.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/core/Stream.cpp|c10
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/core/Scalar.cpp|c10
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/core/DefaultDtype.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/core/impl/DeviceGuardImplIn=
terface.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/core/impl/LocalTensorTypeSe=
t.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/core/Device.cpp|c10
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/core/CopyBytes.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/core/TensorTypeId.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/core/DeviceType.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/core/UndefinedTensorImpl.cp=
p
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/core/thread_pool.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/core/TensorTypeSet.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/core/CPUAllocator.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/core/TensorImpl.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/core/TensorOptions.cpp
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/c10/core/StorageImpl.cpp
+
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/build/caffe2/proto/caffe2.pb.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/build/caffe2/proto/caffe2_legac=
y.pb.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/build/caffe2/proto/hsm.pb.cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/build/caffe2/proto/torch.pb.cc
+#LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/build/caffe2/proto/metanet.pb.=
cc
+LIBPYTORCH_SRCS-y +=3D $(LIBPYTORCH_SRC)/build/caffe2/proto/predictor_co=
nsts.pb.cc
+LIBPYTORCH_SRCS-y+=3D $(LIBPYTORCH_SRC)/build/caffe2/proto/prof_dag.pb.c=
c
+
+########################################################################=
########
+# third_party/miniz
+########################################################################=
########
+LIBPYTORCH_SRCS-y+=3D $(LIBPYTORCH_SRC)/third_party/miniz-2.0.8/miniz.c
+
+########################################################################=
########
+# torch/csrc/autograd/generated
+########################################################################=
########
+LIBPYTORCH_SRCS-y+=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/generated/Fu=
nctions.cpp
+LIBPYTORCH_SRCS-y+=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/generated/Va=
riableType_4.cpp
+LIBPYTORCH_SRCS-y+=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/generated/Va=
riableType_0.cpp
+LIBPYTORCH_SRCS-y+=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/generated/Va=
riableType_1.cpp
+LIBPYTORCH_SRCS-y+=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/generated/Va=
riableType_2.cpp
+LIBPYTORCH_SRCS-y+=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/generated/Va=
riableType_3.cpp
+LIBPYTORCH_SRCS-y+=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/generated/py=
thon_functions.cpp
+LIBPYTORCH_SRCS-y+=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/generated/py=
thon_nn_functions.cpp
+LIBPYTORCH_SRCS-y+=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/generated/py=
thon_torch_functions.cpp
+LIBPYTORCH_SRCS-y+=3D $(LIBPYTORCH_SRC)/torch/csrc/autograd/generated/py=
thon_variable_methods.cpp
+
+$(LIBPYTORCH_BUILD)/.prepared: $(LIBPYTORCH_BUILD)/.origin
+	cd $(LIBPYTORCH_SRC) && mkdir -p build/caffe2/proto && mkdir -p build/a=
ten/src/ATen
+	cd $(LIBPYTORCH_SRC) && \
+		python3 aten/src/ATen/gen.py --source-path aten/src/ATen/ --install_di=
r build/aten/src/ATen/ aten/src/ATen/Declarations.cwrap aten/src/THNN/gen=
eric/THNN.h aten/src/THCUNN/generic/THCUNN.h aten/src/ATen/nn.yaml aten/s=
rc/ATen/native/native_functions.yaml
+	cd $(LIBPYTORCH_SRC) && \
+		cp aten/src/ATen/common_with_cwrap.py tools/shared/cwrap_common.py && =
\
+		cp torch/_utils_internal.py tools/shared && \
+		python3 tools/setup_helpers/generate_code.py  --declarations-path buil=
d/aten/src/ATen/Declarations.yaml --nn-path aten/src/
+	cd $(LIBPYTORCH_SRC) && \
+		protoc -I. --cpp_out=3Ddllexport_decl=3DCAFFE2_API:build/ caffe2/proto=
/caffe2_legacy.proto && \
+		protoc -I. --cpp_out=3Ddllexport_decl=3DCAFFE2_API:build/ caffe2/proto=
/hsm.proto && \
+		protoc -I. --cpp_out=3Ddllexport_decl=3DCAFFE2_API:build/ caffe2/proto=
/torch.proto && \
+		protoc -I. --cpp_out=3Ddllexport_decl=3DCAFFE2_API:build/ caffe2/proto=
/metanet.proto && \
+		protoc -I. --cpp_out=3Ddllexport_decl=3DCAFFE2_API:build/ caffe2/proto=
/predictor_consts.proto && \
+		protoc -I. --cpp_out=3Ddllexport_decl=3DCAFFE2_API:build/ caffe2/proto=
/prof_dag.proto &&\
+		protoc -I. --cpp_out=3Ddllexport_decl=3DCAFFE2_API:build/ caffe2/proto=
/caffe2.proto
+
+UK_PREPARE +=3D $(LIBPYTORCH_BUILD)/.prepared
--=20
2.20.1





From minios-devel-bounces@lists.xenproject.org Wed Apr 08 11:07:24 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 08 Apr 2020 11:07: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 1jM8YF-0001p3-0M; Wed, 08 Apr 2020 11:07:23 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=s7/P=5Y=neclab.eu=sharan.santhanam@srs-us1.protection.inumbo.net>)
 id 1jM8YD-0001oy-My
 for minios-devel@lists.xenproject.org; Wed, 08 Apr 2020 11:07:21 +0000
X-Inumbo-ID: 1d0badb8-7989-11ea-b58d-bc764e2007e4
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 1d0badb8-7989-11ea-b58d-bc764e2007e4;
 Wed, 08 Apr 2020 11:07:20 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id E0DF3F2020;
 Wed,  8 Apr 2020 13:07:18 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (atlas-b.office.hd)
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 po_hGeLu5MVN; Wed,  8 Apr 2020 13:07:18 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from puck.office.hd (puck.office.hd [192.168.24.91])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id B6E2AF201E;
 Wed,  8 Apr 2020 13:07:10 +0200 (CEST)
Received: from [10.7.0.82] (192.168.24.96) by puck.office.hd (192.168.24.91)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Wed, 8 Apr 2020
 13:07:09 +0200
Subject: Re: [UNIKRAFT PATCH v4 1/7] plat: build: Add a config option to
 enable fp on arm64
To: Jia He <justin.he@arm.com>, <minios-devel@lists.xenproject.org>
References: <20200407071349.112115-1-justin.he@arm.com>
 <20200407071349.112115-2-justin.he@arm.com>
From: Sharan Santhanam <sharan.santhanam@neclab.eu>
Message-ID: <bc266963-84c5-b0a5-07ee-68db6e7894a1@neclab.eu>
Date: Wed, 8 Apr 2020 13:07:08 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.9.1
MIME-Version: 1.0
In-Reply-To: <20200407071349.112115-2-justin.he@arm.com>
Content-Type: text/plain; charset="utf-8"; format=flowed
Content-Transfer-Encoding: 7bit
Content-Language: en-US
X-Originating-IP: [192.168.24.96]
X-ClientProxiedBy: puck.office.hd (192.168.24.91) To puck.office.hd
 (192.168.24.91)
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>, Kaly Xin <Kaly.Xin@arm.com>,
 Simon Kuenzer <simon.kuenzer@neclab.eu>, nd@arm.com
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>


Reviewed-by: Sharan Santhanam <sharan.santhanam@neclab.eu>

On 4/7/20 9:13 AM, Jia He wrote:
> This config  CONFIG_FPSIMD is to enable the support for arm64 fp feature.
> Fp is for application only, never for Unkraft kernel itself.
>
> This config is 'n' by default since there is some overhead during context
> switch.
>
> Signed-off-by: Jia He <justin.he@arm.com>
> ---
>   plat/Config.uk | 7 +++++++
>   1 file changed, 7 insertions(+)
>
> diff --git a/plat/Config.uk b/plat/Config.uk
> index 0eb5a10..76a3f31 100644
> --- a/plat/Config.uk
> +++ b/plat/Config.uk
> @@ -21,3 +21,10 @@ config HZ
>   	help
>   		Configure the timer interrupt frequency.
>   		Only change this if you know what you're doing.
> +
> +config FPSIMD
> +	bool "floating point & simd support in application"
> +	default n
> +	depends on ARCH_ARM_64
> +	help
> +		Enable support FPU usage in application


From minios-devel-bounces@lists.xenproject.org Wed Apr 08 11:07:58 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 08 Apr 2020 11:07: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 1jM8Yo-0001qS-3x; Wed, 08 Apr 2020 11:07: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=s7/P=5Y=neclab.eu=sharan.santhanam@srs-us1.protection.inumbo.net>)
 id 1jM8Ym-0001qI-Nr
 for minios-devel@lists.xenproject.org; Wed, 08 Apr 2020 11:07:56 +0000
X-Inumbo-ID: 32125ce8-7989-11ea-81cd-12813bfff9fa
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 32125ce8-7989-11ea-81cd-12813bfff9fa;
 Wed, 08 Apr 2020 11:07:55 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 57ED6F2020;
 Wed,  8 Apr 2020 13:07:54 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (atlas-b.office.hd)
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 bBVvv4lvuzSl; Wed,  8 Apr 2020 13:07:54 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from puck.office.hd (puck.office.hd [192.168.24.91])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 2CE1DF201E;
 Wed,  8 Apr 2020 13:07:46 +0200 (CEST)
Received: from [10.7.0.82] (192.168.24.96) by puck.office.hd (192.168.24.91)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Wed, 8 Apr 2020
 13:07:45 +0200
Subject: Re: [UNIKRAFT PATCH v4 3/7] plat/kvm: arm64: Enable the fp/simd at
 the starting point
To: Jia He <justin.he@arm.com>, <minios-devel@lists.xenproject.org>
References: <20200407071349.112115-1-justin.he@arm.com>
 <20200407071349.112115-4-justin.he@arm.com>
From: Sharan Santhanam <sharan.santhanam@neclab.eu>
Message-ID: <2dfb83c9-43bd-9443-33c6-a56438bf5c45@neclab.eu>
Date: Wed, 8 Apr 2020 13:07:44 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.9.1
MIME-Version: 1.0
In-Reply-To: <20200407071349.112115-4-justin.he@arm.com>
Content-Type: text/plain; charset="utf-8"; format=flowed
Content-Transfer-Encoding: 7bit
Content-Language: en-US
X-Originating-IP: [192.168.24.96]
X-ClientProxiedBy: titania.office.hd (192.168.24.89) To puck.office.hd
 (192.168.24.91)
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>, Kaly Xin <Kaly.Xin@arm.com>,
 Simon Kuenzer <simon.kuenzer@neclab.eu>, nd@arm.com
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Reviewed-by: Sharan Santhanam <sharan.santhanam@neclab.eu>

On 4/7/20 9:13 AM, Jia He wrote:
> Write the sys reg to enable the fp/simd feature, otherwise it will
> cause floating point/simd exception when touching q0-q31.
>
> Signed-off-by: Jia He <justin.he@arm.com>
> ---
>   plat/kvm/arm/entry64.S | 8 ++++++++
>   1 file changed, 8 insertions(+)
>
> diff --git a/plat/kvm/arm/entry64.S b/plat/kvm/arm/entry64.S
> index 359a310..c4de334 100644
> --- a/plat/kvm/arm/entry64.S
> +++ b/plat/kvm/arm/entry64.S
> @@ -36,6 +36,7 @@
>   #include <kvm-arm/mm.h>
>   #include <arm/cpu_defs.h>
>   #include <uk/plat/common/sections.h>
> +#include <uk/config.h>
>   
>   .global page_table_size
>   .data
> @@ -49,6 +50,13 @@ page_table_size:
>   
>   .text
>   ENTRY(_libkvmplat_entry)
> +#ifdef CONFIG_FPSIMD
> +	/* Enable fp/simd support */
> +	ldr        x0, =(3 << 20)
> +	msr        cpacr_el1, x0
> +	isb
> +#endif
> +
>   	/* Calculate the image size */
>   	ldr x25, =_dtb
>   	ldr x26, =_end


From minios-devel-bounces@lists.xenproject.org Wed Apr 08 11:34:24 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 08 Apr 2020 11:34: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 1jM8yO-0004uf-Dk; Wed, 08 Apr 2020 11:34: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=s7/P=5Y=neclab.eu=sharan.santhanam@srs-us1.protection.inumbo.net>)
 id 1jM8yN-0004uV-N9
 for minios-devel@lists.xenproject.org; Wed, 08 Apr 2020 11:34:23 +0000
X-Inumbo-ID: e3e1edb4-798c-11ea-81d0-12813bfff9fa
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id e3e1edb4-798c-11ea-81d0-12813bfff9fa;
 Wed, 08 Apr 2020 11:34:22 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 0C46BF2020;
 Wed,  8 Apr 2020 13:34:21 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (atlas-b.office.hd)
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 VtP0B2PJpSMu; Wed,  8 Apr 2020 13:34:20 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from puck.office.hd (puck.office.hd [192.168.24.91])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id C3C63F201E;
 Wed,  8 Apr 2020 13:34:12 +0200 (CEST)
Received: from [10.7.0.82] (192.168.24.96) by puck.office.hd (192.168.24.91)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Wed, 8 Apr 2020
 13:34:12 +0200
Subject: Re: [UNIKRAFT PATCH v4 4/7] plat/arm: Support fp/simd save/restore
 during context switch
To: Jia He <justin.he@arm.com>, <minios-devel@lists.xenproject.org>
References: <20200407071349.112115-1-justin.he@arm.com>
 <20200407071349.112115-5-justin.he@arm.com>
From: Sharan Santhanam <sharan.santhanam@neclab.eu>
Message-ID: <ea2c490c-7eec-12ca-7448-4ac61ecbde7b@neclab.eu>
Date: Wed, 8 Apr 2020 13:34:10 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.9.1
MIME-Version: 1.0
In-Reply-To: <20200407071349.112115-5-justin.he@arm.com>
Content-Type: text/plain; charset="utf-8"; format=flowed
Content-Transfer-Encoding: 8bit
Content-Language: en-US
X-Originating-IP: [192.168.24.96]
X-ClientProxiedBy: oberon.office.hd (192.168.24.90) To puck.office.hd
 (192.168.24.91)
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>, Kaly Xin <Kaly.Xin@arm.com>,
 Simon Kuenzer <simon.kuenzer@neclab.eu>, nd@arm.com
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Hello Justin,

Please find the comment inline

Thanks & Regards
Sharan

On 4/7/20 9:13 AM, Jia He wrote:
> Floating point feature is useful for some applications. We should
> save/restore fp registers during context switch.
>
> Signed-off-by: Jia He <justin.he@arm.com>
> ---
>   plat/common/arm/fp_arm64.c          | 82 +++++++++++++++++++++++++++++
>   plat/common/arm/thread_start64.S    |  1 +
>   plat/common/include/arm/arm64/cpu.h | 46 +++++++++++++++-
>   plat/kvm/Makefile.uk                |  3 +-
>   4 files changed, 129 insertions(+), 3 deletions(-)
>   create mode 100644 plat/common/arm/fp_arm64.c
>
> diff --git a/plat/common/arm/fp_arm64.c b/plat/common/arm/fp_arm64.c
> new file mode 100644
> index 0000000..d624063
> --- /dev/null
> +++ b/plat/common/arm/fp_arm64.c
> @@ -0,0 +1,82 @@
> +/* SPDX-License-Identifier: ISC */
> +/*
> + * Authors: Jia He <justin.he@arm.com>
> + *
> + * Copyright (c) 2020 Arm Ltd.
> + *
> + * Permission to use, copy, modify, and/or distribute this software
> + * for any purpose with or without fee is hereby granted, provided
> + * that the above copyright notice and this permission notice appear
> + * in all copies.
> + *
> + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
> + * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
> + * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
> + * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR
> + * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
> + * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
> + * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
> + * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
> + */
> +#include <kvm/config.h>
  Do we need the kvm/config.h here shouldn't you provide uk/config.h?

> +#include <uk/plat/common/cpu.h>
> +
> +#ifdef CONFIG_FPSIMD
If we use this restrict the compilation in Makefile.uk using CONFIG_FP_SIMD
why do we use it here as well?

> +void fpsimd_save_state(uintptr_t ptr)
> +{
> +	__u32 fpcr, fpsr;
> +
> +	__asm__ __volatile__(
> +		"mrs	%0, fpcr\n"
> +		"mrs	%1, fpsr\n"
> +		"stp	q0,  q1,  [%2, #16 *  0]\n"
> +		"stp	q2,  q3,  [%2, #16 *  2]\n"
> +		"stp	q4,  q5,  [%2, #16 *  4]\n"
> +		"stp	q6,  q7,  [%2, #16 *  6]\n"
> +		"stp	q8,  q9,  [%2, #16 *  8]\n"
> +		"stp	q10, q11, [%2, #16 * 10]\n"
> +		"stp	q12, q13, [%2, #16 * 12]\n"
> +		"stp	q14, q15, [%2, #16 * 14]\n"
> +		"stp	q16, q17, [%2, #16 * 16]\n"
> +		"stp	q18, q19, [%2, #16 * 18]\n"
> +		"stp	q20, q21, [%2, #16 * 20]\n"
> +		"stp	q22, q23, [%2, #16 * 22]\n"
> +		"stp	q24, q25, [%2, #16 * 24]\n"
> +		"stp	q26, q27, [%2, #16 * 26]\n"
> +		"stp	q28, q29, [%2, #16 * 28]\n"
> +		"stp	q30, q31, [%2, #16 * 30]\n"
> +		: "=&r"(fpcr), "=&r"(fpsr) : "r"(ptr));
> +
> +	((struct fpsimd_state *)ptr)->fpcr = fpcr;
> +	((struct fpsimd_state *)ptr)->fpsr = fpsr;
> +}
> +
> +void fpsimd_restore_state(uintptr_t ptr)
> +{
> +	__u32 fpcr, fpsr;
> +
> +	fpcr = ((struct fpsimd_state *)ptr)->fpcr;
> +	fpsr = ((struct fpsimd_state *)ptr)->fpsr;
> +
> +	__asm__ __volatile__(
> +		"ldp	q0,  q1,  [%2, #16 *  0]\n"
> +		"ldp	q2,  q3,  [%2, #16 *  2]\n"
> +		"ldp	q4,  q5,  [%2, #16 *  4]\n"
> +		"ldp	q6,  q7,  [%2, #16 *  6]\n"
> +		"ldp	q8,  q9,  [%2, #16 *  8]\n"
> +		"ldp	q10, q11, [%2, #16 * 10]\n"
> +		"ldp	q12, q13, [%2, #16 * 12]\n"
> +		"ldp	q14, q15, [%2, #16 * 14]\n"
> +		"ldp	q16, q17, [%2, #16 * 16]\n"
> +		"ldp	q18, q19, [%2, #16 * 18]\n"
> +		"ldp	q20, q21, [%2, #16 * 20]\n"
> +		"ldp	q22, q23, [%2, #16 * 22]\n"
> +		"ldp	q24, q25, [%2, #16 * 24]\n"
> +		"ldp	q26, q27, [%2, #16 * 26]\n"
> +		"ldp	q28, q29, [%2, #16 * 28]\n"
> +		"ldp	q30, q31, [%2, #16 * 30]\n"
> +		"msr	fpcr, %0\n"
> +		"msr	fpsr, %1\n"
> +		: : "r"(fpcr), "r"(fpsr), "r"(ptr));
> +}
> +#endif
> diff --git a/plat/common/arm/thread_start64.S b/plat/common/arm/thread_start64.S
> index 9a80f62..d79fd19 100644
> --- a/plat/common/arm/thread_start64.S
> +++ b/plat/common/arm/thread_start64.S
> @@ -34,6 +34,7 @@
>   #include <uk/plat/common/sw_ctx.h>
>   #include <uk/arch/lcpu.h>
>   #include <uk/asm.h>
> +#include <uk/config.h>
Why do we need this header here?
>   
>   /*
>    * Thread stack memory layout:
> diff --git a/plat/common/include/arm/arm64/cpu.h b/plat/common/include/arm/arm64/cpu.h
> index 122727a..93ad13b 100644
> --- a/plat/common/include/arm/arm64/cpu.h
> +++ b/plat/common/include/arm/arm64/cpu.h
> @@ -116,6 +116,47 @@ void halt(void);
>   void reset(void);
>   void system_off(void);
>   
> +#ifdef CONFIG_FPSIMD
> +struct fpsimd_state {
> +	__u64		regs[32 * 2];
> +	__u32		fpsr;
> +	__u32		fpcr;
> +};
> +
> +extern void fpsimd_save_state(uintptr_t ptr);
> +extern void fpsimd_restore_state(uintptr_t ptr);
> +
> +static inline void save_extregs(struct sw_ctx *ctx)
> +{
> +	fpsimd_save_state(ctx->extregs);
> +}
> +
> +static inline void restore_extregs(struct sw_ctx *ctx)
> +{
> +	fpsimd_restore_state(ctx->extregs);
> +}
> +
> +static inline struct sw_ctx *arch_alloc_sw_ctx(struct uk_alloc *allocator)
> +{
> +	struct sw_ctx *ctx;
> +
> +	ctx = (struct sw_ctx *)uk_malloc(allocator,
> +			sizeof(struct sw_ctx) + sizeof(struct fpsimd_state));
> +	if (ctx)
> +		ctx->extregs = (uintptr_t)((void *)ctx + sizeof(struct sw_ctx));
> +
> +	uk_pr_debug("Allocating %lu + %lu bytes for sw ctx at %p, extregs at %p\n",
> +			sizeof(struct sw_ctx), sizeof(struct fpsimd_state),
> +			ctx, (void *)ctx->extregs);
> +
> +	return ctx;
> +}
> +
> +static inline void arch_init_extregs(struct sw_ctx *ctx __unused)
> +{
> +}
> +
> +#else /* !CONFIG_FPSIMD */
>   static inline void save_extregs(struct sw_ctx *ctx __unused)
>   {
>   }
> @@ -128,9 +169,9 @@ static inline struct sw_ctx *arch_alloc_sw_ctx(struct uk_alloc *allocator)
>   {
>   	struct sw_ctx *ctx;
>   
> -	ctx = uk_malloc(allocator, sizeof(struct sw_ctx));
> +	ctx = (struct sw_ctx *)uk_malloc(allocator, sizeof(struct sw_ctx));
>   	uk_pr_debug("Allocating %lu bytes for sw ctx at %p\n",
> -		   sizeof(struct sw_ctx), ctx);
> +		sizeof(struct sw_ctx), ctx);
>   
>   	return ctx;
>   }
> @@ -140,4 +181,5 @@ static inline void arch_init_extregs(struct sw_ctx *ctx)
>   	ctx->extregs = (uintptr_t)ctx + sizeof(struct sw_ctx);
>   }
>   
> +#endif /* CONFIG_FPSIMD */
>   #endif /* __PLAT_COMMON_ARM64_CPU_H__ */
> diff --git a/plat/kvm/Makefile.uk b/plat/kvm/Makefile.uk
> index a6d6f5e..9354d64 100644
> --- a/plat/kvm/Makefile.uk
> +++ b/plat/kvm/Makefile.uk
> @@ -82,7 +82,8 @@ LIBKVMPLAT_SRCS-$(CONFIG_ARCH_ARM_64) += $(UK_PLAT_COMMON_BASE)/arm/cache64.S|co
>   LIBKVMPLAT_SRCS-$(CONFIG_ARCH_ARM_64) += $(UK_PLAT_COMMON_BASE)/arm/psci_arm64.S|common
>   LIBKVMPLAT_SRCS-$(CONFIG_ARCH_ARM_64) += $(UK_PLAT_COMMON_BASE)/arm/time.c|common
>   LIBKVMPLAT_SRCS-$(CONFIG_ARCH_ARM_64) += $(UK_PLAT_COMMON_BASE)/arm/generic_timer.c|common
> -LIBKVMPLAT_SRCS-$(CONFIG_ARCH_ARM_64) += $(UK_PLAT_COMMON_BASE)/arm/traps.c|common
> +LIBKVMPLAT_SRCS-$(CONFIG_ARCH_ARM_64) += $(UK_PLAT_COMMON_BASE)/arm/traps.c|isr
> +LIBKVMPLAT_SRCS-$(CONFIG_FPSIMD)      += $(UK_PLAT_COMMON_BASE)/arm/fp_arm64.c|isr
>   ifeq ($(CONFIG_HAVE_SCHED),y)
>   LIBKVMPLAT_SRCS-$(CONFIG_ARCH_ARM_64) += $(UK_PLAT_COMMON_BASE)/arm/thread_start64.S|common
>   LIBKVMPLAT_SRCS-$(CONFIG_ARCH_ARM_64) += $(UK_PLAT_COMMON_BASE)/thread.c|common


From minios-devel-bounces@lists.xenproject.org Wed Apr 08 12:20:45 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 08 Apr 2020 12:20: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 1jM9hD-00013Y-VI; Wed, 08 Apr 2020 12:20: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=6qB3=5Y=neclab.eu=hugo.lefeuvre@srs-us1.protection.inumbo.net>)
 id 1jM9hD-00013S-8s
 for minios-devel@lists.xen.org; Wed, 08 Apr 2020 12:20:43 +0000
X-Inumbo-ID: 5c7a312c-7993-11ea-81db-12813bfff9fa
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 5c7a312c-7993-11ea-81db-12813bfff9fa;
 Wed, 08 Apr 2020 12:20:41 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 47675104022;
 Wed,  8 Apr 2020 14:20:40 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (atlas-a.office.hd)
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 zdE5O5DL14gK; Wed,  8 Apr 2020 14:20:40 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from titania.office.hd (titania.office.hd [192.168.24.89])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 27AA210400E
 for <minios-devel@lists.xen.org>; Wed,  8 Apr 2020 14:20:40 +0200 (CEST)
Received: from N-1237.office.hd (192.168.24.96) by titania.office.hd
 (192.168.24.89) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Wed, 8 Apr 2020
 14:20:39 +0200
From: Hugo Lefeuvre <hugo.lefeuvre@neclab.eu>
To: <minios-devel@lists.xen.org>
Subject: [UNIKRAFT PATCH] lib/ukdebug: always provide uk_asmdumpk
Date: Wed, 8 Apr 2020 14:20:34 +0200
Message-ID: <1f22423dfe2a5deab144374abadb649339a90e45.1586348366.git.hugo.lefeuvre@neclab.eu>
X-Mailer: git-send-email 2.7.4
MIME-Version: 1.0
Content-Type: text/plain
X-Originating-IP: [192.168.24.96]
X-ClientProxiedBy: oberon.office.hd (192.168.24.90) To titania.office.hd
 (192.168.24.89)
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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: Hugo Lefeuvre <hugo.lefeuvre@neclab.eu>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

uk_asmdumpk is called in do_unhandled_trap, do_gp_fault, etc. regardless
of CONFIG_LIBUKDEBUG_PRINTK. The builds therefore fails if
CONFIG_LIBUKDEBUG_PRINTK is disabled.

Signed-off-by: Hugo Lefeuvre <hugo.lefeuvre@neclab.eu>
---
 lib/ukdebug/include/uk/asmdump.h | 2 --
 1 file changed, 2 deletions(-)

diff --git a/lib/ukdebug/include/uk/asmdump.h b/lib/ukdebug/include/uk/asmdump.h
index a046881..93ef65d 100644
--- a/lib/ukdebug/include/uk/asmdump.h
+++ b/lib/ukdebug/include/uk/asmdump.h
@@ -114,11 +114,9 @@ static inline void uk_asmdumpd(const void *instr __unused,
 			       unsigned int instr_count __unused)
 {}
 
-#if CONFIG_LIBUKDEBUG_PRINTK
 static inline void uk_asmdumpk(int lvl __unused, const void *instr __unused,
 			       unsigned int instr_count __unused)
 {}
-#endif /* CONFIG_LIBUKDEBUG_PRINTK */
 
 #endif /* Backends */
 
-- 
2.7.4



From minios-devel-bounces@lists.xenproject.org Wed Apr 08 18:24:33 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 08 Apr 2020 18:24: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 1jMFNG-0007bW-RL; Wed, 08 Apr 2020 18:24:30 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=6qB3=5Y=neclab.eu=hugo.lefeuvre@srs-us1.protection.inumbo.net>)
 id 1jMFNF-0007bR-Bt
 for minios-devel@lists.xen.org; Wed, 08 Apr 2020 18:24:29 +0000
X-Inumbo-ID: 2db849a4-79c6-11ea-9e09-bc764e2007e4
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 2db849a4-79c6-11ea-9e09-bc764e2007e4;
 Wed, 08 Apr 2020 18:24:27 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 2CCDDF2021;
 Wed,  8 Apr 2020 20:24:26 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (atlas-b.office.hd)
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 XRD4uZ6FR6Lb; Wed,  8 Apr 2020 20:24:26 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from titania.office.hd (titania.office.hd [192.168.24.89])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id E6CB3F2020
 for <minios-devel@lists.xen.org>; Wed,  8 Apr 2020 20:24:23 +0200 (CEST)
Received: from N-1237.office.hd (192.168.24.96) by titania.office.hd
 (192.168.24.89) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Wed, 8 Apr 2020
 20:24:23 +0200
From: Hugo Lefeuvre <hugo.lefeuvre@neclab.eu>
To: <minios-devel@lists.xen.org>
Subject: [UNIKRAFT PATCH] lib/ukalloc: make uk_alloc_get_default static inline
Date: Wed, 8 Apr 2020 20:24:16 +0200
Message-ID: <cbbbf26bc2b354122329c8f61723d0b597905f18.1586370158.git.hugo.lefeuvre@neclab.eu>
X-Mailer: git-send-email 2.7.4
MIME-Version: 1.0
Content-Type: text/plain
X-Originating-IP: [192.168.24.96]
X-ClientProxiedBy: puck.office.hd (192.168.24.91) To titania.office.hd
 (192.168.24.89)
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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: Hugo Lefeuvre <hugo.lefeuvre@neclab.eu>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Every allocation done through the libc malloc wrapper triggers a function
call to uk_alloc_get_default in order to get a pointer to the default
allocator.  This is not great, because the allocation path is performance
critical, and we should avoid any superflous overhead there.

This patch removes the capability to change the default allocator once it
has been set. This never really worked anyways... the libc wrapper would
forward free() calls to the new allocator, potentially resulting in memory
corruption if the new allocator doesn't handle these foreign pointers
correctly, and memory leaks because these pointers won't be freed anymore.

We make the uk_alloc_head variable global and uk_alloc_get_default static
inline.

Retrieving the default allocator becomes less expensive: a single memory
read instead of a function call + memory read.

It appears that uk_alloc_set_default was not called anywhere, so this patch
does not require any additional changes in external libraries.

Signed-off-by: Hugo Lefeuvre <hugo.lefeuvre@neclab.eu>
---
 lib/ukalloc/alloc.c            | 39 +--------------------------------------
 lib/ukalloc/exportsyms.uk      |  2 +-
 lib/ukalloc/include/uk/alloc.h | 10 +++++++---
 3 files changed, 9 insertions(+), 42 deletions(-)

diff --git a/lib/ukalloc/alloc.c b/lib/ukalloc/alloc.c
index 214fbd9..11f58dc 100644
--- a/lib/ukalloc/alloc.c
+++ b/lib/ukalloc/alloc.c
@@ -57,7 +57,7 @@
 	(ALIGN_UP((unsigned long)(size), __PAGE_SIZE) / __PAGE_SIZE)
 #define page_off(x) ((unsigned long)(x) & (__PAGE_SIZE - 1))
 
-static struct uk_alloc *uk_alloc_head;
+struct uk_alloc *uk_alloc_head;
 
 int uk_alloc_register(struct uk_alloc *a)
 {
@@ -76,43 +76,6 @@ int uk_alloc_register(struct uk_alloc *a)
 	return 0;
 }
 
-struct uk_alloc *uk_alloc_get_default(void)
-{
-	return uk_alloc_head;
-}
-
-int uk_alloc_set_default(struct uk_alloc *a)
-{
-	struct uk_alloc *head, *this, *prev;
-
-	head = uk_alloc_get_default();
-
-	if (a == head)
-		return 0;
-
-	if (!head) {
-		uk_alloc_head = a;
-		return 0;
-	}
-
-	this = head;
-	while (this->next) {
-		prev = this;
-		this = this->next;
-		if (a == this) {
-			prev->next = this->next;
-			this->next = head->next;
-			head = this;
-			return 0;
-		}
-	}
-
-	/* a is not registered yet. Add in front of the queue. */
-	a->next = head;
-	uk_alloc_head = a;
-	return 0;
-}
-
 struct metadata_ifpages {
 	unsigned long	num_pages;
 	void		*base;
diff --git a/lib/ukalloc/exportsyms.uk b/lib/ukalloc/exportsyms.uk
index 594999f..903565d 100644
--- a/lib/ukalloc/exportsyms.uk
+++ b/lib/ukalloc/exportsyms.uk
@@ -1,6 +1,5 @@
 uk_alloc_register
 uk_alloc_get_default
-uk_alloc_set_default
 uk_malloc_ifpages
 uk_free_ifpages
 uk_realloc_ifpages
@@ -14,3 +13,4 @@ uk_memalign_compat
 uk_realloc_compat
 uk_palloc_compat
 uk_pfree_compat
+uk_alloc_head
diff --git a/lib/ukalloc/include/uk/alloc.h b/lib/ukalloc/include/uk/alloc.h
index 73b3a45..3d1f44f 100644
--- a/lib/ukalloc/include/uk/alloc.h
+++ b/lib/ukalloc/include/uk/alloc.h
@@ -53,9 +53,6 @@ extern "C" {
 #define uk_zalloc(a, size)  uk_calloc(a, 1, size)
 #define uk_do_zalloc(a, size) uk_do_calloc(a, 1, size)
 
-struct uk_alloc *uk_alloc_get_default(void);
-int uk_alloc_set_default(struct uk_alloc *a);
-
 typedef void* (*uk_alloc_malloc_func_t)
 		(struct uk_alloc *a, size_t size);
 typedef void* (*uk_alloc_calloc_func_t)
@@ -108,6 +105,13 @@ struct uk_alloc {
 	int8_t priv[];
 };
 
+extern struct uk_alloc *uk_alloc_head;
+
+static inline struct uk_alloc *uk_alloc_get_default(void)
+{
+	return uk_alloc_head;
+}
+
 /* wrapper functions */
 static inline void *uk_do_malloc(struct uk_alloc *a, size_t size)
 {
-- 
2.7.4



From minios-devel-bounces@lists.xenproject.org Wed Apr 08 21:58:51 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 08 Apr 2020 21:58: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 1jMIif-0007iR-KB; Wed, 08 Apr 2020 21:58: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=ODiG=5Y=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1jMIie-0007iM-5X
 for minios-devel@lists.xen.org; Wed, 08 Apr 2020 21:58:48 +0000
X-Inumbo-ID: 1c7c5fa5-79e4-11ea-8251-12813bfff9fa
Received: from queen.nlehd.de (unknown [195.37.154.80])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTP
 id 1c7c5fa5-79e4-11ea-8251-12813bfff9fa;
 Wed, 08 Apr 2020 21:58:44 +0000 (UTC)
Received: from localhost (c431.ant-net [192.168.0.36])
 by queen.nlehd.de (Postfix) with ESMTP id 29EF74108A;
 Wed,  8 Apr 2020 23:58:43 +0200 (CEST)
From: Felipe Huici <felipe.huici@neclab.eu>
To: minios-devel@lists.xen.org
Subject: [UNIKRAFT PATCH] lib/uksignal: Initial uksignal code
Date: Wed,  8 Apr 2020 23:58:42 +0200
Message-Id: <20200408215842.29795-1-felipe.huici@neclab.eu>
X-Mailer: git-send-email 2.20.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>,
 Mihai Pogonaru <pogonarumihai@gmail.com>,
 Teodora Serbanescu <teo.serbanescu16@gmail.com>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

From: Mihai Pogonaru <pogonarumihai@gmail.com>

uksignal provides a basic implementation of signals over Unikraft. It
supports signals between threads and process wide signals. It provides
all the definitions needed for signals so we must disable the
definitions provided in libc to run it.

It does not support signal codes, rt signals and executes the signal
handlers on the thread stack. It is also not yet integrated with our
irqs to deliver signals like SIGSEGV.

This implementation is not complete; it is meant as a temporory
solution until we have a proper events delivering system.

Signed-off-by: Mihai Pogonaru <pogonarumihai@gmail.com>
Signed-off-by: Teodora Serbanescu <teo.serbanescu16@gmail.com>
Signed-off-by: Felipe Huici <felipe.huici@neclab.eu>
---
 lib/Makefile.uk                            |   1 +
 lib/uksched/include/uk/thread.h            |   6 +
 lib/uksched/sched.c                        |   6 +
 lib/uksched/thread.c                       |   6 +
 lib/uksignal/Config.uk                     |   7 +
 lib/uksignal/Makefile.uk                   |   8 +
 lib/uksignal/README                        |   7 +
 lib/uksignal/exportsyms.uk                 |  27 ++
 lib/uksignal/include/uk/bits/sigset.h      |  66 +++
 lib/uksignal/include/uk/signal.h           | 132 ++++++
 lib/uksignal/include/uk/string/strsignal.h |  19 +
 lib/uksignal/include/uk/uk_signal.h        | 136 +++++++
 lib/uksignal/signal.c                      | 320 +++++++++++++++
 lib/uksignal/sigset.c                      |  51 +++
 lib/uksignal/strsignal.c                   |  62 +++
 lib/uksignal/uk_signal.c                   | 451 +++++++++++++++++++++
 plat/common/x86/thread_start.S             |   7 +
 17 files changed, 1312 insertions(+)
 create mode 100644 lib/uksignal/Config.uk
 create mode 100644 lib/uksignal/Makefile.uk
 create mode 100644 lib/uksignal/README
 create mode 100644 lib/uksignal/exportsyms.uk
 create mode 100644 lib/uksignal/include/uk/bits/sigset.h
 create mode 100644 lib/uksignal/include/uk/signal.h
 create mode 100644 lib/uksignal/include/uk/string/strsignal.h
 create mode 100644 lib/uksignal/include/uk/uk_signal.h
 create mode 100644 lib/uksignal/signal.c
 create mode 100644 lib/uksignal/sigset.c
 create mode 100644 lib/uksignal/strsignal.c
 create mode 100644 lib/uksignal/uk_signal.c

diff --git a/lib/Makefile.uk b/lib/Makefile.uk
index aa7e7302..6f89c0b3 100644
--- a/lib/Makefile.uk
+++ b/lib/Makefile.uk
@@ -34,3 +34,4 @@ $(eval $(call _import_lib,$(CONFIG_UK_BASE)/lib/uktime))
 $(eval $(call _import_lib,$(CONFIG_UK_BASE)/lib/ukmmap))
 $(eval $(call _import_lib,$(CONFIG_UK_BASE)/lib/ukblkdev))
 $(eval $(call _import_lib,$(CONFIG_UK_BASE)/lib/posix-process))
+$(eval $(call _import_lib,$(CONFIG_UK_BASE)/lib/uksignal))
diff --git a/lib/uksched/include/uk/thread.h b/lib/uksched/include/uk/thread.h
index d8a4ac88..5ec25a87 100644
--- a/lib/uksched/include/uk/thread.h
+++ b/lib/uksched/include/uk/thread.h
@@ -36,6 +36,9 @@
 #include <uk/arch/lcpu.h>
 #include <uk/arch/time.h>
 #include <uk/plat/thread.h>
+#if CONFIG_LIBUKSIGNAL
+#include <uk/uk_signal.h>
+#endif
 #include <uk/thread_attr.h>
 #include <uk/wait_types.h>
 #include <uk/list.h>
@@ -62,6 +65,9 @@ struct uk_thread {
 #ifdef CONFIG_LIBNEWLIBC
 	struct _reent reent;
 #endif
+#if CONFIG_LIBUKSIGNAL
+	struct uk_thread_sig signals_container;
+#endif
 };
 
 UK_TAILQ_HEAD(uk_thread_list, struct uk_thread);
diff --git a/lib/uksched/sched.c b/lib/uksched/sched.c
index ef195c3a..1a43dabb 100644
--- a/lib/uksched/sched.c
+++ b/lib/uksched/sched.c
@@ -42,6 +42,9 @@
 #if CONFIG_LIBUKSCHEDCOOP
 #include <uk/schedcoop.h>
 #endif
+#if CONFIG_LIBUKSIGNAL
+#include <uk/uk_signal.h>
+#endif
 
 struct uk_sched *uk_sched_head;
 
@@ -50,6 +53,9 @@ struct uk_sched *uk_sched_default_init(struct uk_alloc *a)
 {
 	struct uk_sched *s = NULL;
 
+#if CONFIG_LIBUKSIGNAL
+	uk_proc_sig_init(&uk_proc_sig);
+#endif
 #if CONFIG_LIBUKSCHEDCOOP
 	s = uk_schedcoop_init(a);
 #endif
diff --git a/lib/uksched/thread.c b/lib/uksched/thread.c
index f8ae786c..609a4ce4 100644
--- a/lib/uksched/thread.c
+++ b/lib/uksched/thread.c
@@ -125,6 +125,9 @@ int uk_thread_init(struct uk_thread *thread,
 #ifdef CONFIG_LIBNEWLIBC
 	reent_init(&thread->reent);
 #endif
+#if CONFIG_LIBUKSIGNAL
+	uk_thread_sig_init(&thread->signals_container);
+#endif
 
 	uk_pr_info("Thread \"%s\": pointer: %p, stack: %p, tls: %p\n",
 		   name, thread, thread->stack, thread->tls);
@@ -135,6 +138,9 @@ int uk_thread_init(struct uk_thread *thread,
 void uk_thread_fini(struct uk_thread *thread, struct uk_alloc *allocator)
 {
 	UK_ASSERT(thread != NULL);
+#if CONFIG_LIBUKSIGNAL
+	uk_thread_sig_uninit(&thread->signals_container);
+#endif
 	ukplat_thread_ctx_destroy(allocator, thread->ctx);
 }
 
diff --git a/lib/uksignal/Config.uk b/lib/uksignal/Config.uk
new file mode 100644
index 00000000..56c1644a
--- /dev/null
+++ b/lib/uksignal/Config.uk
@@ -0,0 +1,7 @@
+menuconfig LIBUKSIGNAL
+	bool "uksignal: Unikraft signals"
+	default n
+	select LIBNOLIBC if !HAVE_LIBC
+	select LIBUKDEBUG
+	select LIBUKALLOC
+	select LIBUKSCHED
diff --git a/lib/uksignal/Makefile.uk b/lib/uksignal/Makefile.uk
new file mode 100644
index 00000000..8a43856f
--- /dev/null
+++ b/lib/uksignal/Makefile.uk
@@ -0,0 +1,8 @@
+$(eval $(call addlib_s,libuksignal,$(CONFIG_LIBUKSIGNAL)))
+
+CINCLUDES-$(CONFIG_LIBUKSIGNAL)     += -I$(LIBUKSIGNAL_BASE)/include
+CXXINCLUDES-$(CONFIG_LIBUKSIGNAL)   += -I$(LIBUKSIGNAL_BASE)/include
+
+LIBUKSIGNAL_SRCS-y += $(LIBUKSIGNAL_BASE)/signal.c
+LIBUKSIGNAL_SRCS-y += $(LIBUKSIGNAL_BASE)/sigset.c
+LIBUKSIGNAL_SRCS-y += $(LIBUKSIGNAL_BASE)/uk_signal.c
diff --git a/lib/uksignal/README b/lib/uksignal/README
new file mode 100644
index 00000000..ff8691f1
--- /dev/null
+++ b/lib/uksignal/README
@@ -0,0 +1,7 @@
+This library provides a basic implementation of signals over
+Unikraft. It supports signals between threads and process wide
+signals.
+
+It doesn't support signal codes, rt signals and executes the signal
+handlers on the thread stack. It is also not yet integrated with our
+irqs to deliver signals like SIGSEGV.
\ No newline at end of file
diff --git a/lib/uksignal/exportsyms.uk b/lib/uksignal/exportsyms.uk
new file mode 100644
index 00000000..1817bc04
--- /dev/null
+++ b/lib/uksignal/exportsyms.uk
@@ -0,0 +1,27 @@
+# uk_signal.h
+uk_proc_sig
+
+uk_sig_handle_signals
+uk_proc_sig_init
+uk_thread_sig_init
+uk_thread_sig_uninit
+uk_sig_thread_kill
+uk_thread_sigmask
+
+# signal.h
+sigaction
+signal
+sigprocmask
+sigsuspend
+sigpending
+sigwait
+kill
+raise
+pthread_sigmask
+
+# sigset.h
+sigemptyset
+sigfillset
+sigaddset
+sigdelset
+sigismember
diff --git a/lib/uksignal/include/uk/bits/sigset.h b/lib/uksignal/include/uk/bits/sigset.h
new file mode 100644
index 00000000..446c77dc
--- /dev/null
+++ b/lib/uksignal/include/uk/bits/sigset.h
@@ -0,0 +1,66 @@
+#ifndef __UK_SIGNAL_H__
+#error Do not include this header directly
+#endif
+
+#ifndef __UK_SIGSET_H__
+#define __UK_SIGSET_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define SIG_BLOCK     0
+#define SIG_UNBLOCK   1
+#define SIG_SETMASK   2
+
+typedef unsigned long __sigset_t;
+typedef __sigset_t sigset_t;
+
+int sigemptyset (sigset_t *set);
+int sigfillset (sigset_t *set);
+int sigaddset (sigset_t *set, int signo);
+int sigdelset (sigset_t *set, int signo);
+int sigismember (const sigset_t *set, int signo);
+
+/* TODO: do we have gnu statement expression?  */
+/* internal use */
+#define uk_sigemptyset(ptr)	\
+		do {	\
+			*(ptr) = 0;	\
+		} while(0)
+#define uk_sigfillset(ptr)	\
+		do {	\
+			*(ptr) = ~((__sigset_t) 0);	\
+		} while(0)
+#define uk_sigaddset(ptr, signo)	\
+		do {	\
+			*(ptr) |= (1 << ((signo) - 1));	\
+		} while(0)
+#define uk_sigdelset(ptr, signo) 	\
+		do {	\
+			*(ptr) &= ~(1 << ((signo) - 1));	\
+		} while(0)
+#define uk_sigcopyset(ptr1, ptr2)	\
+		do {	\
+			*(ptr1) = *(ptr2);	\
+		} while(0)
+#define uk_sigandset(ptr1, ptr2)	\
+		do {	\
+			*(ptr1) &= *(ptr2);	\
+		} while(0)
+#define uk_sigorset(ptr1, ptr2)	\
+		do {	\
+			*(ptr1) |= *(ptr2);	\
+		} while(0)
+#define uk_sigreverseset(ptr)	\
+		do {	\
+			*(ptr) = ~(*(ptr));	\
+		} while(0)
+#define uk_sigismember(ptr, signo) (*(ptr) & (1 << ((signo) - 1)))
+#define uk_sigisempty(ptr) (*(ptr) == 0)
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __UK_SIGSET_H__ */
diff --git a/lib/uksignal/include/uk/signal.h b/lib/uksignal/include/uk/signal.h
new file mode 100644
index 00000000..47c182b3
--- /dev/null
+++ b/lib/uksignal/include/uk/signal.h
@@ -0,0 +1,132 @@
+/* adapted from OSv */
+
+#ifndef __UK_SIGNAL_H__
+#define __UK_SIGNAL_H__
+
+#include <stddef.h>
+#include <uk/bits/sigset.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define SIGHUP    1
+#define SIGINT    2
+#define SIGQUIT   3
+#define SIGILL    4
+#define SIGTRAP   5
+#define SIGABRT   6
+#define SIGIOT    SIGABRT
+#define SIGBUS    7
+#define SIGFPE    8
+#define SIGKILL   9
+#define SIGUSR1   10
+#define SIGSEGV   11
+#define SIGUSR2   12
+#define SIGPIPE   13
+#define SIGALRM   14
+#define SIGTERM   15
+#define SIGSTKFLT 16
+#define SIGCHLD   17
+#define SIGCONT   18
+#define SIGSTOP   19
+#define SIGTSTP   20
+#define SIGTTIN   21
+#define SIGTTOU   22
+#define SIGURG    23
+#define SIGXCPU   24
+#define SIGXFSZ   25
+#define SIGVTALRM 26
+#define SIGPROF   27
+#define SIGWINCH  28
+#define SIGIO     29
+#define SIGPOLL   29
+#define SIGPWR    30
+#define SIGSYS    31
+#define SIGUNUSED SIGSYS
+
+#define _NSIG 32
+
+#define SA_NOCLDSTOP  1
+#define SA_NOCLDWAIT  2
+#define SA_SIGINFO    4
+#define SA_ONSTACK    0x08000000
+#define SA_RESTART    0x10000000
+#define SA_NODEFER    0x40000000
+#define SA_RESETHAND  0x80000000
+#define SA_RESTORER   0x04000000
+
+typedef int pid_t;
+typedef int sig_atomic_t;
+
+#define NSIG _NSIG
+
+typedef struct {
+  int          si_signo;    /* Signal number */
+  int          si_code;     /* Cause of the signal */
+  pid_t	       si_pid;	    /* Sending process ID */
+} siginfo_t;
+
+struct sigaction {
+	union {
+		void (*sa_handler)(int);
+		void (*sa_sigaction)(int, siginfo_t *, void *);
+	} __sa_handler;
+	sigset_t sa_mask;
+	int sa_flags;
+	void (*sa_restorer)(void);
+};
+#define sa_handler   __sa_handler.sa_handler
+#define sa_sigaction __sa_handler.sa_sigaction
+
+#define SIG_ERR  ((void (*)(int))-1)
+#define SIG_DFL  ((void (*)(int)) 0)
+#define SIG_IGN  ((void (*)(int)) 1)
+
+/* TODO: do we have gnu statement expression? */
+#define is_sig_dfl(ptr)	\
+    (!((ptr)->sa_flags & SA_SIGINFO) && (ptr)->sa_handler == SIG_DFL)
+
+#define is_sig_ign(ptr)	\
+    (!((ptr)->sa_flags & SA_SIGINFO) && (ptr)->sa_handler == SIG_IGN)
+
+int
+sigaction(int signum, const struct sigaction *act, struct sigaction *oldact);
+
+int sigpending(sigset_t *set);
+int sigprocmask(int how, const sigset_t *set, sigset_t *oldset);
+int sigsuspend(const sigset_t *mask);
+int sigwait(const sigset_t *set, int *sig);
+
+int kill(pid_t pid, int sig);
+int raise(int sig);
+
+typedef void (*sighandler_t)(int);
+sighandler_t signal(int signum, sighandler_t handler);
+
+int pthread_sigmask(int how, const sigset_t *set, sigset_t *oldset);
+
+/* TODO: not used - defined just for newlib */
+union sigval {
+	int    sival_int;	/* Integer signal value */
+	void  *sival_ptr;	/* Pointer signal value */
+};
+
+struct sigevent {
+	int              sigev_notify;	/* Notification type */
+	int              sigev_signo;	/* Signal number */
+	union sigval     sigev_value;	/* Signal value */
+};
+
+/* TODO: not used - defined just for v8 */
+typedef struct sigaltstack {
+	void *ss_sp;
+	int ss_flags;
+	size_t ss_size;
+} stack_t;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __UK_SIGNAL_H__ */
diff --git a/lib/uksignal/include/uk/string/strsignal.h b/lib/uksignal/include/uk/string/strsignal.h
new file mode 100644
index 00000000..73b69cbc
--- /dev/null
+++ b/lib/uksignal/include/uk/string/strsignal.h
@@ -0,0 +1,19 @@
+#ifndef __UK_STRSIGNAL_H__
+#define __UK_STRSIGNAL_H__
+
+/*
+ * TODO: not used - delete
+ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern const char * const sys_siglist[];
+char *strsignal(int sig);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __UK_STRSIGNAL_H__ */
diff --git a/lib/uksignal/include/uk/uk_signal.h b/lib/uksignal/include/uk/uk_signal.h
new file mode 100644
index 00000000..cb066d11
--- /dev/null
+++ b/lib/uksignal/include/uk/uk_signal.h
@@ -0,0 +1,136 @@
+#ifndef __UK_UK_SIGNAL_H__
+#define __UK_UK_SIGNAL_H__
+
+#include <uk/list.h>
+#include <uk/signal.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define _UK_TH_SIG uk_crr_thread_sig_container()
+
+struct uk_thread;
+
+struct uk_signal {
+	siginfo_t info;
+	struct uk_list_head list_node;
+};
+
+/* TODO: add synchronization */
+
+struct uk_proc_sig {
+	/* used as a bitmap for pending signals */
+	sigset_t pending;
+	/* pending signals - valid only if corresponding bit in pending is set */
+	siginfo_t pending_signals[NSIG - 1];
+	/* signal handlers for this process */
+	struct sigaction sigaction[NSIG - 1];
+	/* list of uk_thread_sig from the threads of the proc */
+	struct uk_list_head thread_sig_list;
+};
+
+extern struct uk_proc_sig uk_proc_sig;
+
+enum uk_sig_waiting {
+	UK_SIG_NOT_WAITING = 0,
+	UK_SIG_WAITING = 1,
+	UK_SIG_WAITING_SCHED = 2
+};
+
+struct uk_thread_sig_wait {
+	/*
+	 * waiting status
+	 *
+	 * values:
+	 * 	UK_SIG_NOT_WAITING - thread is not waiting
+	 * 	UK_SIG_WAITING - thread is waiting for a signal
+	 * 	UK_SIG_WAITING_SCHED - thread is waiting to be scheduled
+	 */
+	enum uk_sig_waiting status;
+	/* used as a bitmap for awaited signals */
+	sigset_t awaited;
+	/* awaited signal received */
+	siginfo_t received_signal;
+};
+
+struct uk_thread_sig {
+	/* blocked signals */
+	sigset_t mask;
+	/* used as a bitmap for pending signals */
+	sigset_t pending;
+	/* list of pending signals */
+	struct uk_list_head pending_signals;
+	/* signal waiting state */
+	struct uk_thread_sig_wait wait;
+	/* node for the thread_sig_list from the proc */
+	struct uk_list_head list_node;
+};
+
+/* returns number of executed signal handlers */
+int uk_sig_handle_signals(void);
+
+int uk_proc_sig_init(struct uk_proc_sig *sig);
+int uk_thread_sig_init(struct uk_thread_sig *sig);
+void uk_thread_sig_uninit(struct uk_thread_sig *sig);
+
+/* TODO: replace sched thread_kill? */
+int uk_sig_thread_kill(struct uk_thread *tid, int sig);
+int uk_thread_sigmask(int how, const sigset_t *set, sigset_t *oldset);
+
+/* internal use */
+static inline int uk_sig_is_valid(int sig)
+{
+	return (sig < NSIG && sig > 0);
+}
+
+static inline void uk_sigset_remove_unmaskable(sigset_t *sig)
+{
+	uk_sigdelset(sig, SIGKILL);
+	uk_sigdelset(sig, SIGSTOP);
+}
+
+static inline void uk_add_proc_signal(siginfo_t *sig)
+{
+	uk_proc_sig.pending_signals[sig->si_signo - 1] = *sig;
+	uk_sigaddset(&uk_proc_sig.pending, sig->si_signo);
+}
+
+static inline void uk_remove_proc_signal(int sig)
+{
+	uk_sigdelset(&uk_proc_sig.pending, sig);
+}
+
+/* maybe move to sched */
+struct uk_thread_sig *uk_crr_thread_sig_container(void);
+void uk_sig_init_siginfo(siginfo_t *siginfo, int sig);
+
+/* returns the uk_signal for sig if it is pending on thread */
+struct uk_signal *
+uk_sig_th_get_pending(struct uk_thread_sig *th_sig, int sig);
+
+/* returns the siginfo for sig if it is pending on proc */
+siginfo_t *uk_sig_proc_get_pending(int sig);
+
+/*
+ * returns the uk_signal for a signal from the given
+ * set if it is pending on thread
+ */
+struct uk_signal *
+uk_sig_th_get_pending_any(struct uk_thread_sig *th_sig, sigset_t set);
+
+/*
+ * returns the siginfo for a signal from the given
+ * set if it is pending on proc
+ */
+siginfo_t *uk_sig_proc_get_pending_any(sigset_t set);
+
+int
+uk_deliver_proc_signal(struct uk_thread_sig *th_sig, siginfo_t *sig);
+void uk_execute_handler(siginfo_t sig);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __UK_UK_SIGNAL_H__ */
diff --git a/lib/uksignal/signal.c b/lib/uksignal/signal.c
new file mode 100644
index 00000000..5f5e2893
--- /dev/null
+++ b/lib/uksignal/signal.c
@@ -0,0 +1,320 @@
+/* adapted from OSv */
+
+#include <errno.h>
+
+#include <uk/alloc.h>
+#include <uk/sched.h>
+#include <uk/signal.h>
+#include <uk/thread.h>
+#include <uk/uk_signal.h>
+
+/*
+ * Tries to deliver a pending signal to the current thread
+ * Used only with a waiting thread
+ *
+ * Returns: 0 if no signal was delivered, 1 if a signal was delivered
+ */
+static int uk_get_awaited_signal(void)
+{
+	siginfo_t *siginfo;
+	struct uk_signal *signal;
+	struct uk_thread_sig *ptr;
+
+	ptr = _UK_TH_SIG;
+
+	/* try to deliver thread pending signal */
+	signal = uk_sig_th_get_pending_any(ptr, ptr->wait.awaited);
+
+	if (signal) {
+		/* set awaited signal */
+		ptr->wait.received_signal = signal->info;
+
+		/* remove it from the list of pending signals */
+		uk_list_del(&signal->list_node);
+		uk_sigdelset(&ptr->pending, signal->info.si_signo);
+		uk_free(uk_alloc_get_default(), signal);
+		return 1;
+	}
+
+	/* try to deliver process pending signal */
+	siginfo = uk_sig_proc_get_pending_any(ptr->wait.awaited);
+
+	if (siginfo) {
+		ptr->wait.received_signal = *siginfo;
+
+		/* remove it from the list of pending signals */
+		uk_remove_proc_signal(siginfo->si_signo);
+		return 1;
+	}
+
+	return 0;
+}
+
+/* TODO: We do not support any sa_flags besides SA_SIGINFO */
+int
+sigaction(int signum, const struct sigaction *act, struct sigaction *oldact)
+{
+	struct uk_list_head *i;
+	struct uk_thread_sig *th_sig;
+	struct uk_signal *signal;
+
+	if (!uk_sig_is_valid(signum) ||
+			signum == SIGKILL ||
+			signum == SIGSTOP) {
+		errno = EINVAL;
+		return -1;
+	}
+
+	if (oldact)
+		*oldact = uk_proc_sig.sigaction[signum - 1];
+
+	if (act) {
+		/* TODO: SA_NODEFER */
+		uk_proc_sig.sigaction[signum - 1] = *act;
+		uk_sigaddset(&uk_proc_sig.sigaction[signum - 1].sa_mask, signum);
+
+		/* remove signal from where it is pending */
+		if (is_sig_ign(act)) {
+			/* remove it from proc */
+			uk_remove_proc_signal(signum);
+
+			/* remove it from threads*/
+			uk_list_for_each(i, &uk_proc_sig.thread_sig_list) {
+				th_sig = uk_list_entry(i, struct uk_thread_sig, list_node);
+
+				signal = uk_sig_th_get_pending(th_sig, signum);
+
+				if (signal) {
+					/* remove it from the list of pending signals */
+					uk_list_del(&signal->list_node);
+					uk_sigdelset(&th_sig->pending, signal->info.si_signo);
+					uk_free(uk_alloc_get_default(), signal);
+				}
+			}
+		}
+	}
+
+	return 0;
+}
+
+static sighandler_t uk_signal(int signum, sighandler_t handler, int sa_flags)
+{
+	struct sigaction old;
+	struct sigaction act = {
+		.sa_handler = handler,
+		.sa_flags = sa_flags
+	};
+
+	if (sigaction(signum, &act, &old) < 0)
+		return SIG_ERR;
+
+	if (old.sa_flags & SA_SIGINFO)
+		return NULL;
+	else
+		return old.sa_handler;
+}
+
+sighandler_t signal(int signum, sighandler_t handler)
+{
+	/* SA_RESTART <- BSD signal semantics */
+	return uk_signal(signum, handler, SA_RESTART);
+}
+
+int sigpending(sigset_t *set)
+{
+	struct uk_thread_sig *ptr;
+
+	ptr = _UK_TH_SIG;
+
+	uk_sigcopyset(set, &ptr->pending);
+	uk_sigorset(set, &uk_proc_sig.pending);
+
+	return 0;
+}
+
+int sigprocmask(int how, const sigset_t *set, sigset_t *oldset)
+{
+	return uk_thread_sigmask(how, set, oldset);
+}
+
+int pthread_sigmask(int how, const sigset_t *set, sigset_t *oldset)
+{
+	return uk_thread_sigmask(how, set, oldset);
+}
+
+int sigsuspend(const sigset_t *mask)
+{
+	/* If the signals are ignored, this doesn't return <- POSIX */
+
+	sigset_t cleaned_mask, tmp;
+	struct uk_thread_sig *ptr;
+
+	uk_sigcopyset(&cleaned_mask, mask);
+	uk_sigset_remove_unmaskable(&cleaned_mask);
+
+	ptr = _UK_TH_SIG;
+
+	uk_sigcopyset(&ptr->wait.awaited, &cleaned_mask);
+
+	/* we are waiting for all the signals that aren't blocked */
+	uk_sigreverseset(&ptr->wait.awaited);
+
+	/* change mask */
+	uk_sigcopyset(&tmp, &ptr->mask);
+	uk_sigcopyset(&ptr->mask, &cleaned_mask);
+
+	while (1) {
+		/* try to deliver a pending signal */
+		if (uk_get_awaited_signal())
+			break;
+
+		/* block, yield */
+		uk_thread_block(uk_thread_current());
+		ptr->wait.status = UK_SIG_WAITING;
+		uk_sched_yield();
+	}
+
+	ptr->wait.status = UK_SIG_NOT_WAITING;
+
+	/* execute handler */
+	uk_execute_handler(ptr->wait.received_signal);
+
+	/* restore mask
+	 *
+	 * We restore the mask here because we are technically done with
+	 * sigsuspend and the mask must be restored at the end of sigsuspend
+	 */
+	uk_sigcopyset(&ptr->mask, &tmp);
+
+	/* execute other pending signals */
+	uk_sig_handle_signals();
+
+	errno = EINTR;
+	return -1; /* always returns -1 and sets errno to EINTR */
+}
+
+int sigwait(const sigset_t *set, int *sig)
+{
+	/*
+	 * If the signals are ignored, this doesn't return <- TODO: POSIX ??
+	 *
+	 * POSIX states that the signals in set must have been blocked before
+	 * calling sigwait, otherwise behavior is undefined -> for us the
+	 * behavior is not caring -> even if the signal is not blocked sigwait
+	 * will still accept it
+	 *
+	 * NOTE: this function is not signal safe
+	 */
+
+	int signals_executed;
+	sigset_t cleaned_set, awaited_save;
+	struct uk_thread_sig *ptr;
+
+	uk_sigcopyset(&cleaned_set, set);
+	uk_sigset_remove_unmaskable(&cleaned_set);
+
+	if (uk_sigisempty(&cleaned_set))
+		return EINVAL;
+
+	ptr = _UK_TH_SIG;
+
+	uk_sigcopyset(&ptr->wait.awaited, &cleaned_set);
+
+	/* save awaited signals */
+	awaited_save = ptr->wait.awaited;
+
+	while (1) {
+		if (uk_get_awaited_signal())
+			break;
+
+		/*
+		 * sigwait allows signals to be received while
+		 * waiting so handle them
+		 */
+		ptr->wait.status = UK_SIG_NOT_WAITING;
+		signals_executed = uk_sig_handle_signals();
+
+		if (signals_executed) {
+			/*
+			 * awaited might be changed by other waiting
+			 * done while handling the signal
+			 */
+			ptr->wait.awaited = awaited_save;
+
+			/*
+			 * we might have raised / received a waiting signal
+			 * while handling the others
+			 */
+			if (uk_get_awaited_signal())
+				break;
+		}
+
+		/* block, yield */
+		uk_thread_block(uk_thread_current());
+		ptr->wait.status = UK_SIG_WAITING;
+		uk_sched_yield();
+	}
+
+	ptr->wait.status = UK_SIG_NOT_WAITING;
+
+	/* do not execute handler, set received signal */
+	*sig = ptr->wait.received_signal.si_signo;
+
+	/* execute other pending signals */
+	uk_sig_handle_signals();
+
+	return 0; /* returns positive errno */
+}
+
+/*
+ * Search for a thread that does not have the signal blocked
+ * If all of the threads have the signal blocked, add it to process
+ * pending signals
+ */
+int kill(pid_t pid, int sig)
+{
+	/*
+	 * POSIX.1 requires that if a process sends a signal to itself, and the
+	 * sending thread does not have the signal blocked, and no other thread
+	 * has it unblocked or is waiting for it in sigwait(3), at least one
+	 * unblocked signal must be delivered to the sending thread before the
+	 * kill() returns.
+	 *
+	 * FIXME: we don't implement this ^
+	 */
+
+	siginfo_t siginfo;
+	struct uk_list_head *i;
+	struct uk_thread_sig *th_sig;
+
+
+	if (pid != 1 && pid != 0 && pid != -1) {
+		errno = ESRCH;
+		return -1;
+	}
+
+	if (!uk_sig_is_valid(sig)) {
+		errno = EINVAL;
+		return -1;
+	}
+
+	/* setup siginfo */
+	uk_sig_init_siginfo(&siginfo, sig);
+
+	uk_list_for_each(i, &uk_proc_sig.thread_sig_list) {
+		th_sig = uk_list_entry(i, struct uk_thread_sig, list_node);
+
+		if (uk_deliver_proc_signal(th_sig, &siginfo) > 0)
+			return 0;
+	}
+
+	/* didn't find any thread that could accept this signal */
+	uk_add_proc_signal(&siginfo);
+
+	return 0;
+}
+
+int raise(int sig)
+{
+	return uk_sig_thread_kill(uk_thread_current(), sig);
+}
diff --git a/lib/uksignal/sigset.c b/lib/uksignal/sigset.c
new file mode 100644
index 00000000..5ddc3f61
--- /dev/null
+++ b/lib/uksignal/sigset.c
@@ -0,0 +1,51 @@
+/* taken from newlib */
+
+#include <errno.h>
+#include <uk/signal.h>
+
+int sigemptyset (sigset_t *set)
+{
+	uk_sigemptyset(set);
+	return 0;
+}
+
+int sigfillset (sigset_t *set)
+{
+	uk_sigfillset(set);
+	return 0;
+}
+
+int sigaddset (sigset_t *set, int signo)
+{
+	if (signo >= NSIG || signo <= 0) {
+		errno = EINVAL;
+		return -1;
+	}
+
+	uk_sigaddset(set, signo);
+	return 0;
+}
+
+int sigdelset (sigset_t *set, int signo)
+{
+	if (signo >= NSIG || signo <= 0) {
+		errno = EINVAL;
+		return -1;
+	}
+
+	uk_sigdelset(set, signo);
+	return 0;
+}
+
+int sigismember (const sigset_t *set, int signo)
+{
+	if (signo >= NSIG || signo <= 0) {
+		errno = EINVAL;
+		return -1;
+	}
+
+	if (uk_sigismember(set, signo))
+		return 1;
+	else
+		return 0;
+}
diff --git a/lib/uksignal/strsignal.c b/lib/uksignal/strsignal.c
new file mode 100644
index 00000000..8bf27e2f
--- /dev/null
+++ b/lib/uksignal/strsignal.c
@@ -0,0 +1,62 @@
+/* taken from newlib */
+
+#include <uk/uk_signal.h>
+
+/*
+ * TODO: not used - delete
+ */
+
+const char *sigstring[] =
+{
+		"Hangup",
+		"Interrupt",
+		"Quit",
+		"Illegal instruction",
+		"Trace/breakpoint trap",
+		"IOT trap",
+		"EMT trap",
+		"Floating point exception",
+		"Killed",
+		"Bus error",
+		"Segmentation fault",
+		"Bad system call",
+		"Broken pipe",
+		"Alarm clock",
+		"Terminated",
+		"Urgent I/O condition",
+		"Stopped (signal)",
+		"Stopped",
+		"Continued",
+		"Child exited",
+		"Stopped (tty input)",
+		"Stopped (tty output)",
+		"I/O possible",
+		"CPU time limit exceeded",
+		"File size limit exceeded",
+		"Virtual timer expired",
+		"Profiling timer expired",
+		"Window changed",
+		"Resource lost",
+		"User defined signal 1",
+		"User defined signal 2"
+};
+
+char *strsignal (int sig)
+{
+	char *buffer;
+	struct uk_signals_container *ptr;
+
+	ptr = _UK_TH_SIG;
+	buffer = UK_SIG_BUF(ptr);
+
+	/*
+	 * TODO: this assignment doesn't really do anything
+	 * since we return buffer, but newlibc did this
+	 */
+	if (sig <= 0 || sig >= NSIG)
+		*buffer = "Unknown signal";
+	else
+		*buffer = sigstring[sig - 1];
+
+	return buffer;
+}
diff --git a/lib/uksignal/uk_signal.c b/lib/uksignal/uk_signal.c
new file mode 100644
index 00000000..ded6b557
--- /dev/null
+++ b/lib/uksignal/uk_signal.c
@@ -0,0 +1,451 @@
+#include <errno.h>
+
+#include <uk/alloc.h>
+#include <uk/print.h>
+#include <uk/signal.h>
+#include <uk/thread.h>
+#include <uk/uk_signal.h>
+
+struct uk_proc_sig uk_proc_sig;
+
+int uk_proc_sig_init(struct uk_proc_sig *sig)
+{
+	int i;
+
+	sigemptyset(&sig->pending);
+
+	for (i = 0; i < NSIG - 1; ++i) {
+		/* TODO: set ign to the ones that should be ign */
+		sig->sigaction[i].sa_handler = SIG_DFL;
+		sigemptyset(&sig->sigaction[i].sa_mask);
+		sig->sigaction[i].sa_flags = 0;
+	}
+
+	UK_INIT_LIST_HEAD(&sig->thread_sig_list);
+	return 0;
+}
+
+int uk_thread_sig_init(struct uk_thread_sig *sig)
+{
+	sigemptyset(&sig->mask);
+
+	sig->wait.status = UK_SIG_NOT_WAITING;
+	sigemptyset(&sig->wait.awaited);
+
+	sigemptyset(&sig->pending);
+	UK_INIT_LIST_HEAD(&sig->pending_signals);
+
+	uk_list_add(&sig->list_node, &uk_proc_sig.thread_sig_list);
+	return 0;
+}
+
+void uk_thread_sig_uninit(struct uk_thread_sig *sig)
+{
+	/* Clear pending signals */
+	struct uk_list_head *i, *tmp;
+	struct uk_signal *signal;
+
+	uk_list_del(&sig->list_node);
+
+	uk_list_for_each_safe(i, tmp, &sig->pending_signals) {
+		signal = uk_list_entry(i, struct uk_signal, list_node);
+
+		uk_list_del(&signal->list_node);
+		uk_free(uk_alloc_get_default(), signal);
+	}
+}
+
+int uk_sig_handle_signals(void)
+{
+	/*
+	 * Do not run pending signals if the thread is waiting
+	 *
+	 * Iterate over pending signals
+	 * Check if the signal is blocked
+	 *
+	 * Before running the handler, remove it from pending
+	 */
+
+	int handled = 0;
+	sigset_t executable, rmask;
+	struct uk_signal *signal;
+	struct uk_thread_sig *ptr;
+
+	ptr = _UK_TH_SIG;
+
+	/*
+	 * handle_sigals will be called from
+	 * the respective waiting function
+	 */
+	if (ptr->wait.status != UK_SIG_NOT_WAITING)
+		return 0;
+
+	/* reverse mask */
+	uk_sigcopyset(&rmask, &ptr->mask);
+	uk_sigreverseset(&rmask);
+
+	/* calculate executable signals */
+	uk_sigcopyset(&executable, &rmask);
+	uk_sigandset(&executable, &ptr->pending);
+
+	while (!uk_sigisempty(&executable)) {
+		signal = uk_list_first_entry(&ptr->pending_signals, struct uk_signal, list_node);
+
+		/* move it last if it's blocked */
+		if (uk_sigismember(&ptr->mask, signal->info.si_signo)) {
+			uk_list_del(&signal->list_node);
+			uk_list_add_tail(&signal->list_node, &ptr->pending_signals);
+			continue;
+		}
+
+		/* remove from the list */
+		uk_list_del(&signal->list_node);
+
+		/* clear pending status */
+		uk_sigdelset(&ptr->pending, signal->info.si_signo);
+
+		/* execute */
+		uk_execute_handler(signal->info);
+
+		uk_free(uk_alloc_get_default(), signal);
+		handled++;
+
+		/* calculate executable signals */
+		uk_sigcopyset(&executable, &rmask);
+		uk_sigandset(&executable, &ptr->pending);
+	}
+
+	return handled;
+}
+
+/*
+ * returns:
+ *  >0 - on success
+ *  0  - if signal is ignored / already pending
+ *  <0 - on failure
+ */
+static int
+uk_deliver_signal_unmasked(struct uk_thread_sig *th_sig, siginfo_t *sig)
+{
+	struct uk_thread *tid;
+	struct uk_signal *uk_sig;
+
+	/* If the signal is ignored, we don't deliver it */
+	if (is_sig_ign(&uk_proc_sig.sigaction[sig->si_signo - 1]))
+		return 0;
+
+	/* If it is already pending, we don't deliver it */
+	if (uk_sigismember(&th_sig->pending, sig->si_signo))
+		return 0;
+
+	uk_sig = uk_malloc(uk_alloc_get_default(), sizeof(*uk_sig));
+	if (!uk_sig) {
+		uk_pr_warn("Could not allocate uk_signal");
+		return -ENOMEM;
+	}
+
+	uk_sig->info = *sig;
+	uk_list_add(&uk_sig->list_node, &th_sig->pending_signals);
+
+	uk_sigaddset(&th_sig->pending, sig->si_signo);
+
+	/* check if we need to wake the thread */
+	if (th_sig->wait.status != UK_SIG_NOT_WAITING &&
+			th_sig->wait.status != UK_SIG_WAITING_SCHED) {
+		th_sig->wait.status = UK_SIG_WAITING_SCHED;
+
+		tid = __containerof(th_sig, struct uk_thread, signals_container);
+		uk_thread_wake(tid);
+	}
+
+	return 1;
+}
+
+int uk_sig_thread_kill(struct uk_thread *tid, int sig)
+{
+	siginfo_t siginfo;
+	struct uk_signal *signal;
+	struct uk_thread_sig *ptr;
+
+	if (!uk_sig_is_valid(sig)) {
+		errno = EINVAL;
+		return -1;
+	}
+
+	ptr = &tid->signals_container;
+
+	/* setup siginfo */
+	uk_sig_init_siginfo(&siginfo, sig);
+
+	/* check if we are sending this to ourself */
+	if (_UK_TH_SIG == &tid->signals_container) {
+		/* if it's not masked just run it */
+		if (!uk_sigismember(&ptr->mask, sig)) {
+			/* remove the signal from pending */
+			signal = uk_sig_th_get_pending(ptr, sig);
+
+			if (signal) {
+				uk_list_del(&signal->list_node);
+				uk_sigdelset(&ptr->pending, sig);
+				uk_free(uk_alloc_get_default(), signal);
+			}
+
+			uk_execute_handler(siginfo);
+			return 0;
+		}
+	}
+
+	uk_deliver_signal_unmasked(ptr, &siginfo);
+
+	return 0;
+}
+
+/*
+ * Used to deliver pending signals after a mask change
+ *
+ * Since mask doesn't affect the deliverance of signals
+ * directed to threads (this is handled by uk_sig_handle_signals),
+ * we are trying to deliver only pending process signals
+ */
+static inline void uk_deliver_signals_maskchange(void)
+{
+	int i, ret;
+	sigset_t to_send;
+	struct uk_thread_sig *ptr;
+
+	ptr = _UK_TH_SIG;
+
+	uk_sigcopyset(&to_send, &ptr->mask);
+	uk_sigandset(&to_send, &uk_proc_sig.pending);
+
+	for (i = 1; i < NSIG; ++i) {
+		if (uk_sigisempty(&to_send))
+			break;
+
+		if (uk_sigismember(&to_send, i)) {
+			ret = uk_deliver_proc_signal(ptr,
+					&uk_proc_sig.pending_signals[i - 1]);
+
+			if (ret > 0) {
+				uk_remove_proc_signal(i);
+				uk_sigdelset(&to_send, i);
+			}
+		}
+	}
+}
+
+/*
+ * TODO: if we add rt sig, don't allow the
+ * two real-time sig that are used internally by the NPTL
+ * threading implementation. Also for all the functions - ignore
+ * those signals silently
+ */
+int uk_thread_sigmask(int how, const sigset_t *set, sigset_t *oldset)
+{
+	/*
+	 * running this inside a handler has no effect outside the handler
+	 * since the mask is restored in execute_handler
+	 */
+
+	sigset_t *mask, tmp;
+	struct uk_thread_sig *ptr;
+
+	ptr = _UK_TH_SIG;
+	mask = &(ptr->mask);
+
+	if (oldset)
+		*oldset = *mask;
+
+	if (set) {
+		switch (how) {
+		case SIG_BLOCK:
+			uk_sigorset(mask, set);
+			break;
+		case SIG_UNBLOCK:
+			uk_sigcopyset(&tmp, set);
+			uk_sigreverseset(&tmp);
+			uk_sigandset(mask, set);
+			break;
+		case SIG_SETMASK:
+			uk_sigcopyset(mask, set);
+			break;
+		default:
+			errno = EINVAL;
+			return -1;
+		}
+
+		uk_sigset_remove_unmaskable(mask);
+
+		/* Changed the mask, see if we can deliver any pending signals */
+		uk_deliver_signals_maskchange();
+
+		uk_sig_handle_signals();
+	}
+
+	return 0;
+}
+
+struct uk_thread_sig *uk_crr_thread_sig_container(void)
+{
+	return &(uk_thread_current()->signals_container);
+}
+
+void uk_sig_init_siginfo(siginfo_t *siginfo, int sig)
+{
+	siginfo->si_signo = sig;
+
+	/* TODO: add codes; get pid from getpid() */
+	siginfo->si_code = 0;
+	siginfo->si_pid = 1;
+}
+
+/* returns the uk_signal for sig if it is pending on thread */
+struct uk_signal *uk_sig_th_get_pending(struct uk_thread_sig *th_sig, int sig)
+{
+	struct uk_list_head *i;
+	struct uk_signal *signal;
+
+	if (!uk_sigismember(&th_sig->pending, sig))
+		return NULL;
+
+	uk_list_for_each(i, &th_sig->pending_signals) {
+		signal = uk_list_entry(i, struct uk_signal, list_node);
+
+		if (signal->info.si_signo == sig)
+			return signal;
+	}
+
+	/* NOT REACHED */
+	return NULL;
+}
+
+/* returns the siginfo for sig if it is pending on proc */
+siginfo_t *uk_sig_proc_get_pending(int sig)
+{
+	if (!uk_sigismember(&uk_proc_sig.pending, sig))
+		return NULL;
+
+	return &uk_proc_sig.pending_signals[sig - 1];
+}
+
+/*
+ * returns the uk_signal for a signal from the given
+ * set if it is pending on thread
+ */
+struct uk_signal *
+uk_sig_th_get_pending_any(struct uk_thread_sig *th_sig, sigset_t set)
+{
+	sigset_t common;
+	struct uk_list_head *i;
+	struct uk_signal *signal;
+
+	uk_sigcopyset(&common, &th_sig->pending);
+	uk_sigandset(&common, &set);
+
+	if (uk_sigisempty(&common))
+		return NULL;
+
+	uk_list_for_each(i, &th_sig->pending_signals) {
+		signal = uk_list_entry(i, struct uk_signal, list_node);
+
+		if (uk_sigismember(&common, signal->info.si_signo))
+			return signal;
+	}
+
+	/* NOT REACHED */
+	return NULL;
+}
+
+/*
+ * returns the siginfo for a signal from the given
+ * set if it is pending on proc
+ */
+siginfo_t *uk_sig_proc_get_pending_any(sigset_t set)
+{
+	int sig;
+	sigset_t common;
+
+	uk_sigcopyset(&common, &uk_proc_sig.pending);
+	uk_sigandset(&common, &set);
+
+	if (uk_sigisempty(&common))
+		return NULL;
+
+	for (sig = 1; sig < NSIG; ++sig)
+		if (uk_sigismember(&common, sig))
+			return &uk_proc_sig.pending_signals[sig - 1];
+
+	/* NOT REACHED */
+	return NULL;
+}
+
+/*
+ * returns:
+ *  >0 - on success
+ *  0  - if signal is blocked / ignored / already pending
+ *  <0 - on failure
+ */
+int
+uk_deliver_proc_signal(struct uk_thread_sig *th_sig, siginfo_t *sig)
+{
+	if (uk_sigismember(&th_sig->mask, sig->si_signo))
+		return 0;
+
+	return uk_deliver_signal_unmasked(th_sig, sig);
+}
+
+void uk_execute_handler(siginfo_t sig)
+{
+	/*
+	 * We save siginfo locally since it might change
+	 * while the handler is runnnig
+	 * For example, if we execute a waiting function inside
+	 * the handler and we were already inside a waiting function
+	 */
+
+	sigset_t tmp;
+	struct sigaction *act;
+	struct uk_thread_sig *ptr;
+
+	act = &uk_proc_sig.sigaction[sig.si_signo - 1];
+
+	/*
+	 * Check if the signal is ignored
+	 *
+	 * This should never happen since
+	 * we never deliver ignored signals
+	 */
+	if (is_sig_ign(act)) {
+		uk_pr_debug("Ignored signal %d\n",
+				sig.si_signo);
+		ukplat_crash();
+	}
+
+	/* our default handler is shutdown */
+	if (is_sig_dfl(act)) {
+		uk_pr_debug("Uncaught signal %d. Powering off.\n",
+				sig.si_signo);
+		ukplat_crash();
+	}
+
+	ptr = _UK_TH_SIG;
+
+	/* change the mask */
+	uk_sigcopyset(&tmp, &ptr->mask);
+	uk_sigorset(&ptr->mask, &act->sa_mask);
+
+	/* run the handler */
+	if (act->sa_flags & SA_SIGINFO)
+		act->sa_sigaction(sig.si_signo, &sig, NULL);
+	else
+		act->sa_handler(sig.si_signo);
+
+	/* check if we need to reset handler */
+	if (act->sa_flags & SA_RESETHAND) {
+		act->sa_flags = 0;
+		act->sa_handler = SIG_DFL;
+	}
+
+	/* restore the mask */
+	uk_sigcopyset(&ptr->mask, &tmp);
+}
diff --git a/plat/common/x86/thread_start.S b/plat/common/x86/thread_start.S
index b23666ae..0a8304c0 100644
--- a/plat/common/x86/thread_start.S
+++ b/plat/common/x86/thread_start.S
@@ -26,6 +26,7 @@
  */
 /* Taken from Mini-OS arch/x86/x86_64.S */
 
+#include <uk/config.h>
 #include <uk/plat/common/sw_ctx.h>
 
 #define ENTRY(X) .globl X ; X :
@@ -54,6 +55,12 @@ ENTRY(asm_sw_ctx_switch)
 	movq OFFSETOF_SW_CTX_SP(%rsi), %rsp       /* restore ESP */
 	movq $1f, OFFSETOF_SW_CTX_IP(%rdi)        /* save EIP */
 	pushq OFFSETOF_SW_CTX_IP(%rsi)            /* restore EIP */
+
+#if CONFIG_LIBUKSIGNAL
+	/* TODO: do we need to save regs? (e.g fpu) */
+	/* stack is aligned here */
+	call uk_sig_handle_signals
+#endif
 	ret
 1:
 	popq %r15
-- 
2.20.1



From minios-devel-bounces@lists.xenproject.org Wed Apr 08 22:04:19 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 08 Apr 2020 22:04: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 1jMIny-0008TJ-3o; Wed, 08 Apr 2020 22:04:18 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=ODiG=5Y=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1jMInw-0008TE-J0
 for minios-devel@lists.xen.org; Wed, 08 Apr 2020 22:04:16 +0000
X-Inumbo-ID: e24bd836-79e4-11ea-9e09-bc764e2007e4
Received: from queen.nlehd.de (unknown [195.37.154.80])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTP
 id e24bd836-79e4-11ea-9e09-bc764e2007e4;
 Wed, 08 Apr 2020 22:04:14 +0000 (UTC)
Received: from localhost (c110.ant-net [192.168.0.36])
 by queen.nlehd.de (Postfix) with ESMTP id 333CA4108A;
 Thu,  9 Apr 2020 00:04:14 +0200 (CEST)
From: Felipe Huici <felipe.huici@neclab.eu>
To: minios-devel@lists.xen.org
Subject: [UNIKRAFT/LIBNEWLIB PATCH] Add support for the uksignal Unikraft
 internal library.
Date: Thu,  9 Apr 2020 00:04:13 +0200
Message-Id: <20200408220413.29937-1-felipe.huici@neclab.eu>
X-Mailer: git-send-email 2.20.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>,
 Mihai Pogonaru <pogonarumihai@gmail.com>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

From: Mihai Pogonaru <pogonarumihai@gmail.com>

Signed-off-by: Mihai Pogonaru <pogonarumihai@gmail.com>
Signed-off-by: Felipe Huici <felipe.huici@neclab.eu>
---
 Makefile.uk      |  4 ++++
 include/signal.h | 11 +++++++++++
 plat.c           |  8 --------
 signal.c         | 42 ++++++++++++++----------------------------
 4 files changed, 29 insertions(+), 36 deletions(-)
 create mode 100644 include/signal.h

diff --git a/Makefile.uk b/Makefile.uk
index 82836e4..bb3b65f 100644
--- a/Makefile.uk
+++ b/Makefile.uk
@@ -136,7 +136,9 @@ LIBNEWLIBGLUE_SRCS-y += $(LIBNEWLIBC_BASE)/resource.c
 LIBNEWLIBGLUE_SRCS-y += $(LIBNEWLIBC_BASE)/pty.c
 LIBNEWLIBGLUE_SRCS-y += $(LIBNEWLIBC_BASE)/locale.c
 LIBNEWLIBGLUE_SRCS-y += $(LIBNEWLIBC_BASE)/dev.c
+ifneq ($(CONFIG_LIBUKSIGNAL),y)
 LIBNEWLIBGLUE_SRCS-y += $(LIBNEWLIBC_BASE)/signal.c
+endif
 LIBNEWLIBGLUE_SRCS-y += $(LIBNEWLIBC_BASE)/link.c
 LIBNEWLIBGLUE_SRCS-y += $(LIBNEWLIBC_BASE)/mntent.c
 LIBNEWLIBGLUE_SRCS-y += $(LIBNEWLIBC_BASE)/syscall.c
@@ -414,9 +416,11 @@ LIBNEWLIBC_SRCS-y += $(LIBNEWLIB_LIBC)/search/bsd_qsort_r.c
 ################################################################################
 # Newlib/libc code -- signal
 ################################################################################
+ifneq ($(CONFIG_LIBUKSIGNAL),y)
 LIBNEWLIBC_SRCS-y += $(LIBNEWLIB_LIBC)/signal/psignal.c
 LIBNEWLIBC_SRCS-y += $(LIBNEWLIB_LIBC)/signal/raise.c
 LIBNEWLIBC_SRCS-y += $(LIBNEWLIB_LIBC)/signal/signal.c
+endif
 
 ################################################################################
 # Newlib/libc code -- stdio
diff --git a/include/signal.h b/include/signal.h
new file mode 100644
index 0000000..778dec1
--- /dev/null
+++ b/include/signal.h
@@ -0,0 +1,11 @@
+#ifndef _NEWLIB_GLUE_SIGNAL_H_
+#define _NEWLIB_GLUE_SIGNAL_H_
+#include <uk/config.h>
+
+#if CONFIG_LIBUKSIGNAL
+#include <uk/signal.h>
+#else
+#include_next <signal.h>
+#endif
+
+#endif /* _NEWLIB_GLUE_SIGNAL_H_ */
diff --git a/plat.c b/plat.c
index df07dce..2a12801 100644
--- a/plat.c
+++ b/plat.c
@@ -47,14 +47,6 @@ int getentropy(void *buf __unused, size_t buflen __unused)
 	return -1;
 }
 
-int sigprocmask(int how __unused, const sigset_t *set __unused,
-		sigset_t *oldset __unused)
-{
-	/* TODO: implement. */
-	errno = ENOTSUP;
-	return -1;
-}
-
 #include <uk/plat/bootstrap.h>
 
 void abort(void)
diff --git a/signal.c b/signal.c
index 4279ee7..f85c2eb 100644
--- a/signal.c
+++ b/signal.c
@@ -37,51 +37,37 @@
 #include <errno.h>
 #include <signal.h>
 
-int sigaction(int sig __unused, const struct sigaction *restrict act __unused,
-	      struct sigaction *restrict oact __unused)
+int kill(int pid __unused, int sig __unused)
 {
-	return 0;
+	errno = EINVAL;
+	return -1;
 }
 
-unsigned int alarm(unsigned int seconds __unused)
+int sigaction(int sig __unused, const struct sigaction *restrict act __unused,
+	      struct sigaction *restrict oact __unused)
 {
 	return 0;
 }
 
-int pause(void)
+int sigprocmask(int how __unused, const sigset_t *set __unused,
+		sigset_t *oldset __unused)
 {
-	return 0;
+	/* TODO: implement. */
+	errno = ENOTSUP;
+	return -1;
 }
 
-int siginterrupt(int sig __unused, int flag __unused)
+unsigned int alarm(unsigned int seconds __unused)
 {
 	return 0;
 }
 
-int sigsuspend(const sigset_t *mask)
+int pause(void)
 {
 	return 0;
 }
 
-int kill(int pid, int sig __unused)
-{
-	/* TODO check sig */
-	if (pid != UNIKRAFT_PID)
-		errno = ESRCH;
-	return -1;
-}
-
-int killpg(int pgrp, int sig __unused)
-{
-	/* TODO check sig */
-	if (pgrp != UNIKRAFT_PGID)
-		errno = ESRCH;
-	return -1;
-}
-
-int sigaltstack(const stack_t *ss, stack_t *old_ss)
+int siginterrupt(int sig __unused, int flag __unused)
 {
-	WARN_STUBBED();
-	errno = ENOTSUP;
-	return -1;
+	return 0;
 }
-- 
2.20.1



From minios-devel-bounces@lists.xenproject.org Wed Apr 08 22:05:07 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 08 Apr 2020 22:05: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 1jMIol-0008V9-7K; Wed, 08 Apr 2020 22:05: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=ODiG=5Y=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1jMIoj-0008V4-Bs
 for minios-devel@lists.xen.org; Wed, 08 Apr 2020 22:05:05 +0000
X-Inumbo-ID: fffa73b0-79e4-11ea-8255-12813bfff9fa
Received: from queen.nlehd.de (unknown [195.37.154.80])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTP
 id fffa73b0-79e4-11ea-8255-12813bfff9fa;
 Wed, 08 Apr 2020 22:05:04 +0000 (UTC)
Received: from localhost (c431.ant-net [192.168.0.36])
 by queen.nlehd.de (Postfix) with ESMTP id 0C0BD4108A;
 Thu,  9 Apr 2020 00:05:04 +0200 (CEST)
From: Felipe Huici <felipe.huici@neclab.eu>
To: minios-devel@lists.xen.org
Subject: [UNIKRAFT/LIBPTHREAD-EMBEDDED PATCH] Add support for the uksignal
 Unikraft internal library.
Date: Thu,  9 Apr 2020 00:05:03 +0200
Message-Id: <20200408220503.29991-1-felipe.huici@neclab.eu>
X-Mailer: git-send-email 2.20.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>,
 Mihai Pogonaru <pogonarumihai@gmail.com>,
 Teodora Serbanescu <teo.serbanescu16@gmail.com>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

From: Mihai Pogonaru <pogonarumihai@gmail.com>

Signed-off-by: Mihai Pogonaru <pogonarumihai@gmail.com>
Signed-off-by: Teodora Serbanescu <teo.serbanescu16@gmail.com>
Signed-off-by: Felipe Huici <felipe.huici@neclab.eu>
---
 Makefile.uk                                   |  2 ++
 include/pte_osal.h                            |  8 +++++++
 include/pte_types.h                           |  8 +++++++
 ...ead_kill_when_uk_signals_are_enabled.patch | 24 +++++++++++++++++++
 pte_osal.c                                    | 20 ++++++++++++++++
 5 files changed, 62 insertions(+)
 create mode 100644 patches/0010-Add_pthread_kill_when_uk_signals_are_enabled.patch

diff --git a/Makefile.uk b/Makefile.uk
index b9b7456..2087641 100644
--- a/Makefile.uk
+++ b/Makefile.uk
@@ -67,7 +67,9 @@ LIBPTHREAD-EMBEDDED_EXPORTS = $(LIBPTHREAD-EMBEDDED_BASE)/exportsyms.uk
 LIBPTHREAD-EMBEDDED_SRCS-y += $(LIBPTHREAD-EMBEDDED_BASE)/pte_osal.c|glue
 LIBPTHREAD-EMBEDDED_SRCS-y += $(LIBPTHREAD-EMBEDDED_BASE)/attributes.c|glue
 LIBPTHREAD-EMBEDDED_SRCS-y += $(LIBPTHREAD-EMBEDDED_BASE)/pthread_atfork.c|glue
+ifneq ($(CONFIG_LIBUKSIGNAL),y)
 LIBPTHREAD-EMBEDDED_SRCS-y += $(LIBPTHREAD-EMBEDDED_BASE)/pthread_sigmask.c|glue
+endif
 LIBPTHREAD-EMBEDDED_SRCS-y += $(LIBPTHREAD-EMBEDDED_BASE)/pthread_condattr.c|glue
 
 ################################################################################
diff --git a/include/pte_osal.h b/include/pte_osal.h
index bcf5374..34122ea 100644
--- a/include/pte_osal.h
+++ b/include/pte_osal.h
@@ -4,10 +4,18 @@
 #include <uk/mutex.h>
 #include <uk/semaphore.h>
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 typedef struct uk_thread* pte_osThreadHandle;
 typedef struct uk_semaphore *pte_osSemaphoreHandle;
 typedef struct uk_mutex *pte_osMutexHandle;
 
+#ifdef __cplusplus
+}
+#endif
+
 #define OS_MAX_SIMUL_THREADS \
 	CONFIG_LIBPTHREAD_EMBEDDED_MAX_SIMUL_THREADS
 
diff --git a/include/pte_types.h b/include/pte_types.h
index c9081fa..817e313 100644
--- a/include/pte_types.h
+++ b/include/pte_types.h
@@ -3,8 +3,16 @@
 
 #include <sys/timeb.h>
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 typedef unsigned int tid_t;
 
 typedef int pid_t;
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif /* __PTE_TYPES_H__ */
diff --git a/patches/0010-Add_pthread_kill_when_uk_signals_are_enabled.patch b/patches/0010-Add_pthread_kill_when_uk_signals_are_enabled.patch
new file mode 100644
index 0000000..cf30aca
--- /dev/null
+++ b/patches/0010-Add_pthread_kill_when_uk_signals_are_enabled.patch
@@ -0,0 +1,24 @@
+diff --git a/pthread_kill.c b/pthread_kill.c
+index 3a6daf6..4ea7448 100644
+--- a/pthread_kill.c
++++ b/pthread_kill.c
+@@ -47,7 +47,9 @@
+ #include "pthread.h"
+ #include "implement.h"
+ 
+-#ifdef __hermit__
++#include <uk/config.h>
++
++#if CONFIG_LIBUKSIGNAL
+ int pte_kill(pte_osThreadHandle threadId, int sig);
+ #endif
+ 
+@@ -98,7 +100,7 @@ pthread_kill (pthread_t thread, int sig)
+ 
+   pte_osMutexUnlock(pte_thread_reuse_lock);
+ 
+-#ifdef __hermit__
++#if CONFIG_LIBUKSIGNAL
+   result = pte_kill(tp->threadId, sig);
+ #else
+   if (0 == result && 0 != sig)
diff --git a/pte_osal.c b/pte_osal.c
index cfd5b3b..4bd9bf0 100644
--- a/pte_osal.c
+++ b/pte_osal.c
@@ -29,6 +29,9 @@
 #include <uk/arch/time.h>
 #include <uk/arch/atomic.h>
 #include <uk/print.h>
+#if CONFIG_LIBUKSIGNAL
+#include <uk/uk_signal.h>
+#endif
 #include <uk/thread.h>
 #include "pte_osal.h"
 #include "pthread.h"
@@ -102,6 +105,18 @@ out:
 	return result;
 }
 
+/***************************************************************************
+ *
+ * Signal handling
+ *
+ **************************************************************************/
+#if CONFIG_LIBUKSIGNAL
+int pte_kill(pte_osThreadHandle threadId, int sig)
+{
+  return uk_sig_thread_kill(threadId, sig);
+}
+#endif
+
 /****************************************************************************
  *
  * Threads
@@ -161,6 +176,11 @@ pte_osResult pte_osThreadCreate(pte_osThreadEntryPoint entry_point,
 		return PTE_OS_NO_RESOURCES;
 	}
 
+#if CONFIG_LIBUKSIGNAL
+	/* inherit signal mask */
+	ptd->uk_thread->signals_container.mask = uk_thread_current()->signals_container.mask;
+#endif
+
 	ptd->uk_thread->prv = ptd;
 
 	*ph = ptd->uk_thread;
-- 
2.20.1



From minios-devel-bounces@lists.xenproject.org Wed Apr 08 22:18:03 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 08 Apr 2020 22:18: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 1jMJ1G-00012I-Gg; Wed, 08 Apr 2020 22:18:02 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=SG8F=5Y=gmail.com=felipehuici@srs-us1.protection.inumbo.net>)
 id 1jMJ1F-00012D-5s
 for minios-devel@lists.xen.org; Wed, 08 Apr 2020 22:18:01 +0000
X-Inumbo-ID: ce9b4fea-79e6-11ea-b4f4-bc764e2007e4
Received: from mail-ua1-x943.google.com (unknown [2607:f8b0:4864:20::943])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id ce9b4fea-79e6-11ea-b4f4-bc764e2007e4;
 Wed, 08 Apr 2020 22:18:00 +0000 (UTC)
Received: by mail-ua1-x943.google.com with SMTP id m18so3245925uap.9
 for <minios-devel@lists.xen.org>; Wed, 08 Apr 2020 15:18:00 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=mime-version:references:in-reply-to:from:date:message-id:subject:to
 :cc; bh=qmGm+BOzTBhp7JXFNMdk/ishgXfKQy7Pc36VB8PJtEk=;
 b=gFPM/qM+VHeBHrrv+Bu76o8sQeRkENNL2L9KfqCKEQqtbelXuAIbCBN/Zd3upSOZ1K
 rOfAiQ/Zld51l1mbBXgqq24xc3nZOKxvvBZ65FtYdWkrS4MMq1OzYca64hRgYnWVF1p+
 Ak+fgxxGSu0B27Z2ZG1XLxoS81V8walXj0b11LpnD8R3t3ipe9UMAjYRgvvHxxX6081i
 jtmsBbISdh2tK4G8kDTpsIRCCSHclXmMNFE5+dUYWFHRIOXxyFQmWiouxlp3B53fqLKf
 XBbVITR+elkShR4Dy5LlLp0wOjUFM1hjBo7Apq1w9KLALDYRIW1V/tQClSW5fjNgkbej
 252g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:mime-version:references:in-reply-to:from:date
 :message-id:subject:to:cc;
 bh=qmGm+BOzTBhp7JXFNMdk/ishgXfKQy7Pc36VB8PJtEk=;
 b=FztQRdZM+PMYzYjJ4KwZgrjFQ5AMB2LXd85t3wyGARNfrPlhdeXgNWaHlXsvKWDuH5
 MtAzXqeo1ONB705Dy7ACtJLORDNcMORPOQ+sPA3rl5gF3fes9F74kv78yQNdbFYFL6jB
 HOK6l8Yx5WVcrtHu8E8zVvi+jnV8TY4iSqi0GDi3r3NFydLkIfkaD4QaZzB9/VxvfCgF
 P16hMGB1oVOG+Nhg0OX73yfFEM7fEui1je0ZmqC0pOoP3QtVykGfGA/vldV+38G350Uc
 tx6k1J9k2IDanGZeqXpyXzi93uiMSYl95dNCooTWsrUYKjNRd/9W8oOZWGVqmPN+U0iZ
 Blfg==
X-Gm-Message-State: AGi0PuZJwyGTbmZbxhm9hLAdVQaioz2nJh6iurfk4Z23Q72LWfoOyEpZ
 6CGve5pErCtRwXcIYltPdD1LPWs0xcyS+3JKPIf1UP31nk4=
X-Google-Smtp-Source: APiQypJjiSrqUUfuivTUqkkCS+t8pWQ5KXUCOG8SQT54Pl3tvN0qIR7KWegzrfYsxEk3EEpS8ZRZEDQ/chy/xFKRqpA=
X-Received: by 2002:ab0:913:: with SMTP id w19mr1663701uag.124.1586384280033; 
 Wed, 08 Apr 2020 15:18:00 -0700 (PDT)
MIME-Version: 1.0
References: <20200407235352.12248-1-simon.kuenzer@neclab.eu>
In-Reply-To: <20200407235352.12248-1-simon.kuenzer@neclab.eu>
From: "felipehuici ." <felipehuici@gmail.com>
Date: Thu, 9 Apr 2020 00:17:49 +0200
Message-ID: <CAEX4t-P+wXdDb73+8b1A3HtngMrpXVa4GtAj+Nu+qnAN-PELTw@mail.gmail.com>
Subject: Re: [UNIKRAFT PATCH] include: Provide `__unalign` attribute
To: Simon Kuenzer <simon.kuenzer@neclab.eu>
Content-Type: text/plain; charset="UTF-8"
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>, minios-devel@lists.xen.org
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Hi Simon, this looks good, thanks.

Reviewed-by: Felipe Huici <felipe.huici@neclab.eu>

On Wed, Apr 8, 2020 at 1:54 AM Simon Kuenzer <simon.kuenzer@neclab.eu> wrote:
>
> Provide `__unalign` attribute in `<uk/essentials.h>`. It is defined as
> byte-alignment.
>
> Signed-off-by: Simon Kuenzer <simon.kuenzer@neclab.eu>
> ---
>  include/uk/essentials.h | 3 +++
>  1 file changed, 3 insertions(+)
>
> diff --git a/include/uk/essentials.h b/include/uk/essentials.h
> index a6d969e7..6989c970 100644
> --- a/include/uk/essentials.h
> +++ b/include/uk/essentials.h
> @@ -90,6 +90,9 @@ extern "C" {
>  #ifndef __align
>  #define __align(bytes)         __attribute__((aligned(bytes)))
>  #endif
> +#ifndef __unalign
> +#define __unalign              __align(1)
> +#endif
>  /* NOTE: weak aliasing does not work well with link-time optimization
>   * currently. Hopefully this will be fixed in gcc 9. The problem is,
>   * if a weak symbol is referenced in the library, gcc resolves calls
> --
> 2.20.1
>
>


From minios-devel-bounces@lists.xenproject.org Wed Apr 08 22:18:17 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 08 Apr 2020 22:18: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 1jMJ1V-000139-JJ; Wed, 08 Apr 2020 22:18:17 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=SG8F=5Y=gmail.com=felipehuici@srs-us1.protection.inumbo.net>)
 id 1jMJ1U-000134-FL
 for minios-devel@lists.xen.org; Wed, 08 Apr 2020 22:18:16 +0000
X-Inumbo-ID: d7dca22a-79e6-11ea-83d8-bc764e2007e4
Received: from mail-vk1-xa44.google.com (unknown [2607:f8b0:4864:20::a44])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id d7dca22a-79e6-11ea-83d8-bc764e2007e4;
 Wed, 08 Apr 2020 22:18:16 +0000 (UTC)
Received: by mail-vk1-xa44.google.com with SMTP id m131so2272652vkh.3
 for <minios-devel@lists.xen.org>; Wed, 08 Apr 2020 15:18:15 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=mime-version:references:in-reply-to:from:date:message-id:subject:to
 :cc; bh=q6+wb4QdhH7dNztsDCqC2bovj6JfcRUEY3+8cAgO5ro=;
 b=tSvmdvsLze28e3H6nnXOH+cUkcjMzrToE4VZgVp/i4RMxTJ3ppMJG3UtDwnc+xgqVW
 zXH92azZl2aOjhRSql0srMxAUdcBiV4ZowIjBK/TJZzY0LAnNXl3Ue2248ks1Hfck9Ma
 qiXX+x0nJyETtHh2VkNmIauiqvi5NZO9+kawXVBWoANH3kNCR1aQVs3I6aiOaOp3Epbb
 KG+wKn4bu7ardpSZVdotDlwzbN8PI3w0VQW7MmrNVbyYkNxUHCjhy0YoYbn5W+dbBXjJ
 EkxkNvDYy+AEN6y3D1v9mTXAr5XgKMKE6hsM2grNiG0yAuI7zJpoOUNtZtYLnTa+D0kC
 13LA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:mime-version:references:in-reply-to:from:date
 :message-id:subject:to:cc;
 bh=q6+wb4QdhH7dNztsDCqC2bovj6JfcRUEY3+8cAgO5ro=;
 b=YL6+kTRamrzxO3yuKIZI2w8QwIwXuNOELrSeNeOiG7dzTSeCk/y1EmPXJe36U7Ublz
 QliF6WS5i3ufyqZmIbOOZ70jfcsgqm7sjl8GKnaTQbmPRhPz/4gBsxY2VdpqlDl9ySqD
 ZbWlSZU7SMmnuEiyylTGgV4x2G0pdvZa5WrHhUZmW46GdqiCmyhEnbZRH4B8dndYfLYK
 V37u+yuCXI5QodfvShzvXy+rwfIpJl0zDE+1qIYi0og8yY+OwQhJVYae/kltCyvEOAcK
 RKvSZ0L6SSPCo2f+4gBEt9AlPcG5HyFFiQgjq9XamO/u6vwnLFg5ip+y0wGSUspFDPdY
 jiYg==
X-Gm-Message-State: AGi0PubzU2eKYa4+PgzmPA66dH1DRQvSoSEOKxgYqpcDi6TCdXG5QoGg
 Jd+lf+Fi6u9LaObIih8DSXFMveOJprR7+IGp1qNlCSvCs6Q=
X-Google-Smtp-Source: APiQypKLSFR6faaF41Gg/PTfNzxaclI4iVbpX9LbrGo2WpDlJKFsEx9njQb4+NcmkpqiUDZl4OGz/qNHU/aBgTc7ic0=
X-Received: by 2002:a1f:b295:: with SMTP id b143mr2507134vkf.48.1586384295639; 
 Wed, 08 Apr 2020 15:18:15 -0700 (PDT)
MIME-Version: 1.0
References: <20200407235410.12324-1-simon.kuenzer@neclab.eu>
In-Reply-To: <20200407235410.12324-1-simon.kuenzer@neclab.eu>
From: "felipehuici ." <felipehuici@gmail.com>
Date: Thu, 9 Apr 2020 00:18:04 +0200
Message-ID: <CAEX4t-PqUAPxw1FBm13K24siOMyHGuiMiTkfMY4eRCALQkoVOg@mail.gmail.com>
Subject: Re: [UNIKRAFT PATCH] lib/ukdebug: Include tracepoint linker script
 when tracing is enabled
To: Simon Kuenzer <simon.kuenzer@neclab.eu>
Content-Type: text/plain; charset="UTF-8"
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>, minios-devel@lists.xen.org
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Reviewed-by: Felipe Huici <felipe.huici@neclab.eu>

On Wed, Apr 8, 2020 at 1:54 AM Simon Kuenzer <simon.kuenzer@neclab.eu> wrote:
>
> This fixes the issue that the tracepoint section was not added to the
> image when vfscore wasn't included to the build.
>
> Signed-off-by: Simon Kuenzer <simon.kuenzer@neclab.eu>
> ---
>  lib/ukdebug/Makefile.uk            | 2 +-
>  lib/ukdebug/{extra.ld => trace.ld} | 0
>  2 files changed, 1 insertion(+), 1 deletion(-)
>  rename lib/ukdebug/{extra.ld => trace.ld} (100%)
>
> diff --git a/lib/ukdebug/Makefile.uk b/lib/ukdebug/Makefile.uk
> index f06eeb87..dc10e405 100644
> --- a/lib/ukdebug/Makefile.uk
> +++ b/lib/ukdebug/Makefile.uk
> @@ -12,6 +12,6 @@ LIBUKDEBUG_SRCS-y += $(LIBUKDEBUG_BASE)/outf.c
>  LIBUKDEBUG_SRCS-y += $(LIBUKDEBUG_BASE)/hexdump.c
>  LIBUKDEBUG_SRCS-$(CONFIG_LIBZYDIS) += $(LIBUKDEBUG_BASE)/asmdump.c
>  LIBUKDEBUG_SRCS-$(CONFIG_LIBUKDEBUG_TRACEPOINTS) += $(LIBUKDEBUG_BASE)/trace.c
> -LIBUKDEBUG_SRCS-$(CONFIG_LIBVFSCORE) += $(LIBUKDEBUG_BASE)/extra.ld
> +LIBUKDEBUG_SRCS-$(CONFIG_LIBUKDEBUG_TRACEPOINTS) += $(LIBUKDEBUG_BASE)/trace.ld
>
>  STRIP_SECTIONS_FLAGS-$(CONFIG_LIBUKDEBUG_TRACEPOINTS) += -R .uk_tracepoints_list -R .uk_trace_keyvals
> diff --git a/lib/ukdebug/extra.ld b/lib/ukdebug/trace.ld
> similarity index 100%
> rename from lib/ukdebug/extra.ld
> rename to lib/ukdebug/trace.ld
> --
> 2.20.1
>
>


From minios-devel-bounces@lists.xenproject.org Wed Apr 08 22:18:29 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 08 Apr 2020 22:18: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 1jMJ1h-00014v-L5; Wed, 08 Apr 2020 22:18:29 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=SG8F=5Y=gmail.com=felipehuici@srs-us1.protection.inumbo.net>)
 id 1jMJ1g-000148-93
 for minios-devel@lists.xen.org; Wed, 08 Apr 2020 22:18:28 +0000
X-Inumbo-ID: ded67f1a-79e6-11ea-b58d-bc764e2007e4
Received: from mail-vs1-xe42.google.com (unknown [2607:f8b0:4864:20::e42])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id ded67f1a-79e6-11ea-b58d-bc764e2007e4;
 Wed, 08 Apr 2020 22:18:27 +0000 (UTC)
Received: by mail-vs1-xe42.google.com with SMTP id 184so5754445vsu.3
 for <minios-devel@lists.xen.org>; Wed, 08 Apr 2020 15:18:27 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=mime-version:references:in-reply-to:from:date:message-id:subject:to
 :cc; bh=pdHMVncAO0UmJCzrDR/hQqwKOPEBzcjbUEAvR+BO780=;
 b=okaLG7J1SJDs9CXDM7hLctAHcOWvKKMu3brBUJhFrYNj1hrjXtXDk04q9+QHl+oOqj
 Zt8WlxK/9ZbSntpDJy0klXhV8tPCoD0BfAgVLAJV5OOIOViRt2oytpkG+jL6v3Ujpuw4
 cki7v79nPZRPAavmVxIZ64q/v0uWtoknwreCcqwtMpjYZCVTaT7L3NinkS8RFdqEwtMa
 /j+uD2pDvHFomgN1QZwg329sjXLlzyC432QB/xqYctoR7ySZidzPMNjbjTTNHHAns6Ym
 BRHc00TfTlgJ6HRXlWNUSaWN9b8dIeIKyYdnuXPp3S9tDR2xf849DZNz1Zk+LgNRrb1Q
 ACaw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:mime-version:references:in-reply-to:from:date
 :message-id:subject:to:cc;
 bh=pdHMVncAO0UmJCzrDR/hQqwKOPEBzcjbUEAvR+BO780=;
 b=WsElOL3hx3TXtk9qqyxiB8u+mAw7QD6GXCIeON9U7aM4VMY0F3VcRkg+r5rKSTQoTK
 +gqVip94UIRsecbEeHuW9oU42XFw9F6bbSUr7ai9Vn2C5DEXfSXoXfo40HB/INtd2reN
 to+TMpKdRyuGrAmLdYh92Xn50nciH/FDHvfh3m1zGYvI8FWtTwEtUqvahs8Hfp7I5LM6
 iVzsh7rvLecFtY4YwprxF/VskHkOqzrSQpyZDh/xlMpt95GlpYTZ8m8d37S0yMQCYnu0
 +oueDr+ETd3nockLoRT90qKokKZAJONmkEt7tbu1JNfrLs5xd6ZdY+RE894DfZiJOYNZ
 TDIA==
X-Gm-Message-State: AGi0Pua5Pp1d3AaTQE4/VnMPtpjMXGSY3dE4rkWfR+5IlGSeXg32xDIg
 Bj0/3Be8W8b5K7SkWjlwONC/3+9SXPPcSTyiVXYN8t8EQPY=
X-Google-Smtp-Source: APiQypJDSuBTDNZkzJomPTJKy0rpH1aP0CUDpL/CXrige3eduo00cb7RQoDWBNPNJ09YWq/88SU5FzZIbxx8635aLzQ=
X-Received: by 2002:a67:ebc8:: with SMTP id y8mr8252068vso.17.1586384307317;
 Wed, 08 Apr 2020 15:18:27 -0700 (PDT)
MIME-Version: 1.0
References: <20200408001122.12554-1-simon.kuenzer@neclab.eu>
 <20200408001122.12554-2-simon.kuenzer@neclab.eu>
In-Reply-To: <20200408001122.12554-2-simon.kuenzer@neclab.eu>
From: "felipehuici ." <felipehuici@gmail.com>
Date: Thu, 9 Apr 2020 00:18:16 +0200
Message-ID: <CAEX4t-MbXv03rX5yLDm3-cumJRwffsdh4R7+Ytk3nDtBZSR3tQ@mail.gmail.com>
Subject: Re: [UNIKRAFT PATCH 1/3] build: Support multiple symbol export files
To: Simon Kuenzer <simon.kuenzer@neclab.eu>
Content-Type: text/plain; charset="UTF-8"
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>, minios-devel@lists.xen.org
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Reviewed-by: Felipe Huici <felipe.huici@neclab.eu>

On Wed, Apr 8, 2020 at 2:11 AM Simon Kuenzer <simon.kuenzer@neclab.eu> wrote:
>
> Adds support that `$(LIBNAME_EXPORTS)` can contain a list of symbol
> export files instead of only a single one. In order to simplify
> writing of `Makefile.uk` files, a `$(LIBNAME_EXPORTS-y)` variant is
> provided, too. With this variant, export symbols can be dependent to
> library configuration, for example:
>  LIBNAME_EXPORTS-$(CONFIG_MYLIB_EXTENDEDABI) += extendedsyms.uk
> Having this feature, library symbols can be masked even without the
> existence of a single `exportsyms.uk` file: Because of this, this
> patch removes the "missing exportsyms.uk"-warning. In the case an
> `exportsyms.uk` file exists for a library, it is still automatically
> included and used: The previous behavior is preserved.
>
> Signed-off-by: Simon Kuenzer <simon.kuenzer@neclab.eu>
> ---
>  support/build/Makefile.rules | 13 +++++--------
>  1 file changed, 5 insertions(+), 8 deletions(-)
>
> diff --git a/support/build/Makefile.rules b/support/build/Makefile.rules
> index af08f830..384f24f0 100644
> --- a/support/build/Makefile.rules
> +++ b/support/build/Makefile.rules
> @@ -189,7 +189,7 @@ $(call mk_sub_build_dir,$(1))
>  UK_LIBS += $(1)
>  $(eval $(call uc,$(1))_BASE    := $(_IMPORT_BASE))
>  $(eval $(call uc,$(1))_BUILD   := $(BUILD_DIR)/$(1))
> -$(eval $(call uc,$(1))_EXPORTS := $(_IMPORT_BASE)/exportsyms.uk)
> +$(eval $(call uc,$(1))_EXPORTS += $(wildcard $(_IMPORT_BASE)/exportsyms.uk))
>  endef
>
>  # addlib_s $libname,$switch
> @@ -206,7 +206,7 @@ $(eval $(call uc,$(2))_PLATS   += $(call uc,$(1)))
>  $(eval $(call uc,$(1))_LIBS    += $(2))
>  $(eval $(call uc,$(2))_BASE    := $(_IMPORT_BASE))
>  $(eval $(call uc,$(2))_BUILD   := $(BUILD_DIR)/$(2))
> -$(eval $(call uc,$(2))_EXPORTS := $(_IMPORT_BASE)/exportsyms.uk)
> +$(eval $(call uc,$(2))_EXPORTS += $(wildcard $(_IMPORT_BASE)/exportsyms.uk))
>  endef
>
>  # addplatlib_s $platname,$libname,$switch
> @@ -718,10 +718,6 @@ endef
>
>  # buildrule_olib $libname
>  define buildrule_olib =
> -$(if $(wildcard $($(call vprefix_lib,$(1),EXPORTS))),,\
> -       $(call verbose_info,Warning: Definition of exported symbols for $(1) missing: $($(call vprefix_lib,$(1),EXPORTS))) \
> -)
> -
>  $(call libname2preolib,$(1)): $($(call vprefix_lib,$(1),OBJS)) \
>                               $($(call vprefix_lib,$(1),OBJS-y)) \
>                               $($(call vprefix_lib,$(1),ALIBS)) \
> @@ -742,9 +738,10 @@ $(call libname2preolib,$(1)): $($(call vprefix_lib,$(1),OBJS)) \
>                       -Wl$(comma)--end-group \
>                       -o $(call libname2preolib,$(1)))
>
> -$(call libname2olib,$(1)): $(call libname2preolib,$(1)) $(if $(wildcard $($(call vprefix_lib,$(1),EXPORTS))),$($(call vprefix_lib,$(1),EXPORTS)),)
> +$(call libname2olib,$(1)): $(call libname2preolib,$(1)) \
> +                          $($(call vprefix_lib,$(1),EXPORTS)) $($(call vprefix_lib,$(1),EXPORTS-y)) \
>         $(call build_cmd,OBJCOPY,,$(call libname2olib,$(1)),\
> -               $(OBJCOPY) $(if $(wildcard $($(call vprefix_lib,$(1),EXPORTS))),--keep-global-symbols=$($(call vprefix_lib,$(1),EXPORTS)),) \
> +               $(OBJCOPY) $(addprefix --keep-global-symbols=,$($(call vprefix_lib,$(1),EXPORTS)) $($(call vprefix_lib,$(1),EXPORTS-y))) \
>                            $(OBJCFLAGS) $(OBJCFLAGS-y) \
>                            $($(call vprefix_lib,$(1),OBJCFLAGS)) $($(call vprefix_lib,$(1),OBJCFLAGS-y)) \
>                            $(call libname2preolib,$(1)) $(call libname2olib,$(1)))
> --
> 2.20.1
>
>


From minios-devel-bounces@lists.xenproject.org Wed Apr 08 22:18:43 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 08 Apr 2020 22:18: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 1jMJ1v-00015y-Mz; Wed, 08 Apr 2020 22:18:43 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=SG8F=5Y=gmail.com=felipehuici@srs-us1.protection.inumbo.net>)
 id 1jMJ1u-00015s-F2
 for minios-devel@lists.xen.org; Wed, 08 Apr 2020 22:18:42 +0000
X-Inumbo-ID: e74ecc74-79e6-11ea-b58d-bc764e2007e4
Received: from mail-vs1-xe41.google.com (unknown [2607:f8b0:4864:20::e41])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id e74ecc74-79e6-11ea-b58d-bc764e2007e4;
 Wed, 08 Apr 2020 22:18:41 +0000 (UTC)
Received: by mail-vs1-xe41.google.com with SMTP id u9so5762277vsp.6
 for <minios-devel@lists.xen.org>; Wed, 08 Apr 2020 15:18:41 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=mime-version:references:in-reply-to:from:date:message-id:subject:to
 :cc; bh=1j+rbEHDox7vNNC6fmjyFhsoxD5V0hGuG1uYGtSxpMc=;
 b=JaH3JDNbl15FDaqSRInuntYRMhz11eFdx7oEqcUqJ1U06b+luOxzHCKCDsAqgDqE0P
 +lCf1aY30OpBgwojmQ0Qd0NSPKDHAfLcVgLVyKjjfie9gzMgOhNy8Q4vY6Fz5xmhJTlL
 2GiNbqlw0zhqMv9ixqhBafFVo1rAHvDCCHpq2eZFen8xbHcpEGqpBDHjC8SzXe0k+gxu
 tjjUiFZ5PYIKRVKJBwQTu7fSSLOELxpSal7t3xZiH8BgJWDOhhZ+GVf6zl6j/eaEVNCm
 XhDg9UlmZ653LtKOGLBy/yIyj1vcHLn4EK8o63hedOkvk2OM3h2Yk31wzJXd7mbFeRys
 hnmw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:mime-version:references:in-reply-to:from:date
 :message-id:subject:to:cc;
 bh=1j+rbEHDox7vNNC6fmjyFhsoxD5V0hGuG1uYGtSxpMc=;
 b=PRoEi9BpwGYJ0P541xV0nq3Rakn3dFaz60+P/7gZuR7JbreAfl4L+W771086wKJef+
 8RYhg6d0O8x/b1j8Rei9yREicO1+BjkHLRTPGhuGNqmg4bk5U5CoHNQ8nUz9c/19B4Lg
 /I+WnY5UAkxG71MqDjmQzol1+0e6NNI0FA7dV22c/pz+XsF95kJKxZOs8PXcDNjQaZvU
 yVk26G13ZaYcv5BQ2fuRjX2hoaUSqsEwR/pBN4KZ8TgyG81JPcLUokY2X2cL7B7il5G3
 mxafMp8jB+XBjXE2I7F8iUAefhqgVdQBymeHzkLiAM+3M30j03NzzR0cS3C+Os+3Aw9U
 Grqg==
X-Gm-Message-State: AGi0Pua5lJWPtRziErOLZavmBRXZ57XtCfV7xqpWDQQBfjl4Z2KdCtwl
 6X6ne6VD0hzd6ygLsAWwn1ccf7DRxTbNAVkATc3JnOFXCnc=
X-Google-Smtp-Source: APiQypJopUdYAB0Q6P1BCQvQXiad5UmJ/Hlf6Uer2qoOwJxPwF4BKihfVvrT5FzKVc2AhTwus/8LDtsKg2tBMiTLFIA=
X-Received: by 2002:a67:945:: with SMTP id 66mr1133356vsj.72.1586384321582;
 Wed, 08 Apr 2020 15:18:41 -0700 (PDT)
MIME-Version: 1.0
References: <20200408001122.12554-1-simon.kuenzer@neclab.eu>
 <20200408001122.12554-3-simon.kuenzer@neclab.eu>
In-Reply-To: <20200408001122.12554-3-simon.kuenzer@neclab.eu>
From: "felipehuici ." <felipehuici@gmail.com>
Date: Thu, 9 Apr 2020 00:18:30 +0200
Message-ID: <CAEX4t-PbQ_fZL5rbs=MCuwaNY2vEx+mfDNR4jZkaju1qt8xGWg@mail.gmail.com>
Subject: Re: [UNIKRAFT PATCH 2/3] build: Provide option to localize symbols
 (LIBNAME_LOCALS(-y))
To: Simon Kuenzer <simon.kuenzer@neclab.eu>
Content-Type: text/plain; charset="UTF-8"
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>, minios-devel@lists.xen.org
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Reviewed-by: Felipe Huici <felipe.huici@neclab.eu>

On Wed, Apr 8, 2020 at 2:11 AM Simon Kuenzer <simon.kuenzer@neclab.eu> wrote:
>
> Similar to exporting symbols, this patch introduces the option to
> localize symbols. The file format of a localizing symbol files is the
> same as for exporting symbols (e.g., `exportsyms.uk`: Plain-text, one
> symbol name per line. Such files can be registered to
> `$(LIBNAME_LOCALS)` and `$(LIBNAME_LOCALS-y)`. As soon as a
> `localsyms.uk` file exists in a library import base, it is
> automatically added to the list `$(LIBNAME_LOCALS)` (similar behavior
> as the handling of `exportsyms.uk files).
>
> Signed-off-by: Simon Kuenzer <simon.kuenzer@neclab.eu>
> ---
>  support/build/Makefile.rules | 4 ++++
>  1 file changed, 4 insertions(+)
>
> diff --git a/support/build/Makefile.rules b/support/build/Makefile.rules
> index 384f24f0..251efef8 100644
> --- a/support/build/Makefile.rules
> +++ b/support/build/Makefile.rules
> @@ -190,6 +190,7 @@ UK_LIBS += $(1)
>  $(eval $(call uc,$(1))_BASE    := $(_IMPORT_BASE))
>  $(eval $(call uc,$(1))_BUILD   := $(BUILD_DIR)/$(1))
>  $(eval $(call uc,$(1))_EXPORTS += $(wildcard $(_IMPORT_BASE)/exportsyms.uk))
> +$(eval $(call uc,$(1))_LOCALS  += $(wildcard $(_IMPORT_BASE)/localsyms.uk))
>  endef
>
>  # addlib_s $libname,$switch
> @@ -207,6 +208,7 @@ $(eval $(call uc,$(1))_LIBS    += $(2))
>  $(eval $(call uc,$(2))_BASE    := $(_IMPORT_BASE))
>  $(eval $(call uc,$(2))_BUILD   := $(BUILD_DIR)/$(2))
>  $(eval $(call uc,$(2))_EXPORTS += $(wildcard $(_IMPORT_BASE)/exportsyms.uk))
> +$(eval $(call uc,$(2))_LOCALS  += $(wildcard $(_IMPORT_BASE)/localsyms.uk))
>  endef
>
>  # addplatlib_s $platname,$libname,$switch
> @@ -740,8 +742,10 @@ $(call libname2preolib,$(1)): $($(call vprefix_lib,$(1),OBJS)) \
>
>  $(call libname2olib,$(1)): $(call libname2preolib,$(1)) \
>                            $($(call vprefix_lib,$(1),EXPORTS)) $($(call vprefix_lib,$(1),EXPORTS-y)) \
> +                          $($(call vprefix_lib,$(1),LOCALS)) $($(call vprefix_lib,$(1),LOCALS-y)) \
>         $(call build_cmd,OBJCOPY,,$(call libname2olib,$(1)),\
>                 $(OBJCOPY) $(addprefix --keep-global-symbols=,$($(call vprefix_lib,$(1),EXPORTS)) $($(call vprefix_lib,$(1),EXPORTS-y))) \
> +                          $(addprefix --localize-symbols=,$($(call vprefix_lib,$(1),LOCALS)) $($(call vprefix_lib,$(1),LOCALS-y))) \
>                            $(OBJCFLAGS) $(OBJCFLAGS-y) \
>                            $($(call vprefix_lib,$(1),OBJCFLAGS)) $($(call vprefix_lib,$(1),OBJCFLAGS-y)) \
>                            $(call libname2preolib,$(1)) $(call libname2olib,$(1)))
> --
> 2.20.1
>
>


From minios-devel-bounces@lists.xenproject.org Wed Apr 08 22:18:54 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 08 Apr 2020 22:18: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 1jMJ26-000179-Q8; Wed, 08 Apr 2020 22:18:54 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=SG8F=5Y=gmail.com=felipehuici@srs-us1.protection.inumbo.net>)
 id 1jMJ25-000172-PV
 for minios-devel@lists.xen.org; Wed, 08 Apr 2020 22:18:53 +0000
X-Inumbo-ID: ede79a20-79e6-11ea-b4f4-bc764e2007e4
Received: from mail-ua1-x944.google.com (unknown [2607:f8b0:4864:20::944])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id ede79a20-79e6-11ea-b4f4-bc764e2007e4;
 Wed, 08 Apr 2020 22:18:52 +0000 (UTC)
Received: by mail-ua1-x944.google.com with SMTP id i22so3252118uak.6
 for <minios-devel@lists.xen.org>; Wed, 08 Apr 2020 15:18:52 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=mime-version:references:in-reply-to:from:date:message-id:subject:to
 :cc; bh=wiSlC05noCK+FRt6VA6MfjKFomfj1VUpjp6jiTAnk6E=;
 b=o6setbEyFY1v/mEIrCpAU3TjYQDIijgVyJ7XqO3xH3mxNKOmtMmgwqC2rKSasDB1yp
 e5/o9xsHGfsY6LXrRjc0WhaSWqPVSLzxowWrKmmCMPZI/D8QuWmWavY4x8pSeDjbmpgx
 zm9wLkaXd0K3rCieU5hqZ6j0mUKcUcdquFCioWT9guJkrryqqI2oVD+byA8W1qzTtrXh
 t8OpqYv9dSVPBojKEk8XYKhLjN32yHZdPORE6E9iCq7r6pByprGLr/50vmxWhNOSqFtw
 vD72g8HI6Rz14VJSXKEGA3+roWVV+cXlZQlzpqh/qwKpHaWFtl2meUbHMr1OeLJjSL7E
 jOgg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:mime-version:references:in-reply-to:from:date
 :message-id:subject:to:cc;
 bh=wiSlC05noCK+FRt6VA6MfjKFomfj1VUpjp6jiTAnk6E=;
 b=dew9VFrFmgpdzu1re4QyKPC1Yl5Z4UB5YDglZ0a33LHegqrI04EHRySfevUZQVHsTX
 nEEh5kzpAA4AvNYw2Ml3KrbjT/LyOJ+d7Y3z+xJNIH/r+ZgolCEMNhvtVb2+iLLWyrTH
 43uHPnUllBWmc/V9rrEPo0m941Jm+FR/k+b+niTWLaK8N7IwRDlqTLWiOgpFZQ9XOdAL
 X1KC3Fttc1aCgQhmu6TM2pwRlL3PPCS3sJstCPSpvbgstoOpGE9PxG0fByabC02pEkwi
 7wKgq0FFGeXFuCXp1D9V9OeY0VbFa7E6REN5h/BOASWC7TcHUHfb1+/o0eJGs/QDWjuu
 23IA==
X-Gm-Message-State: AGi0PubwSivdLTBB1rMew9QRtcXIseCi6Wq5vRValR6/wqLF55s+A0v5
 78O4zXweBn4xh/cut+HjuWbVNEAPByq3+Ig302M=
X-Google-Smtp-Source: APiQypKMNXM7zSOXAkw6Ng1v8yuOS88hgdEOQQ0jsiyZuoJ9EuyEan9z0Hp1sd0U6MX4YMQGoDFGKHf2itOuhCxpZSk=
X-Received: by 2002:ab0:2852:: with SMTP id c18mr2835284uaq.27.1586384332548; 
 Wed, 08 Apr 2020 15:18:52 -0700 (PDT)
MIME-Version: 1.0
References: <20200408001122.12554-1-simon.kuenzer@neclab.eu>
 <20200408001122.12554-4-simon.kuenzer@neclab.eu>
In-Reply-To: <20200408001122.12554-4-simon.kuenzer@neclab.eu>
From: "felipehuici ." <felipehuici@gmail.com>
Date: Thu, 9 Apr 2020 00:18:41 +0200
Message-ID: <CAEX4t-OdT78zWRJgXjYzSwXBS6M6K5J+EHY8PUi1HpYu2Q_r-g@mail.gmail.com>
Subject: Re: [UNIKRAFT PATCH 3/3] build: Option to set sources, object, alibs, 
 and symbol localization for each library
To: Simon Kuenzer <simon.kuenzer@neclab.eu>
Content-Type: text/plain; charset="UTF-8"
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>, minios-devel@lists.xen.org
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Reviewed-by: Felipe Huici <felipe.huici@neclab.eu>

On Wed, Apr 8, 2020 at 2:11 AM Simon Kuenzer <simon.kuenzer@neclab.eu> wrote:
>
> This commit introduces another special build system variables which
> can be used to set options for each `.o`-library (UK_OLIBS):
>  - Source files:          EACHOLIB_SRCS    and EACHOLIB_SRCS-y
>    List of source files to be compiled for and linked into each
>    `.o`-library. Be aware of duplicate symbol definitions. It may make
>    sense to use this option together with `EACHOLIB_LOCALS(-y)`.
>  - Object files:          EACHOLIB_OBJS    and EACHOLIB_OBJS-y
>    List of object files to be linked into each `.o`-library. Be aware
>    of duplicate symbol definitions. It may make sense to use this
>    option together with `EACHOLIB_LOCALS(-y)`.
>  - Static libraries:      EACHOLIB_ALIBS   and EACHOLIB_ALIBS-y
>    List of static libraries linked into each `.o`-library. Be aware
>    of duplicate symbol definitions. It may make sense to use this
>    option together with `EACHOLIB_LOCALS(-y)`.
>  - Localize symbols file: EACHOLIB_LOCALS  and EACHOLIB_LOCALS-y
>    Localizing symbols for each `.o`-library.
>
> Signed-off-by: Simon Kuenzer <simon.kuenzer@neclab.eu>
> ---
>  Makefile                     | 28 ++++++++++++++++++++--------
>  support/build/Makefile.build | 12 ++++++++----
>  support/build/Makefile.rules | 10 ++++++++++
>  3 files changed, 38 insertions(+), 12 deletions(-)
>
> diff --git a/Makefile b/Makefile
> index f6ace2b6..be8fa8ce 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -321,6 +321,14 @@ LDFLAGS :=
>  LDFLAGS-y :=
>  IMAGE_LDFLAGS :=
>  IMAGE_LDFLAGS-y :=
> +EACHOLIB_SRCS :=
> +EACHOLIB_SRCS-y :=
> +EACHOLIB_OBJS :=
> +EACHOLIB_OBJS-y :=
> +EACHOLIB_ALIBS :=
> +EACHOLIB_ALIBS-y :=
> +EACHOLIB_LOCALS :=
> +EACHOLIB_LOCALS-y :=
>
>  # Pull in the user's configuration file
>  ifeq ($(filter $(noconfig_targets),$(MAKECMDGOALS)),)
> @@ -914,12 +922,14 @@ print-objs:
>                 $(foreach P,$(UK_PLATS) $(UK_PLATS-y),\
>                 $(if $(call qstrip,$($(call uc,$(P))_LIBS) $($(call uc,$(P))_LIBS-y)),\
>                 $(foreach L,$($(call uc,$(P))_LIBS) $($(call uc,$(P))_LIBS-y), \
> -               $(if $(call qstrip,$($(call vprefix_lib,$(L),OBJS)) $($(call vprefix_lib,$(L),OBJS-y))), \
> -               '$(L):\n   $($(call vprefix_lib,$(L),OBJS)) $($(call vprefix_lib,$(L),OBJS-y))\n'\
> +               $(if $(call qstrip,$($(call vprefix_lib,$(L),OBJS)) $($(call vprefix_lib,$(L),OBJS-y)) \
> +                      $(EACHOLIB_OBJS) $(EACHOLIB_OBJS-y)), \
> +               '$(L):\n   $($(call vprefix_lib,$(L),OBJS)) $($(call vprefix_lib,$(L),OBJS-y)) $(EACHOLIB_OBJS) $(EACHOLIB_OBJS-y)\n'\
>                 ))))\
>                 $(foreach L,$(UK_LIBS) $(UK_LIBS-y),\
> -               $(if $(call qstrip,$($(call vprefix_lib,$(L),OBJS)) $($(call vprefix_lib,$(L),OBJS-y))),\
> -               '$(L):\n   $($(call vprefix_lib,$(L),OBJS)) $($(call vprefix_lib,$(L),OBJS-y))\n'\
> +               $(if $(call qstrip,$($(call vprefix_lib,$(L),OBJS)) $($(call vprefix_lib,$(L),OBJS-y)) \
> +                      $(EACHOLIB_OBJS) $(EACHOLIB_OBJS-y)), \
> +               '$(L):\n   $($(call vprefix_lib,$(L),OBJS)) $($(call vprefix_lib,$(L),OBJS-y)) $(EACHOLIB_OBJS) $(EACHOLIB_OBJS-y)\n'\
>                 ))
>
>  print-srcs:
> @@ -927,12 +937,14 @@ print-srcs:
>                 $(foreach P,$(UK_PLATS) $(UK_PLATS-y),\
>                 $(if $(call qstrip,$($(call uc,$(P))_LIBS) $($(call uc,$(P))_LIBS-y)),\
>                 $(foreach L,$($(call uc,$(P))_LIBS) $($(call uc,$(P))_LIBS-y), \
> -               $(if $(call qstrip,$($(call vprefix_lib,$(L),SRCS)) $($(call vprefix_lib,$(L),SRCS-y))), \
> -               '$(L):\n   $($(call vprefix_lib,$(L),SRCS)) $($(call vprefix_lib,$(L),SRCS-y))\n'\
> +               $(if $(call qstrip,$($(call vprefix_lib,$(L),SRCS)) $($(call vprefix_lib,$(L),SRCS-y)) \
> +                      $(EACHOLIB_SRCS) $(EACHOLIB_SRCS-y)), \
> +               '$(L):\n   $($(call vprefix_lib,$(L),SRCS)) $($(call vprefix_lib,$(L),SRCS-y)) $(EACHOLIB_SRCS) $(EACHOLIB_SRCS-y)\n'\
>                 ))))\
>                 $(foreach L,$(UK_LIBS) $(UK_LIBS-y),\
> -               $(if $(call qstrip,$($(call vprefix_lib,$(L),SRCS)) $($(call vprefix_lib,$(L),SRCS-y))),\
> -               '$(L):\n   $($(call vprefix_lib,$(L),SRCS)) $($(call vprefix_lib,$(L),SRCS-y))\n'\
> +               $(if $(call qstrip,$($(call vprefix_lib,$(L),SRCS)) $($(call vprefix_lib,$(L),SRCS-y)) \
> +                      $(EACHOLIB_SRCS) $(EACHOLIB_SRCS-y)), \
> +               '$(L):\n   $($(call vprefix_lib,$(L),SRCS)) $($(call vprefix_lib,$(L),SRCS-y)) $(EACHOLIB_SRCS) $(EACHOLIB_SRCS-y)\n'\
>                 ))
>  else
>  print-libs:
> diff --git a/support/build/Makefile.build b/support/build/Makefile.build
> index 5679741d..c597a382 100644
> --- a/support/build/Makefile.build
> +++ b/support/build/Makefile.build
> @@ -25,8 +25,10 @@
>
>  ifneq ($(call qstrip,$(UK_LIBS) $(UK_LIBS-y)),)
>  $(foreach L,$(UK_LIBS) $(UK_LIBS-y), \
> -$(if $(call qstrip,$($(call uc,$(L))_SRCS) $($(call uc,$(L))_SRCS-y)), \
> -$(foreach S,$($(call uc,$(L))_SRCS) $($(call uc,$(L))_SRCS-y), \
> +$(if $(call qstrip,$($(call uc,$(L))_SRCS) $($(call uc,$(L))_SRCS-y) \
> +           $(EACHOLIB_SRCS) $(EACHOLIB_SRCS-y)), \
> +$(foreach S,$($(call uc,$(L))_SRCS) $($(call uc,$(L))_SRCS-y) \
> +           $(EACHOLIB_SRCS) $(EACHOLIB_SRCS-y), \
>  $(eval $(call buildrule_libobj_multitarget,$(L),$(S))) \
>  ); \
>  $(eval $(call buildrule_olib,$(L))); \
> @@ -46,8 +48,10 @@ ifneq ($(call qstrip,$(UK_PLATS) $(UK_PLATS-y)),)
>  $(foreach P,$(UK_PLATS) $(UK_PLATS-y), \
>  $(if $(call qstrip,$($(call uc,$(P))_LIBS) $($(call uc,$(P))_LIBS-y)), \
>  $(foreach L,$($(call uc,$(P))_LIBS) $($(call uc,$(P))_LIBS-y), \
> -$(if $(call qstrip,$($(call uc,$(L))_SRCS) $($(call uc,$(L))_SRCS-y)), \
> -$(foreach S,$($(call uc,$(L))_SRCS) $($(call uc,$(L))_SRCS-y), \
> +$(if $(call qstrip,$($(call uc,$(L))_SRCS) $($(call uc,$(L))_SRCS-y) \
> +     $(EACHOLIB_SRCS) $(EACHOLIB_SRCS-y)), \
> +$(foreach S,$($(call uc,$(L))_SRCS) $($(call uc,$(L))_SRCS-y) \
> +           $(EACHOLIB_SRCS) $(EACHOLIB_SRCS-y), \
>  $(eval $(call buildrule_libobj_multitarget,$(L),$(S))) \
>  ); \
>  $(eval $(call buildrule_olib,$(L))); \
> diff --git a/support/build/Makefile.rules b/support/build/Makefile.rules
> index 251efef8..8c096fa5 100644
> --- a/support/build/Makefile.rules
> +++ b/support/build/Makefile.rules
> @@ -722,8 +722,12 @@ endef
>  define buildrule_olib =
>  $(call libname2preolib,$(1)): $($(call vprefix_lib,$(1),OBJS)) \
>                               $($(call vprefix_lib,$(1),OBJS-y)) \
> +                             $(EACHOLIB_OBJS) \
> +                             $(EACHOLIB_OBJS-y) \
>                               $($(call vprefix_lib,$(1),ALIBS)) \
>                               $($(call vprefix_lib,$(1),ALIBS-y)) \
> +                             $(EACHOLIB_ALIBS) \
> +                             $(EACHOLIB_ALIBS-y) \
>                               $($(call vprefix_lib,$(1),LDS)) \
>                               $($(call vprefix_lib,$(1),LDS-y)) \
>                               $($(call vprefix_lib,$(1),DTB)) \
> @@ -734,18 +738,24 @@ $(call libname2preolib,$(1)): $($(call vprefix_lib,$(1),OBJS)) \
>                       $($(call vprefix_lib,$(1),LDFLAGS-y)) \
>                       $($(call vprefix_lib,$(1),OBJS)) \
>                       $($(call vprefix_lib,$(1),OBJS-y)) \
> +                     $(EACHOLIB_OBJS) \
> +                     $(EACHOLIB_OBJS-y) \
>                       -Wl$(comma)--start-group \
>                       $($(call vprefix_lib,$(1),ALIBS)) \
>                       $($(call vprefix_lib,$(1),ALIBS-y)) \
> +                     $(EACHOLIB_ALIBS) \
> +                     $(EACHOLIB_ALIBS-y) \
>                       -Wl$(comma)--end-group \
>                       -o $(call libname2preolib,$(1)))
>
>  $(call libname2olib,$(1)): $(call libname2preolib,$(1)) \
>                            $($(call vprefix_lib,$(1),EXPORTS)) $($(call vprefix_lib,$(1),EXPORTS-y)) \
>                            $($(call vprefix_lib,$(1),LOCALS)) $($(call vprefix_lib,$(1),LOCALS-y)) \
> +                          $(EACHOLIB_LOCALS) $(EACHOLIB_LOCALS-y)
>         $(call build_cmd,OBJCOPY,,$(call libname2olib,$(1)),\
>                 $(OBJCOPY) $(addprefix --keep-global-symbols=,$($(call vprefix_lib,$(1),EXPORTS)) $($(call vprefix_lib,$(1),EXPORTS-y))) \
>                            $(addprefix --localize-symbols=,$($(call vprefix_lib,$(1),LOCALS)) $($(call vprefix_lib,$(1),LOCALS-y))) \
> +                          $(addprefix --localize-symbols=,$(EACHOLIB_LOCALS) $(EACHOLIB_LOCALS-y)) \
>                            $(OBJCFLAGS) $(OBJCFLAGS-y) \
>                            $($(call vprefix_lib,$(1),OBJCFLAGS)) $($(call vprefix_lib,$(1),OBJCFLAGS-y)) \
>                            $(call libname2preolib,$(1)) $(call libname2olib,$(1)))
> --
> 2.20.1
>
>


From minios-devel-bounces@lists.xenproject.org Thu Apr 09 01:36:47 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 09 Apr 2020 01:36: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 1jMM7a-0004I4-2H; Thu, 09 Apr 2020 01:36:46 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=O8rh=5Z=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1jMM7Z-0004Hz-Cy
 for minios-devel@lists.xenproject.org; Thu, 09 Apr 2020 01:36:45 +0000
X-Inumbo-ID: 90953aaa-7a02-11ea-b4f4-bc764e2007e4
Received: from EUR01-HE1-obe.outbound.protection.outlook.com (unknown
 [40.107.13.40]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 90953aaa-7a02-11ea-b4f4-bc764e2007e4;
 Thu, 09 Apr 2020 01:36:43 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; 
 s=selector2-armh-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=YW0xo7QRHurjxCYKFm7KYnkf8S8VuWBUK/P+xIKSL0Y=;
 b=uplqKIIj4G8r9HLcmhLnh/7k8l0L4jAcdDnZi5VyNY3jc6dK9QvXKWlgEgzcp579mKJ3frm7s/tbFOBhIdM7N34I3ESet+74M7iXwzVFhqVOmlgW8tUvzQMyCkzKclghNyjgxBDWk3mCPtOosfk9/8se3MeGaYWVtIT3+xiU6Sk=
Received: from DB7PR05CA0014.eurprd05.prod.outlook.com (2603:10a6:10:36::27)
 by VI1PR08MB2943.eurprd08.prod.outlook.com (2603:10a6:802:23::33) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2900.15; Thu, 9 Apr
 2020 01:36:40 +0000
Received: from DB5EUR03FT036.eop-EUR03.prod.protection.outlook.com
 (2603:10a6:10:36:cafe::27) by DB7PR05CA0014.outlook.office365.com
 (2603:10a6:10:36::27) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2900.15 via Frontend
 Transport; Thu, 9 Apr 2020 01:36:40 +0000
Authentication-Results: spf=pass (sender IP is 63.35.35.123)
 smtp.mailfrom=arm.com; lists.xenproject.org; dkim=pass (signature was
 verified) header.d=armh.onmicrosoft.com;lists.xenproject.org;
 dmarc=bestguesspass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 63.35.35.123 as permitted sender) receiver=protection.outlook.com;
 client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com;
Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by
 DB5EUR03FT036.mail.protection.outlook.com (10.152.20.185) with
 Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.2900.15 via Frontend Transport; Thu, 9 Apr 2020 01:36:40 +0000
Received: ("Tessian outbound 1425309d4c0b:v50");
 Thu, 09 Apr 2020 01:36:40 +0000
X-CR-MTA-TID: 64aa7808
Received: from dd5044a33a89.1
 by 64aa7808-outbound-1.mta.getcheckrecipient.com id
 D1BF5481-9D11-4D0B-90CA-5274C01D9C31.1; 
 Thu, 09 Apr 2020 01:36:35 +0000
Received: from EUR01-DB5-obe.outbound.protection.outlook.com
 by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id dd5044a33a89.1
 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384);
 Thu, 09 Apr 2020 01:36:35 +0000
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=Rfnbsogosg+m1gsEBQEzSVkzXqEuQFxnbCS6jX8Tmmh01EwJ/4lv9T1gUpdN62VPZDtaYkaKro9ky/CSCf0yhQe88xVpJuHknruwWOQLwVJ8G76PNJeimYr2OVLhOhj62JxFGncXfNCpvrZF1aWMKnfWwC9DxybBJpU1haurRVOl9jSEO3DavKJrflBwjEKwFS8zfKNNLXAyW5Y9+XI2Mq0v0cDlrXaOHhrX8EzeATFaWTRkqpS9AzqeiBAJYRfsGVuZ5jNL8biUhQXdcssFvHjOwJ89pKAcEkuhxyIRKqyHx1JLLcO7dO+Aft9ayHZUYkgLtSkXcryxkNDf6ywH4A==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; 
 s=arcselector9901;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=YW0xo7QRHurjxCYKFm7KYnkf8S8VuWBUK/P+xIKSL0Y=;
 b=B4X8rp7B8U6g4KJBamSHFdbRXZa+y62AeyCQOzGMGMat/y4oP892BvwrTsklTAjDyzEGGVs4EvPSdym+ancr2NHE52mYqLWKolLdmjR+H8cyKooISrz4C9pJRq1C/jICr+unFwZ56+87oGvkMNind2hFNcYJzvWHJNss+IUrXN+tqEOp7CLdpsYT5lEycVGAbVprIcqZVOG7+yjCv/Y8KDOw0/eCTuAJewMngMre28YKs3hdXNAYyjDBS+MYe8jLRO2bTZIhp6bSKUWL238ZGHgHrrmK8qj7mAZmLRw0yBVZzhA8n6KpNa/4NxG7j0m9qbZc+GJSFv+whNC65QQd/A==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; 
 s=selector2-armh-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=YW0xo7QRHurjxCYKFm7KYnkf8S8VuWBUK/P+xIKSL0Y=;
 b=uplqKIIj4G8r9HLcmhLnh/7k8l0L4jAcdDnZi5VyNY3jc6dK9QvXKWlgEgzcp579mKJ3frm7s/tbFOBhIdM7N34I3ESet+74M7iXwzVFhqVOmlgW8tUvzQMyCkzKclghNyjgxBDWk3mCPtOosfk9/8se3MeGaYWVtIT3+xiU6Sk=
Received: from AM6PR08MB4069.eurprd08.prod.outlook.com (2603:10a6:20b:af::32)
 by AM6PR08MB4214.eurprd08.prod.outlook.com (2603:10a6:20b:8d::30)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2900.17; Thu, 9 Apr
 2020 01:36:27 +0000
Received: from AM6PR08MB4069.eurprd08.prod.outlook.com
 ([fe80::60b6:c319:1c9b:8919]) by AM6PR08MB4069.eurprd08.prod.outlook.com
 ([fe80::60b6:c319:1c9b:8919%7]) with mapi id 15.20.2878.022; Thu, 9 Apr 2020
 01:36:27 +0000
From: Justin He <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>, Felipe Huici
 <felipe.huici@neclab.eu>
Subject: RE: [UNIKRAFT PATCH v3 2/7] build: Link libgcc at the end of the link
 options list
Thread-Topic: [UNIKRAFT PATCH v3 2/7] build: Link libgcc at the end of the
 link options list
Thread-Index: AQHWC/aGUWDTOLXHl0mcROwehezCMKhs779QgAMVmnA=
Date: Thu, 9 Apr 2020 01:36:26 +0000
Message-ID: <AM6PR08MB406938B5FA773E15AD5B10B3F7C10@AM6PR08MB4069.eurprd08.prod.outlook.com>
References: <20200402041833.141738-1-justin.he@arm.com>
 <20200402041833.141738-3-justin.he@arm.com>
 <7e345035-6e56-e5cf-87a5-0e41c1924806@neclab.eu>
 <AM6PR08MB4069E1159ED06D4972D77E84F7C30@AM6PR08MB4069.eurprd08.prod.outlook.com>
In-Reply-To: <AM6PR08MB4069E1159ED06D4972D77E84F7C30@AM6PR08MB4069.eurprd08.prod.outlook.com>
Accept-Language: en-US, zh-CN
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ts-tracking-id: 159a9f68-8798-4546-af86-9529aec4135c.1
x-checkrecipientchecked: true
Authentication-Results-Original: 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-HT: Tenant
X-MS-Office365-Filtering-Correlation-Id: 5a2a9882-a5c2-4c18-6e97-08d7dc2673a0
x-ms-traffictypediagnostic: AM6PR08MB4214:|AM6PR08MB4214:|VI1PR08MB2943:
x-ms-exchange-transport-forked: True
X-Microsoft-Antispam-PRVS: <VI1PR08MB294374E9F4A1B2C948063CADF7C10@VI1PR08MB2943.eurprd08.prod.outlook.com>
x-checkrecipientrouted: true
nodisclaimer: true
x-ms-oob-tlc-oobclassifiers: OLM:8882;OLM:8882;
x-forefront-prvs: 0368E78B5B
X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en;
 SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM6PR08MB4069.eurprd08.prod.outlook.com;
 PTR:; CAT:NONE; SFTY:;
 SFS:(10009020)(4636009)(39860400002)(376002)(346002)(396003)(136003)(366004)(54906003)(66446008)(52536014)(76116006)(9686003)(66556008)(55016002)(66946007)(7696005)(86362001)(64756008)(4326008)(81166007)(316002)(66476007)(55236004)(6506007)(110136005)(53546011)(71200400001)(186003)(8676002)(5660300002)(81156014)(8936002)(966005)(33656002)(478600001)(2906002)(26005);
 DIR:OUT; SFP:1101; 
received-spf: None (protection.outlook.com: arm.com does not designate
 permitted sender hosts)
X-MS-Exchange-SenderADCheck: 1
X-Microsoft-Antispam-Untrusted: BCL:0;
X-Microsoft-Antispam-Message-Info-Original: lvM5md7zsFT55ERNQbuwBJFBUr8/HmEQTvLP4wm09PdNTTQx1ssDAy7pmF9S3ROYJafhzdD41br1BIsNB418/DaDQ7HMmgRoQsUcb4PWicazHl92Kts5prabvA+gSmvbCYnmToxbNdRFQQirzaZ0WjTnr9YxL4JW8BW6m+urONC63Lhvfub8Zog6V51n9BA2dSwCUvTIIaSPL/qh8/OGaxkCBt5hdubQqGGJypwtPxoWBxQmtD2V3y+4QeOkb5YfbxWN+fWek2b/r8aioL376ava9foG5jfRDxmO7BjH6OYiS5fb6snh+D8dyT+DoFyvYUlbqqyYTAr3lg8RYxfKO0MO8Z+LbGGpvmhRkSB6aahzyUHlABcvyMOg1tsr1EvwrJY1wuZZ/TCxGIXAO0/yiDmpyVzTatuWC9aC781elNgZyFBn97FKG2wK3E/jz+vTHbgAOomscb9DCkFaN+1urW2geb3VxyDRfl30thMK6TCN95ecFNaPHzliVzioVbTrDzaonSLxEtXGOSjkh2Rmgw==
x-ms-exchange-antispam-messagedata: qMWpQQO319Qu3yisLvdyZjHRLPOjDNcisa1jmDJrv4cA9nVyfLD2YlThvE/NHuslWLPvnIoKIGn9CBP8WphtAxLJBH4VjwYCxvbstcoLJvANMi6ZVp/ger2Dq9jjuD75OwTohxaI2sxLHIZbDYdhOA==
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB4214
Original-Authentication-Results: spf=none (sender IP is )
 smtp.mailfrom=Justin.He@arm.com; 
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB5EUR03FT036.eop-EUR03.prod.protection.outlook.com
X-Forefront-Antispam-Report: CIP:63.35.35.123; CTRY:IE; LANG:en; SCL:1; SRV:;
 IPV:CAL; SFV:NSPM; H:64aa7808-outbound-1.mta.getcheckrecipient.com;
 PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com; CAT:NONE; SFTY:;
 SFS:(10009020)(4636009)(376002)(39860400002)(346002)(396003)(136003)(46966005)(52536014)(6506007)(8936002)(9686003)(70586007)(86362001)(336012)(55016002)(53546011)(82740400003)(33656002)(47076004)(5660300002)(478600001)(81156014)(966005)(356004)(110136005)(26005)(70206006)(4326008)(2906002)(26826003)(81166007)(316002)(186003)(54906003)(7696005)(8676002);
 DIR:OUT; SFP:1101; 
X-MS-Office365-Filtering-Correlation-Id-Prvs: 076db43e-286a-478d-8e6b-08d7dc266bb4
X-Forefront-PRVS: 0368E78B5B
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info: Bqb6ov8uitmFkR51ztp7V+1b6h+D7C0yide/mZOODa5XUwlDKU4rAgpo3sB+ce3gy4GWN5QKmtDy3+BL/gGHY6rXxJL9MKLjmFuV5/KzAO+RJuaDGNXiMyRhWkwWt1aOyp2RDne313QE30GQ91SbyGrZj4OtdGUjnG2pZ1NM+KPmPqSxVrFoa+rKqSQoS6ydbXq+DZ7WdEpo+yR5frMDNOBJOLZ9/4EWPEh0fXd36dpxly03GihgHlT3SvG0iTeX4B5I/4MBwSIvD+AwgwCbsrrLJ5aYzPL5S30OptkKnd/hAmNIFEpacWdxudlO9jGkbspoIfX8InhVm/DJCP5ndYErYBzC72pJSKeS3pkGErU+uLiQfOy4I6QLD/hZS/y2Yn8oVTixkDdCSKa/euUQ/GGveZzJePaXc1U4sVl8j8am7AtMAYylW31lR/eKeh646awKQtAiYa3irwqxLpB21VmkX4FqwHpY7/E72Q415ecNKtiCYwzWxuZGba22SlI0EHGBMXLIxEPKrVDgpJbKo/He8VSszMkY5r8BsO8PaBTQfhmh84vX6U1m7XuWkqh5vfNmZP2Ugs4C/V3Pu48K0mHYQMXykSldp8vW9RIeafE=
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Apr 2020 01:36:40.2906 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 5a2a9882-a5c2-4c18-6e97-08d7dc2673a0
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[63.35.35.123];
 Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com]
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR08MB2943
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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: Kaly Xin <Kaly.Xin@arm.com>, nd <nd@arm.com>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGkgU2hhcmFuDQpGb3IgeW91ciBjb25jZXJuIGFib3V0IGxpbmtpbmcgbGliZ2NjIGluIFVuaWty
YWZ0LCBoZXJlIGlzIHRoZSByZXBseSBmcm9tIG91ciBsaWNlbnNlIGV4cGVydDoNCg0KPj4gV2Ug
aGF2ZSBhIGxpY2Vuc2UgcXVlc3Rpb24sIGNvdWxkIEJTRCBsaWNlbnNlZCBwcm9qZWN0IGxpbmsg
YSBHUEwgbGljZW5zZWQgYmluYXJ5Pw0KPj4qVW5pa3JhZnQqIGlzIGEgQlNEIGxpY2Vuc2VkIHBy
b2plY3QuIFRvIHN1cHBvcnQgZmxvYXRpbmctcG9pbnQgZmVhdHVyZSwgaXQgbmVlZHMgdG8gbGlu
ayBsaWJnY2MgDQo+PiB3aGljaCBpcyBhIGJpbmFyeSBsaWNlbnNlZCBhcyBHUEx2My4gV2lsbCBp
dCBoYXZlcyBpbXBhY3Qgb24gdGhlIEJTRCBsaWNlbnNlIGluIFVuaWtyYWZ0Pw0KPlRoZSBHQ0Mg
cnVudGltZSBsaWJyYXJ5IGV4Y2VwdGlvbiBzZWVtcyB0byBwZXJtaXQgdGhlIHNjZW5hcmlvIHlv
dSBkZXNjcmliZWQuICBJIGJlbGlldmUgDQo+dGhlIGxpY2Vuc2UgZm9yIGxpYmdjYyBpbmNsdWRl
cyB0aGF0IGV4Y2VwdGlvbiwgYW5kIHRoZSB1c2UtY2FzZSB5b3UgZGVzY3JpYmVkIGJlbG93IGFw
cGVhcnMNCj4gdG8gb3RoZXJ3aXNlIHF1YWxpZnkuICBZb3UgY2FuIHJlYWQgdGhlIEdOVSBGQVEg
b24gdGhpcyBpc3N1ZSBIRVJFICB0byBjb25maXJtLA0KDQpTbyBzZWVtcyB3ZSBjYW4gZnJlZWx5
IGxpbmtpbmcgbGliZ2NjIHdpdGhvdXQgYW55IGxpY2Vuc2UgaXNzdWVzLg0KDQotLQ0KQ2hlZXJz
LA0KSnVzdGluIChKaWEgSGUpDQoNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBG
cm9tOiBNaW5pb3MtZGV2ZWwgPG1pbmlvcy1kZXZlbC1ib3VuY2VzQGxpc3RzLnhlbnByb2plY3Qu
b3JnPiBPbiBCZWhhbGYNCj4gT2YgSnVzdGluIEhlDQo+IFNlbnQ6IFR1ZXNkYXksIEFwcmlsIDcs
IDIwMjAgMTA6MjcgQU0NCj4gVG86IFNoYXJhbiBTYW50aGFuYW0gPHNoYXJhbi5zYW50aGFuYW1A
bmVjbGFiLmV1PjsgbWluaW9zLQ0KPiBkZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZzsgU2ltb24g
S3VlbnplciA8c2ltb24ua3VlbnplckBuZWNsYWIuZXU+Ow0KPiBGZWxpcGUgSHVpY2kgPGZlbGlw
ZS5odWljaUBuZWNsYWIuZXU+DQo+IENjOiBLYWx5IFhpbiA8S2FseS5YaW5AYXJtLmNvbT47IG5k
IDxuZEBhcm0uY29tPg0KPiBTdWJqZWN0OiBSZTogW01pbmlvcy1kZXZlbF0gW1VOSUtSQUZUIFBB
VENIIHYzIDIvN10gYnVpbGQ6IExpbmsgbGliZ2NjIGF0IHRoZQ0KPiBlbmQgb2YgdGhlIGxpbmsg
b3B0aW9ucyBsaXN0DQo+IA0KPiBIaSBTaGFyYW4sIHRoYW5rcyBmb3IgdGhlIHJldmlldw0KPiBG
b3IgeW91ciBjb25jZXJuIGFib3V0IGxpbmsgZ3BsIGJpbmFyeSB3aXRoIGJzZCBwcm9qZWN0LCBJ
IHdpbGwgY29udGFjdCBvdXINCj4gbGljZW5zZSBleHBlcnRzLg0KPiBXaWxsIHVwZGF0ZSBpdCBh
c2FwLg0KPiANCj4gLS0NCj4gQ2hlZXJzLA0KPiBKdXN0aW4gKEppYSBIZSkNCj4gDQo+IA0KPiAN
Cj4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+IEZyb206IFNoYXJhbiBTYW50aGFu
YW0gPHNoYXJhbi5zYW50aGFuYW1AbmVjbGFiLmV1Pg0KPiA+IFNlbnQ6IE1vbmRheSwgQXByaWwg
NiwgMjAyMCA1OjM0IFBNDQo+ID4gVG86IEp1c3RpbiBIZSA8SnVzdGluLkhlQGFybS5jb20+OyBt
aW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmc7DQo+ID4gU2ltb24gS3VlbnplciA8c2lt
b24ua3VlbnplckBuZWNsYWIuZXU+OyBGZWxpcGUgSHVpY2kNCj4gPiA8ZmVsaXBlLmh1aWNpQG5l
Y2xhYi5ldT4NCj4gPiBDYzogS2FseSBYaW4gPEthbHkuWGluQGFybS5jb20+OyBuZCA8bmRAYXJt
LmNvbT4NCj4gPiBTdWJqZWN0OiBSZTogW1VOSUtSQUZUIFBBVENIIHYzIDIvN10gYnVpbGQ6IExp
bmsgbGliZ2NjIGF0IHRoZSBlbmQgb2YgdGhlDQo+IGxpbmsNCj4gPiBvcHRpb25zIGxpc3QNCj4g
Pg0KPiA+IEhlbGxvIEp1c3RpbiwNCj4gPg0KPiA+IFBsZWFzZSBmaW5kIHRoZSBjb21tZW50IGlu
bGluZS4NCj4gPg0KPiA+IFRoYW5rcyAmIFJlZ2FyZHMNCj4gPg0KPiA+IFNoYXJhbg0KPiA+DQo+
ID4gT24gNC8yLzIwIDY6MTggQU0sIEppYSBIZSB3cm90ZToNCj4gPiA+IFRvIHVzZSBuZXdsaWIg
b24gYXJtNjQgcGxhdCBrdm0sIGxpYmdjYyBzaG91bGQgYmUgbGlua2VkIGF0IHRoZSBlbmQgb2YN
Cj4gPiA+IHRoZSBvcHRpb25zIGxpc3QsIG90aGVyd2lzZSBpdCB3aWxsIGJlIGlnbm9yZWQgZHVl
IHRvIC1zdGRsaWIuDQo+ID4gPg0KPiA+ID4gV2l0aG91dCB0aGlzIHBhdGNoLCB0aGVyZSB3aWxs
IGJlIGEgbGlua2luZyBlcnJvciBvbiBhcm0ga3ZtIHBsYXQ6DQo+ID4gPiBzeXNsb2cuYzooLnRl
eHQrMHg3ZDVjYyk6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYF9fZmxvYXRzaXRmJw0KPiA+ID4g
c3lzbG9nLmM6KC50ZXh0KzB4N2Q1Y2MpOiByZWxvY2F0aW9uIHRydW5jYXRlZCB0byBmaXQ6IFJf
QUFSQ0g2NF9DQUxMMjYNCj4gPiBhZ2FpbnN0IHVuZGVmaW5lZCBzeW1ib2wgYF9fZmxvYXRzaXRm
Jw0KPiA+ID4gL3Jvb3QvaGovVUsvdW5pa3JhZnRfdXBzdHJlYW0vYXBwcy9oZWxsb3dvcmxkL2J1
aWxkL2hlbGxvd29ybGRfa3ZtLQ0KPiA+IGFybTY0Lm86IEluIGZ1bmN0aW9uIGBfX2llZWU3NTRf
aHlwb3RsJzoNCj4gPiA+IHN5c2xvZy5jOigudGV4dCsweDk5NDM0KTogdW5kZWZpbmVkIHJlZmVy
ZW5jZSB0byBgX19tdWx0ZjMnDQo+ID4gPiBzeXNsb2cuYzooLnRleHQrMHg5OTQzNCk6IHJlbG9j
YXRpb24gdHJ1bmNhdGVkIHRvIGZpdDogUl9BQVJDSDY0X0NBTEwyNg0KPiA+IGFnYWluc3QgdW5k
ZWZpbmVkIHN5bWJvbCBgX19tdWx0ZjMnDQo+ID4gPiBzeXNsb2cuYzooLnRleHQrMHg5OTQ0NCk6
IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYF9fbXVsdGYzJw0KPiA+ID4gc3lzbG9nLmM6KC50ZXh0
KzB4OTk0NDQpOiBhZGRpdGlvbmFsIHJlbG9jYXRpb24gb3ZlcmZsb3dzIG9taXR0ZWQgZnJvbQ0K
PiB0aGUNCj4gPiBvdXRwdXQNCj4gPiA+IHN5c2xvZy5jOigudGV4dCsweDk5NDUwKTogdW5kZWZp
bmVkIHJlZmVyZW5jZSB0byBgX19hZGR0ZjMnDQo+ID4gPiAvcm9vdC9oai9VSy91bmlrcmFmdF91
cHN0cmVhbS9hcHBzL2hlbGxvd29ybGQvYnVpbGQvaGVsbG93b3JsZF9rdm0tDQo+ID4gYXJtNjQu
bzogSW4gZnVuY3Rpb24gYHNxcnRsJzoNCj4gPiA+IHN5c2xvZy5jOigudGV4dCsweGIxMmMwKTog
dW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgX190cnVuY3RmZGYyJw0KPiA+ID4gc3lzbG9nLmM6KC50
ZXh0KzB4YjEyYzgpOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBfX2V4dGVuZGRmdGYyJw0KPiA+
ID4NCj4gPiA+IEFib3ZlIHVuZGVmaW5lZCBzeW1ib2xzIGFyZSBhdCBsaWJnY2MuYQ0KPiA+ID4N
Cj4gPiA+IFNpZ25lZC1vZmYtYnk6IEppYSBIZSA8anVzdGluLmhlQGFybS5jb20+DQo+ID4gPiAt
LS0NCj4gPiA+ICAgcGxhdC9rdm0vTGlua2VyLnVrIHwgMiArKw0KPiA+ID4gICAxIGZpbGUgY2hh
bmdlZCwgMiBpbnNlcnRpb25zKCspDQo+ID4gPg0KPiA+ID4gZGlmZiAtLWdpdCBhL3BsYXQva3Zt
L0xpbmtlci51ayBiL3BsYXQva3ZtL0xpbmtlci51aw0KPiA+ID4gaW5kZXggNWU0MjE5My4uNjVh
NWY4ZSAxMDA2NDQNCj4gPiA+IC0tLSBhL3BsYXQva3ZtL0xpbmtlci51aw0KPiA+ID4gKysrIGIv
cGxhdC9rdm0vTGlua2VyLnVrDQo+ID4gPiBAQCAtMiw2ICsyLDcgQEAgaWZlcSAoeDg2XzY0LCQo
Q09ORklHX1VLX0FSQ0gpKQ0KPiA+ID4gICBLVk1fTERGTEFHUy15ICs9IC1XbCwtbSxlbGZfeDg2
XzY0DQo+ID4gPiAgIGVsc2UgaWZlcSAoYXJtNjQsJChDT05GSUdfVUtfQVJDSCkpDQo+ID4gPiAg
IEtWTV9MREZMQUdTLXkJICs9IC1XbCwtbSxhYXJjaDY0ZWxmDQo+ID4gPiArS1ZNX0xJTktfTElC
R0NDX0ZMQUcJOj0gLWxnY2MNCj4gPiA+ICAgZW5kaWYNCj4gPiA+DQo+ID4gPg0KPiA+ID4gQEAg
LTI2LDYgKzI3LDcgQEAgJChLVk1fREVCVUdfSU1BR0UpOiAkKEtWTV9BTElCUykNCj4gJChLVk1f
QUxJQlMteSkNCj4gPiAkKEtWTV9PTElCUykgJChLVk1fT0xJQlMteSkgXA0KPiA+ID4gICAJCQkt
V2wkKGNvbW1hKS0tc3RhcnQtZ3JvdXAgXA0KPiA+ID4gICAJCQkkKEtWTV9BTElCUykgJChLVk1f
QUxJQlMteSkgXA0KPiA+ID4gICAJCQkkKFVLX0FMSUJTKSAkKFVLX0FMSUJTLXkpIFwNCj4gPiA+
ICsJCQkkKEtWTV9MSU5LX0xJQkdDQ19GTEFHKSBcDQo+ID4gSSB0aGluayBpdCBpcyBmaW5lIGlm
IHdlIGNvdWxkIGRpcmVjdGx5IGluY2x1ZGUgdGhlIGxpYmdjYy5hIGludG8gb3VyDQo+ID4gc3Rh
dGljYWxseSBidWlsdCBiaW5hcnkgYXMgdGhpcyBjb21lIEdQTCB2My4gRG8geW91IGtub3cgaWYg
dGhpcyBoYXMgYW4NCj4gPiBpbXBhY3Qgb24gdGhlIEJTRCBsaWNlbnNlPw0KPiA+ID4gICAJCQkt
V2wkKGNvbW1hKS0tZW5kLWdyb3VwIFwNCj4gPiA+ICAgCQkJLW8gJChLVk1fSU1BR0UpLmxkLm8p
DQo+ID4gPiAgIAkkKGNhbGwgYnVpbGRfY21kLE9CSkNPUFksLCQoS1ZNX0lNQUdFKS5vLFwNCj4g
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCj4gTWluaW9z
LWRldmVsIG1haWxpbmcgbGlzdA0KPiBNaW5pb3MtZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcN
Cj4gaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL21pbmlvcy1k
ZXZlbA0K


From minios-devel-bounces@lists.xenproject.org Thu Apr 09 02:19:58 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 09 Apr 2020 02:19: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 1jMMnN-0008A1-La; Thu, 09 Apr 2020 02:19: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=O8rh=5Z=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1jMMnM-00089w-Cq
 for minios-devel@lists.xenproject.org; Thu, 09 Apr 2020 02:19:56 +0000
X-Inumbo-ID: 9997130c-7a08-11ea-8281-12813bfff9fa
Received: from foss.arm.com (unknown [217.140.110.172])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTP
 id 9997130c-7a08-11ea-8281-12813bfff9fa;
 Thu, 09 Apr 2020 02:19:54 +0000 (UTC)
Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14])
 by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 1F0A330E;
 Wed,  8 Apr 2020 19:19:54 -0700 (PDT)
Received: from localhost.localdomain (entos-thunderx2-02.shanghai.arm.com
 [10.169.138.57])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 580973F73D;
 Wed,  8 Apr 2020 19:19:51 -0700 (PDT)
From: Jia He <justin.he@arm.com>
To: minios-devel@lists.xenproject.org,
	Sharan.Santhanam@neclab.eu
Subject: [UNIKRAFT PATCH v5 0/7] Support float point on arm64 kvm plat
Date: Thu,  9 Apr 2020 10:19:34 +0800
Message-Id: <20200409021941.163308-1-justin.he@arm.com>
X-Mailer: git-send-email 2.17.1
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>, Kaly Xin <Kaly.Xin@arm.com>,
 Simon Kuenzer <simon.kuenzer@neclab.eu>, nd@arm.com,
 Jia He <justin.he@arm.com>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

This series is to enable the fpsimd support on arm64 kvm plat.

The key points are in the patch 3 and 4

Tested on a ThundX2 qemu "-machine virt" guest machine.
qemu command line:/usr/local/bin/qemu-system-aarch64  \
-machine virt,gic-version=2 -m 1024 -cpu max -no-acpi -smp 1 \
-display none  -nographic -nodefaults -serial stdio \
-kernel build/helloworld_kvm-arm64

I created a simple app with 2 threads, and then print their local
double/float variables. Results Look fine to me.

Changes:
v5:
 - add r-b for patch 1,3, and only patch 2,4 have no r-b tag.
 - correct the header file, and clean codes in patch 4 (by Sharan)
v4: address most of the comments from Sharan
 - change the fp_save/restore_store as per freebsd way
 - refine the help msg in patch 1
 - add r-b for patch 5,6,7
 - s/CONFIG_FLOAT_POINT/CONFIG_FPSIMD/g
v3: rebase to latest staging branch
v2: remove RFC tag.
 - utilize 'isr' variant feature introduced by Simon, this addresses the
   mgeneral-regs-only issue in v1.
 - refactor the save/restore codes due to license issue.

Jia He (7):
  plat: build: Add a config option to enable fp on arm64
  build: Link libgcc at the end of the link options list
  plat/kvm: arm64: Enable the fp/simd at the starting point
  plat/arm: Support fp/simd save/restore during context switch
  arch/arm64: Don't pass -mgeneral-regs-only when CONFIG_FPSIMD is y
  arch/arm64: Fix -mfpu=none when not supporting fpsimd
  build: Add 'isr' variant for arm64 kvm plat source files called within
    irq context

 arch/arm/arm64/Makefile.uk          |  7 ++-
 plat/Config.uk                      |  7 +++
 plat/common/arm/fp_arm64.c          | 80 +++++++++++++++++++++++++++++
 plat/common/include/arm/arm64/cpu.h | 46 ++++++++++++++++-
 plat/kvm/Linker.uk                  |  2 +
 plat/kvm/Makefile.uk                | 11 ++--
 plat/kvm/arm/entry64.S              |  8 +++
 7 files changed, 152 insertions(+), 9 deletions(-)
 create mode 100644 plat/common/arm/fp_arm64.c

-- 
2.17.1



From minios-devel-bounces@lists.xenproject.org Thu Apr 09 02:20:01 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 09 Apr 2020 02:20: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 1jMMnR-0008B0-Ny; Thu, 09 Apr 2020 02:20:01 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=O8rh=5Z=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1jMMnQ-0008AV-T1
 for minios-devel@lists.xenproject.org; Thu, 09 Apr 2020 02:20:00 +0000
X-Inumbo-ID: 9ca21704-7a08-11ea-b4f4-bc764e2007e4
Received: from foss.arm.com (unknown [217.140.110.172])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTP
 id 9ca21704-7a08-11ea-b4f4-bc764e2007e4;
 Thu, 09 Apr 2020 02:19:59 +0000 (UTC)
Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14])
 by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 2DF3330E;
 Wed,  8 Apr 2020 19:19:59 -0700 (PDT)
Received: from localhost.localdomain (entos-thunderx2-02.shanghai.arm.com
 [10.169.138.57])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 1DD053F73D;
 Wed,  8 Apr 2020 19:19:56 -0700 (PDT)
From: Jia He <justin.he@arm.com>
To: minios-devel@lists.xenproject.org,
	Sharan.Santhanam@neclab.eu
Subject: [UNIKRAFT PATCH v5 2/7] build: Link libgcc at the end of the link
 options list
Date: Thu,  9 Apr 2020 10:19:36 +0800
Message-Id: <20200409021941.163308-3-justin.he@arm.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20200409021941.163308-1-justin.he@arm.com>
References: <20200409021941.163308-1-justin.he@arm.com>
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>, Kaly Xin <Kaly.Xin@arm.com>,
 Simon Kuenzer <simon.kuenzer@neclab.eu>, nd@arm.com,
 Jia He <justin.he@arm.com>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

To use newlib on arm64 plat kvm, libgcc should be linked at the end of
the options list, otherwise it will be ignored due to -stdlib.

Without this patch, there will be a linking error on arm kvm plat:
syslog.c:(.text+0x7d5cc): undefined reference to `__floatsitf'
syslog.c:(.text+0x7d5cc): relocation truncated to fit: R_AARCH64_CALL26 against undefined symbol `__floatsitf'
/root/hj/UK/unikraft_upstream/apps/helloworld/build/helloworld_kvm-arm64.o: In function `__ieee754_hypotl':
syslog.c:(.text+0x99434): undefined reference to `__multf3'
syslog.c:(.text+0x99434): relocation truncated to fit: R_AARCH64_CALL26 against undefined symbol `__multf3'
syslog.c:(.text+0x99444): undefined reference to `__multf3'
syslog.c:(.text+0x99444): additional relocation overflows omitted from the output
syslog.c:(.text+0x99450): undefined reference to `__addtf3'
/root/hj/UK/unikraft_upstream/apps/helloworld/build/helloworld_kvm-arm64.o: In function `sqrtl':
syslog.c:(.text+0xb12c0): undefined reference to `__trunctfdf2'
syslog.c:(.text+0xb12c8): undefined reference to `__extenddftf2'

Above undefined symbols are at libgcc.a

Signed-off-by: Jia He <justin.he@arm.com>
---
 plat/kvm/Linker.uk | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/plat/kvm/Linker.uk b/plat/kvm/Linker.uk
index 5e42193..65a5f8e 100644
--- a/plat/kvm/Linker.uk
+++ b/plat/kvm/Linker.uk
@@ -2,6 +2,7 @@ ifeq (x86_64,$(CONFIG_UK_ARCH))
 KVM_LDFLAGS-y += -Wl,-m,elf_x86_64
 else ifeq (arm64,$(CONFIG_UK_ARCH))
 KVM_LDFLAGS-y	 += -Wl,-m,aarch64elf
+KVM_LINK_LIBGCC_FLAG	:= -lgcc
 endif
 
 
@@ -26,6 +27,7 @@ $(KVM_DEBUG_IMAGE): $(KVM_ALIBS) $(KVM_ALIBS-y) $(KVM_OLIBS) $(KVM_OLIBS-y) \
 			-Wl$(comma)--start-group \
 			$(KVM_ALIBS) $(KVM_ALIBS-y) \
 			$(UK_ALIBS) $(UK_ALIBS-y) \
+			$(KVM_LINK_LIBGCC_FLAG) \
 			-Wl$(comma)--end-group \
 			-o $(KVM_IMAGE).ld.o)
 	$(call build_cmd,OBJCOPY,,$(KVM_IMAGE).o,\
-- 
2.17.1



From minios-devel-bounces@lists.xenproject.org Thu Apr 09 02:20:02 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 09 Apr 2020 02:20: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 1jMMnS-0008Fv-Pk; Thu, 09 Apr 2020 02:20: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=O8rh=5Z=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1jMMnR-0008Ab-AA
 for minios-devel@lists.xenproject.org; Thu, 09 Apr 2020 02:20:01 +0000
X-Inumbo-ID: 9a9a0017-7a08-11ea-8281-12813bfff9fa
Received: from foss.arm.com (unknown [217.140.110.172])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTP
 id 9a9a0017-7a08-11ea-8281-12813bfff9fa;
 Thu, 09 Apr 2020 02:19:57 +0000 (UTC)
Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14])
 by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id A8C9930E;
 Wed,  8 Apr 2020 19:19:56 -0700 (PDT)
Received: from localhost.localdomain (entos-thunderx2-02.shanghai.arm.com
 [10.169.138.57])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 8780C3F73D;
 Wed,  8 Apr 2020 19:19:54 -0700 (PDT)
From: Jia He <justin.he@arm.com>
To: minios-devel@lists.xenproject.org,
	Sharan.Santhanam@neclab.eu
Subject: [UNIKRAFT PATCH v5 1/7] plat: build: Add a config option to enable fp
 on arm64
Date: Thu,  9 Apr 2020 10:19:35 +0800
Message-Id: <20200409021941.163308-2-justin.he@arm.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20200409021941.163308-1-justin.he@arm.com>
References: <20200409021941.163308-1-justin.he@arm.com>
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>, Kaly Xin <Kaly.Xin@arm.com>,
 Simon Kuenzer <simon.kuenzer@neclab.eu>, nd@arm.com,
 Jia He <justin.he@arm.com>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

This config  CONFIG_FPSIMD is to enable the support for arm64 fp feature.
Fp is for application only, never for Unkraft kernel itself.

This config is 'n' by default since there is some overhead during context
switch.

Signed-off-by: Jia He <justin.he@arm.com>
Reviewed-by: Sharan Santhanam <sharan.santhanam@neclab.eu>
---
 plat/Config.uk | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/plat/Config.uk b/plat/Config.uk
index 0eb5a10..76a3f31 100644
--- a/plat/Config.uk
+++ b/plat/Config.uk
@@ -21,3 +21,10 @@ config HZ
 	help
 		Configure the timer interrupt frequency.
 		Only change this if you know what you're doing.
+
+config FPSIMD
+	bool "floating point & simd support in application"
+	default n
+	depends on ARCH_ARM_64
+	help
+		Enable support FPU usage in application
-- 
2.17.1



From minios-devel-bounces@lists.xenproject.org Thu Apr 09 02:20:07 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 09 Apr 2020 02:20: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 1jMMnX-0000LH-RH; Thu, 09 Apr 2020 02:20: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=O8rh=5Z=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1jMMnW-000098-AA
 for minios-devel@lists.xenproject.org; Thu, 09 Apr 2020 02:20:06 +0000
X-Inumbo-ID: 9fbd0714-7a08-11ea-8281-12813bfff9fa
Received: from foss.arm.com (unknown [217.140.110.172])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTP
 id 9fbd0714-7a08-11ea-8281-12813bfff9fa;
 Thu, 09 Apr 2020 02:20:04 +0000 (UTC)
Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14])
 by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 719E07FA;
 Wed,  8 Apr 2020 19:20:04 -0700 (PDT)
Received: from localhost.localdomain (entos-thunderx2-02.shanghai.arm.com
 [10.169.138.57])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 1C0B03F73D;
 Wed,  8 Apr 2020 19:20:01 -0700 (PDT)
From: Jia He <justin.he@arm.com>
To: minios-devel@lists.xenproject.org,
	Sharan.Santhanam@neclab.eu
Subject: [UNIKRAFT PATCH v5 4/7] plat/arm: Support fp/simd save/restore during
 context switch
Date: Thu,  9 Apr 2020 10:19:38 +0800
Message-Id: <20200409021941.163308-5-justin.he@arm.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20200409021941.163308-1-justin.he@arm.com>
References: <20200409021941.163308-1-justin.he@arm.com>
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>, Kaly Xin <Kaly.Xin@arm.com>,
 Simon Kuenzer <simon.kuenzer@neclab.eu>, nd@arm.com,
 Jia He <justin.he@arm.com>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Floating point feature is useful for some applications. We should
save/restore fp registers during context switch.

Signed-off-by: Jia He <justin.he@arm.com>
---
 plat/common/arm/fp_arm64.c          | 79 +++++++++++++++++++++++++++++
 plat/common/include/arm/arm64/cpu.h | 46 ++++++++++++++++-
 plat/kvm/Makefile.uk                |  3 +-
 3 files changed, 125 insertions(+), 3 deletions(-)
 create mode 100644 plat/common/arm/fp_arm64.c

diff --git a/plat/common/arm/fp_arm64.c b/plat/common/arm/fp_arm64.c
new file mode 100644
index 0000000..87ee75d
--- /dev/null
+++ b/plat/common/arm/fp_arm64.c
@@ -0,0 +1,79 @@
+/* SPDX-License-Identifier: ISC */
+/*
+ * Authors: Jia He <justin.he@arm.com>
+ *
+ * Copyright (c) 2020 Arm Ltd.
+ *
+ * Permission to use, copy, modify, and/or distribute this software
+ * for any purpose with or without fee is hereby granted, provided
+ * that the above copyright notice and this permission notice appear
+ * in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
+ * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
+ * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
+ * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+ * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+#include <uk/plat/common/cpu.h>
+
+void fpsimd_save_state(uintptr_t ptr)
+{
+	__u32 fpcr, fpsr;
+
+	__asm__ __volatile__(
+		"mrs	%0, fpcr\n"
+		"mrs	%1, fpsr\n"
+		"stp	q0,  q1,  [%2, #16 *  0]\n"
+		"stp	q2,  q3,  [%2, #16 *  2]\n"
+		"stp	q4,  q5,  [%2, #16 *  4]\n"
+		"stp	q6,  q7,  [%2, #16 *  6]\n"
+		"stp	q8,  q9,  [%2, #16 *  8]\n"
+		"stp	q10, q11, [%2, #16 * 10]\n"
+		"stp	q12, q13, [%2, #16 * 12]\n"
+		"stp	q14, q15, [%2, #16 * 14]\n"
+		"stp	q16, q17, [%2, #16 * 16]\n"
+		"stp	q18, q19, [%2, #16 * 18]\n"
+		"stp	q20, q21, [%2, #16 * 20]\n"
+		"stp	q22, q23, [%2, #16 * 22]\n"
+		"stp	q24, q25, [%2, #16 * 24]\n"
+		"stp	q26, q27, [%2, #16 * 26]\n"
+		"stp	q28, q29, [%2, #16 * 28]\n"
+		"stp	q30, q31, [%2, #16 * 30]\n"
+		: "=&r"(fpcr), "=&r"(fpsr) : "r"(ptr));
+
+	((struct fpsimd_state *)ptr)->fpcr = fpcr;
+	((struct fpsimd_state *)ptr)->fpsr = fpsr;
+}
+
+void fpsimd_restore_state(uintptr_t ptr)
+{
+	__u32 fpcr, fpsr;
+
+	fpcr = ((struct fpsimd_state *)ptr)->fpcr;
+	fpsr = ((struct fpsimd_state *)ptr)->fpsr;
+
+	__asm__ __volatile__(
+		"ldp	q0,  q1,  [%2, #16 *  0]\n"
+		"ldp	q2,  q3,  [%2, #16 *  2]\n"
+		"ldp	q4,  q5,  [%2, #16 *  4]\n"
+		"ldp	q6,  q7,  [%2, #16 *  6]\n"
+		"ldp	q8,  q9,  [%2, #16 *  8]\n"
+		"ldp	q10, q11, [%2, #16 * 10]\n"
+		"ldp	q12, q13, [%2, #16 * 12]\n"
+		"ldp	q14, q15, [%2, #16 * 14]\n"
+		"ldp	q16, q17, [%2, #16 * 16]\n"
+		"ldp	q18, q19, [%2, #16 * 18]\n"
+		"ldp	q20, q21, [%2, #16 * 20]\n"
+		"ldp	q22, q23, [%2, #16 * 22]\n"
+		"ldp	q24, q25, [%2, #16 * 24]\n"
+		"ldp	q26, q27, [%2, #16 * 26]\n"
+		"ldp	q28, q29, [%2, #16 * 28]\n"
+		"ldp	q30, q31, [%2, #16 * 30]\n"
+		"msr	fpcr, %0\n"
+		"msr	fpsr, %1\n"
+		: : "r"(fpcr), "r"(fpsr), "r"(ptr));
+}
diff --git a/plat/common/include/arm/arm64/cpu.h b/plat/common/include/arm/arm64/cpu.h
index 122727a..93ad13b 100644
--- a/plat/common/include/arm/arm64/cpu.h
+++ b/plat/common/include/arm/arm64/cpu.h
@@ -116,6 +116,47 @@ void halt(void);
 void reset(void);
 void system_off(void);
 
+#ifdef CONFIG_FPSIMD
+struct fpsimd_state {
+	__u64		regs[32 * 2];
+	__u32		fpsr;
+	__u32		fpcr;
+};
+
+extern void fpsimd_save_state(uintptr_t ptr);
+extern void fpsimd_restore_state(uintptr_t ptr);
+
+static inline void save_extregs(struct sw_ctx *ctx)
+{
+	fpsimd_save_state(ctx->extregs);
+}
+
+static inline void restore_extregs(struct sw_ctx *ctx)
+{
+	fpsimd_restore_state(ctx->extregs);
+}
+
+static inline struct sw_ctx *arch_alloc_sw_ctx(struct uk_alloc *allocator)
+{
+	struct sw_ctx *ctx;
+
+	ctx = (struct sw_ctx *)uk_malloc(allocator,
+			sizeof(struct sw_ctx) + sizeof(struct fpsimd_state));
+	if (ctx)
+		ctx->extregs = (uintptr_t)((void *)ctx + sizeof(struct sw_ctx));
+
+	uk_pr_debug("Allocating %lu + %lu bytes for sw ctx at %p, extregs at %p\n",
+			sizeof(struct sw_ctx), sizeof(struct fpsimd_state),
+			ctx, (void *)ctx->extregs);
+
+	return ctx;
+}
+
+static inline void arch_init_extregs(struct sw_ctx *ctx __unused)
+{
+}
+
+#else /* !CONFIG_FPSIMD */
 static inline void save_extregs(struct sw_ctx *ctx __unused)
 {
 }
@@ -128,9 +169,9 @@ static inline struct sw_ctx *arch_alloc_sw_ctx(struct uk_alloc *allocator)
 {
 	struct sw_ctx *ctx;
 
-	ctx = uk_malloc(allocator, sizeof(struct sw_ctx));
+	ctx = (struct sw_ctx *)uk_malloc(allocator, sizeof(struct sw_ctx));
 	uk_pr_debug("Allocating %lu bytes for sw ctx at %p\n",
-		   sizeof(struct sw_ctx), ctx);
+		sizeof(struct sw_ctx), ctx);
 
 	return ctx;
 }
@@ -140,4 +181,5 @@ static inline void arch_init_extregs(struct sw_ctx *ctx)
 	ctx->extregs = (uintptr_t)ctx + sizeof(struct sw_ctx);
 }
 
+#endif /* CONFIG_FPSIMD */
 #endif /* __PLAT_COMMON_ARM64_CPU_H__ */
diff --git a/plat/kvm/Makefile.uk b/plat/kvm/Makefile.uk
index a6d6f5e..9354d64 100644
--- a/plat/kvm/Makefile.uk
+++ b/plat/kvm/Makefile.uk
@@ -82,7 +82,8 @@ LIBKVMPLAT_SRCS-$(CONFIG_ARCH_ARM_64) += $(UK_PLAT_COMMON_BASE)/arm/cache64.S|co
 LIBKVMPLAT_SRCS-$(CONFIG_ARCH_ARM_64) += $(UK_PLAT_COMMON_BASE)/arm/psci_arm64.S|common
 LIBKVMPLAT_SRCS-$(CONFIG_ARCH_ARM_64) += $(UK_PLAT_COMMON_BASE)/arm/time.c|common
 LIBKVMPLAT_SRCS-$(CONFIG_ARCH_ARM_64) += $(UK_PLAT_COMMON_BASE)/arm/generic_timer.c|common
-LIBKVMPLAT_SRCS-$(CONFIG_ARCH_ARM_64) += $(UK_PLAT_COMMON_BASE)/arm/traps.c|common
+LIBKVMPLAT_SRCS-$(CONFIG_ARCH_ARM_64) += $(UK_PLAT_COMMON_BASE)/arm/traps.c|isr
+LIBKVMPLAT_SRCS-$(CONFIG_FPSIMD)      += $(UK_PLAT_COMMON_BASE)/arm/fp_arm64.c|isr
 ifeq ($(CONFIG_HAVE_SCHED),y)
 LIBKVMPLAT_SRCS-$(CONFIG_ARCH_ARM_64) += $(UK_PLAT_COMMON_BASE)/arm/thread_start64.S|common
 LIBKVMPLAT_SRCS-$(CONFIG_ARCH_ARM_64) += $(UK_PLAT_COMMON_BASE)/thread.c|common
-- 
2.17.1



From minios-devel-bounces@lists.xenproject.org Thu Apr 09 02:20:08 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 09 Apr 2020 02:20: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 1jMMnX-0000LM-Ta; Thu, 09 Apr 2020 02:20:07 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=O8rh=5Z=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1jMMnW-0000BZ-GK
 for minios-devel@lists.xenproject.org; Thu, 09 Apr 2020 02:20:06 +0000
X-Inumbo-ID: 9e17ba44-7a08-11ea-b4f4-bc764e2007e4
Received: from foss.arm.com (unknown [217.140.110.172])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTP
 id 9e17ba44-7a08-11ea-b4f4-bc764e2007e4;
 Thu, 09 Apr 2020 02:20:01 +0000 (UTC)
Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14])
 by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id A60BE30E;
 Wed,  8 Apr 2020 19:20:01 -0700 (PDT)
Received: from localhost.localdomain (entos-thunderx2-02.shanghai.arm.com
 [10.169.138.57])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 97ACC3F73D;
 Wed,  8 Apr 2020 19:19:59 -0700 (PDT)
From: Jia He <justin.he@arm.com>
To: minios-devel@lists.xenproject.org,
	Sharan.Santhanam@neclab.eu
Subject: [UNIKRAFT PATCH v5 3/7] plat/kvm: arm64: Enable the fp/simd at the
 starting point
Date: Thu,  9 Apr 2020 10:19:37 +0800
Message-Id: <20200409021941.163308-4-justin.he@arm.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20200409021941.163308-1-justin.he@arm.com>
References: <20200409021941.163308-1-justin.he@arm.com>
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>, Kaly Xin <Kaly.Xin@arm.com>,
 Simon Kuenzer <simon.kuenzer@neclab.eu>, nd@arm.com,
 Jia He <justin.he@arm.com>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Write the sys reg to enable the fp/simd feature, otherwise it will
cause floating point/simd exception when touching q0-q31.

Signed-off-by: Jia He <justin.he@arm.com>
Reviewed-by: Sharan Santhanam <sharan.santhanam@neclab.eu>
---
 plat/kvm/arm/entry64.S | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/plat/kvm/arm/entry64.S b/plat/kvm/arm/entry64.S
index 359a310..c4de334 100644
--- a/plat/kvm/arm/entry64.S
+++ b/plat/kvm/arm/entry64.S
@@ -36,6 +36,7 @@
 #include <kvm-arm/mm.h>
 #include <arm/cpu_defs.h>
 #include <uk/plat/common/sections.h>
+#include <uk/config.h>
 
 .global page_table_size
 .data
@@ -49,6 +50,13 @@ page_table_size:
 
 .text
 ENTRY(_libkvmplat_entry)
+#ifdef CONFIG_FPSIMD
+	/* Enable fp/simd support */
+	ldr        x0, =(3 << 20)
+	msr        cpacr_el1, x0
+	isb
+#endif
+
 	/* Calculate the image size */
 	ldr x25, =_dtb
 	ldr x26, =_end
-- 
2.17.1



From minios-devel-bounces@lists.xenproject.org Thu Apr 09 02:20:12 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 09 Apr 2020 02:20: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 1jMMnb-0000QJ-VW; Thu, 09 Apr 2020 02:20:11 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=O8rh=5Z=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1jMMna-0000Pt-SC
 for minios-devel@lists.xenproject.org; Thu, 09 Apr 2020 02:20:10 +0000
X-Inumbo-ID: a1327106-7a08-11ea-9e09-bc764e2007e4
Received: from foss.arm.com (unknown [217.140.110.172])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTP
 id a1327106-7a08-11ea-9e09-bc764e2007e4;
 Thu, 09 Apr 2020 02:20:07 +0000 (UTC)
Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14])
 by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id EC52D30E;
 Wed,  8 Apr 2020 19:20:06 -0700 (PDT)
Received: from localhost.localdomain (entos-thunderx2-02.shanghai.arm.com
 [10.169.138.57])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id DE2983F73D;
 Wed,  8 Apr 2020 19:20:04 -0700 (PDT)
From: Jia He <justin.he@arm.com>
To: minios-devel@lists.xenproject.org,
	Sharan.Santhanam@neclab.eu
Subject: [UNIKRAFT PATCH v5 5/7] arch/arm64: Don't pass -mgeneral-regs-only
 when CONFIG_FPSIMD is y
Date: Thu,  9 Apr 2020 10:19:39 +0800
Message-Id: <20200409021941.163308-6-justin.he@arm.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20200409021941.163308-1-justin.he@arm.com>
References: <20200409021941.163308-1-justin.he@arm.com>
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>, Kaly Xin <Kaly.Xin@arm.com>,
 Simon Kuenzer <simon.kuenzer@neclab.eu>, nd@arm.com,
 Jia He <justin.he@arm.com>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Support CONFIG_FPSIMD in Unikraft app will take some overhead during
context switch. Hence still use -mgeneral-regs-only when
CONFIG_FPSIMD is 'n'

Signed-off-by: Jia He <justin.he@arm.com>
Reviewed-by: Sharan Santhanam <sharan.santhanam@neclab.eu>
---
 arch/arm/arm64/Makefile.uk | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/arch/arm/arm64/Makefile.uk b/arch/arm/arm64/Makefile.uk
index 77e5204..a90305a 100644
--- a/arch/arm/arm64/Makefile.uk
+++ b/arch/arm/arm64/Makefile.uk
@@ -3,7 +3,12 @@
 # we should not enable the FP & SIMD access for kernel. As GCC will
 # the FP & SIMD registers to pass parameters, we use -mgeneral-regs-only
 # flag to force GCC to use generic registers
+ifeq ($(CONFIG_FPSIMD),y)
+ARCHFLAGS     += -D__ARM_64__
+else
 ARCHFLAGS     += -D__ARM_64__ -mgeneral-regs-only
+endif
+
 ISR_ARCHFLAGS += -D__ARM_64__ -mgeneral-regs-only
 
 # Disable FPU for trap/exception/interrupt handlers
-- 
2.17.1



From minios-devel-bounces@lists.xenproject.org Thu Apr 09 02:20:13 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 09 Apr 2020 02:20: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 1jMMnd-0000Qj-0v; Thu, 09 Apr 2020 02:20: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=O8rh=5Z=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1jMMnb-0000Q2-AQ
 for minios-devel@lists.xenproject.org; Thu, 09 Apr 2020 02:20:11 +0000
X-Inumbo-ID: a2a75df8-7a08-11ea-8281-12813bfff9fa
Received: from foss.arm.com (unknown [217.140.110.172])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTP
 id a2a75df8-7a08-11ea-8281-12813bfff9fa;
 Thu, 09 Apr 2020 02:20:09 +0000 (UTC)
Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14])
 by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 6CD8830E;
 Wed,  8 Apr 2020 19:20:09 -0700 (PDT)
Received: from localhost.localdomain (entos-thunderx2-02.shanghai.arm.com
 [10.169.138.57])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 61E153F73D;
 Wed,  8 Apr 2020 19:20:07 -0700 (PDT)
From: Jia He <justin.he@arm.com>
To: minios-devel@lists.xenproject.org,
	Sharan.Santhanam@neclab.eu
Subject: [UNIKRAFT PATCH v5 6/7] arch/arm64: Fix -mfpu=none when not
 supporting fpsimd
Date: Thu,  9 Apr 2020 10:19:40 +0800
Message-Id: <20200409021941.163308-7-justin.he@arm.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20200409021941.163308-1-justin.he@arm.com>
References: <20200409021941.163308-1-justin.he@arm.com>
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>, Kaly Xin <Kaly.Xin@arm.com>,
 Simon Kuenzer <simon.kuenzer@neclab.eu>, nd@arm.com,
 Jia He <justin.he@arm.com>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

There is no -mfpu=none compilation flag for gcc on arm. Typically we
don't disable hw support for fp, merely using -mgeneral-regs-only to
check it during compilation.

Signed-off-by: Jia He <justin.he@arm.com>
Reviewed-by: Sharan Santhanam <sharan.santhanam@neclab.eu>
---
 arch/arm/arm64/Makefile.uk | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/arch/arm/arm64/Makefile.uk b/arch/arm/arm64/Makefile.uk
index a90305a..f770bd0 100644
--- a/arch/arm/arm64/Makefile.uk
+++ b/arch/arm/arm64/Makefile.uk
@@ -9,10 +9,8 @@ else
 ARCHFLAGS     += -D__ARM_64__ -mgeneral-regs-only
 endif
 
-ISR_ARCHFLAGS += -D__ARM_64__ -mgeneral-regs-only
-
 # Disable FPU for trap/exception/interrupt handlers
-ISR_ARCHFLAGS += -mfpu=none
+ISR_ARCHFLAGS += -D__ARM_64__ -mgeneral-regs-only
 
 CINCLUDES   += -I$(CONFIG_UK_BASE)/arch/arm/arm64/include
 ASINCLUDES  += -I$(CONFIG_UK_BASE)/arch/arm/arm64/include
-- 
2.17.1



From minios-devel-bounces@lists.xenproject.org Thu Apr 09 02:20:18 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 09 Apr 2020 02:20: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 1jMMni-0000SB-2u; Thu, 09 Apr 2020 02:20: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=O8rh=5Z=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1jMMng-0000Rh-At
 for minios-devel@lists.xenproject.org; Thu, 09 Apr 2020 02:20:16 +0000
X-Inumbo-ID: a439fcfc-7a08-11ea-8281-12813bfff9fa
Received: from foss.arm.com (unknown [217.140.110.172])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTP
 id a439fcfc-7a08-11ea-8281-12813bfff9fa;
 Thu, 09 Apr 2020 02:20:12 +0000 (UTC)
Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14])
 by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 05CCA30E;
 Wed,  8 Apr 2020 19:20:12 -0700 (PDT)
Received: from localhost.localdomain (entos-thunderx2-02.shanghai.arm.com
 [10.169.138.57])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id DF3813F73D;
 Wed,  8 Apr 2020 19:20:09 -0700 (PDT)
From: Jia He <justin.he@arm.com>
To: minios-devel@lists.xenproject.org,
	Sharan.Santhanam@neclab.eu
Subject: [UNIKRAFT PATCH v5 7/7] build: Add 'isr' variant for arm64 kvm plat
 source files called within irq context
Date: Thu,  9 Apr 2020 10:19:41 +0800
Message-Id: <20200409021941.163308-8-justin.he@arm.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20200409021941.163308-1-justin.he@arm.com>
References: <20200409021941.163308-1-justin.he@arm.com>
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>, Kaly Xin <Kaly.Xin@arm.com>,
 Simon Kuenzer <simon.kuenzer@neclab.eu>, nd@arm.com,
 Jia He <justin.he@arm.com>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

'isr' variant is to be called within interrupt safe context. Typically,
traps/exception/context-switch need to be added this variant.
On arm, -mgeneral-regs-only is passed to forbid the compiler to use enhanced
CPU functions that are not saved within interrupt context (e.g., floating
point units, vector units).

Signed-off-by: Jia He <justin.he@arm.com>
Reviewed-by: Sharan Santhanam <sharan.santhanam@neclab.eu>
---
 plat/kvm/Makefile.uk | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/plat/kvm/Makefile.uk b/plat/kvm/Makefile.uk
index 9354d64..94321e0 100644
--- a/plat/kvm/Makefile.uk
+++ b/plat/kvm/Makefile.uk
@@ -85,14 +85,14 @@ LIBKVMPLAT_SRCS-$(CONFIG_ARCH_ARM_64) += $(UK_PLAT_COMMON_BASE)/arm/generic_time
 LIBKVMPLAT_SRCS-$(CONFIG_ARCH_ARM_64) += $(UK_PLAT_COMMON_BASE)/arm/traps.c|isr
 LIBKVMPLAT_SRCS-$(CONFIG_FPSIMD)      += $(UK_PLAT_COMMON_BASE)/arm/fp_arm64.c|isr
 ifeq ($(CONFIG_HAVE_SCHED),y)
-LIBKVMPLAT_SRCS-$(CONFIG_ARCH_ARM_64) += $(UK_PLAT_COMMON_BASE)/arm/thread_start64.S|common
+LIBKVMPLAT_SRCS-$(CONFIG_ARCH_ARM_64) += $(UK_PLAT_COMMON_BASE)/arm/thread_start64.S|isr
 LIBKVMPLAT_SRCS-$(CONFIG_ARCH_ARM_64) += $(UK_PLAT_COMMON_BASE)/thread.c|common
 LIBKVMPLAT_SRCS-$(CONFIG_ARCH_ARM_64) += $(UK_PLAT_COMMON_BASE)/sw_ctx.c|common
 endif
 LIBKVMPLAT_SRCS-$(CONFIG_ARCH_ARM_64) += $(LIBKVMPLAT_BASE)/arm/memory.c|arm
-LIBKVMPLAT_SRCS-$(CONFIG_ARCH_ARM_64) += $(LIBKVMPLAT_BASE)/arm/entry64.S
-LIBKVMPLAT_SRCS-$(CONFIG_ARCH_ARM_64) += $(LIBKVMPLAT_BASE)/arm/exceptions.S
-LIBKVMPLAT_SRCS-$(CONFIG_ARCH_ARM_64) += $(LIBKVMPLAT_BASE)/arm/pagetable64.S
+LIBKVMPLAT_SRCS-$(CONFIG_ARCH_ARM_64) += $(LIBKVMPLAT_BASE)/arm/entry64.S|isr
+LIBKVMPLAT_SRCS-$(CONFIG_ARCH_ARM_64) += $(LIBKVMPLAT_BASE)/arm/exceptions.S|isr
+LIBKVMPLAT_SRCS-$(CONFIG_ARCH_ARM_64) += $(LIBKVMPLAT_BASE)/arm/pagetable64.S|isr
 LIBKVMPLAT_SRCS-$(CONFIG_ARCH_ARM_64) += $(LIBKVMPLAT_BASE)/arm/setup.c
 LIBKVMPLAT_SRCS-$(CONFIG_ARCH_ARM_64) += $(LIBKVMPLAT_BASE)/arm/lcpu.c
 LIBKVMPLAT_SRCS-$(CONFIG_ARCH_ARM_64) += $(LIBKVMPLAT_BASE)/arm/intctrl.c
-- 
2.17.1



From minios-devel-bounces@lists.xenproject.org Thu Apr 09 08:50:33 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 09 Apr 2020 08:50: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 1jMStL-0000nf-1u; Thu, 09 Apr 2020 08:50:31 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=u14v=5Z=neclab.eu=sharan.santhanam@srs-us1.protection.inumbo.net>)
 id 1jMStJ-0000na-It
 for minios-devel@lists.xenproject.org; Thu, 09 Apr 2020 08:50:29 +0000
X-Inumbo-ID: 287e9c94-7a3f-11ea-b58d-bc764e2007e4
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 287e9c94-7a3f-11ea-b58d-bc764e2007e4;
 Thu, 09 Apr 2020 08:50:27 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 725F0F2027;
 Thu,  9 Apr 2020 10:50:26 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (atlas-b.office.hd)
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 rYArJcrF6wFC; Thu,  9 Apr 2020 10:50:26 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from puck.office.hd (puck.office.hd [192.168.24.91])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 45CD2F2025;
 Thu,  9 Apr 2020 10:50:18 +0200 (CEST)
Received: from [10.7.0.82] (192.168.24.96) by puck.office.hd (192.168.24.91)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Thu, 9 Apr 2020
 10:50:17 +0200
Subject: Re: [UNIKRAFT PATCH v3 2/7] build: Link libgcc at the end of the link
 options list
To: Justin He <Justin.He@arm.com>, "minios-devel@lists.xenproject.org"
 <minios-devel@lists.xenproject.org>, Simon Kuenzer <simon.kuenzer@neclab.eu>, 
 Felipe Huici <felipe.huici@neclab.eu>
References: <20200402041833.141738-1-justin.he@arm.com>
 <20200402041833.141738-3-justin.he@arm.com>
 <7e345035-6e56-e5cf-87a5-0e41c1924806@neclab.eu>
 <AM6PR08MB4069E1159ED06D4972D77E84F7C30@AM6PR08MB4069.eurprd08.prod.outlook.com>
 <AM6PR08MB406938B5FA773E15AD5B10B3F7C10@AM6PR08MB4069.eurprd08.prod.outlook.com>
From: Sharan Santhanam <sharan.santhanam@neclab.eu>
Message-ID: <c7803720-841b-a82f-d318-f72f903d9615@neclab.eu>
Date: Thu, 9 Apr 2020 10:50:16 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.9.1
MIME-Version: 1.0
In-Reply-To: <AM6PR08MB406938B5FA773E15AD5B10B3F7C10@AM6PR08MB4069.eurprd08.prod.outlook.com>
Content-Type: text/plain; charset="utf-8"; format=flowed
Content-Transfer-Encoding: 7bit
Content-Language: en-US
X-Originating-IP: [192.168.24.96]
X-ClientProxiedBy: titania.office.hd (192.168.24.89) To puck.office.hd
 (192.168.24.91)
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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: Kaly Xin <Kaly.Xin@arm.com>, nd <nd@arm.com>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Hey Justin,

Thank you for the update. The patch seems fine.

Thanks & regards
Sharan


Reviewed-by: Sharan Santhanam <sharan.santhanam@neclab.eu>

On 4/9/20 3:36 AM, Justin He wrote:
> Hi Sharan
> For your concern about linking libgcc in Unikraft, here is the reply from our license expert:
>
>>> We have a license question, could BSD licensed project link a GPL licensed binary?
>>> *Unikraft* is a BSD licensed project. To support floating-point feature, it needs to link libgcc
>>> which is a binary licensed as GPLv3. Will it haves impact on the BSD license in Unikraft?
>> The GCC runtime library exception seems to permit the scenario you described.  I believe
>> the license for libgcc includes that exception, and the use-case you described below appears
>> to otherwise qualify.  You can read the GNU FAQ on this issue HERE  to confirm,
> So seems we can freely linking libgcc without any license issues.
>
> --
> Cheers,
> Justin (Jia He)
>
>
>> -----Original Message-----
>> From: Minios-devel <minios-devel-bounces@lists.xenproject.org> On Behalf
>> Of Justin He
>> Sent: Tuesday, April 7, 2020 10:27 AM
>> To: Sharan Santhanam <sharan.santhanam@neclab.eu>; minios-
>> devel@lists.xenproject.org; Simon Kuenzer <simon.kuenzer@neclab.eu>;
>> Felipe Huici <felipe.huici@neclab.eu>
>> Cc: Kaly Xin <Kaly.Xin@arm.com>; nd <nd@arm.com>
>> Subject: Re: [Minios-devel] [UNIKRAFT PATCH v3 2/7] build: Link libgcc at the
>> end of the link options list
>>
>> Hi Sharan, thanks for the review
>> For your concern about link gpl binary with bsd project, I will contact our
>> license experts.
>> Will update it asap.
>>
>> --
>> Cheers,
>> Justin (Jia He)
>>
>>
>>
>>> -----Original Message-----
>>> From: Sharan Santhanam <sharan.santhanam@neclab.eu>
>>> Sent: Monday, April 6, 2020 5:34 PM
>>> To: Justin He <Justin.He@arm.com>; minios-devel@lists.xenproject.org;
>>> Simon Kuenzer <simon.kuenzer@neclab.eu>; Felipe Huici
>>> <felipe.huici@neclab.eu>
>>> Cc: Kaly Xin <Kaly.Xin@arm.com>; nd <nd@arm.com>
>>> Subject: Re: [UNIKRAFT PATCH v3 2/7] build: Link libgcc at the end of the
>> link
>>> options list
>>>
>>> Hello Justin,
>>>
>>> Please find the comment inline.
>>>
>>> Thanks & Regards
>>>
>>> Sharan
>>>
>>> On 4/2/20 6:18 AM, Jia He wrote:
>>>> To use newlib on arm64 plat kvm, libgcc should be linked at the end of
>>>> the options list, otherwise it will be ignored due to -stdlib.
>>>>
>>>> Without this patch, there will be a linking error on arm kvm plat:
>>>> syslog.c:(.text+0x7d5cc): undefined reference to `__floatsitf'
>>>> syslog.c:(.text+0x7d5cc): relocation truncated to fit: R_AARCH64_CALL26
>>> against undefined symbol `__floatsitf'
>>>> /root/hj/UK/unikraft_upstream/apps/helloworld/build/helloworld_kvm-
>>> arm64.o: In function `__ieee754_hypotl':
>>>> syslog.c:(.text+0x99434): undefined reference to `__multf3'
>>>> syslog.c:(.text+0x99434): relocation truncated to fit: R_AARCH64_CALL26
>>> against undefined symbol `__multf3'
>>>> syslog.c:(.text+0x99444): undefined reference to `__multf3'
>>>> syslog.c:(.text+0x99444): additional relocation overflows omitted from
>> the
>>> output
>>>> syslog.c:(.text+0x99450): undefined reference to `__addtf3'
>>>> /root/hj/UK/unikraft_upstream/apps/helloworld/build/helloworld_kvm-
>>> arm64.o: In function `sqrtl':
>>>> syslog.c:(.text+0xb12c0): undefined reference to `__trunctfdf2'
>>>> syslog.c:(.text+0xb12c8): undefined reference to `__extenddftf2'
>>>>
>>>> Above undefined symbols are at libgcc.a
>>>>
>>>> Signed-off-by: Jia He <justin.he@arm.com>
>>>> ---
>>>>    plat/kvm/Linker.uk | 2 ++
>>>>    1 file changed, 2 insertions(+)
>>>>
>>>> diff --git a/plat/kvm/Linker.uk b/plat/kvm/Linker.uk
>>>> index 5e42193..65a5f8e 100644
>>>> --- a/plat/kvm/Linker.uk
>>>> +++ b/plat/kvm/Linker.uk
>>>> @@ -2,6 +2,7 @@ ifeq (x86_64,$(CONFIG_UK_ARCH))
>>>>    KVM_LDFLAGS-y += -Wl,-m,elf_x86_64
>>>>    else ifeq (arm64,$(CONFIG_UK_ARCH))
>>>>    KVM_LDFLAGS-y	 += -Wl,-m,aarch64elf
>>>> +KVM_LINK_LIBGCC_FLAG	:= -lgcc
>>>>    endif
>>>>
>>>>
>>>> @@ -26,6 +27,7 @@ $(KVM_DEBUG_IMAGE): $(KVM_ALIBS)
>> $(KVM_ALIBS-y)
>>> $(KVM_OLIBS) $(KVM_OLIBS-y) \
>>>>    			-Wl$(comma)--start-group \
>>>>    			$(KVM_ALIBS) $(KVM_ALIBS-y) \
>>>>    			$(UK_ALIBS) $(UK_ALIBS-y) \
>>>> +			$(KVM_LINK_LIBGCC_FLAG) \
>>> I think it is fine if we could directly include the libgcc.a into our
>>> statically built binary as this come GPL v3. Do you know if this has an
>>> impact on the BSD license?
>>>>    			-Wl$(comma)--end-group \
>>>>    			-o $(KVM_IMAGE).ld.o)
>>>>    	$(call build_cmd,OBJCOPY,,$(KVM_IMAGE).o,\
>> _______________________________________________
>> Minios-devel mailing list
>> Minios-devel@lists.xenproject.org
>> https://lists.xenproject.org/mailman/listinfo/minios-devel


From minios-devel-bounces@lists.xenproject.org Thu Apr 09 08:58:08 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 09 Apr 2020 08:58: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 1jMT0h-0000zl-Ug; Thu, 09 Apr 2020 08:58:07 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=u14v=5Z=neclab.eu=sharan.santhanam@srs-us1.protection.inumbo.net>)
 id 1jMT0h-0000zf-3P
 for minios-devel@lists.xenproject.org; Thu, 09 Apr 2020 08:58:07 +0000
X-Inumbo-ID: 39b3e5d6-7a40-11ea-83d8-bc764e2007e4
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 39b3e5d6-7a40-11ea-83d8-bc764e2007e4;
 Thu, 09 Apr 2020 08:58:05 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id CC110F2030;
 Thu,  9 Apr 2020 10:58:04 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (atlas-b.office.hd)
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 nl8RQTCG8haD; Thu,  9 Apr 2020 10:58:04 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from puck.office.hd (puck.office.hd [192.168.24.91])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 7ABD6F2025;
 Thu,  9 Apr 2020 10:57:56 +0200 (CEST)
Received: from [10.7.0.82] (192.168.24.96) by puck.office.hd (192.168.24.91)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Thu, 9 Apr 2020
 10:57:55 +0200
Subject: Re: [UNIKRAFT PATCH v5 4/7] plat/arm: Support fp/simd save/restore
 during context switch
To: Jia He <justin.he@arm.com>, <minios-devel@lists.xenproject.org>
References: <20200409021941.163308-1-justin.he@arm.com>
 <20200409021941.163308-5-justin.he@arm.com>
From: Sharan Santhanam <sharan.santhanam@neclab.eu>
Message-ID: <925b66c6-fcd1-a50d-1c5a-46d7c1983c43@neclab.eu>
Date: Thu, 9 Apr 2020 10:57:54 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.9.1
MIME-Version: 1.0
In-Reply-To: <20200409021941.163308-5-justin.he@arm.com>
Content-Type: text/plain; charset="utf-8"; format=flowed
Content-Transfer-Encoding: 7bit
Content-Language: en-US
X-Originating-IP: [192.168.24.96]
X-ClientProxiedBy: puck.office.hd (192.168.24.91) To puck.office.hd
 (192.168.24.91)
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>, Kaly Xin <Kaly.Xin@arm.com>,
 Simon Kuenzer <simon.kuenzer@neclab.eu>, nd@arm.com
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Reviewed-by: Sharan Santhanam <sharan.santhanam@neclab.eu>

On 4/9/20 4:19 AM, Jia He wrote:
> Floating point feature is useful for some applications. We should
> save/restore fp registers during context switch.
>
> Signed-off-by: Jia He <justin.he@arm.com>
> ---
>   plat/common/arm/fp_arm64.c          | 79 +++++++++++++++++++++++++++++
>   plat/common/include/arm/arm64/cpu.h | 46 ++++++++++++++++-
>   plat/kvm/Makefile.uk                |  3 +-
>   3 files changed, 125 insertions(+), 3 deletions(-)
>   create mode 100644 plat/common/arm/fp_arm64.c
>
> diff --git a/plat/common/arm/fp_arm64.c b/plat/common/arm/fp_arm64.c
> new file mode 100644
> index 0000000..87ee75d
> --- /dev/null
> +++ b/plat/common/arm/fp_arm64.c
> @@ -0,0 +1,79 @@
> +/* SPDX-License-Identifier: ISC */
> +/*
> + * Authors: Jia He <justin.he@arm.com>
> + *
> + * Copyright (c) 2020 Arm Ltd.
> + *
> + * Permission to use, copy, modify, and/or distribute this software
> + * for any purpose with or without fee is hereby granted, provided
> + * that the above copyright notice and this permission notice appear
> + * in all copies.
> + *
> + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
> + * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
> + * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
> + * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR
> + * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
> + * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
> + * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
> + * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
> + */
> +#include <uk/plat/common/cpu.h>
> +
> +void fpsimd_save_state(uintptr_t ptr)
> +{
> +	__u32 fpcr, fpsr;
> +
> +	__asm__ __volatile__(
> +		"mrs	%0, fpcr\n"
> +		"mrs	%1, fpsr\n"
> +		"stp	q0,  q1,  [%2, #16 *  0]\n"
> +		"stp	q2,  q3,  [%2, #16 *  2]\n"
> +		"stp	q4,  q5,  [%2, #16 *  4]\n"
> +		"stp	q6,  q7,  [%2, #16 *  6]\n"
> +		"stp	q8,  q9,  [%2, #16 *  8]\n"
> +		"stp	q10, q11, [%2, #16 * 10]\n"
> +		"stp	q12, q13, [%2, #16 * 12]\n"
> +		"stp	q14, q15, [%2, #16 * 14]\n"
> +		"stp	q16, q17, [%2, #16 * 16]\n"
> +		"stp	q18, q19, [%2, #16 * 18]\n"
> +		"stp	q20, q21, [%2, #16 * 20]\n"
> +		"stp	q22, q23, [%2, #16 * 22]\n"
> +		"stp	q24, q25, [%2, #16 * 24]\n"
> +		"stp	q26, q27, [%2, #16 * 26]\n"
> +		"stp	q28, q29, [%2, #16 * 28]\n"
> +		"stp	q30, q31, [%2, #16 * 30]\n"
> +		: "=&r"(fpcr), "=&r"(fpsr) : "r"(ptr));
> +
> +	((struct fpsimd_state *)ptr)->fpcr = fpcr;
> +	((struct fpsimd_state *)ptr)->fpsr = fpsr;
> +}
> +
> +void fpsimd_restore_state(uintptr_t ptr)
> +{
> +	__u32 fpcr, fpsr;
> +
> +	fpcr = ((struct fpsimd_state *)ptr)->fpcr;
> +	fpsr = ((struct fpsimd_state *)ptr)->fpsr;
> +
> +	__asm__ __volatile__(
> +		"ldp	q0,  q1,  [%2, #16 *  0]\n"
> +		"ldp	q2,  q3,  [%2, #16 *  2]\n"
> +		"ldp	q4,  q5,  [%2, #16 *  4]\n"
> +		"ldp	q6,  q7,  [%2, #16 *  6]\n"
> +		"ldp	q8,  q9,  [%2, #16 *  8]\n"
> +		"ldp	q10, q11, [%2, #16 * 10]\n"
> +		"ldp	q12, q13, [%2, #16 * 12]\n"
> +		"ldp	q14, q15, [%2, #16 * 14]\n"
> +		"ldp	q16, q17, [%2, #16 * 16]\n"
> +		"ldp	q18, q19, [%2, #16 * 18]\n"
> +		"ldp	q20, q21, [%2, #16 * 20]\n"
> +		"ldp	q22, q23, [%2, #16 * 22]\n"
> +		"ldp	q24, q25, [%2, #16 * 24]\n"
> +		"ldp	q26, q27, [%2, #16 * 26]\n"
> +		"ldp	q28, q29, [%2, #16 * 28]\n"
> +		"ldp	q30, q31, [%2, #16 * 30]\n"
> +		"msr	fpcr, %0\n"
> +		"msr	fpsr, %1\n"
> +		: : "r"(fpcr), "r"(fpsr), "r"(ptr));
> +}
> diff --git a/plat/common/include/arm/arm64/cpu.h b/plat/common/include/arm/arm64/cpu.h
> index 122727a..93ad13b 100644
> --- a/plat/common/include/arm/arm64/cpu.h
> +++ b/plat/common/include/arm/arm64/cpu.h
> @@ -116,6 +116,47 @@ void halt(void);
>   void reset(void);
>   void system_off(void);
>   
> +#ifdef CONFIG_FPSIMD
> +struct fpsimd_state {
> +	__u64		regs[32 * 2];
> +	__u32		fpsr;
> +	__u32		fpcr;
> +};
> +
> +extern void fpsimd_save_state(uintptr_t ptr);
> +extern void fpsimd_restore_state(uintptr_t ptr);
> +
> +static inline void save_extregs(struct sw_ctx *ctx)
> +{
> +	fpsimd_save_state(ctx->extregs);
> +}
> +
> +static inline void restore_extregs(struct sw_ctx *ctx)
> +{
> +	fpsimd_restore_state(ctx->extregs);
> +}
> +
> +static inline struct sw_ctx *arch_alloc_sw_ctx(struct uk_alloc *allocator)
> +{
> +	struct sw_ctx *ctx;
> +
> +	ctx = (struct sw_ctx *)uk_malloc(allocator,
> +			sizeof(struct sw_ctx) + sizeof(struct fpsimd_state));
> +	if (ctx)
> +		ctx->extregs = (uintptr_t)((void *)ctx + sizeof(struct sw_ctx));
> +
> +	uk_pr_debug("Allocating %lu + %lu bytes for sw ctx at %p, extregs at %p\n",
> +			sizeof(struct sw_ctx), sizeof(struct fpsimd_state),
> +			ctx, (void *)ctx->extregs);
> +
> +	return ctx;
> +}
> +
> +static inline void arch_init_extregs(struct sw_ctx *ctx __unused)
> +{
> +}
> +
> +#else /* !CONFIG_FPSIMD */
>   static inline void save_extregs(struct sw_ctx *ctx __unused)
>   {
>   }
> @@ -128,9 +169,9 @@ static inline struct sw_ctx *arch_alloc_sw_ctx(struct uk_alloc *allocator)
>   {
>   	struct sw_ctx *ctx;
>   
> -	ctx = uk_malloc(allocator, sizeof(struct sw_ctx));
> +	ctx = (struct sw_ctx *)uk_malloc(allocator, sizeof(struct sw_ctx));
>   	uk_pr_debug("Allocating %lu bytes for sw ctx at %p\n",
> -		   sizeof(struct sw_ctx), ctx);
> +		sizeof(struct sw_ctx), ctx);
>   
>   	return ctx;
>   }
> @@ -140,4 +181,5 @@ static inline void arch_init_extregs(struct sw_ctx *ctx)
>   	ctx->extregs = (uintptr_t)ctx + sizeof(struct sw_ctx);
>   }
>   
> +#endif /* CONFIG_FPSIMD */
>   #endif /* __PLAT_COMMON_ARM64_CPU_H__ */
> diff --git a/plat/kvm/Makefile.uk b/plat/kvm/Makefile.uk
> index a6d6f5e..9354d64 100644
> --- a/plat/kvm/Makefile.uk
> +++ b/plat/kvm/Makefile.uk
> @@ -82,7 +82,8 @@ LIBKVMPLAT_SRCS-$(CONFIG_ARCH_ARM_64) += $(UK_PLAT_COMMON_BASE)/arm/cache64.S|co
>   LIBKVMPLAT_SRCS-$(CONFIG_ARCH_ARM_64) += $(UK_PLAT_COMMON_BASE)/arm/psci_arm64.S|common
>   LIBKVMPLAT_SRCS-$(CONFIG_ARCH_ARM_64) += $(UK_PLAT_COMMON_BASE)/arm/time.c|common
>   LIBKVMPLAT_SRCS-$(CONFIG_ARCH_ARM_64) += $(UK_PLAT_COMMON_BASE)/arm/generic_timer.c|common
> -LIBKVMPLAT_SRCS-$(CONFIG_ARCH_ARM_64) += $(UK_PLAT_COMMON_BASE)/arm/traps.c|common
> +LIBKVMPLAT_SRCS-$(CONFIG_ARCH_ARM_64) += $(UK_PLAT_COMMON_BASE)/arm/traps.c|isr
> +LIBKVMPLAT_SRCS-$(CONFIG_FPSIMD)      += $(UK_PLAT_COMMON_BASE)/arm/fp_arm64.c|isr
>   ifeq ($(CONFIG_HAVE_SCHED),y)
>   LIBKVMPLAT_SRCS-$(CONFIG_ARCH_ARM_64) += $(UK_PLAT_COMMON_BASE)/arm/thread_start64.S|common
>   LIBKVMPLAT_SRCS-$(CONFIG_ARCH_ARM_64) += $(UK_PLAT_COMMON_BASE)/thread.c|common


From minios-devel-bounces@lists.xenproject.org Thu Apr 09 09:14:46 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 09 Apr 2020 09:14: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 1jMTGm-0002ht-KM; Thu, 09 Apr 2020 09:14:44 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=u14v=5Z=neclab.eu=sharan.santhanam@srs-us1.protection.inumbo.net>)
 id 1jMTGl-0002ho-GQ
 for minios-devel@lists.xenproject.org; Thu, 09 Apr 2020 09:14:43 +0000
X-Inumbo-ID: 8b63ac48-7a42-11ea-b4f4-bc764e2007e4
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 8b63ac48-7a42-11ea-b4f4-bc764e2007e4;
 Thu, 09 Apr 2020 09:14:41 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 06E221040A5;
 Thu,  9 Apr 2020 11:14:41 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (atlas-a.office.hd)
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 0HVQ5pbyJP0f; Thu,  9 Apr 2020 11:14:40 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from puck.office.hd (puck.office.hd [192.168.24.91])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id D5211100BD9;
 Thu,  9 Apr 2020 11:14:40 +0200 (CEST)
Received: from [10.7.0.82] (192.168.24.96) by puck.office.hd (192.168.24.91)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Thu, 9 Apr 2020
 11:14:40 +0200
Subject: Re: [UNIKRAFT PATCH v5 2/7] build: Link libgcc at the end of the link
 options list
To: Jia He <justin.he@arm.com>, <minios-devel@lists.xenproject.org>
References: <20200409021941.163308-1-justin.he@arm.com>
 <20200409021941.163308-3-justin.he@arm.com>
From: Sharan Santhanam <sharan.santhanam@neclab.eu>
Message-ID: <e763f624-0f5d-9a2f-9a47-d65a80299bab@neclab.eu>
Date: Thu, 9 Apr 2020 11:14:38 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.9.1
MIME-Version: 1.0
In-Reply-To: <20200409021941.163308-3-justin.he@arm.com>
Content-Type: text/plain; charset="utf-8"; format=flowed
Content-Transfer-Encoding: 7bit
Content-Language: en-US
X-Originating-IP: [192.168.24.96]
X-ClientProxiedBy: titania.office.hd (192.168.24.89) To puck.office.hd
 (192.168.24.91)
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>, Kaly Xin <Kaly.Xin@arm.com>,
 Simon Kuenzer <simon.kuenzer@neclab.eu>, nd@arm.com
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Reviewed-by: Sharan Santhanam <sharan.santhanam@neclab.eu>

On 4/9/20 4:19 AM, Jia He wrote:
> To use newlib on arm64 plat kvm, libgcc should be linked at the end of
> the options list, otherwise it will be ignored due to -stdlib.
>
> Without this patch, there will be a linking error on arm kvm plat:
> syslog.c:(.text+0x7d5cc): undefined reference to `__floatsitf'
> syslog.c:(.text+0x7d5cc): relocation truncated to fit: R_AARCH64_CALL26 against undefined symbol `__floatsitf'
> /root/hj/UK/unikraft_upstream/apps/helloworld/build/helloworld_kvm-arm64.o: In function `__ieee754_hypotl':
> syslog.c:(.text+0x99434): undefined reference to `__multf3'
> syslog.c:(.text+0x99434): relocation truncated to fit: R_AARCH64_CALL26 against undefined symbol `__multf3'
> syslog.c:(.text+0x99444): undefined reference to `__multf3'
> syslog.c:(.text+0x99444): additional relocation overflows omitted from the output
> syslog.c:(.text+0x99450): undefined reference to `__addtf3'
> /root/hj/UK/unikraft_upstream/apps/helloworld/build/helloworld_kvm-arm64.o: In function `sqrtl':
> syslog.c:(.text+0xb12c0): undefined reference to `__trunctfdf2'
> syslog.c:(.text+0xb12c8): undefined reference to `__extenddftf2'
>
> Above undefined symbols are at libgcc.a
>
> Signed-off-by: Jia He <justin.he@arm.com>
> ---
>   plat/kvm/Linker.uk | 2 ++
>   1 file changed, 2 insertions(+)
>
> diff --git a/plat/kvm/Linker.uk b/plat/kvm/Linker.uk
> index 5e42193..65a5f8e 100644
> --- a/plat/kvm/Linker.uk
> +++ b/plat/kvm/Linker.uk
> @@ -2,6 +2,7 @@ ifeq (x86_64,$(CONFIG_UK_ARCH))
>   KVM_LDFLAGS-y += -Wl,-m,elf_x86_64
>   else ifeq (arm64,$(CONFIG_UK_ARCH))
>   KVM_LDFLAGS-y	 += -Wl,-m,aarch64elf
> +KVM_LINK_LIBGCC_FLAG	:= -lgcc
>   endif
>   
>   
> @@ -26,6 +27,7 @@ $(KVM_DEBUG_IMAGE): $(KVM_ALIBS) $(KVM_ALIBS-y) $(KVM_OLIBS) $(KVM_OLIBS-y) \
>   			-Wl$(comma)--start-group \
>   			$(KVM_ALIBS) $(KVM_ALIBS-y) \
>   			$(UK_ALIBS) $(UK_ALIBS-y) \
> +			$(KVM_LINK_LIBGCC_FLAG) \
>   			-Wl$(comma)--end-group \
>   			-o $(KVM_IMAGE).ld.o)
>   	$(call build_cmd,OBJCOPY,,$(KVM_IMAGE).o,\


From minios-devel-bounces@lists.xenproject.org Thu Apr 09 09:21:03 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 09 Apr 2020 09:21: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 1jMTMs-0003S7-4p; Thu, 09 Apr 2020 09:21: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=u14v=5Z=neclab.eu=sharan.santhanam@srs-us1.protection.inumbo.net>)
 id 1jMTMr-0003Ry-BI
 for minios-devel@lists.xenproject.org; Thu, 09 Apr 2020 09:21:01 +0000
X-Inumbo-ID: 6c462e20-7a43-11ea-829e-12813bfff9fa
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 6c462e20-7a43-11ea-829e-12813bfff9fa;
 Thu, 09 Apr 2020 09:20:59 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 3A7D6F2027;
 Thu,  9 Apr 2020 11:20:58 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (atlas-b.office.hd)
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 cQDHPJ9TvMS8; Thu,  9 Apr 2020 11:20:58 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from puck.office.hd (puck.office.hd [192.168.24.91])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 017AAF2025;
 Thu,  9 Apr 2020 11:20:50 +0200 (CEST)
Received: from [10.7.0.82] (192.168.24.96) by puck.office.hd (192.168.24.91)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Thu, 9 Apr 2020
 11:20:49 +0200
Subject: Re: [UNIKRAFT PATCH v5 0/7] Support float point on arm64 kvm plat
To: Jia He <justin.he@arm.com>, <minios-devel@lists.xenproject.org>
References: <20200409021941.163308-1-justin.he@arm.com>
From: Sharan Santhanam <sharan.santhanam@neclab.eu>
Message-ID: <8acf858d-89d1-97a7-1c17-aebbfe5cd2a2@neclab.eu>
Date: Thu, 9 Apr 2020 11:20:48 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.9.1
MIME-Version: 1.0
In-Reply-To: <20200409021941.163308-1-justin.he@arm.com>
Content-Type: text/plain; charset="utf-8"; format=flowed
Content-Transfer-Encoding: 7bit
Content-Language: en-US
X-Originating-IP: [192.168.24.96]
X-ClientProxiedBy: puck.office.hd (192.168.24.91) To puck.office.hd
 (192.168.24.91)
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>, Kaly Xin <Kaly.Xin@arm.com>,
 Simon Kuenzer <simon.kuenzer@neclab.eu>, nd@arm.com
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Hello Justin,

Thank you for the work and I have upstreamed the patch series.

Thanks & regards

Sharan

On 4/9/20 4:19 AM, Jia He wrote:
> This series is to enable the fpsimd support on arm64 kvm plat.
>
> The key points are in the patch 3 and 4
>
> Tested on a ThundX2 qemu "-machine virt" guest machine.
> qemu command line:/usr/local/bin/qemu-system-aarch64  \
> -machine virt,gic-version=2 -m 1024 -cpu max -no-acpi -smp 1 \
> -display none  -nographic -nodefaults -serial stdio \
> -kernel build/helloworld_kvm-arm64
>
> I created a simple app with 2 threads, and then print their local
> double/float variables. Results Look fine to me.
>
> Changes:
> v5:
>   - add r-b for patch 1,3, and only patch 2,4 have no r-b tag.
>   - correct the header file, and clean codes in patch 4 (by Sharan)
> v4: address most of the comments from Sharan
>   - change the fp_save/restore_store as per freebsd way
>   - refine the help msg in patch 1
>   - add r-b for patch 5,6,7
>   - s/CONFIG_FLOAT_POINT/CONFIG_FPSIMD/g
> v3: rebase to latest staging branch
> v2: remove RFC tag.
>   - utilize 'isr' variant feature introduced by Simon, this addresses the
>     mgeneral-regs-only issue in v1.
>   - refactor the save/restore codes due to license issue.
>
> Jia He (7):
>    plat: build: Add a config option to enable fp on arm64
>    build: Link libgcc at the end of the link options list
>    plat/kvm: arm64: Enable the fp/simd at the starting point
>    plat/arm: Support fp/simd save/restore during context switch
>    arch/arm64: Don't pass -mgeneral-regs-only when CONFIG_FPSIMD is y
>    arch/arm64: Fix -mfpu=none when not supporting fpsimd
>    build: Add 'isr' variant for arm64 kvm plat source files called within
>      irq context
>
>   arch/arm/arm64/Makefile.uk          |  7 ++-
>   plat/Config.uk                      |  7 +++
>   plat/common/arm/fp_arm64.c          | 80 +++++++++++++++++++++++++++++
>   plat/common/include/arm/arm64/cpu.h | 46 ++++++++++++++++-
>   plat/kvm/Linker.uk                  |  2 +
>   plat/kvm/Makefile.uk                | 11 ++--
>   plat/kvm/arm/entry64.S              |  8 +++
>   7 files changed, 152 insertions(+), 9 deletions(-)
>   create mode 100644 plat/common/arm/fp_arm64.c
>


From minios-devel-bounces@lists.xenproject.org Thu Apr 09 11:38:57 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 09 Apr 2020 11:38: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 1jMVWI-0006E4-L5; Thu, 09 Apr 2020 11: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=8QxG=5Z=uliege.be=gaulthier.gain@srs-us1.protection.inumbo.net>)
 id 1jMVWH-0006Dz-HM
 for minios-devel@lists.xenproject.org; Thu, 09 Apr 2020 11:38:53 +0000
X-Inumbo-ID: ae2d518e-7a56-11ea-82b3-12813bfff9fa
Received: from serv108.segi.ulg.ac.be (unknown [139.165.32.111])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id ae2d518e-7a56-11ea-82b3-12813bfff9fa;
 Thu, 09 Apr 2020 11:38:50 +0000 (UTC)
Received: from sauron.run.montefiore.ulg.ac.be
 (sauron.run.montefiore.ulg.ac.be [139.165.223.31])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by serv108.segi.ulg.ac.be (Postfix) with ESMTPSA id 3A553200E2C1;
 Thu,  9 Apr 2020 13:38:49 +0200 (CEST)
DKIM-Filter: OpenDKIM Filter v2.11.0 serv108.segi.ulg.ac.be 3A553200E2C1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=uliege.be;
 s=ulg20190529; t=1586432329;
 bh=1N0MXw4d8ALYTPqErx2PDqPuQgsT4XvIUqCAlTP1Q40=;
 h=From:To:Cc:Subject:Date:From;
 b=slwTxEKMeeE9ab+QopTO2OOLrsyxfpLzbHRGaaRGftt3IbyDtUmFfSa45cRkGA/UG
 BapkSrjC6yW1nSw448NY7wEzdZkbx5L7DKB48hdWBIEp6I6EKUGwrAPreqHrpec0Q6
 8dD5CaAzXsX9w60nncrNaDqbvUN851foBr/a2PJyIf+4pzeMR7yZo2zjjmO3RjO/jn
 HM3J8irWW074XRmwCmMAO7vXG7AuAGnu/hKZqiHBQkeX8JDG7J43ttlB/3WkQqRCOa
 v35dEZAE3fW+ch0kmu7kUX0/4INCdTwRs4ZwnmXc2vf4vo7OF+t4mdHpzFsYxl1iPe
 N3ROgaoqGlvKw==
From: gaulthier.gain@uliege.be
To: minios-devel@lists.xenproject.org
Subject: [UNIKRAFT/LIB-OPENSSL] Makefile.uk: Fix OpenSSL source url
Date: Thu,  9 Apr 2020 11:38:35 +0000
Message-Id: <20200409113835.19807-1-gaulthier.gain@uliege.be>
X-Mailer: git-send-email 2.17.1
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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, gaulthier gain <gaulthier.gain@uliege.be>,
 costin.lupu@cs.pub.ro
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

From: gaulthier gain <gaulthier.gain@uliege.be>

OpenSSL no longer provides version 1.1.1c via the specified url. We
update the url to the old releases repo.

Signed-off-by: gaulthier gain <gaulthier.gain@uliege.be>
---
 Makefile.uk | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/Makefile.uk b/Makefile.uk
index db3e92a..0be7307 100644
--- a/Makefile.uk
+++ b/Makefile.uk
@@ -44,8 +44,10 @@ $(eval $(call addlib_s,libopensslglue,$(CONFIG_LIBOPENSSL)))
 ################################################################################
 # Original sources
 ################################################################################
-LIBOPENSSL_VERSION=1.1.1c
-LIBOPENSSL_URL=https://www.openssl.org/source/openssl-$(LIBOPENSSL_VERSION).tar.gz
+LIBOPENSSL_MAJOR=1.1.1
+LIBOPENSSL_MINOR=c
+LIBOPENSSL_VERSION=$(LIBOPENSSL_MAJOR)$(LIBOPENSSL_MINOR)
+LIBOPENSSL_URL=https://www.openssl.org/source/old/$(LIBOPENSSL_MAJOR)/openssl-$(LIBOPENSSL_VERSION).tar.gz
 LIBOPENSSL_PATCHDIR=$(LIBSSL_BASE)/patches
 LIBOPENSSL_SUBDIR=openssl-$(LIBOPENSSL_VERSION)
 $(eval $(call fetch,libssl,$(LIBOPENSSL_URL)))
-- 
2.17.1



From minios-devel-bounces@lists.xenproject.org Thu Apr 09 11:39:12 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 09 Apr 2020 11:39: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 1jMVWa-0006Eo-NL; Thu, 09 Apr 2020 11:39: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=O8rh=5Z=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1jMVWZ-0006Eg-NG
 for minios-devel@lists.xenproject.org; Thu, 09 Apr 2020 11:39:11 +0000
X-Inumbo-ID: b939fb9c-7a56-11ea-82b3-12813bfff9fa
Received: from EUR05-VI1-obe.outbound.protection.outlook.com (unknown
 [40.107.21.43]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id b939fb9c-7a56-11ea-82b3-12813bfff9fa;
 Thu, 09 Apr 2020 11:39:09 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; 
 s=selector2-armh-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=VgRldwA6avbmYeEw6SnFeDV2p7eXlBXFgI2jIO/osx8=;
 b=UCfqR9QZ/kO2K8zNpK/khRMwETXyHThJkgnzvt80vdBciqynpB21mTpmUDa0X+F9BNc0l4He+Su/NmykM2dV5CckRlWJluvyvs8I7qA+/6Wkgpg0W8FCmcIyZDZ0bCS4vr1KVHhZJNweGz2FOtcypXDyuz5X2nxYA0Ym0qyfXMY=
Received: from VI1PR0801CA0067.eurprd08.prod.outlook.com
 (2603:10a6:800:7d::11) by HE1PR08MB2764.eurprd08.prod.outlook.com
 (2603:10a6:7:2b::29) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2878.16; Thu, 9 Apr
 2020 11:39:07 +0000
Received: from VE1EUR03FT019.eop-EUR03.prod.protection.outlook.com
 (2603:10a6:800:7d:cafe::79) by VI1PR0801CA0067.outlook.office365.com
 (2603:10a6:800:7d::11) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2900.15 via Frontend
 Transport; Thu, 9 Apr 2020 11:39:07 +0000
Authentication-Results: spf=pass (sender IP is 63.35.35.123)
 smtp.mailfrom=arm.com; lists.xenproject.org; dkim=pass (signature was
 verified) header.d=armh.onmicrosoft.com;lists.xenproject.org;
 dmarc=bestguesspass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 63.35.35.123 as permitted sender) receiver=protection.outlook.com;
 client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com;
Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by
 VE1EUR03FT019.mail.protection.outlook.com (10.152.18.153) with
 Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.2900.15 via Frontend Transport; Thu, 9 Apr 2020 11:39:06 +0000
Received: ("Tessian outbound eadf07c3b4bb:v50");
 Thu, 09 Apr 2020 11:39:06 +0000
X-CR-MTA-TID: 64aa7808
Received: from 1c404ee6666d.2
 by 64aa7808-outbound-1.mta.getcheckrecipient.com id
 C2B0126C-4082-4C82-B715-D510E02C4D42.1; 
 Thu, 09 Apr 2020 11:39:01 +0000
Received: from EUR01-HE1-obe.outbound.protection.outlook.com
 by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 1c404ee6666d.2
 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384);
 Thu, 09 Apr 2020 11:39:01 +0000
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=UKqdvy/8nYPBba590cM8kS/fFPaSWcmfEYEtIR8WlzflBvYP2TKQW2xbRscauCsf148+WqbYz9oHnt0/rzfEqxb94vgJ2ik8/doiSDZ9QNvFP5TE8nII/F5fWrDH6l0ud20+PdymGYDAwnfnTdwjIYANZOyZaVyviXcMvxOhh9V/FsUj3ijXZniJS9QiFmlk8XnZod+H9mTem4Z9DiBjfaCpadPWE14TDV6WTJRM/3AmvoK/92oN9MPQUy3CS7h0bmvaLjGaNJep8gCnaGO+UMgWPqKW3OE7XADD2D/WUMaf8dYPlQ6Nns/6Wy+xtex0xIovKhgIvHWSAU7AnLYZpA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; 
 s=arcselector9901;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=VgRldwA6avbmYeEw6SnFeDV2p7eXlBXFgI2jIO/osx8=;
 b=VaYT0jdnKY+Bh/MMoQY09ncwrmBCBQ4NSDixlqaytT39AmKhrPi9hPIfVgHcEqzTaxF4JwdJqp9zhJaAxXIosqKWlSpz7dzguvsZP+f3fViYDP+K+Y12IzR+YL8VS7cGAgCUVeuRTpkuQjG3Vmu5BJE1aw9RlZknlAP8Ke1x2rVKui9tHjXFvzHENqCWJ5WJyNLpII+GGiH+gs+pBaGDpIgvHG1A67tPhCwynMM+jBBBBefozqlR+8/6XFBIivH2MbETiRn8nnMvNwH66MbV8LQagZQKFzpm/IHV9R1pSMsFw4veZDq7ahtCUektEqg0TEFPXOB8EwuNKDw50D51lg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; 
 s=selector2-armh-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=VgRldwA6avbmYeEw6SnFeDV2p7eXlBXFgI2jIO/osx8=;
 b=UCfqR9QZ/kO2K8zNpK/khRMwETXyHThJkgnzvt80vdBciqynpB21mTpmUDa0X+F9BNc0l4He+Su/NmykM2dV5CckRlWJluvyvs8I7qA+/6Wkgpg0W8FCmcIyZDZ0bCS4vr1KVHhZJNweGz2FOtcypXDyuz5X2nxYA0Ym0qyfXMY=
Received: from AM6PR08MB4069.eurprd08.prod.outlook.com (2603:10a6:20b:af::32)
 by AM6PR08MB5144.eurprd08.prod.outlook.com (2603:10a6:20b:ec::29)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2878.16; Thu, 9 Apr
 2020 11:38:59 +0000
Received: from AM6PR08MB4069.eurprd08.prod.outlook.com
 ([fe80::60b6:c319:1c9b:8919]) by AM6PR08MB4069.eurprd08.prod.outlook.com
 ([fe80::60b6:c319:1c9b:8919%7]) with mapi id 15.20.2878.022; Thu, 9 Apr 2020
 11:38:59 +0000
From: Justin He <Justin.He@arm.com>
To: Sharan Santhanam <sharan.santhanam@neclab.eu>,
 "minios-devel@lists.xenproject.org" <minios-devel@lists.xenproject.org>
Subject: RE: [UNIKRAFT PATCH v5 0/7] Support float point on arm64 kvm plat
Thread-Topic: [UNIKRAFT PATCH v5 0/7] Support float point on arm64 kvm plat
Thread-Index: AQHWDhViMPLB7XdR+kav661BG11+lqhwhCQAgAAmZ4A=
Date: Thu, 9 Apr 2020 11:38:59 +0000
Message-ID: <AM6PR08MB4069B680766485A6496091A1F7C10@AM6PR08MB4069.eurprd08.prod.outlook.com>
References: <20200409021941.163308-1-justin.he@arm.com>
 <8acf858d-89d1-97a7-1c17-aebbfe5cd2a2@neclab.eu>
In-Reply-To: <8acf858d-89d1-97a7-1c17-aebbfe5cd2a2@neclab.eu>
Accept-Language: en-US, zh-CN
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ts-tracking-id: aa96db3b-16df-4c03-b404-e23de47c6aa3.1
x-checkrecipientchecked: true
Authentication-Results-Original: 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-HT: Tenant
X-MS-Office365-Filtering-Correlation-Id: 342542cd-faab-48d4-a205-08d7dc7a9caa
x-ms-traffictypediagnostic: AM6PR08MB5144:|AM6PR08MB5144:|HE1PR08MB2764:
x-ms-exchange-transport-forked: True
X-Microsoft-Antispam-PRVS: <HE1PR08MB2764E7A934A96A7577771FD1F7C10@HE1PR08MB2764.eurprd08.prod.outlook.com>
x-checkrecipientrouted: true
nodisclaimer: true
x-ms-oob-tlc-oobclassifiers: OLM:8882;OLM:8882;
x-forefront-prvs: 0368E78B5B
X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en;
 SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM6PR08MB4069.eurprd08.prod.outlook.com;
 PTR:; CAT:NONE; SFTY:;
 SFS:(10009020)(4636009)(136003)(39860400002)(366004)(376002)(346002)(396003)(8676002)(86362001)(110136005)(6506007)(66446008)(54906003)(64756008)(81156014)(8936002)(52536014)(71200400001)(66556008)(316002)(5660300002)(81166007)(478600001)(66946007)(7696005)(53546011)(55236004)(66476007)(4326008)(186003)(76116006)(26005)(9686003)(33656002)(55016002)(2906002);
 DIR:OUT; SFP:1101; 
received-spf: None (protection.outlook.com: arm.com does not designate
 permitted sender hosts)
X-MS-Exchange-SenderADCheck: 1
X-Microsoft-Antispam-Untrusted: BCL:0;
X-Microsoft-Antispam-Message-Info-Original: 7ocNjgO+Llb0rxzfrgBC3Hyvj6hH06B2GDD8XR/6qsD0w5cztkaY4hMDYMUhLuBDMkdlTipSpSKUBq1QB30z2SKau/40tuCpscE29goECq1xQiPaDZWelDFmbqt4CqDzFf2GW8+1nXrtGf0lpZX7k3DhuSZF3SnCAzO5SgO1ma55SzW7e+GGu/1iSEHKcqM7wy7x5Yk7bzn24xhpA4jeOdBfQCm/J7DSQ4UlQfVVGKauKDkSRr+Ykbxgz/kqggEUJHz8Vzith9EDWjQQdtNCnxXHt+WP0M4fU9s34ruwKgBe4XoPAoa9gMj7e8u5YnNSEZ3cIrI7Jif1vLCTfABZwLJRAXXxVPc/aDYLjlehZ3OMoU449PuKXCzp/9dKlNyAoT5tRMbsY2oksrTzBx9kgRqp2xiBIjuoFqhePBubfgMXAMDO7CM9qc6FPfxYOZ6Q
x-ms-exchange-antispam-messagedata: Ba92uZ4UAWhuX5IggdQaoGtolWgiLNswjaTkSKkebf5zKDEq66S8iy1odO9CZC5EdPdj6uIw/ZJ9eup/ot3FM535fnyfuIONdKhz3gtJkOi5qssBexhnK8sQ99D3vdMb94tmlx/FKmn/ElUpeMxq9g==
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB5144
Original-Authentication-Results: spf=none (sender IP is )
 smtp.mailfrom=Justin.He@arm.com; 
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped: VE1EUR03FT019.eop-EUR03.prod.protection.outlook.com
X-Forefront-Antispam-Report: CIP:63.35.35.123; CTRY:IE; LANG:en; SCL:1; SRV:;
 IPV:CAL; SFV:NSPM; H:64aa7808-outbound-1.mta.getcheckrecipient.com;
 PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com; CAT:NONE; SFTY:;
 SFS:(10009020)(4636009)(39860400002)(346002)(376002)(396003)(136003)(46966005)(356004)(4326008)(8936002)(81156014)(316002)(52536014)(186003)(70586007)(54906003)(8676002)(86362001)(70206006)(7696005)(26826003)(478600001)(6506007)(82740400003)(26005)(36906005)(9686003)(55016002)(33656002)(5660300002)(81166007)(2906002)(47076004)(53546011)(336012)(110136005);
 DIR:OUT; SFP:1101; 
X-MS-Office365-Filtering-Correlation-Id-Prvs: 23460623-1a74-47e1-88bf-08d7dc7a9845
X-Forefront-PRVS: 0368E78B5B
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info: gdwAqXeQdqmRm2psDX+jZEI3BwKZxSEYUUwZvuJZyChpl/h4M8hLfdZWl3utUJBu/cNZmLZwCHzy6lsGZtc2KAzavqi9cpAnmCDJtWvCQrHPgci0bvtqW4T/937dYVV0pFxOH1xejTKToGBsxQCRMIX9Ysb0MM55ichRLmnFAD4Q6+KJDOqrOop9jfJDPVx7w0xl07GOHozVxx5vsw+x97HeNkn063PxrFf5uMpwkbL0VB/Qii4EA9ryJB8RCVwtLfk6eGllMRwn2lVGkPvYiAc8Uw5ugujFijtkn4i8GZeoQpuSrTQEeySeMkOenQWqQUhBdykPINrThLJdNsL/dDa9dxg/+7xfUf5AJVyULEXFX8l62ziOBP3P9zer/LeFlnxquN33aALSCq5qkK3HV/oMu42A+fjsCUbCHSPk+fL0jFqffChT/Sm30BSpGG2moTqsRd+pttQBSpKoP3C9z1D+QUx0OtDXsTRH4c2FyQqGaVKyXFApesMrL1dWnCCPwIgZIouLm5IyMBK3jfrwXg==
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Apr 2020 11:39:06.7712 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 342542cd-faab-48d4-a205-08d7dc7a9caa
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[63.35.35.123];
 Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com]
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR08MB2764
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>, Kaly Xin <Kaly.Xin@arm.com>,
 Simon Kuenzer <simon.kuenzer@neclab.eu>, nd <nd@arm.com>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGkgU2hhcmFuLCB0aGFua3MgZm9yIHlvdXIgcmV2aWV3IPCfmIoNCg0KLS0NCkNoZWVycywNCkp1
c3RpbiAoSmlhIEhlKQ0KDQoNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9t
OiBTaGFyYW4gU2FudGhhbmFtIDxzaGFyYW4uc2FudGhhbmFtQG5lY2xhYi5ldT4NCj4gU2VudDog
VGh1cnNkYXksIEFwcmlsIDksIDIwMjAgNToyMSBQTQ0KPiBUbzogSnVzdGluIEhlIDxKdXN0aW4u
SGVAYXJtLmNvbT47IG1pbmlvcy1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZw0KPiBDYzogU2lt
b24gS3VlbnplciA8c2ltb24ua3VlbnplckBuZWNsYWIuZXU+OyBGZWxpcGUgSHVpY2kNCj4gPGZl
bGlwZS5odWljaUBuZWNsYWIuZXU+OyBLYWx5IFhpbiA8S2FseS5YaW5AYXJtLmNvbT47IG5kIDxu
ZEBhcm0uY29tPg0KPiBTdWJqZWN0OiBSZTogW1VOSUtSQUZUIFBBVENIIHY1IDAvN10gU3VwcG9y
dCBmbG9hdCBwb2ludCBvbiBhcm02NCBrdm0gcGxhdA0KPiANCj4gSGVsbG8gSnVzdGluLA0KPiAN
Cj4gVGhhbmsgeW91IGZvciB0aGUgd29yayBhbmQgSSBoYXZlIHVwc3RyZWFtZWQgdGhlIHBhdGNo
IHNlcmllcy4NCj4gDQo+IFRoYW5rcyAmIHJlZ2FyZHMNCj4gDQo+IFNoYXJhbg0KPiANCj4gT24g
NC85LzIwIDQ6MTkgQU0sIEppYSBIZSB3cm90ZToNCj4gPiBUaGlzIHNlcmllcyBpcyB0byBlbmFi
bGUgdGhlIGZwc2ltZCBzdXBwb3J0IG9uIGFybTY0IGt2bSBwbGF0Lg0KPiA+DQo+ID4gVGhlIGtl
eSBwb2ludHMgYXJlIGluIHRoZSBwYXRjaCAzIGFuZCA0DQo+ID4NCj4gPiBUZXN0ZWQgb24gYSBU
aHVuZFgyIHFlbXUgIi1tYWNoaW5lIHZpcnQiIGd1ZXN0IG1hY2hpbmUuDQo+ID4gcWVtdSBjb21t
YW5kIGxpbmU6L3Vzci9sb2NhbC9iaW4vcWVtdS1zeXN0ZW0tYWFyY2g2NCAgXA0KPiA+IC1tYWNo
aW5lIHZpcnQsZ2ljLXZlcnNpb249MiAtbSAxMDI0IC1jcHUgbWF4IC1uby1hY3BpIC1zbXAgMSBc
DQo+ID4gLWRpc3BsYXkgbm9uZSAgLW5vZ3JhcGhpYyAtbm9kZWZhdWx0cyAtc2VyaWFsIHN0ZGlv
IFwNCj4gPiAta2VybmVsIGJ1aWxkL2hlbGxvd29ybGRfa3ZtLWFybTY0DQo+ID4NCj4gPiBJIGNy
ZWF0ZWQgYSBzaW1wbGUgYXBwIHdpdGggMiB0aHJlYWRzLCBhbmQgdGhlbiBwcmludCB0aGVpciBs
b2NhbA0KPiA+IGRvdWJsZS9mbG9hdCB2YXJpYWJsZXMuIFJlc3VsdHMgTG9vayBmaW5lIHRvIG1l
Lg0KPiA+DQo+ID4gQ2hhbmdlczoNCj4gPiB2NToNCj4gPiAgIC0gYWRkIHItYiBmb3IgcGF0Y2gg
MSwzLCBhbmQgb25seSBwYXRjaCAyLDQgaGF2ZSBubyByLWIgdGFnLg0KPiA+ICAgLSBjb3JyZWN0
IHRoZSBoZWFkZXIgZmlsZSwgYW5kIGNsZWFuIGNvZGVzIGluIHBhdGNoIDQgKGJ5IFNoYXJhbikN
Cj4gPiB2NDogYWRkcmVzcyBtb3N0IG9mIHRoZSBjb21tZW50cyBmcm9tIFNoYXJhbg0KPiA+ICAg
LSBjaGFuZ2UgdGhlIGZwX3NhdmUvcmVzdG9yZV9zdG9yZSBhcyBwZXIgZnJlZWJzZCB3YXkNCj4g
PiAgIC0gcmVmaW5lIHRoZSBoZWxwIG1zZyBpbiBwYXRjaCAxDQo+ID4gICAtIGFkZCByLWIgZm9y
IHBhdGNoIDUsNiw3DQo+ID4gICAtIHMvQ09ORklHX0ZMT0FUX1BPSU5UL0NPTkZJR19GUFNJTUQv
Zw0KPiA+IHYzOiByZWJhc2UgdG8gbGF0ZXN0IHN0YWdpbmcgYnJhbmNoDQo+ID4gdjI6IHJlbW92
ZSBSRkMgdGFnLg0KPiA+ICAgLSB1dGlsaXplICdpc3InIHZhcmlhbnQgZmVhdHVyZSBpbnRyb2R1
Y2VkIGJ5IFNpbW9uLCB0aGlzIGFkZHJlc3NlcyB0aGUNCj4gPiAgICAgbWdlbmVyYWwtcmVncy1v
bmx5IGlzc3VlIGluIHYxLg0KPiA+ICAgLSByZWZhY3RvciB0aGUgc2F2ZS9yZXN0b3JlIGNvZGVz
IGR1ZSB0byBsaWNlbnNlIGlzc3VlLg0KPiA+DQo+ID4gSmlhIEhlICg3KToNCj4gPiAgICBwbGF0
OiBidWlsZDogQWRkIGEgY29uZmlnIG9wdGlvbiB0byBlbmFibGUgZnAgb24gYXJtNjQNCj4gPiAg
ICBidWlsZDogTGluayBsaWJnY2MgYXQgdGhlIGVuZCBvZiB0aGUgbGluayBvcHRpb25zIGxpc3QN
Cj4gPiAgICBwbGF0L2t2bTogYXJtNjQ6IEVuYWJsZSB0aGUgZnAvc2ltZCBhdCB0aGUgc3RhcnRp
bmcgcG9pbnQNCj4gPiAgICBwbGF0L2FybTogU3VwcG9ydCBmcC9zaW1kIHNhdmUvcmVzdG9yZSBk
dXJpbmcgY29udGV4dCBzd2l0Y2gNCj4gPiAgICBhcmNoL2FybTY0OiBEb24ndCBwYXNzIC1tZ2Vu
ZXJhbC1yZWdzLW9ubHkgd2hlbiBDT05GSUdfRlBTSU1EIGlzIHkNCj4gPiAgICBhcmNoL2FybTY0
OiBGaXggLW1mcHU9bm9uZSB3aGVuIG5vdCBzdXBwb3J0aW5nIGZwc2ltZA0KPiA+ICAgIGJ1aWxk
OiBBZGQgJ2lzcicgdmFyaWFudCBmb3IgYXJtNjQga3ZtIHBsYXQgc291cmNlIGZpbGVzIGNhbGxl
ZCB3aXRoaW4NCj4gPiAgICAgIGlycSBjb250ZXh0DQo+ID4NCj4gPiAgIGFyY2gvYXJtL2FybTY0
L01ha2VmaWxlLnVrICAgICAgICAgIHwgIDcgKystDQo+ID4gICBwbGF0L0NvbmZpZy51ayAgICAg
ICAgICAgICAgICAgICAgICB8ICA3ICsrKw0KPiA+ICAgcGxhdC9jb21tb24vYXJtL2ZwX2FybTY0
LmMgICAgICAgICAgfCA4MCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KPiA+ICAgcGxh
dC9jb21tb24vaW5jbHVkZS9hcm0vYXJtNjQvY3B1LmggfCA0NiArKysrKysrKysrKysrKysrLQ0K
PiA+ICAgcGxhdC9rdm0vTGlua2VyLnVrICAgICAgICAgICAgICAgICAgfCAgMiArDQo+ID4gICBw
bGF0L2t2bS9NYWtlZmlsZS51ayAgICAgICAgICAgICAgICB8IDExICsrLS0NCj4gPiAgIHBsYXQv
a3ZtL2FybS9lbnRyeTY0LlMgICAgICAgICAgICAgIHwgIDggKysrDQo+ID4gICA3IGZpbGVzIGNo
YW5nZWQsIDE1MiBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQ0KPiA+ICAgY3JlYXRlIG1v
ZGUgMTAwNjQ0IHBsYXQvY29tbW9uL2FybS9mcF9hcm02NC5jDQo+ID4NCg==


From minios-devel-bounces@lists.xenproject.org Thu Apr 09 14:12:55 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 09 Apr 2020 14:12: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 1jMXvJ-0002oN-A0; Thu, 09 Apr 2020 14:12:53 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=Lf15=5Z=suse.com=jgross@srs-us1.protection.inumbo.net>)
 id 1jMXvH-0002o5-Gu
 for minios-devel@lists.xenproject.org; Thu, 09 Apr 2020 14:12:51 +0000
X-Inumbo-ID: 2ef84fb6-7a6c-11ea-b4f4-bc764e2007e4
Received: from mx2.suse.de (unknown [195.135.220.15])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 2ef84fb6-7a6c-11ea-b4f4-bc764e2007e4;
 Thu, 09 Apr 2020 14:12:46 +0000 (UTC)
X-Virus-Scanned: by amavisd-new at test-mx.suse.de
Received: from relay2.suse.de (unknown [195.135.220.254])
 by mx2.suse.de (Postfix) with ESMTP id CD799AD6C;
 Thu,  9 Apr 2020 14:12:43 +0000 (UTC)
From: Juergen Gross <jgross@suse.com>
To: minios-devel@lists.xenproject.org,
	xen-devel@lists.xenproject.org
Subject: [PATCH 0/3] mini-os: fix several double frees and memory leaks
Date: Thu,  9 Apr 2020 16:12:37 +0200
Message-Id: <20200409141240.28876-1-jgross@suse.com>
X-Mailer: git-send-email 2.16.4
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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: Juergen Gross <jgross@suse.com>, samuel.thibault@ens-lyon.org, wl@xen.org
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

This series fixes two double free() introduced by suspend/resume
patches and several memory leaks.

Juergen Gross (3):
  mini-os: fix double free() in netfront
  mini-os: fix double free() in xenbus
  mini-os: fix several memory leaks related to xenbus

 blkfront.c       |  4 ++--
 console/xenbus.c |  2 +-
 fbfront.c        |  4 ++--
 netfront.c       |  4 +---
 pcifront.c       | 28 +++++++++++++---------------
 shutdown.c       |  2 +-
 xenbus/xenbus.c  |  8 ++++++--
 7 files changed, 26 insertions(+), 26 deletions(-)

-- 
2.16.4



From minios-devel-bounces@lists.xenproject.org Thu Apr 09 14:12:56 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 09 Apr 2020 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 1jMXvM-0002pI-OK; Thu, 09 Apr 2020 14:12:56 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=Lf15=5Z=suse.com=jgross@srs-us1.protection.inumbo.net>)
 id 1jMXvM-0002pC-Gc
 for minios-devel@lists.xenproject.org; Thu, 09 Apr 2020 14:12:56 +0000
X-Inumbo-ID: 2f29d108-7a6c-11ea-b4f4-bc764e2007e4
Received: from mx2.suse.de (unknown [195.135.220.15])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 2f29d108-7a6c-11ea-b4f4-bc764e2007e4;
 Thu, 09 Apr 2020 14:12:46 +0000 (UTC)
X-Virus-Scanned: by amavisd-new at test-mx.suse.de
Received: from relay2.suse.de (unknown [195.135.220.254])
 by mx2.suse.de (Postfix) with ESMTP id 2EF93AF6E;
 Thu,  9 Apr 2020 14:12:44 +0000 (UTC)
From: Juergen Gross <jgross@suse.com>
To: minios-devel@lists.xenproject.org,
	xen-devel@lists.xenproject.org
Subject: [PATCH 3/3] mini-os: fix several memory leaks related to xenbus
Date: Thu,  9 Apr 2020 16:12:40 +0200
Message-Id: <20200409141240.28876-4-jgross@suse.com>
X-Mailer: git-send-email 2.16.4
In-Reply-To: <20200409141240.28876-1-jgross@suse.com>
References: <20200409141240.28876-1-jgross@suse.com>
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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: Juergen Gross <jgross@suse.com>, samuel.thibault@ens-lyon.org, wl@xen.org
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

There are several instances of calls to xenbus functions which don't
test for an error and in consequence are not freeing the returned
error strings, or which are just not freeing the string after e.g.
printing it.

Fix that by either adding the needed calls of free().

Coverity-ID: 1433632
Signed-off-by: Juergen Gross <jgross@suse.com>
---
 blkfront.c       |  4 ++--
 console/xenbus.c |  2 +-
 fbfront.c        |  4 ++--
 netfront.c       |  2 +-
 pcifront.c       | 28 +++++++++++++---------------
 shutdown.c       |  2 +-
 xenbus/xenbus.c  |  2 ++
 7 files changed, 22 insertions(+), 22 deletions(-)

diff --git a/blkfront.c b/blkfront.c
index f747216..834a978 100644
--- a/blkfront.c
+++ b/blkfront.c
@@ -200,7 +200,7 @@ done:
 
         snprintf(path, sizeof(path), "%s/state", dev->backend);
 
-        xenbus_watch_path_token(XBT_NIL, path, path, &dev->events);
+        free(xenbus_watch_path_token(XBT_NIL, path, path, &dev->events));
 
         msg = NULL;
         state = xenbus_read_integer(path);
@@ -208,7 +208,7 @@ done:
             msg = xenbus_wait_for_state_change(path, &state, &dev->events);
         if (msg != NULL || state != XenbusStateConnected) {
             printk("backend not available, state=%d\n", state);
-            xenbus_unwatch_path_token(XBT_NIL, path, path);
+            free(xenbus_unwatch_path_token(XBT_NIL, path, path));
             goto error;
         }
 
diff --git a/console/xenbus.c b/console/xenbus.c
index 654b469..05fc31c 100644
--- a/console/xenbus.c
+++ b/console/xenbus.c
@@ -164,7 +164,7 @@ done:
         char path[strlen(dev->backend) + strlen("/state") + 1];
         snprintf(path, sizeof(path), "%s/state", dev->backend);
         
-	xenbus_watch_path_token(XBT_NIL, path, path, &dev->events);
+	free(xenbus_watch_path_token(XBT_NIL, path, path, &dev->events));
         msg = NULL;
         state = xenbus_read_integer(path);
         while (msg == NULL && state < XenbusStateConnected)
diff --git a/fbfront.c b/fbfront.c
index 9cc07b4..d3b3848 100644
--- a/fbfront.c
+++ b/fbfront.c
@@ -163,7 +163,7 @@ done:
 
         snprintf(path, sizeof(path), "%s/state", dev->backend);
 
-        xenbus_watch_path_token(XBT_NIL, path, path, &dev->events);
+        free(xenbus_watch_path_token(XBT_NIL, path, path, &dev->events));
 
         err = NULL;
         state = xenbus_read_integer(path);
@@ -530,7 +530,7 @@ done:
 
         snprintf(path, sizeof(path), "%s/state", dev->backend);
 
-        xenbus_watch_path_token(XBT_NIL, path, path, &dev->events);
+        free(xenbus_watch_path_token(XBT_NIL, path, path, &dev->events));
 
         err = NULL;
         state = xenbus_read_integer(path);
diff --git a/netfront.c b/netfront.c
index fe7bb62..66f2bbc 100644
--- a/netfront.c
+++ b/netfront.c
@@ -513,7 +513,7 @@ done:
             err = xenbus_wait_for_state_change(path, &state, &dev->events);
         if (state != XenbusStateConnected) {
             printk("backend not avalable, state=%d\n", state);
-            xenbus_unwatch_path_token(XBT_NIL, path, path);
+            free(xenbus_unwatch_path_token(XBT_NIL, path, path));
             goto error;
         }
 
diff --git a/pcifront.c b/pcifront.c
index 0fc5b30..5642356 100644
--- a/pcifront.c
+++ b/pcifront.c
@@ -70,28 +70,28 @@ void pcifront_watches(void *opaque)
 
     while (1) {
         printk("pcifront_watches: waiting for backend path to appear %s\n", path);
-        xenbus_watch_path_token(XBT_NIL, path, path, &events);
+        free(xenbus_watch_path_token(XBT_NIL, path, path, &events));
         while ((err = xenbus_read(XBT_NIL, path, &be_path)) != NULL) {
             free(err);
             xenbus_wait_for_watch(&events);
         }
-        xenbus_unwatch_path_token(XBT_NIL, path, path);
+        free(xenbus_unwatch_path_token(XBT_NIL, path, path));
         printk("pcifront_watches: waiting for backend to get into the right state %s\n", be_path);
         be_state = (char *) malloc(strlen(be_path) +  7);
         snprintf(be_state, strlen(be_path) +  7, "%s/state", be_path);
-        xenbus_watch_path_token(XBT_NIL, be_state, be_state, &events);
+        free(xenbus_watch_path_token(XBT_NIL, be_state, be_state, &events));
         while ((err = xenbus_read(XBT_NIL, be_state, &msg)) != NULL || msg[0] > '4') {
             free(msg);
             free(err);
             xenbus_wait_for_watch(&events);
         }
-        xenbus_unwatch_path_token(XBT_NIL, be_state, be_state);
+        free(xenbus_unwatch_path_token(XBT_NIL, be_state, be_state));
         if (init_pcifront(NULL) == NULL) {
             free(be_state);
             free(be_path);
             continue;
         }
-        xenbus_watch_path_token(XBT_NIL, be_state, be_state, &events);
+        free(xenbus_watch_path_token(XBT_NIL, be_state, be_state, &events));
         state = XenbusStateConnected;
         printk("pcifront_watches: waiting for backend events %s\n", be_state);
         while ((err = xenbus_wait_for_state_change(be_state, &state, &events)) == NULL &&
@@ -103,10 +103,9 @@ void pcifront_watches(void *opaque)
                 if ((err = xenbus_switch_state(XBT_NIL, fe_state, XenbusStateReconfiguring)) != NULL) {
                     printk("pcifront_watches: error changing state to %d: %s\n",
                             XenbusStateReconfiguring, err);
-                    if (!strcmp(err, "ENOENT")) {
-                        xenbus_write(XBT_NIL, fe_state, "7");
-                        free(err);
-                    }
+                    if (!strcmp(err, "ENOENT"))
+                        free(xenbus_write(XBT_NIL, fe_state, "7"));
+                    free(err);
                 }
             } else if (state == XenbusStateReconfigured) {
                 printk("pcifront_watches: writing %s %d\n", fe_state, XenbusStateConnected);
@@ -114,10 +113,9 @@ void pcifront_watches(void *opaque)
                 if ((err = xenbus_switch_state(XBT_NIL, fe_state, XenbusStateConnected)) != NULL) {
                     printk("pcifront_watches: error changing state to %d: %s\n",
                             XenbusStateConnected, err);
-                    if (!strcmp(err, "ENOENT")) {
-                        xenbus_write(XBT_NIL, fe_state, "4");
-                        free(err);
-                    }
+                    if (!strcmp(err, "ENOENT"))
+                        free(xenbus_write(XBT_NIL, fe_state, "4"));
+                    free(err);
                 }
             } else if (state == XenbusStateClosing)
                 break;
@@ -135,7 +133,7 @@ void pcifront_watches(void *opaque)
         pcidev = NULL;
     }
 
-    xenbus_unwatch_path_token(XBT_NIL, path, path);
+    free(xenbus_unwatch_path_token(XBT_NIL, path, path));
 }
 
 struct pcifront_dev *init_pcifront(char *_nodename)
@@ -243,7 +241,7 @@ done:
         XenbusState state;
         snprintf(path, sizeof(path), "%s/state", dev->backend);
 
-        xenbus_watch_path_token(XBT_NIL, path, path, &dev->events);
+        free(xenbus_watch_path_token(XBT_NIL, path, path, &dev->events));
 
         err = NULL;
         state = xenbus_read_integer(path);
diff --git a/shutdown.c b/shutdown.c
index c7c92cb..4c0b13c 100644
--- a/shutdown.c
+++ b/shutdown.c
@@ -71,7 +71,7 @@ static void shutdown_thread(void *p)
     char *shutdown, *err;
     unsigned int shutdown_reason;
 
-    xenbus_watch_path_token(XBT_NIL, path, token, &events);
+    free(xenbus_watch_path_token(XBT_NIL, path, token, &events));
 
     for ( ;; ) {
         xenbus_wait_for_watch(&events);
diff --git a/xenbus/xenbus.c b/xenbus/xenbus.c
index b12cef7..9e61930 100644
--- a/xenbus/xenbus.c
+++ b/xenbus/xenbus.c
@@ -198,6 +198,8 @@ exit:
         }
         if (msg == NULL && msg2 != NULL)
             msg = msg2;
+        else
+            free(msg2);
     } while (retry);
 
     return msg;
-- 
2.16.4



From minios-devel-bounces@lists.xenproject.org Thu Apr 09 14:12:58 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 09 Apr 2020 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 1jMXvO-0002qp-QA; Thu, 09 Apr 2020 14:12: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=Lf15=5Z=suse.com=jgross@srs-us1.protection.inumbo.net>)
 id 1jMXvN-0002qT-S3
 for minios-devel@lists.xenproject.org; Thu, 09 Apr 2020 14:12:57 +0000
X-Inumbo-ID: 2f0d72f6-7a6c-11ea-82d6-12813bfff9fa
Received: from mx2.suse.de (unknown [195.135.220.15])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 2f0d72f6-7a6c-11ea-82d6-12813bfff9fa;
 Thu, 09 Apr 2020 14:12:46 +0000 (UTC)
X-Virus-Scanned: by amavisd-new at test-mx.suse.de
Received: from relay2.suse.de (unknown [195.135.220.254])
 by mx2.suse.de (Postfix) with ESMTP id 0607EAE59;
 Thu,  9 Apr 2020 14:12:43 +0000 (UTC)
From: Juergen Gross <jgross@suse.com>
To: minios-devel@lists.xenproject.org,
	xen-devel@lists.xenproject.org
Subject: [PATCH 2/3] mini-os: fix double free() in xenbus
Date: Thu,  9 Apr 2020 16:12:39 +0200
Message-Id: <20200409141240.28876-3-jgross@suse.com>
X-Mailer: git-send-email 2.16.4
In-Reply-To: <20200409141240.28876-1-jgross@suse.com>
References: <20200409141240.28876-1-jgross@suse.com>
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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: Juergen Gross <jgross@suse.com>, samuel.thibault@ens-lyon.org, wl@xen.org
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Commit 973ad0c4de1b48 ("Save/Restore Support: Add suspend/restore
support for xenbus") introduced a double free of some memory and leaked
another memory allocation.

Fix those.

Coverity-ID: 1433640
Fixes: 973ad0c4de1b48 ("Save/Restore Support: Add suspend/restore support for xenbus")
Signed-off-by: Juergen Gross <jgross@suse.com>
---
 xenbus/xenbus.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/xenbus/xenbus.c b/xenbus/xenbus.c
index d72dc3a..b12cef7 100644
--- a/xenbus/xenbus.c
+++ b/xenbus/xenbus.c
@@ -413,9 +413,11 @@ void resume_xenbus(int canceled)
 
             rep = xenbus_msg_reply(XS_WATCH, XBT_NIL, req, ARRAY_SIZE(req));
             msg = errmsg(rep);
-            if (msg)
+            if (msg) {
                 xprintk("error on XS_WATCH: %s\n", msg);
-            free(rep);
+                free(msg);
+            } else
+                free(rep);
         }
     }
 
-- 
2.16.4



From minios-devel-bounces@lists.xenproject.org Thu Apr 09 14:13:04 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 09 Apr 2020 14:13: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 1jMXvU-0002u3-5Y; Thu, 09 Apr 2020 14:13: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=Lf15=5Z=suse.com=jgross@srs-us1.protection.inumbo.net>)
 id 1jMXvS-0002tJ-Rf
 for minios-devel@lists.xenproject.org; Thu, 09 Apr 2020 14:13:02 +0000
X-Inumbo-ID: 2efc5962-7a6c-11ea-82d6-12813bfff9fa
Received: from mx2.suse.de (unknown [195.135.220.15])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 2efc5962-7a6c-11ea-82d6-12813bfff9fa;
 Thu, 09 Apr 2020 14:12:45 +0000 (UTC)
X-Virus-Scanned: by amavisd-new at test-mx.suse.de
Received: from relay2.suse.de (unknown [195.135.220.254])
 by mx2.suse.de (Postfix) with ESMTP id E6972AD72;
 Thu,  9 Apr 2020 14:12:43 +0000 (UTC)
From: Juergen Gross <jgross@suse.com>
To: minios-devel@lists.xenproject.org,
	xen-devel@lists.xenproject.org
Subject: [PATCH 1/3] mini-os: fix double free() in netfront
Date: Thu,  9 Apr 2020 16:12:38 +0200
Message-Id: <20200409141240.28876-2-jgross@suse.com>
X-Mailer: git-send-email 2.16.4
In-Reply-To: <20200409141240.28876-1-jgross@suse.com>
References: <20200409141240.28876-1-jgross@suse.com>
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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: Juergen Gross <jgross@suse.com>, samuel.thibault@ens-lyon.org, wl@xen.org
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Commit d225f4012d69a19 ("Save/Restore Support: Add suspend/restore
support for netfront") introduced a regression in form of freeing a
netfront device structure twice.

Fix that.

Coverity-ID: 1433637
Fixes: d225f4012d69a19 ("Save/Restore Support: Add suspend/restore support for netfront")
Signed-off-by: Juergen Gross <jgross@suse.com>
---
 netfront.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/netfront.c b/netfront.c
index 50b3a57..fe7bb62 100644
--- a/netfront.c
+++ b/netfront.c
@@ -584,8 +584,6 @@ void shutdown_netfront(struct netfront_dev *dev)
     list->refcount--;
     if (list->refcount == 0) {
         _shutdown_netfront(dev);
-        free(dev->nodename);
-        free(dev);
 
         to_del = list;
         if (to_del == dev_list) {
-- 
2.16.4



From minios-devel-bounces@lists.xenproject.org Thu Apr 09 14:33:10 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 09 Apr 2020 14:33: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 1jMYEv-00053r-Lk; Thu, 09 Apr 2020 14:33:09 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=9neF=5Z=ens-lyon.org=samuel.thibault@srs-us1.protection.inumbo.net>)
 id 1jMYEu-00053f-MT
 for minios-devel@lists.xenproject.org; Thu, 09 Apr 2020 14:33:08 +0000
X-Inumbo-ID: 06cd4584-7a6f-11ea-b58d-bc764e2007e4
Received: from hera.aquilenet.fr (unknown [2a0c:e300::1])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 06cd4584-7a6f-11ea-b58d-bc764e2007e4;
 Thu, 09 Apr 2020 14:33:06 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by hera.aquilenet.fr (Postfix) with ESMTP id B0F682FEF;
 Thu,  9 Apr 2020 16:33:05 +0200 (CEST)
X-Virus-Scanned: Debian amavisd-new at aquilenet.fr
Received: from hera.aquilenet.fr ([127.0.0.1])
 by localhost (hera.aquilenet.fr [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id IMM8uDMPC8o7; Thu,  9 Apr 2020 16:33:04 +0200 (CEST)
Received: from function.home (unknown
 [IPv6:2a01:cb19:956:1b00:9eb6:d0ff:fe88:c3c7])
 by hera.aquilenet.fr (Postfix) with ESMTPSA id 473002FBC;
 Thu,  9 Apr 2020 16:33:04 +0200 (CEST)
Received: from samy by function.home with local (Exim 4.93)
 (envelope-from <samuel.thibault@ens-lyon.org>)
 id 1jMYEo-001zWn-L7; Thu, 09 Apr 2020 16:33:02 +0200
Date: Thu, 9 Apr 2020 16:33:02 +0200
From: Samuel Thibault <samuel.thibault@ens-lyon.org>
To: Juergen Gross <jgross@suse.com>
Subject: Re: [PATCH 1/3] mini-os: fix double free() in netfront
Message-ID: <20200409143302.4kcbb3rf7rfxqkhq@function>
Mail-Followup-To: Samuel Thibault <samuel.thibault@ens-lyon.org>,
 Juergen Gross <jgross@suse.com>, minios-devel@lists.xenproject.org,
 xen-devel@lists.xenproject.org, wl@xen.org
References: <20200409141240.28876-1-jgross@suse.com>
 <20200409141240.28876-2-jgross@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20200409141240.28876-2-jgross@suse.com>
Organization: I am not organized
User-Agent: NeoMutt/20170609 (1.8.3)
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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.xenproject.org, xen-devel@lists.xenproject.org,
 wl@xen.org
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Juergen Gross, le jeu. 09 avril 2020 16:12:38 +0200, a ecrit:
> Commit d225f4012d69a19 ("Save/Restore Support: Add suspend/restore
> support for netfront") introduced a regression in form of freeing a
> netfront device structure twice.
> 
> Fix that.
> 
> Coverity-ID: 1433637
> Fixes: d225f4012d69a19 ("Save/Restore Support: Add suspend/restore support for netfront")
> Signed-off-by: Juergen Gross <jgross@suse.com>

Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>

> ---
>  netfront.c | 2 --
>  1 file changed, 2 deletions(-)
> 
> diff --git a/netfront.c b/netfront.c
> index 50b3a57..fe7bb62 100644
> --- a/netfront.c
> +++ b/netfront.c
> @@ -584,8 +584,6 @@ void shutdown_netfront(struct netfront_dev *dev)
>      list->refcount--;
>      if (list->refcount == 0) {
>          _shutdown_netfront(dev);
> -        free(dev->nodename);
> -        free(dev);
>  
>          to_del = list;
>          if (to_del == dev_list) {
> -- 
> 2.16.4
> 


From minios-devel-bounces@lists.xenproject.org Thu Apr 09 14:34:16 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 09 Apr 2020 14:34: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 1jMYG0-0005C2-26; Thu, 09 Apr 2020 14:34: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=9neF=5Z=ens-lyon.org=samuel.thibault@srs-us1.protection.inumbo.net>)
 id 1jMYFz-0005Bs-8M
 for minios-devel@lists.xenproject.org; Thu, 09 Apr 2020 14:34:15 +0000
X-Inumbo-ID: 2f11eb44-7a6f-11ea-82d8-12813bfff9fa
Received: from hera.aquilenet.fr (unknown [185.233.100.1])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 2f11eb44-7a6f-11ea-82d8-12813bfff9fa;
 Thu, 09 Apr 2020 14:34:14 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by hera.aquilenet.fr (Postfix) with ESMTP id 90E5A2FEF;
 Thu,  9 Apr 2020 16:34:13 +0200 (CEST)
X-Virus-Scanned: Debian amavisd-new at aquilenet.fr
Received: from hera.aquilenet.fr ([127.0.0.1])
 by localhost (hera.aquilenet.fr [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id CPzKiQ9A8oKS; Thu,  9 Apr 2020 16:34:12 +0200 (CEST)
Received: from function.home (unknown
 [IPv6:2a01:cb19:956:1b00:9eb6:d0ff:fe88:c3c7])
 by hera.aquilenet.fr (Postfix) with ESMTPSA id 3875C2FBC;
 Thu,  9 Apr 2020 16:34:12 +0200 (CEST)
Received: from samy by function.home with local (Exim 4.93)
 (envelope-from <samuel.thibault@ens-lyon.org>)
 id 1jMYFv-001zXk-Bz; Thu, 09 Apr 2020 16:34:11 +0200
Date: Thu, 9 Apr 2020 16:34:11 +0200
From: Samuel Thibault <samuel.thibault@ens-lyon.org>
To: Juergen Gross <jgross@suse.com>
Subject: Re: [PATCH 2/3] mini-os: fix double free() in xenbus
Message-ID: <20200409143411.xa6ar7do64y7mpzf@function>
Mail-Followup-To: Samuel Thibault <samuel.thibault@ens-lyon.org>,
 Juergen Gross <jgross@suse.com>, minios-devel@lists.xenproject.org,
 xen-devel@lists.xenproject.org, wl@xen.org
References: <20200409141240.28876-1-jgross@suse.com>
 <20200409141240.28876-3-jgross@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20200409141240.28876-3-jgross@suse.com>
Organization: I am not organized
User-Agent: NeoMutt/20170609 (1.8.3)
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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.xenproject.org, xen-devel@lists.xenproject.org,
 wl@xen.org
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Juergen Gross, le jeu. 09 avril 2020 16:12:39 +0200, a ecrit:
> Commit 973ad0c4de1b48 ("Save/Restore Support: Add suspend/restore
> support for xenbus") introduced a double free of some memory and leaked
> another memory allocation.
> 
> Fix those.
> 
> Coverity-ID: 1433640
> Fixes: 973ad0c4de1b48 ("Save/Restore Support: Add suspend/restore support for xenbus")
> Signed-off-by: Juergen Gross <jgross@suse.com>

Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>

> ---
>  xenbus/xenbus.c | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/xenbus/xenbus.c b/xenbus/xenbus.c
> index d72dc3a..b12cef7 100644
> --- a/xenbus/xenbus.c
> +++ b/xenbus/xenbus.c
> @@ -413,9 +413,11 @@ void resume_xenbus(int canceled)
>  
>              rep = xenbus_msg_reply(XS_WATCH, XBT_NIL, req, ARRAY_SIZE(req));
>              msg = errmsg(rep);
> -            if (msg)
> +            if (msg) {
>                  xprintk("error on XS_WATCH: %s\n", msg);
> -            free(rep);
> +                free(msg);
> +            } else
> +                free(rep);
>          }
>      }
>  
> -- 
> 2.16.4
> 


From minios-devel-bounces@lists.xenproject.org Thu Apr 09 14:35:41 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 09 Apr 2020 14:35: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 1jMYHN-0005LL-QP; Thu, 09 Apr 2020 14:35: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=9neF=5Z=ens-lyon.org=samuel.thibault@srs-us1.protection.inumbo.net>)
 id 1jMYHN-0005L6-Ae
 for minios-devel@lists.xenproject.org; Thu, 09 Apr 2020 14:35:41 +0000
X-Inumbo-ID: 5cc8ecc2-7a6f-11ea-82d9-12813bfff9fa
Received: from hera.aquilenet.fr (unknown [185.233.100.1])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 5cc8ecc2-7a6f-11ea-82d9-12813bfff9fa;
 Thu, 09 Apr 2020 14:35:30 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by hera.aquilenet.fr (Postfix) with ESMTP id 46C4A2FEF;
 Thu,  9 Apr 2020 16:35:30 +0200 (CEST)
X-Virus-Scanned: Debian amavisd-new at aquilenet.fr
Received: from hera.aquilenet.fr ([127.0.0.1])
 by localhost (hera.aquilenet.fr [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id gVfgDPR9TGcI; Thu,  9 Apr 2020 16:35:28 +0200 (CEST)
Received: from function.home (unknown
 [IPv6:2a01:cb19:956:1b00:9eb6:d0ff:fe88:c3c7])
 by hera.aquilenet.fr (Postfix) with ESMTPSA id ED6A32FBC;
 Thu,  9 Apr 2020 16:35:27 +0200 (CEST)
Received: from samy by function.home with local (Exim 4.93)
 (envelope-from <samuel.thibault@ens-lyon.org>)
 id 1jMYH9-001zYH-6l; Thu, 09 Apr 2020 16:35:27 +0200
Date: Thu, 9 Apr 2020 16:35:27 +0200
From: Samuel Thibault <samuel.thibault@ens-lyon.org>
To: Juergen Gross <jgross@suse.com>
Subject: Re: [PATCH 3/3] mini-os: fix several memory leaks related to xenbus
Message-ID: <20200409143527.co3uensu2czln3mf@function>
Mail-Followup-To: Samuel Thibault <samuel.thibault@ens-lyon.org>,
 Juergen Gross <jgross@suse.com>, minios-devel@lists.xenproject.org,
 xen-devel@lists.xenproject.org, wl@xen.org
References: <20200409141240.28876-1-jgross@suse.com>
 <20200409141240.28876-4-jgross@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20200409141240.28876-4-jgross@suse.com>
Organization: I am not organized
User-Agent: NeoMutt/20170609 (1.8.3)
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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.xenproject.org, xen-devel@lists.xenproject.org,
 wl@xen.org
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Juergen Gross, le jeu. 09 avril 2020 16:12:40 +0200, a ecrit:
> There are several instances of calls to xenbus functions which don't
> test for an error and in consequence are not freeing the returned
> error strings, or which are just not freeing the string after e.g.
> printing it.
> 
> Fix that by either adding the needed calls of free().
> 
> Coverity-ID: 1433632
> Signed-off-by: Juergen Gross <jgross@suse.com>

Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>

> ---
>  blkfront.c       |  4 ++--
>  console/xenbus.c |  2 +-
>  fbfront.c        |  4 ++--
>  netfront.c       |  2 +-
>  pcifront.c       | 28 +++++++++++++---------------
>  shutdown.c       |  2 +-
>  xenbus/xenbus.c  |  2 ++
>  7 files changed, 22 insertions(+), 22 deletions(-)
> 
> diff --git a/blkfront.c b/blkfront.c
> index f747216..834a978 100644
> --- a/blkfront.c
> +++ b/blkfront.c
> @@ -200,7 +200,7 @@ done:
>  
>          snprintf(path, sizeof(path), "%s/state", dev->backend);
>  
> -        xenbus_watch_path_token(XBT_NIL, path, path, &dev->events);
> +        free(xenbus_watch_path_token(XBT_NIL, path, path, &dev->events));
>  
>          msg = NULL;
>          state = xenbus_read_integer(path);
> @@ -208,7 +208,7 @@ done:
>              msg = xenbus_wait_for_state_change(path, &state, &dev->events);
>          if (msg != NULL || state != XenbusStateConnected) {
>              printk("backend not available, state=%d\n", state);
> -            xenbus_unwatch_path_token(XBT_NIL, path, path);
> +            free(xenbus_unwatch_path_token(XBT_NIL, path, path));
>              goto error;
>          }
>  
> diff --git a/console/xenbus.c b/console/xenbus.c
> index 654b469..05fc31c 100644
> --- a/console/xenbus.c
> +++ b/console/xenbus.c
> @@ -164,7 +164,7 @@ done:
>          char path[strlen(dev->backend) + strlen("/state") + 1];
>          snprintf(path, sizeof(path), "%s/state", dev->backend);
>          
> -	xenbus_watch_path_token(XBT_NIL, path, path, &dev->events);
> +	free(xenbus_watch_path_token(XBT_NIL, path, path, &dev->events));
>          msg = NULL;
>          state = xenbus_read_integer(path);
>          while (msg == NULL && state < XenbusStateConnected)
> diff --git a/fbfront.c b/fbfront.c
> index 9cc07b4..d3b3848 100644
> --- a/fbfront.c
> +++ b/fbfront.c
> @@ -163,7 +163,7 @@ done:
>  
>          snprintf(path, sizeof(path), "%s/state", dev->backend);
>  
> -        xenbus_watch_path_token(XBT_NIL, path, path, &dev->events);
> +        free(xenbus_watch_path_token(XBT_NIL, path, path, &dev->events));
>  
>          err = NULL;
>          state = xenbus_read_integer(path);
> @@ -530,7 +530,7 @@ done:
>  
>          snprintf(path, sizeof(path), "%s/state", dev->backend);
>  
> -        xenbus_watch_path_token(XBT_NIL, path, path, &dev->events);
> +        free(xenbus_watch_path_token(XBT_NIL, path, path, &dev->events));
>  
>          err = NULL;
>          state = xenbus_read_integer(path);
> diff --git a/netfront.c b/netfront.c
> index fe7bb62..66f2bbc 100644
> --- a/netfront.c
> +++ b/netfront.c
> @@ -513,7 +513,7 @@ done:
>              err = xenbus_wait_for_state_change(path, &state, &dev->events);
>          if (state != XenbusStateConnected) {
>              printk("backend not avalable, state=%d\n", state);
> -            xenbus_unwatch_path_token(XBT_NIL, path, path);
> +            free(xenbus_unwatch_path_token(XBT_NIL, path, path));
>              goto error;
>          }
>  
> diff --git a/pcifront.c b/pcifront.c
> index 0fc5b30..5642356 100644
> --- a/pcifront.c
> +++ b/pcifront.c
> @@ -70,28 +70,28 @@ void pcifront_watches(void *opaque)
>  
>      while (1) {
>          printk("pcifront_watches: waiting for backend path to appear %s\n", path);
> -        xenbus_watch_path_token(XBT_NIL, path, path, &events);
> +        free(xenbus_watch_path_token(XBT_NIL, path, path, &events));
>          while ((err = xenbus_read(XBT_NIL, path, &be_path)) != NULL) {
>              free(err);
>              xenbus_wait_for_watch(&events);
>          }
> -        xenbus_unwatch_path_token(XBT_NIL, path, path);
> +        free(xenbus_unwatch_path_token(XBT_NIL, path, path));
>          printk("pcifront_watches: waiting for backend to get into the right state %s\n", be_path);
>          be_state = (char *) malloc(strlen(be_path) +  7);
>          snprintf(be_state, strlen(be_path) +  7, "%s/state", be_path);
> -        xenbus_watch_path_token(XBT_NIL, be_state, be_state, &events);
> +        free(xenbus_watch_path_token(XBT_NIL, be_state, be_state, &events));
>          while ((err = xenbus_read(XBT_NIL, be_state, &msg)) != NULL || msg[0] > '4') {
>              free(msg);
>              free(err);
>              xenbus_wait_for_watch(&events);
>          }
> -        xenbus_unwatch_path_token(XBT_NIL, be_state, be_state);
> +        free(xenbus_unwatch_path_token(XBT_NIL, be_state, be_state));
>          if (init_pcifront(NULL) == NULL) {
>              free(be_state);
>              free(be_path);
>              continue;
>          }
> -        xenbus_watch_path_token(XBT_NIL, be_state, be_state, &events);
> +        free(xenbus_watch_path_token(XBT_NIL, be_state, be_state, &events));
>          state = XenbusStateConnected;
>          printk("pcifront_watches: waiting for backend events %s\n", be_state);
>          while ((err = xenbus_wait_for_state_change(be_state, &state, &events)) == NULL &&
> @@ -103,10 +103,9 @@ void pcifront_watches(void *opaque)
>                  if ((err = xenbus_switch_state(XBT_NIL, fe_state, XenbusStateReconfiguring)) != NULL) {
>                      printk("pcifront_watches: error changing state to %d: %s\n",
>                              XenbusStateReconfiguring, err);
> -                    if (!strcmp(err, "ENOENT")) {
> -                        xenbus_write(XBT_NIL, fe_state, "7");
> -                        free(err);
> -                    }
> +                    if (!strcmp(err, "ENOENT"))
> +                        free(xenbus_write(XBT_NIL, fe_state, "7"));
> +                    free(err);
>                  }
>              } else if (state == XenbusStateReconfigured) {
>                  printk("pcifront_watches: writing %s %d\n", fe_state, XenbusStateConnected);
> @@ -114,10 +113,9 @@ void pcifront_watches(void *opaque)
>                  if ((err = xenbus_switch_state(XBT_NIL, fe_state, XenbusStateConnected)) != NULL) {
>                      printk("pcifront_watches: error changing state to %d: %s\n",
>                              XenbusStateConnected, err);
> -                    if (!strcmp(err, "ENOENT")) {
> -                        xenbus_write(XBT_NIL, fe_state, "4");
> -                        free(err);
> -                    }
> +                    if (!strcmp(err, "ENOENT"))
> +                        free(xenbus_write(XBT_NIL, fe_state, "4"));
> +                    free(err);
>                  }
>              } else if (state == XenbusStateClosing)
>                  break;
> @@ -135,7 +133,7 @@ void pcifront_watches(void *opaque)
>          pcidev = NULL;
>      }
>  
> -    xenbus_unwatch_path_token(XBT_NIL, path, path);
> +    free(xenbus_unwatch_path_token(XBT_NIL, path, path));
>  }
>  
>  struct pcifront_dev *init_pcifront(char *_nodename)
> @@ -243,7 +241,7 @@ done:
>          XenbusState state;
>          snprintf(path, sizeof(path), "%s/state", dev->backend);
>  
> -        xenbus_watch_path_token(XBT_NIL, path, path, &dev->events);
> +        free(xenbus_watch_path_token(XBT_NIL, path, path, &dev->events));
>  
>          err = NULL;
>          state = xenbus_read_integer(path);
> diff --git a/shutdown.c b/shutdown.c
> index c7c92cb..4c0b13c 100644
> --- a/shutdown.c
> +++ b/shutdown.c
> @@ -71,7 +71,7 @@ static void shutdown_thread(void *p)
>      char *shutdown, *err;
>      unsigned int shutdown_reason;
>  
> -    xenbus_watch_path_token(XBT_NIL, path, token, &events);
> +    free(xenbus_watch_path_token(XBT_NIL, path, token, &events));
>  
>      for ( ;; ) {
>          xenbus_wait_for_watch(&events);
> diff --git a/xenbus/xenbus.c b/xenbus/xenbus.c
> index b12cef7..9e61930 100644
> --- a/xenbus/xenbus.c
> +++ b/xenbus/xenbus.c
> @@ -198,6 +198,8 @@ exit:
>          }
>          if (msg == NULL && msg2 != NULL)
>              msg = msg2;
> +        else
> +            free(msg2);
>      } while (retry);
>  
>      return msg;
> -- 
> 2.16.4
> 


From minios-devel-bounces@lists.xenproject.org Thu Apr 09 22:59:58 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 09 Apr 2020 22:59: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 1jMg9L-0006Ns-Rg; Thu, 09 Apr 2020 22:59:55 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=VOqT=5Z=xen.org=wl@srs-us1.protection.inumbo.net>)
 id 1jMYCn-0004sS-9N
 for minios-devel@lists.xenproject.org; Thu, 09 Apr 2020 14:30:57 +0000
X-Inumbo-ID: b690e030-7a6e-11ea-b58d-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id b690e030-7a6e-11ea-b58d-bc764e2007e4;
 Thu, 09 Apr 2020 14:30:51 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=In-Reply-To:Content-Type:MIME-Version:References:Message-ID
 :Subject:Cc:To:From:Date:Sender:Reply-To:Content-Transfer-Encoding:Content-ID
 :Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:
 Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe
 :List-Post:List-Owner:List-Archive;
 bh=TcXAQwYo1T1uzYbPEEq6FUW+WO1mQOQ5F8v24cUA3R4=; b=1XCpEbu8v1+nsFhte31j7Kc0Jo
 ysCkHQP88nlIPGQzW0EEZJp+lJQrQOis9qTq0cvTCzGIeZPsJkyuxtSBsnlqh/F7R92wMQmEkAUfQ
 4FkbxeTScV/A4E9F5tKUTHWKWp22ieR/VFu54yIkEXZ8qGQqd0VwS0Wj2yguYUgl1Vzc=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <wl@xen.org>)
 id 1jMYCg-0007Do-K7; Thu, 09 Apr 2020 14:30:50 +0000
Received: from 44.142.6.51.dyn.plus.net ([51.6.142.44] helo=debian)
 by xenbits.xenproject.org with esmtpsa
 (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89)
 (envelope-from <wl@xen.org>)
 id 1jMYCg-00049J-BT; Thu, 09 Apr 2020 14:30:50 +0000
Date: Thu, 9 Apr 2020 15:30:47 +0100
From: Wei Liu <wl@xen.org>
To: Juergen Gross <jgross@suse.com>
Subject: Re: [PATCH 0/3] mini-os: fix several double frees and memory leaks
Message-ID: <20200409143047.o4ncbup7stcmjjh3@debian>
References: <20200409141240.28876-1-jgross@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20200409141240.28876-1-jgross@suse.com>
User-Agent: NeoMutt/20180716
X-Mailman-Approved-At: Thu, 09 Apr 2020 22:59:55 +0000
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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.xenproject.org, xen-devel@lists.xenproject.org,
 wl@xen.org, samuel.thibault@ens-lyon.org
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

On Thu, Apr 09, 2020 at 04:12:37PM +0200, Juergen Gross wrote:
> This series fixes two double free() introduced by suspend/resume
> patches and several memory leaks.
> 
> Juergen Gross (3):
>   mini-os: fix double free() in netfront
>   mini-os: fix double free() in xenbus
>   mini-os: fix several memory leaks related to xenbus

Acked-by: Wei Liu <wl@xen.org>

Thanks for fixing these bugs.


From minios-devel-bounces@lists.xenproject.org Thu Apr 09 22:59:58 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 09 Apr 2020 22:59: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 1jMg9L-0006Nx-Sw; Thu, 09 Apr 2020 22:59:55 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=VOqT=5Z=xen.org=wl@srs-us1.protection.inumbo.net>)
 id 1jMYRo-0006Uv-M5
 for minios-devel@lists.xenproject.org; Thu, 09 Apr 2020 14:46:28 +0000
X-Inumbo-ID: e1a96a06-7a70-11ea-b58d-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id e1a96a06-7a70-11ea-b58d-bc764e2007e4;
 Thu, 09 Apr 2020 14:46:23 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=In-Reply-To:Content-Type:MIME-Version:References:Message-ID
 :Subject:To:From:Date:Sender:Reply-To:Cc:Content-Transfer-Encoding:Content-ID
 :Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:
 Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe
 :List-Post:List-Owner:List-Archive;
 bh=MueWrmTDF935mg6/uFP0Trw3f8XXT6pdzcfV97Yoy9U=; b=PmOVjou0fwPoR7TYZMdsUxyZJc
 wkN58zTBTdOZfFbcf+RqyaLEcqFET3oWjbMOgqkQncQJpIssc3TyXBGWOPoDikm6VIIijtuq7dlRm
 Sc3UMrPgJqLNokRbLe547/swDrTGmdeC7MQuH9RWjRvcN2+MHucmxAhovmEvh6g5r4QE=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <wl@xen.org>)
 id 1jMYRg-0007Y6-P5; Thu, 09 Apr 2020 14:46:20 +0000
Received: from 44.142.6.51.dyn.plus.net ([51.6.142.44] helo=debian)
 by xenbits.xenproject.org with esmtpsa
 (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89)
 (envelope-from <wl@xen.org>)
 id 1jMYRg-0005d5-FM; Thu, 09 Apr 2020 14:46:20 +0000
Date: Thu, 9 Apr 2020 15:46:17 +0100
From: Wei Liu <wl@xen.org>
To: Samuel Thibault <samuel.thibault@ens-lyon.org>,
 Juergen Gross <jgross@suse.com>, minios-devel@lists.xenproject.org,
 xen-devel@lists.xenproject.org, wl@xen.org
Subject: Re: [PATCH 3/3] mini-os: fix several memory leaks related to xenbus
Message-ID: <20200409144617.6hjxykngc7d2zbxu@debian>
References: <20200409141240.28876-1-jgross@suse.com>
 <20200409141240.28876-4-jgross@suse.com>
 <20200409143527.co3uensu2czln3mf@function>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20200409143527.co3uensu2czln3mf@function>
User-Agent: NeoMutt/20180716
X-Mailman-Approved-At: Thu, 09 Apr 2020 22:59:55 +0000
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

On Thu, Apr 09, 2020 at 04:35:27PM +0200, Samuel Thibault wrote:
> Juergen Gross, le jeu. 09 avril 2020 16:12:40 +0200, a ecrit:
> > There are several instances of calls to xenbus functions which don't
> > test for an error and in consequence are not freeing the returned
> > error strings, or which are just not freeing the string after e.g.
> > printing it.
> > 
> > Fix that by either adding the needed calls of free().
> > 
> > Coverity-ID: 1433632
> > Signed-off-by: Juergen Gross <jgross@suse.com>
> 
> Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>

Thanks for your review, Samuel.

I have pushed these patches with your Rbs.

Wei.


From minios-devel-bounces@lists.xenproject.org Fri Apr 10 06:50:10 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 10 Apr 2020 06:50: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 1jMnUO-0007ZL-KP; Fri, 10 Apr 2020 06:50:08 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=OcRH=52=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1jMnUN-0007Up-Mi
 for minios-devel@lists.xen.org; Fri, 10 Apr 2020 06:50:07 +0000
X-Inumbo-ID: 8288961e-7af7-11ea-83d8-bc764e2007e4
Received: from queen.nlehd.de (unknown [195.37.154.80])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTP
 id 8288961e-7af7-11ea-83d8-bc764e2007e4;
 Fri, 10 Apr 2020 06:50:05 +0000 (UTC)
Received: from localhost (c110.ant-net [192.168.0.36])
 by queen.nlehd.de (Postfix) with ESMTP id 02332404C4;
 Fri, 10 Apr 2020 08:50:05 +0200 (CEST)
From: Felipe Huici <felipe.huici@neclab.eu>
To: minios-devel@lists.xen.org
Subject: [UNIKRAFT/LIBNEWLIB PATCH] Make sure floating point is enabled when
 ARM64 is selected.
Date: Fri, 10 Apr 2020 08:50:03 +0200
Message-Id: <20200410065003.7230-1-felipe.huici@neclab.eu>
X-Mailer: git-send-email 2.20.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

newlib requires floating point support. This patch ensures that
floating point is enabled whenever ARM64 is selected as the
architecture.

Signed-off-by: Felipe Huici <felipe.huici@neclab.eu>
---
 Config.uk | 1 +
 1 file changed, 1 insertion(+)

diff --git a/Config.uk b/Config.uk
index ab127f0..533c87c 100644
--- a/Config.uk
+++ b/Config.uk
@@ -13,6 +13,7 @@ menuconfig LIBNEWLIBC
 	select LIBVFSCORE
 	select LIBPOSIX_PROCESS
 	select LIBPOSIX_USER
+	select FPSIMD if ARCH_ARM_64
 
 if LIBNEWLIBC
 	config LIBNEWLIBC_WANT_IO_C99_FORMATS
-- 
2.20.1



From minios-devel-bounces@lists.xenproject.org Fri Apr 10 09:09:28 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 10 Apr 2020 09:09: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 1jMpfC-0001zs-CJ; Fri, 10 Apr 2020 09:09: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=vB7J=52=spider.run.montefiore.ulg.ac.be=cffs@srs-us1.protection.inumbo.net>)
 id 1jMpfA-0001zn-Ms
 for minios-devel@lists.xen.org; Fri, 10 Apr 2020 09:09:25 +0000
X-Inumbo-ID: f678d35a-7b0a-11ea-83cd-12813bfff9fa
Received: from serv108.segi.ulg.ac.be (unknown [139.165.32.111])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id f678d35a-7b0a-11ea-83cd-12813bfff9fa;
 Fri, 10 Apr 2020 09:09:21 +0000 (UTC)
Received: from spider.run.montefiore.ulg.ac.be
 (229.122-66-87.adsl-dyn.isp.belgacom.be [87.66.122.229])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (No client certificate requested)
 by serv108.segi.ulg.ac.be (Postfix) with ESMTPSA id BD5EB200EEC0;
 Fri, 10 Apr 2020 11:09:19 +0200 (CEST)
DKIM-Filter: OpenDKIM Filter v2.11.0 serv108.segi.ulg.ac.be BD5EB200EEC0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=uliege.be;
 s=ulg20190529; t=1586509760;
 bh=pDKDL+w4gBPEykUYw5mYQ8MCaZST7a2UFYkWRXEQoBk=;
 h=From:To:Cc:Subject:Date:From;
 b=2JVfBIU0rEPG1w1J0rgDOiPAyYP3nSwaH818eyRwgmcH6BAqLymRnSTdCkzOO7vsH
 VP3PKJ//UHHxz3LiNPPc/UAefLqe/Jy6JLnN3xTJSgb6VJRGWteN0EReDCVCEshc5c
 sKtcKNGj4k6Q5KJD8PNoiJ8S+Y+B/zZhH5u5W0uMB4hM/W4duL21ckDkjuchf0i6dl
 eJFHwUnftW1qUTT059pcykpErfGFo+Mf1g3YHRa4kYWDIinF7lDipRT4IcrkVIe0Z5
 VKdypKAK004eoyXvEtxYHeKeAoRfT9/vWI9Cxwql/3vx3jEmetRiOXV95+CkrUuS8I
 kLNwqMHR5Gp9Q==
Received: from cffs by spider.run.montefiore.ulg.ac.be with local (Exim 4.93)
 (envelope-from <cffs@spider.run.montefiore.ulg.ac.be>)
 id 1jMpf4-0005AV-7m; Fri, 10 Apr 2020 11:09:18 +0200
From: Cyril Soldani <cyril.soldani@uliege.be>
To: minios-devel@lists.xen.org
Subject: [UNIKRAFT PATCH] build: Fix "Argument list too long" problem
Date: Fri, 10 Apr 2020 11:09:06 +0200
Message-Id: <1457ecc58f522dfbb746c4f79ac5a67c6ae79ea6.1586509333.git.cyril.soldani@uliege.be>
X-Mailer: git-send-email 2.25.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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: Cyril Soldani <cyril.soldani@uliege.be>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

For libraries with lots of object files, such as musl, `make clean` was
failing with "make: execvp: /bin/sh: Argument list too long" on some
machines (depending on default maximum command-line length).

The user could not solve this problem by changing his shell limits,
because GNU make resets those to system defaults.

This patch removes the direct call to `rm`, and replace it with a call
to `xargs rm`, using an intermediate file generated by `make`. The
intermediate file is kept after `clean` so that the user can inspect
which files have been removed.

Signed-off-by: Cyril Soldani <cyril.soldani@uliege.be>
---
 Makefile                     | 1 +
 support/build/Makefile.rules | 9 +++++++--
 2 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/Makefile b/Makefile
index be8fa8ce..e2b41457 100644
--- a/Makefile
+++ b/Makefile
@@ -262,6 +262,7 @@ MV    := mv -f
 CP    := cp -f
 MKDIR := mkdir
 TOUCH := touch
+XARGS := xargs
 
 # kconfig uses CONFIG_SHELL
 CONFIG_SHELL := $(SHELL)
diff --git a/support/build/Makefile.rules b/support/build/Makefile.rules
index 8c096fa5..fbdbc2c5 100644
--- a/support/build/Makefile.rules
+++ b/support/build/Makefile.rules
@@ -779,8 +779,13 @@ endef
 # cleanrule_lib $libname
 define cleanrule_lib =
 clean-$(1):
-	$(call verbose_cmd,CLEAN,$(1),$(RM) \
-	$($(call vprefix_lib,$(1),CLEAN-y)) $($(call vprefix_lib,$(1),CLEAN)))
+	$(file >$(BUILD_DIR)/$(1)/uk_clean_list) \
+            $(foreach O,$($(call vprefix_lib,$(1),CLEAN-y)),\
+                $(file >>$(BUILD_DIR)/$(1)/uk_clean_list,$O)) \
+            $(foreach O,$($(call vprefix_lib,$(1),CLEAN)),\
+                $(file >>$(BUILD_DIR)/$(1)/uk_clean_list,$O))
+	$(call verbose_cmd,CLEAN,$(1),\
+            $(XARGS) $(RM) <$(BUILD_DIR)/$(1)/uk_clean_list)
 
 .PHONY: clean-$(1)
 endef
-- 
2.25.1



From minios-devel-bounces@lists.xenproject.org Fri Apr 10 13:02:45 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 10 Apr 2020 13:02: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 1jMtIw-00056x-GC; Fri, 10 Apr 2020 13:02:42 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=4t7G=52=arm.com=justin.he@srs-us1.protection.inumbo.net>)
 id 1jMtIu-00056s-Oe
 for minios-devel@lists.xen.org; Fri, 10 Apr 2020 13:02:40 +0000
X-Inumbo-ID: 8dcf9db8-7b2b-11ea-b58d-bc764e2007e4
Received: from EUR04-DB3-obe.outbound.protection.outlook.com (unknown
 [40.107.6.79]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 8dcf9db8-7b2b-11ea-b58d-bc764e2007e4;
 Fri, 10 Apr 2020 13:02:38 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; 
 s=selector2-armh-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=jeYrVFtshPVgbesm8jBXqSL3e3rTi9pCiYq667p9b7Y=;
 b=hHMlENXl5WQxlTlKb/peC5BUEmevjjkveCbXILlOCS9jPnwgJzjE6A0iBTxyoei7NPOCXEuPOmtFSdGXPaGgpN/2FXFxQ6TvaV9WadFULjxvhGcd+pxSpbSAdXp9gPvKcISo9V6Z3TqAPKGanotEK5NueZajc0zFBdFGS5pIkh4=
Received: from VI1PR08CA0199.eurprd08.prod.outlook.com (2603:10a6:800:d2::29)
 by AM6PR08MB3800.eurprd08.prod.outlook.com (2603:10a6:20b:87::25)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2900.16; Fri, 10 Apr
 2020 13:02:37 +0000
Received: from VE1EUR03FT016.eop-EUR03.prod.protection.outlook.com
 (2603:10a6:800:d2:cafe::c9) by VI1PR08CA0199.outlook.office365.com
 (2603:10a6:800:d2::29) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2900.16 via Frontend
 Transport; Fri, 10 Apr 2020 13:02:36 +0000
Authentication-Results: spf=pass (sender IP is 63.35.35.123)
 smtp.mailfrom=arm.com; lists.xen.org; dkim=pass (signature was verified)
 header.d=armh.onmicrosoft.com;lists.xen.org; dmarc=bestguesspass action=none
 header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 63.35.35.123 as permitted sender) receiver=protection.outlook.com;
 client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com;
Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by
 VE1EUR03FT016.mail.protection.outlook.com (10.152.18.115) with
 Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.2900.18 via Frontend Transport; Fri, 10 Apr 2020 13:02:36 +0000
Received: ("Tessian outbound e2c88df8bbbe:v50");
 Fri, 10 Apr 2020 13:02:35 +0000
X-CR-MTA-TID: 64aa7808
Received: from f8cc33bce9ee.1
 by 64aa7808-outbound-1.mta.getcheckrecipient.com id
 5C0487F5-1CCA-41F2-B630-4E1009639E38.1; 
 Fri, 10 Apr 2020 13:02:30 +0000
Received: from EUR05-VI1-obe.outbound.protection.outlook.com
 by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id f8cc33bce9ee.1
 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384);
 Fri, 10 Apr 2020 13:02:30 +0000
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=Gk4a9Xi0aUvAgCZ7vz1UcJcjlqcVZnygnZx/fjrXPDUDcQUFAMnKAbPU55YCkOyzjphchuck9SADdzF1UgpJ8Hytfu0jW2fxX4vHWK/hGj0hV/LGORalqWSxq3I+fBi+TV4btA/momPv6XCSemj9xK7E2vnMOhwiFTKmg/FHUTOSi0ARHPyPjJ/ueQM+gsfdOPGmUEykNBZTBBDSDXPwkxDvErb9r9BuuZZGZ2qIAVVcTV+2gwODisROAMqsSiidv+a1MDudWMplMNvmE4VUeCLojuxhaj+YADRUH1amTP4hOCeX3q1yid8LinMd844OTCW1soMJX0kBNKlhiAoajw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; 
 s=arcselector9901;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=jeYrVFtshPVgbesm8jBXqSL3e3rTi9pCiYq667p9b7Y=;
 b=gqCic8cmi/+46iDj35wNmIDHasAgx0kMFT/2h5obXTu1HXZ9hsMvmRocygOLsIQAZmFHEZXWiQrG435qXP3jcLaK8+7tGyEQtx3TZ+jOpV9K0Rc0Fk8SiGfgdHGk7slwTsI2S8A4Pqv/00u3FDs3YM+uCgv9BiTz9iqkQHArm2WKnkxVyEF/HEeSFgvkxgEmklyION8a9l+SxUBsZX2WhFtBKepHcCZg/KRTcdF80iHQDSUuZiXXdIa7kWTHFN27icClCHS4UTDMXLvmtv0s68sJyXwrRs7uRw2oTIm+9mCMHyQIZh1RJ2dk8h5mxTxratqzZslY9zbvem2ZfpG5fA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; 
 s=selector2-armh-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=jeYrVFtshPVgbesm8jBXqSL3e3rTi9pCiYq667p9b7Y=;
 b=hHMlENXl5WQxlTlKb/peC5BUEmevjjkveCbXILlOCS9jPnwgJzjE6A0iBTxyoei7NPOCXEuPOmtFSdGXPaGgpN/2FXFxQ6TvaV9WadFULjxvhGcd+pxSpbSAdXp9gPvKcISo9V6Z3TqAPKGanotEK5NueZajc0zFBdFGS5pIkh4=
Received: from AM6PR08MB4069.eurprd08.prod.outlook.com (2603:10a6:20b:af::32)
 by AM6PR08MB5270.eurprd08.prod.outlook.com (2603:10a6:20b:e5::19)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2878.16; Fri, 10 Apr
 2020 13:02:29 +0000
Received: from AM6PR08MB4069.eurprd08.prod.outlook.com
 ([fe80::60b6:c319:1c9b:8919]) by AM6PR08MB4069.eurprd08.prod.outlook.com
 ([fe80::60b6:c319:1c9b:8919%7]) with mapi id 15.20.2900.015; Fri, 10 Apr 2020
 13:02:29 +0000
From: Justin He <Justin.He@arm.com>
To: Felipe Huici <felipe.huici@neclab.eu>, "minios-devel@lists.xen.org"
 <minios-devel@lists.xen.org>
Subject: RE: [UNIKRAFT/LIBNEWLIB PATCH] Make sure floating point is enabled
 when ARM64 is selected.
Thread-Topic: [UNIKRAFT/LIBNEWLIB PATCH] Make sure floating point is enabled
 when ARM64 is selected.
Thread-Index: AQHWDwRR1X0+sE0v2Uetrgi9KJ56VqhyUltg
Date: Fri, 10 Apr 2020 13:02:28 +0000
Message-ID: <AM6PR08MB4069F0443ECEFC5A667BF28AF7DE0@AM6PR08MB4069.eurprd08.prod.outlook.com>
References: <20200410065003.7230-1-felipe.huici@neclab.eu>
In-Reply-To: <20200410065003.7230-1-felipe.huici@neclab.eu>
Accept-Language: en-US, zh-CN
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ts-tracking-id: 5d5a6135-3464-4475-8870-b2e3c32d93ac.1
x-checkrecipientchecked: true
Authentication-Results-Original: 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-HT: Tenant
X-MS-Office365-Filtering-Correlation-Id: 05e45fbe-4c2a-4503-d493-08d7dd4f70ed
x-ms-traffictypediagnostic: AM6PR08MB5270:|AM6PR08MB3800:
X-Microsoft-Antispam-PRVS: <AM6PR08MB3800AB4118F39669C39FF432F7DE0@AM6PR08MB3800.eurprd08.prod.outlook.com>
x-checkrecipientrouted: true
nodisclaimer: true
x-ms-oob-tlc-oobclassifiers: OLM:1169;OLM:9508;
x-forefront-prvs: 0369E8196C
X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en;
 SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM6PR08MB4069.eurprd08.prod.outlook.com;
 PTR:; CAT:NONE; SFTY:;
 SFS:(10009020)(4636009)(39860400002)(136003)(366004)(376002)(346002)(396003)(26005)(66476007)(52536014)(71200400001)(478600001)(66946007)(5660300002)(186003)(66446008)(110136005)(55016002)(8936002)(81156014)(33656002)(64756008)(2906002)(316002)(55236004)(53546011)(7696005)(66556008)(9686003)(8676002)(6506007)(76116006)(86362001);
 DIR:OUT; SFP:1101; 
received-spf: None (protection.outlook.com: arm.com does not designate
 permitted sender hosts)
X-MS-Exchange-SenderADCheck: 1
X-Microsoft-Antispam-Untrusted: BCL:0;
X-Microsoft-Antispam-Message-Info-Original: DvEDKypL/ytOIv70Kdn+iRNZuW9kbcpAzr7g7BAkxRsZF3K3VG6pjbIg1PTZmwHYiQfgU236oCpa7taQCCw7efqHfYVH1CLrMXGK+1sQRp8u7p0e3w6V86AxhXvcjBPz9tbXVnMZLvI/QTgnky5Laq0uN4DtKU1pu87tyjJltDXcppv8xiV/o/2LqJzur901zLvI+idFpZ60uV+22I6BuqP4CriOFXviW+kczVM4lXxLXcl8VbXtnDYNJVHuErQ7mkDOBsQlK5HR+4PDER+xxonCAvduwxbCx9f3FoBZv7hX24KJLZNutBjATNDFk161eKSLzl2ib4HsLqn7RjTDRYo5i3DJaTROXS25pWZeiQJ9I3IvB+Y8bHVVveIj7lPDw/bmWPKrBoT3hcBtd7aztRMV/aHxVOdBxpbFmsB9w9xrt0AtI/uezhU1DL8u+UaN
x-ms-exchange-antispam-messagedata: Kit3KemTHaujbXD9DagF4J634dSdUcHzJkBTRUDSzeQ8+QjWLRcH7yV5Hu8QhE4sCe33Fp/XNnE/cNGyb9Gboa76lyU449Z4+46XUP0rIZBtcZ9hcsjYsi9ShWdn30L1YYg6aMhD/8nf3kj/CG7n7A==
x-ms-exchange-transport-forked: True
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB5270
Original-Authentication-Results: spf=none (sender IP is )
 smtp.mailfrom=Justin.He@arm.com; 
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped: VE1EUR03FT016.eop-EUR03.prod.protection.outlook.com
X-Forefront-Antispam-Report: CIP:63.35.35.123; CTRY:IE; LANG:en; SCL:1; SRV:;
 IPV:CAL; SFV:NSPM; H:64aa7808-outbound-1.mta.getcheckrecipient.com;
 PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com; CAT:NONE; SFTY:;
 SFS:(10009020)(4636009)(376002)(136003)(39860400002)(346002)(396003)(46966005)(8676002)(8936002)(47076004)(81166007)(70206006)(26005)(55016002)(86362001)(36906005)(186003)(2906002)(5660300002)(26826003)(7696005)(336012)(316002)(82740400003)(70586007)(81156014)(356005)(6506007)(53546011)(9686003)(52536014)(478600001)(33656002)(110136005);
 DIR:OUT; SFP:1101; 
X-MS-Office365-Filtering-Correlation-Id-Prvs: 662a9afb-73b0-4b2f-86b7-08d7dd4f6c9f
X-Forefront-PRVS: 0369E8196C
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info: vR0sLEZ/temkelkMjePCDjQuP5wlu7itmf7L7rz36iGFW7/NeIbdcXUWmCPGF13k03hGU3n05nckzgVh25zkw7awZDJoRyFOGjkxATMzyPtU3x5V1nVGGDEyWQUGufFjumrMW30glcXZX+T7ka5tyZ23r/V9iMt+fxTyGyLe+mLPvdoRH3UvFTJtcXiLPg5MKUgAM1hyzB5poLvS04r5IK+UPO04nKLgqB5dMgeQf14ub1x5jyXiZicDdWTqFO8dlGxw+zGryWgH7vbOgmv12jukl4uRHwfc0PBynAVXJBEQVlDwgA9uyudxBmIYOw+7pd+tGXvXL7XM1kI1nFsVNmyWwH9V3MV1rPIduC9cZr+92sZX4G8nvJnpHqb/Ock6GtfagIVN/TxKYd4P7CmtPWKDsszdDfkmrB29sRCqJ0TydHCmhqEVK0bKqpu4Qj5/1cCrOpr4ZITYWtyA7hM8GlPO6LHPB/pPio+nG+BZ/n4D7DL7TCbRtLiduZnUtm8UpXkAbG6e9gggrZOt8RQjdQ==
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Apr 2020 13:02:36.2003 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 05e45fbe-4c2a-4503-d493-08d7dd4f70ed
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[63.35.35.123];
 Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com]
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB3800
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Looks good to me
Reviewed-by: Jia He <justin.he@arm.com>

> -----Original Message-----
> From: Minios-devel <minios-devel-bounces@lists.xenproject.org> On Behalf
> Of Felipe Huici
> Sent: Friday, April 10, 2020 2:50 PM
> To: minios-devel@lists.xen.org
> Cc: Felipe Huici <felipe.huici@neclab.eu>
> Subject: [UNIKRAFT/LIBNEWLIB PATCH] Make sure floating point is enabled
> when ARM64 is selected.
>
> newlib requires floating point support. This patch ensures that
> floating point is enabled whenever ARM64 is selected as the
> architecture.
>
> Signed-off-by: Felipe Huici <felipe.huici@neclab.eu>
> ---
>  Config.uk | 1 +
>  1 file changed, 1 insertion(+)
>
> diff --git a/Config.uk b/Config.uk
> index ab127f0..533c87c 100644
> --- a/Config.uk
> +++ b/Config.uk
> @@ -13,6 +13,7 @@ menuconfig LIBNEWLIBC
>  select LIBVFSCORE
>  select LIBPOSIX_PROCESS
>  select LIBPOSIX_USER
> +select FPSIMD if ARCH_ARM_64
>
>  if LIBNEWLIBC
>  config LIBNEWLIBC_WANT_IO_C99_FORMATS
> --
> 2.20.1
>

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.


From minios-devel-bounces@lists.xenproject.org Sun Apr 12 14:39:57 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 12 Apr 2020 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 1jNdm6-0000SS-Mc; Sun, 12 Apr 2020 14:39:54 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=zjcS=54=gmail.com=murarugeorgec@srs-us1.protection.inumbo.net>)
 id 1jNdm4-0000SN-VL
 for minios-devel@lists.xenproject.org; Sun, 12 Apr 2020 14:39:53 +0000
X-Inumbo-ID: 778bd75a-7ccb-11ea-b4f4-bc764e2007e4
Received: from mail-wr1-x429.google.com (unknown [2a00:1450:4864:20::429])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 778bd75a-7ccb-11ea-b4f4-bc764e2007e4;
 Sun, 12 Apr 2020 14:39:52 +0000 (UTC)
Received: by mail-wr1-x429.google.com with SMTP id u13so7243906wrp.3
 for <minios-devel@lists.xenproject.org>; Sun, 12 Apr 2020 07:39:51 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=from:to:cc:subject:date:message-id;
 bh=fMfIWT0Z/C4zK/HgAoWeXi4NXL11RQbgA/acVXZs9rE=;
 b=fkQTuCJVUK4v7y6nwljv8WiYXHA5KKCeet2RS1Kg8BPEAZxOmF560s9yo/O/zof843
 B0WwH15bkmPx+w0scq0w0MeyARiMD9dmbQMkNoBLkk93Bcm3WEcB+uPH6aH5umaDblM4
 2wzkWCUZginSyV3RJk3GRN3PVGcKmv7WIoT9ZCMuoND7WvGOlN9O6J08t1C8aJ8XiQv/
 urhMsI8rQlxopoZMkUpcteZgIo6yEuS4pID9a3VZZ4p4kVjrkCl07pNCrNaCvEhP72k4
 4JNemd0MtgdZBTfXjhkYbgKhp798WDgO6V2Zjg4faQQZc/VaqQsqPehcyD3i/Kw+ELGY
 r5Hw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:from:to:cc:subject:date:message-id;
 bh=fMfIWT0Z/C4zK/HgAoWeXi4NXL11RQbgA/acVXZs9rE=;
 b=SV08BbBLHZQQTiugWehHZM7wHQ/svJYBk9vDRrrCt0dvA4r+VM+nnZ3FMNKQarW+HU
 w+13yJJ4BfWmQH4jTrFRUYUHaosgmuSq+VCX62pxTMnBqF6GqQvdOoU9Q6r+vI3wvGeM
 4LZZTAf24U32SKgWh60Gom5jJ+3BLbb1bYSy6kfleupYj9NOOKhwDggLa0Y9hCCQ+fMW
 2KXJU63VvMq6IMtLdmCWBd0b+ZxBwQOx+AwD0xWWW7mNCglJ+3WRpwPTmD6MOEPv0bt5
 khXxTfXDapdJmXJgYsOUPdL5x9NC5n7mdboreD6ysJ0QG4H9cglpAYslOYEiqXrV2gQG
 kUSw==
X-Gm-Message-State: AGi0Puaxgnl6SdQOKRWHr0NnPDmrYAfdz4MgoPTeLkrpHDKwNOxRdXIL
 /LurJomYx0+qifw2MjSajEE124uaF+o=
X-Google-Smtp-Source: APiQypJnW67BwME1IpLsNYXys+tiM00deq8hCtljjm+tGT34GQhF5GbBQ+Nnl5Khq2zoS80dIYM0yg==
X-Received: by 2002:adf:9e49:: with SMTP id v9mr14462619wre.34.1586702390801; 
 Sun, 12 Apr 2020 07:39:50 -0700 (PDT)
Received: from localhost.localdomain ([2a02:a58:8506:aa00:8d14:f919:d110:fecc])
 by smtp.googlemail.com with ESMTPSA id k8sm9267429wrm.52.2020.04.12.07.39.49
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Sun, 12 Apr 2020 07:39:50 -0700 (PDT)
From: George Muraru <murarugeorgec@gmail.com>
To: minios-devel@lists.xenproject.org
Subject: [UNIKRAFT/LIBCOMPILERRT PATCH 0/2]
Date: Sun, 12 Apr 2020 17:39:41 +0300
Message-Id: <20200412143943.13869-1-murarugeorgec@gmail.com>
X-Mailer: git-send-email 2.17.1
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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, George Muraru <murarugeorgec@gmail.com>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Add clrsbdi2 patch needed by tensorflowlite initial porting

George Muraru (1):
  Add clrsbdi2.c needed by tensorflowlite

-- 
2.17.1



From minios-devel-bounces@lists.xenproject.org Sun Apr 12 14:39:58 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 12 Apr 2020 14:39: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 1jNdmA-0000Sn-OV; Sun, 12 Apr 2020 14:39:58 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=zjcS=54=gmail.com=murarugeorgec@srs-us1.protection.inumbo.net>)
 id 1jNdm9-0000Si-Pa
 for minios-devel@lists.xenproject.org; Sun, 12 Apr 2020 14:39:57 +0000
X-Inumbo-ID: 78e0e3e8-7ccb-11ea-9e09-bc764e2007e4
Received: from mail-wm1-x341.google.com (unknown [2a00:1450:4864:20::341])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 78e0e3e8-7ccb-11ea-9e09-bc764e2007e4;
 Sun, 12 Apr 2020 14:39:54 +0000 (UTC)
Received: by mail-wm1-x341.google.com with SMTP id r26so7660505wmh.0
 for <minios-devel@lists.xenproject.org>; Sun, 12 Apr 2020 07:39:54 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=from:to:cc:subject:date:message-id:in-reply-to:references;
 bh=lBl3H5R9Mg0rQ3fcK6sYN7rRvoa+IjM4eeywtNA51ao=;
 b=S5DasuUBrpvuqeN7KatNGgJPxr+0GBToG7Aq4wii5jK7sfNTrXbnxtzo8c31QqeO2Q
 NYbCY2caTUklz5quLxJYz39E/qJ1UFv/+leWQ/0pMYAovIpH3Too/Wg0dpcYkZJd64CP
 0R5i23n5ELq0dBYHruIC4JWMzZblzXv4nwj91SdWWfU1q0DqYt4VIDmKHoEEgjdU3H3h
 RBFXIQz3848I9zEJMsE4F/iRYoHu/riAvYMF7r1uN4cPZ13IPXFdC4y/cTvf259Ie5XK
 mEE0U7njQQghwGWjgoEWIEOV2v4yo8+CoPfXiZ80/AhnMrDJAESarNRwWzppFwEKk+wz
 2v8g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to
 :references;
 bh=lBl3H5R9Mg0rQ3fcK6sYN7rRvoa+IjM4eeywtNA51ao=;
 b=qu3y2z83w10wDBTX6qfSodvtvMHcot11SSNo3qJvEuznJ7yS24EwQzMjVcvL4Y2ncO
 WTFEeiuXJ2KrXqs2yymOntC9qmOF+FcKMv4Or7KHnqQkM3gEvenr0vo9YD4ZvoAIldBM
 V1/MT4NyTd7DzUH/f1a0Twxh+1oeqOIR2jreQeXXMsY+dNojbCHbTNAV5aCdiF8cVcoj
 bAuaEp+3dPN1d7zmQFmcVAWwayHTpL0sAKb3AffjEKdKZwJZBbg9G8xqijzV8y9aRUev
 BzYnodlFyYDknK4zA2YAC2CbrkN9wgBjv6oV+3c7bnDh3YukpclSjKN8Kb9sO+2wmSFy
 mT8w==
X-Gm-Message-State: AGi0Pub+n1k+oAX1kOuOkEpZ4XQjIUAbbpFonpW3IJu+J/GuDyMxq5KK
 6+AzauZIDS80hmVnwQt13IZzI4dDYdY=
X-Google-Smtp-Source: APiQypI64nM53nZOGAaSRkicDGDcUKmrPRK7Ib3CezAhKt/j1YBT6DewRQRgy7Mu+7Ug5G/J2xIUcw==
X-Received: by 2002:a1c:4042:: with SMTP id n63mr14350096wma.27.1586702392979; 
 Sun, 12 Apr 2020 07:39:52 -0700 (PDT)
Received: from localhost.localdomain ([2a02:a58:8506:aa00:8d14:f919:d110:fecc])
 by smtp.googlemail.com with ESMTPSA id k8sm9267429wrm.52.2020.04.12.07.39.52
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Sun, 12 Apr 2020 07:39:52 -0700 (PDT)
From: George Muraru <murarugeorgec@gmail.com>
To: minios-devel@lists.xenproject.org
Subject: [UNIKRAFT/LIBCOMPILERRT PATCH 1/2] Add clrsbdi2.c needed by
 tensorflowlite
Date: Sun, 12 Apr 2020 17:39:42 +0300
Message-Id: <20200412143943.13869-2-murarugeorgec@gmail.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20200412143943.13869-1-murarugeorgec@gmail.com>
References: <20200412143943.13869-1-murarugeorgec@gmail.com>
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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, George Muraru <murarugeorgec@gmail.com>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Signed-off-by: George Muraru <murarugeorgec@gmail.com>
---
 lib/builtins/clrsbdi2.c | 35 +++++++++++++++++++++++++++++++++++
 1 file changed, 35 insertions(+)
 create mode 100644 lib/builtins/clrsbdi2.c

diff --git a/lib/builtins/clrsbdi2.c b/lib/builtins/clrsbdi2.c
new file mode 100644
index 0000000..3aacd47
--- /dev/null
+++ b/lib/builtins/clrsbdi2.c
@@ -0,0 +1,35 @@
+/* Copyright (C) 2013-2017 Free Software Foundation, Inc.
+   This file is part of GCC.
+   GCC is free software; you can redistribute it and/or modify it under
+   the terms of the GNU General Public License as published by the Free
+   Software Foundation; either version 3, or (at your option) any later
+   version.
+   GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+   WARRANTY; without even the implied warranty of MERCHANTABILITY or
+   FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+   for more details.
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+   <http://www.gnu.org/licenses/>.
+*/
+
+#include "int_lib.h"
+
+/* Returns: Number of leading zeroes */
+
+
+COMPILER_RT_ABI di_int
+__clrsbdi2(di_int x)
+{
+    int ret;
+    if (x < 0LL)
+        x = ~x;
+    if (x == 0LL)
+        return 8 * sizeof (x) -1;
+    ret = __builtin_clz((du_int) x);
+    return ret - 1;
+}
-- 
2.17.1



From minios-devel-bounces@lists.xenproject.org Sun Apr 12 14:40:13 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 12 Apr 2020 14:40: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 1jNdmP-00017u-Qt; Sun, 12 Apr 2020 14:40:13 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=zjcS=54=gmail.com=murarugeorgec@srs-us1.protection.inumbo.net>)
 id 1jNdmO-00017o-Jz
 for minios-devel@lists.xenproject.org; Sun, 12 Apr 2020 14:40:12 +0000
X-Inumbo-ID: 839db716-7ccb-11ea-9e09-bc764e2007e4
Received: from mail-wr1-x432.google.com (unknown [2a00:1450:4864:20::432])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 839db716-7ccb-11ea-9e09-bc764e2007e4;
 Sun, 12 Apr 2020 14:40:12 +0000 (UTC)
Received: by mail-wr1-x432.google.com with SMTP id h9so7722096wrc.8
 for <minios-devel@lists.xenproject.org>; Sun, 12 Apr 2020 07:40:12 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=from:to:cc:subject:date:message-id;
 bh=P9HaJjZ6PmPWQi8tIeSLlVbYi6HNtVmoMutRjq8bk9U=;
 b=YdeDimu8HEF/PvXDz72mPoJY3TQN6FqVfmt5BmFxD5sckGFoNrzDeiYjQSTvNy6JVi
 tdSx8uq5Ha3kgz7DtRIpOF+hQUwpfb0orX6uhLl8mFnVaUmOf0QV8I5Rc2Jv29aj1SaF
 YlNEc8AN4AFjAPdVDg0tRh/O/fNlMwRDB/dC4+iXGFDD67NnJCaHLOGExTykrDXQbFjG
 OCNzerwVuUNP9LzWCByZ9YCUqkqFK/sgBLFGNfrqlOpM2HDUEsFl/3x9YsKSMfBlmlqf
 SU3oVf3JFTQhd1bSZmEoPLnJLeu5m/vK1S2yN+RHKQZuUEPHCQJyykxE+aGbug3oN5Zb
 MaUA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:from:to:cc:subject:date:message-id;
 bh=P9HaJjZ6PmPWQi8tIeSLlVbYi6HNtVmoMutRjq8bk9U=;
 b=ICp0noh5gvDm/ZFJaIwFtan8+tpZDXChbOqZviQeR0Y6Ou8CZbanvrCTFFc5U3IjIb
 6U9bFnB0OytzPoR8ZxjoY/WeTP37I7t9BbingcUPi9GZIVx4DU8FftQzZPosW1cHBhaw
 bDiCPM8lqF5AdF4QhLPWt4bYt2rdsBRGfuon/E/xtiAAKUi408e4B1EkKqc4con0eKKL
 PFG2q+anljVvj9a3c0mPe+iDG5A3zA/JHGpdgZSQuvxNo70PksoyeyviDOoyUF6p4FH4
 3XNc+ByeSGzrJ8GgGtR42Jb95hGCXqOcn/iyPV9FbdNpO7bQNpZigBu4X04ixaSd4MSN
 sTXA==
X-Gm-Message-State: AGi0PubQYvR9UiLuY7uPniIaD2EgutWvNVf92DRxpkxGmJ4v07LAcWv7
 G5Xb2sNAlErKzPh+bF4C6Pu4FFZ7/BQ=
X-Google-Smtp-Source: APiQypJrfTKlwP5cXMAN5pmtaHGwcXMyss3ksxSNaCLy8n6Edit2wg/4lt8JiGU8eSO4wUXzPewwqg==
X-Received: by 2002:adf:eac1:: with SMTP id o1mr15293760wrn.182.1586702411123; 
 Sun, 12 Apr 2020 07:40:11 -0700 (PDT)
Received: from localhost.localdomain ([2a02:a58:8506:aa00:8d14:f919:d110:fecc])
 by smtp.googlemail.com with ESMTPSA id k133sm11393683wma.0.2020.04.12.07.40.10
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Sun, 12 Apr 2020 07:40:10 -0700 (PDT)
From: George Muraru <murarugeorgec@gmail.com>
To: minios-devel@lists.xenproject.org
Subject: [UNIKRAFT/LIBTFLITE PATCH 0/2]
Date: Sun, 12 Apr 2020 17:40:01 +0300
Message-Id: <20200412144003.14062-1-murarugeorgec@gmail.com>
X-Mailer: git-send-email 2.17.1
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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, George Muraru <murarugeorgec@gmail.com>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Add tensorflow lite initial porting

George Muraru (2):
  Library skeleton
  Add Makefile.uk

-- 
2.17.1



From minios-devel-bounces@lists.xenproject.org Sun Apr 12 14:40:15 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 12 Apr 2020 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 1jNdmR-00018R-Sw; Sun, 12 Apr 2020 14:40:15 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=zjcS=54=gmail.com=murarugeorgec@srs-us1.protection.inumbo.net>)
 id 1jNdmQ-00018E-Gg
 for minios-devel@lists.xenproject.org; Sun, 12 Apr 2020 14:40:14 +0000
X-Inumbo-ID: 849616f4-7ccb-11ea-9e09-bc764e2007e4
Received: from mail-wr1-x42c.google.com (unknown [2a00:1450:4864:20::42c])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 849616f4-7ccb-11ea-9e09-bc764e2007e4;
 Sun, 12 Apr 2020 14:40:13 +0000 (UTC)
Received: by mail-wr1-x42c.google.com with SMTP id i10so7692009wrv.10
 for <minios-devel@lists.xenproject.org>; Sun, 12 Apr 2020 07:40:13 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=from:to:cc:subject:date:message-id:in-reply-to:references;
 bh=Q08+wZ4C6Adr/0l1F83Lw6lbCVRGKUHU8f5TXv9irBE=;
 b=Rh/i66BJlRPdEZ8s/q27zBuVBJwX8NjT4tVljfvD+gT/OAmm2fu8k59ArX96DX49RX
 7FUJ52s/qeispgQ/wekVHkjJrCCRVokWU7Jkpw+hzVDyrDdaazCvlz40PBT3YkFq0+Qh
 Cit7frWoFZmg/nR9nZIHIsKVID30c1a4l/Y2xnjUMLlQjupqjvJPfYODu74aX50okEKK
 ZyPLVevA5Rz6jj9i4ebJw7vneA+GsOF2tzvc3MsdR5FxD6FmJO4dQusPPy01F7jUlUBW
 XDa+gOx5NanULJH7IGto2cV9Hncu5MR0o7oOxUqwnd1/wbi3PmJvJ+Py7USYdzZYIeOQ
 BoCA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to
 :references;
 bh=Q08+wZ4C6Adr/0l1F83Lw6lbCVRGKUHU8f5TXv9irBE=;
 b=Mx8FVnNk6QVetmxyXObGmBrQ5HEv0HcZHyG+sddRF0ZzV164tE40FAR7tvLfD54MZV
 ptLtq4RFQv5IjBf5WtfU5tyOOOmxlNgMJ5udJ+d+outo15ChLSKDSbg9p7Ke0vT688Ng
 A+6X4x78otkhxRMd/RrMtwU1/HN8kTWVQkRF4ae6zyxjfJ8YuDJmIoFENLAM+fD+4bqn
 SwIt8l4Z3KjEdnppuhaWWpMiw2YpsX5/26kd32hIk3WpK5mOz1vNmR2rFs6+XRaXmX8y
 dx+693V/GFbuBilr0WVHm+FojiLsRdKJGizlkrDmXVwjyukUaMxs59odAV66tgy+z5ph
 WG4Q==
X-Gm-Message-State: AGi0PuZjHsrdw2zD2BlsarPIw82VJADJ6A3tXbzjFRoug/f7cXLo0Hyo
 DNlNhssr6iVw87YuXwpRSYOS1YpfkPs=
X-Google-Smtp-Source: APiQypK0To1V3jltHWJ3BvhdBa9v+NVMgpBIgUw1Gq6ZwI7lmLFAO9jg7OC7OYrD74y88CSN1yBAxg==
X-Received: by 2002:a5d:6503:: with SMTP id x3mr6914428wru.153.1586702412611; 
 Sun, 12 Apr 2020 07:40:12 -0700 (PDT)
Received: from localhost.localdomain ([2a02:a58:8506:aa00:8d14:f919:d110:fecc])
 by smtp.googlemail.com with ESMTPSA id k133sm11393683wma.0.2020.04.12.07.40.11
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Sun, 12 Apr 2020 07:40:12 -0700 (PDT)
From: George Muraru <murarugeorgec@gmail.com>
To: minios-devel@lists.xenproject.org
Subject: [UNIKRAFT/LIBTFLITE PATCH 1/2] Library skeleton
Date: Sun, 12 Apr 2020 17:40:02 +0300
Message-Id: <20200412144003.14062-2-murarugeorgec@gmail.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20200412144003.14062-1-murarugeorgec@gmail.com>
References: <20200412144003.14062-1-murarugeorgec@gmail.com>
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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, George Muraru <murarugeorgec@gmail.com>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Signed-off-by: George Muraru <murarugeorgec@gmail.com>
---
 CONTRIBUTING.md |  4 ++++
 COPYING.md      | 38 ++++++++++++++++++++++++++++++++++++++
 Config.uk       | 34 ++++++++++++++++++++++++++++++++++
 MAINTAINERS.md  | 10 ++++++++++
 README.md       | 12 ++++++++++++
 5 files changed, 98 insertions(+)
 create mode 100644 CONTRIBUTING.md
 create mode 100644 COPYING.md
 create mode 100644 Config.uk
 create mode 100644 MAINTAINERS.md
 create mode 100644 README.md

diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 0000000..14f6ac6
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,4 @@
+Contributing to Unikraft
+========================
+
+Please refer to the `CONTRIBUTING.md` file in the main Unikraft repository.
diff --git a/COPYING.md b/COPYING.md
new file mode 100644
index 0000000..fd1dc8e
--- /dev/null
+++ b/COPYING.md
@@ -0,0 +1,38 @@
+License
+=======
+
+Unikraft tensorflowlite wrappers
+----------------------------------
+
+This repository contains wrapper code to build tensorflowlite with Unikraft.
+Each C code file in this repository should declare who is the
+copyright owner and under which terms and conditions the code is
+licensed. If such a licence note is missing, the following copyright
+notice will apply:
+
+	Copyright (c) Year, Institution. All rights reserved.
+
+	Redistribution and use in source and binary forms, with or without
+	modification, are permitted provided that the following conditions
+	are met:
+
+	1. Redistributions of source code must retain the above copyright
+	   notice, this list of conditions and the following disclaimer.
+	2. Redistributions in binary form must reproduce the above copyright
+	   notice, this list of conditions and the following disclaimer in the
+	   documentation and/or other materials provided with the distribution.
+	3. Neither the name of the copyright holder nor the names of its
+	   contributors may be used to endorse or promote products derived from
+	   this software without specific prior written permission.
+
+	THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+	AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+	IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+	ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+	LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+	CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+	SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+	INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+	CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+	ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+	POSSIBILITY OF SUCH DAMAGE.
diff --git a/Config.uk b/Config.uk
new file mode 100644
index 0000000..38bc5fb
--- /dev/null
+++ b/Config.uk
@@ -0,0 +1,34 @@
+menuconfig LIBTFLITE
+    bool "TensorFlowLite - tensorflow lite library"
+    select LIBCXX
+    select LIBNEWLIBC
+    select LIBPOSIX_SYSINFO
+    select LIBPTHREAD_EMBEDDED
+    select LIBCOMPILTER_RT
+    select LIBCOMPILER_RT_ATOMIC
+    select LIBEIGEN
+    select LIBFFT2D
+    select LIBFFT2D_2D
+    select LIBFLATBUFFERS
+    select LIBGEMMLOWP
+    select LIBFARMHASH
+    default n
+
+if LIBTFLITE
+    config LIBTFLITE_EIGEN_DONT_ALIGN
+    bool "Do not align the buffers used by eigen library"
+    default y
+endif
+
+if LIBTFLITE
+    config LIBTFLITE_BUILD_WITH_RUY
+    bool "Matrix multiplication library"
+    default y
+endif
+
+if LIBTFLITE
+    config LIBTFLITE_BUILD_WITH_NNAPI
+    bool "Build with Neural Network API"
+    default n
+endif
+
diff --git a/MAINTAINERS.md b/MAINTAINERS.md
new file mode 100644
index 0000000..f53ffe5
--- /dev/null
+++ b/MAINTAINERS.md
@@ -0,0 +1,10 @@
+Maintainers List
+================
+
+For notes on how to read this information, please refer to `MAINTAINERS.md` in
+the main Unikraft repository.
+
+	LIBGEMMLOWP-UNIKRAFT
+	M:	George Muraru <murarugeorgec@gmail.com>
+	L:	minios-devel@lists.xen.org
+	F: *
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..a7a1a6d
--- /dev/null
+++ b/README.md
@@ -0,0 +1,12 @@
+gemmlowp for Unikraft
+=============================
+
+This is the port of gemmlowp as a Unikraft external library. It
+depends on the following libraries that need to be added to `Makefile`
+in this order:
+
+* CXX standard library, e.g. `libunwind`, `compiler-rt`, `libcxxabi`, `libcxx`
+* `libc`, e.g. `newlib`
+
+Please refer to the `README.md` as well as the documentation in the `doc/`
+subdirectory of the main unikraft repository.
-- 
2.17.1



From minios-devel-bounces@lists.xenproject.org Sun Apr 12 14:40:19 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 12 Apr 2020 14:40: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 1jNdmU-00019E-US; Sun, 12 Apr 2020 14:40:18 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=zjcS=54=gmail.com=murarugeorgec@srs-us1.protection.inumbo.net>)
 id 1jNdmT-00018y-Kl
 for minios-devel@lists.xenproject.org; Sun, 12 Apr 2020 14:40:17 +0000
X-Inumbo-ID: 856dd9cc-7ccb-11ea-9e09-bc764e2007e4
Received: from mail-wr1-x436.google.com (unknown [2a00:1450:4864:20::436])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 856dd9cc-7ccb-11ea-9e09-bc764e2007e4;
 Sun, 12 Apr 2020 14:40:15 +0000 (UTC)
Received: by mail-wr1-x436.google.com with SMTP id p10so7717434wrt.6
 for <minios-devel@lists.xenproject.org>; Sun, 12 Apr 2020 07:40:15 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=from:to:cc:subject:date:message-id:in-reply-to:references;
 bh=y1SNuqQcK7+ZO4PShTHfIKbyDO/Jalju+L3nSSlCaec=;
 b=AyFp48pLiHsjYc2R/mzJrFblf20ZawbX8hUqt2nUF781wsenxosqL/Mx2NWLq7r/of
 ruIOmog73+/lM9wRtFDKuv07BnOlLhmriOu4nIEXKNjH7dqZFq9qY5ZMxndnb44JAqjy
 FppX/7oQX9QdY8jLej8shFvGTLmbMXZUaEezsVrNmqPibogJeQoZNTYdHgR+J3NfE08g
 GWmHHSvjB5I/jK2VUk2z1znVhm+y66X3gzJYRq/hihJGpdLhf9tuOpVbcpVusSa+rTFj
 stlJzJQF6k6Pz7BTBuCkjcQ03s0HpUh6q+U6ac38+90KDvqlKhYRP4rN/ssof+MQHxEL
 1vdg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to
 :references;
 bh=y1SNuqQcK7+ZO4PShTHfIKbyDO/Jalju+L3nSSlCaec=;
 b=stOcBMrcb9P9jfb9GyVRncA+xNGfzwGP/44eNaGGSJ9ycSm3KaaO003x/fJdVLJRkU
 20Pz5HbGNjM9RaAE2kVqeJkJ4rSkIYbJVN3dzz05qfjlu8gOJobHwLpDdY+wloMaAkY7
 +pNBtoin9g9NVxn8YazC7UioFlzQM1pY1Chl7Qd0tEU8y0amF5AYCIzM8A8JuO7OUNzr
 GAv482PCCkzPVFdSFnGYSl09PJzbgD1ARjyZeBjpquDcXo7XBmzApQK0usb9ZWvGc+ue
 cSXkiyqT5ocsb+JbJW9obecIUL8Top7E/jQuABbcWe/GmCh6lJ2oOHNJdVXM3CNTE8H+
 GiRg==
X-Gm-Message-State: AGi0PubI/iLXOhWzaYUFcHHoU0j1n+fsf9tERH4dZMvgvt4GVmoMLefW
 Tst9806b+iydvud/tkJS9BUYKuzUWf4=
X-Google-Smtp-Source: APiQypKAAdBwyHSlA5rTHtkjrrHMIAoPgobuEQT5kB+pJbiXNWIr14zzk9+b1+FxSbi2Hh1g1h42ZA==
X-Received: by 2002:a5d:698f:: with SMTP id g15mr531377wru.135.1586702414029; 
 Sun, 12 Apr 2020 07:40:14 -0700 (PDT)
Received: from localhost.localdomain ([2a02:a58:8506:aa00:8d14:f919:d110:fecc])
 by smtp.googlemail.com with ESMTPSA id k133sm11393683wma.0.2020.04.12.07.40.13
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Sun, 12 Apr 2020 07:40:13 -0700 (PDT)
From: George Muraru <murarugeorgec@gmail.com>
To: minios-devel@lists.xenproject.org
Subject: [UNIKRAFT/LIBTFLITE PATCH 2/2] Add Makefile.uk
Date: Sun, 12 Apr 2020 17:40:03 +0300
Message-Id: <20200412144003.14062-3-murarugeorgec@gmail.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20200412144003.14062-1-murarugeorgec@gmail.com>
References: <20200412144003.14062-1-murarugeorgec@gmail.com>
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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, George Muraru <murarugeorgec@gmail.com>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Signed-off-by: George Muraru <murarugeorgec@gmail.com>
---
 Makefile.uk | 155 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 155 insertions(+)
 create mode 100644 Makefile.uk

diff --git a/Makefile.uk b/Makefile.uk
new file mode 100644
index 0000000..2b5db3f
--- /dev/null
+++ b/Makefile.uk
@@ -0,0 +1,155 @@
+#  libtensorflow-lite Makefile.uk
+#
+#  Authors: George Muraru <murarugeorgec@gmail.com>
+#
+#  Copyright (c) 2020, Politehnica University of Bucharest. All rights reserved.
+#
+#  Redistribution and use in source and binary forms, with or without
+#  modification, are permitted provided that the following conditions
+#  are met:
+#
+#  1. Redistributions of source code must retain the above copyright
+#     notice, this list of conditions and the following disclaimer.
+#  2. Redistributions in binary form must reproduce the above copyright
+#     notice, this list of conditions and the following disclaimer in the
+#     documentation and/or other materials provided with the distribution.
+#  3. Neither the name of the copyright holder nor the names of its
+#     contributors may be used to endorse or promote products derived from
+#     this software without specific prior written permission.
+#
+#  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+#  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+#  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+#  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+#  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+#  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+#  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+#  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+#  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+#  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+#  POSSIBILITY OF SUCH DAMAGE.
+#
+#  THIS HEADER MAY NOT BE EXTRACTED OR MODIFIED IN ANY WAY.
+#
+
+$(eval $(call addlib_s,libtflite,$(CONFIG_LIBTFLITE)))
+
+################################################################################
+# Sources
+################################################################################
+LIBTFLITE_VERSION=2.0.1
+LIBTFLITE_URL=https://github.com/tensorflow/tensorflow/archive/v$(LIBTFLITE_VERSION).tar.gz
+$(eval $(call fetch,libtflite,$(LIBTFLITE_URL)))
+
+################################################################################
+# Helpers
+################################################################################
+LIBTFLITE_SUBDIR=tensorflow-$(LIBTFLITE_VERSION)
+LIBTFLITE_SRC = $(LIBTFLITE_ORIGIN)/$(LIBTFLITE_SUBDIR)
+
+################################################################################
+# Library includes
+################################################################################
+CXXINCLUDES-$(CONFIG_LIBTFLITE) += -I$(LIBTFLITE_SRC)/
+CXXINCLUDES-$(CONFIG_LIBTFLITE) += -I$(LIBTFLITE_SRC)/tensorflow/lite
+
+
+CINCLUDES-$(CONFIG_LIBTFLITE) += -I$(LIBTFLITE_SRC)/
+CINCLUDES-$(CONFIG_LIBTFLITE) += -I$(LIBTFLITE_SRC)/tensorflow/lite
+
+################################################################################
+# Global flags
+################################################################################
+LIBTFLITE_SUPPRESS_FLAGS += -Wno-sign-compare -Wno-unused-parameter -Wno-comment
+LIBTFLITE_SUPPRESS_FLAGS += -Wno-missing-field-initializers
+
+LIBTFLITE_CXXFLAGS-y += $(LIBTFLITE_SUPPRESS_FLAGS)
+
+
+ifdef CONFIG_LIBTFLITE_BUILD_WITH_RUY
+LIBTFLITE_CXXFLAGS-y += -D TFLITE_WITH_RUY
+LIBTFLITE_CFLAGS-y += -D TFLITE_WITH_RUY
+endif
+
+ifdef CONFIG_LIBTFLITE_EIGEN_DONT_ALIGN
+LIBTFLITE_CXXFLAGS-y += -D EIGEN_DONT_ALIGN
+LIBTFLITE_CFLAGS-y += -D EIGEN_DONT_ALIGN
+endif
+
+################################################################################
+# Library sources
+################################################################################
+MINIMAL_SRCS := \
+			$(LIBTFLITE_SRC)/tensorflow/lite/examples/minimal/minimal.cc
+
+
+CORE_CC_ALL_SRCS := \
+			$(wildcard $(LIBTFLITE_SRC)/tensorflow/lite/*.cc) \
+			$(wildcard $(LIBTFLITE_SRC)/tensorflow/lite/*.c) \
+			$(wildcard $(LIBTFLITE_SRC)/tensorflow/lite/c/*.c) \
+			$(wildcard $(LIBTFLITE_SRC)/tensorflow/lite/core/*.cc) \
+			$(wildcard $(LIBTFLITE_SRC)/tensorflow/lite/core/api/*.cc) \
+			$(wildcard $(LIBTFLITE_SRC)/tensorflow/lite/experimental/resource_variable/*.cc) \
+			$(LIBTFLITE_SRC)/tensorflow/lite/experimental/ruy/allocator.cc \
+			$(LIBTFLITE_SRC)/tensorflow/lite/experimental/ruy/block_map.cc \
+			$(LIBTFLITE_SRC)/tensorflow/lite/experimental/ruy/blocking_counter.cc \
+			$(LIBTFLITE_SRC)/tensorflow/lite/experimental/ruy/context.cc \
+			$(LIBTFLITE_SRC)/tensorflow/lite/experimental/ruy/detect_dotprod.cc \
+			$(LIBTFLITE_SRC)/tensorflow/lite/experimental/ruy/kernel_arm32.cc \
+			$(LIBTFLITE_SRC)/tensorflow/lite/experimental/ruy/kernel_arm64.cc \
+			$(LIBTFLITE_SRC)/tensorflow/lite/experimental/ruy/pack_arm.cc \
+			$(LIBTFLITE_SRC)/tensorflow/lite/experimental/ruy/pmu.cc \
+			$(LIBTFLITE_SRC)/tensorflow/lite/experimental/ruy/thread_pool.cc \
+			$(LIBTFLITE_SRC)/tensorflow/lite/experimental/ruy/trace.cc \
+			$(LIBTFLITE_SRC)/tensorflow/lite/experimental/ruy/trmul.cc \
+			$(LIBTFLITE_SRC)/tensorflow/lite/experimental/ruy/tune.cc \
+			$(LIBTFLITE_SRC)/tensorflow/lite/experimental/ruy/wait.cc \
+     		$(LIBTFLITE_SRC)/tensorflow/lite/minimal_logging_default.cc
+
+
+
+CORE_CC_ALL_SRCS += \
+			 $(wildcard $(LIBTFLITE_SRC)/tensorflow/lite/kernels/*.cc) \
+			 $(wildcard $(LIBTFLITE_SRC)/tensorflow/lite/kernels/internal/*.cc) \
+			 $(wildcard $(LIBTFLITE_SRC)/tensorflow/lite/kernels/internal/optimized/*.cc) \
+			 $(wildcard $(LIBTFLITE_SRC)/tensorflow/lite/kernels/internal/reference/*.cc)
+
+
+CORE_CC_ALL_SRCS := $(sort $(CORE_CC_ALL_SRCS))
+CORE_CC_EXCLUDE_SRCS := \
+				$(wildcard $(LIBTFLITE_SRC)/tensorflow/lite/*test.cc) \
+			    $(wildcard $(LIBTFLITE_SRC)/tensorflow/lite/*/*test.cc) \
+			    $(wildcard $(LIBTFLITE_SRC)/tensorflow/lite/*/*/*test.cc) \
+			    $(wildcard $(LIBTFLITE_SRC)/tensorflow/lite/*/*/*/*test.cc) \
+				$(wildcard $(LIBTFLITE_SRC)/tensorflow/lite/kernels/*test_main.cc) \
+				$(wildcard $(LIBTFLITE_SRC)/tensorflow/lite/kernels/*test_util.cc) \
+				$(LIBTFLITE_SRC)/tensorflow/lite/experimental/ruy/pmu.cc \
+ 				$(LIBTFLITE_SRC)/tensorflow/lite/minimal_logging_android.cc \
+				$(LIBTFLITE_SRC)/tensorflow/lite/minimal_logging_ios.cc \
+ 				$(MINIMAL_SRCS)
+
+COMPILE_MANUAL_SRCS := \
+				$(LIBTFLITE_SRC)/tensorflow/lite/kernels/internal/mfcc.cc \
+				$(LIBTFLITE_SRC)/tensorflow/lite/kernels/mfcc.cc
+
+
+ifeq ($(CONFIG_LIBUKMMAP),y)
+CORE_CC_EXCLUDE_SRCS += $(LIBTFLITE_SRC)/tensorflow/lite/mmap_allocation_disabled.cc
+else
+CORE_CC_EXCLUDE_SRCS += $(LIBTFLITE_SRC)/tensorflow/lite/mmap_allocation.cc
+endif
+
+ifeq ($(LIBTFLITE_BUILD_WITH_NNAPI),y)
+CORE_CC_ALL_SRCS += \
+				$(LIBTFLITE_SRC)/tensorflow/lite/delegates/nnapi/nnapi_delegate.cc \
+   				$(LIBTFLITE_SRC)/tensorflow/lite/delegates/nnapi/quant_lstm_sup.cc \
+    			$(LIBTFLITE_SRC)/tensorflow/lite/nnapi/nnapi_implementation.cc
+else
+CORE_CC_ALL_SRCS += \
+				$(LIBTFLITE_SRC)/tensorflow/lite/delegates/nnapi/nnapi_delegate_disabled.cc \
+   				$(LIBTFLITE_SRC)/tensorflow/lite/nnapi/nnapi_implementation_disabled.cc
+endif
+
+LIBTFLITE_SRCS-y += $(filter-out $(CORE_CC_EXCLUDE_SRCS) $(COMPILE_MANUAL_SRCS), $(CORE_CC_ALL_SRCS))
+LIBTFLITE_SRCS-y += $(LIBTFLITE_SRC)/tensorflow/lite/kernels/internal/mfcc.cc|internal
+LIBTFLITE_SRCS-y += $(LIBTFLITE_SRC)/tensorflow/lite/kernels/mfcc.cc|kernels
-- 
2.17.1



From minios-devel-bounces@lists.xenproject.org Sun Apr 12 14:40:29 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 12 Apr 2020 14: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 1jNdmf-0001B3-1T; Sun, 12 Apr 2020 14:40:29 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=zjcS=54=gmail.com=murarugeorgec@srs-us1.protection.inumbo.net>)
 id 1jNdmd-0001At-Kc
 for minios-devel@lists.xenproject.org; Sun, 12 Apr 2020 14:40:27 +0000
X-Inumbo-ID: 8bd26eb8-7ccb-11ea-b4f4-bc764e2007e4
Received: from mail-wm1-x341.google.com (unknown [2a00:1450:4864:20::341])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 8bd26eb8-7ccb-11ea-b4f4-bc764e2007e4;
 Sun, 12 Apr 2020 14:40:25 +0000 (UTC)
Received: by mail-wm1-x341.google.com with SMTP id y24so7622399wma.4
 for <minios-devel@lists.xenproject.org>; Sun, 12 Apr 2020 07:40:25 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=from:to:cc:subject:date:message-id:in-reply-to:references;
 bh=M5ZhUdG1owOUnOEpBAogUFlSNrCOAWvhgv3nfM8yheA=;
 b=sMxXqs5yvFjSin2leQ4ePm4nKUKdzsed8JtKneVp77LrAUZiZyE/LVodT5HDxKpdAz
 m1g0GzxwTkMZySD/D5Ft7g9B/3NE80TI4cbl1TRLVWiotPqFHTNWHl87MfooQWq/laUi
 OISipRnm6vp8pzbw7aG97tZc1gVENANwZQj1ogHZ6Ztdj2sLRxmGgn9DIwpalCny/LnE
 7sIA+wxnHHEujUesi63lw3IFp7jAfwmL/MxkxZkYHHdj00tBKLV0+WKPF+1Ts0+fb6W4
 8u+h9wMVGDZN2VaNnX6ABLC5j5ANK1AyilLWExxaRdLklNIcbvAmH/YnWoEii9QQTggH
 SvOw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to
 :references;
 bh=M5ZhUdG1owOUnOEpBAogUFlSNrCOAWvhgv3nfM8yheA=;
 b=S/wLawhDXFRSaKvaK+iGmj7p+QE0QwJpzQQQr4mHl9D2tEBpfT8jwSHabP/e4kbnUf
 PsN2xrZCAr+iIK/HVpzFZo0n8BpCeBrdT0K53Po2dwew0U0myi1fgQVrc7zVQDoyEBZx
 vEXN7r2dR1C1wtcjurqqC66nt7RlGU2B5lFpOyVQTxgfLF33qurWqvvPGXgk4BgqQmQy
 4OcaJMlHrqeikZ5FGBgTkaMsiQeXgtEDzr5oKkSTO0ynCy+x1vo7wr4Xjhb4gj3gLl8d
 uu7liRRzUxypJmTAjJnB9verF+HZ/FgRAbHF2w2Z21zPndpa1NmYtVcSObYKiresZOk5
 kwHQ==
X-Gm-Message-State: AGi0PubB9/GTy9F0FIOgmPetbgmaR5NS/LzU8ma+zYB4qV7bwPOwJajp
 lx21yBKN6zH8hdgJxGRNdqFl4lv606g=
X-Google-Smtp-Source: APiQypILkSh2whLdOqZTsTpdChqiMu9PDRSFIZHpwqPUp6vv24FDd6oUxyfteUfi0dVb+cpGZz9yyQ==
X-Received: by 2002:a1c:1dc3:: with SMTP id d186mr14296028wmd.90.1586702394929; 
 Sun, 12 Apr 2020 07:39:54 -0700 (PDT)
Received: from localhost.localdomain ([2a02:a58:8506:aa00:8d14:f919:d110:fecc])
 by smtp.googlemail.com with ESMTPSA id k8sm9267429wrm.52.2020.04.12.07.39.53
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Sun, 12 Apr 2020 07:39:54 -0700 (PDT)
From: George Muraru <murarugeorgec@gmail.com>
To: minios-devel@lists.xenproject.org
Subject: [UNIKRAFT/LIBCOMPILERRT PATCH 2/2] Add clrsbdi2 to makefile
Date: Sun, 12 Apr 2020 17:39:43 +0300
Message-Id: <20200412143943.13869-3-murarugeorgec@gmail.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20200412143943.13869-1-murarugeorgec@gmail.com>
References: <20200412143943.13869-1-murarugeorgec@gmail.com>
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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, George Muraru <murarugeorgec@gmail.com>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Signed-off-by: George Muraru <murarugeorgec@gmail.com>
---
 Makefile.uk | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/Makefile.uk b/Makefile.uk
index 23f9e2e..6be65fa 100644
--- a/Makefile.uk
+++ b/Makefile.uk
@@ -238,3 +238,5 @@ LIBCOMPILER_RT_SRCS-$(CONFIG_ARCH_X86_64) += $(LIBCOMPILER_RT_SRC)/lib/builtins/
 ifdef CONFIG_LIBCOMPILER_RT_ATOMIC
 LIBCOMPILER_RT_SRCS-y += $(LIBCOMPILER_RT_SRC)/lib/builtins/atomic.c
 endif
+
+LIBCOMPILER_RT_SRCS-y += $(LIBCOMPILER_RT_SRC)/lib/builtins/clrsbdi2.c
-- 
2.17.1



From minios-devel-bounces@lists.xenproject.org Sun Apr 12 20:41:04 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 12 Apr 2020 20:41: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 1jNjPZ-0004v2-LN; Sun, 12 Apr 2020 20:41:01 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=IzY7=54=gmail.com=felipehuici@srs-us1.protection.inumbo.net>)
 id 1jNjPX-0004ux-ML
 for minios-devel@lists.xenproject.org; Sun, 12 Apr 2020 20:40:59 +0000
X-Inumbo-ID: ea34d27a-7cfd-11ea-b4f4-bc764e2007e4
Received: from mail-ua1-x942.google.com (unknown [2607:f8b0:4864:20::942])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id ea34d27a-7cfd-11ea-b4f4-bc764e2007e4;
 Sun, 12 Apr 2020 20:40:58 +0000 (UTC)
Received: by mail-ua1-x942.google.com with SMTP id i22so2495656uak.6
 for <minios-devel@lists.xenproject.org>; Sun, 12 Apr 2020 13:40:58 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=mime-version:references:in-reply-to:from:date:message-id:subject:to
 :cc; bh=LxYH2J0pWcS6Iun1bM7grcNaiyYIHc0aspOPWPuOfB0=;
 b=Ze7peTKMhad4pvz74A9ZXnbnujTxHu54bT8n+mVrzEj6T9dHF8xOaCrRPm7DlOY3gX
 TG4Zcl3jy/T/GaTVVltKDoILPyc1iY22W44idE6zpWN3U0VbNGY1wb768p5WaZImxCkJ
 efU7Dl9JAtjzHJbsSv3V4IjTP5iHEErLbpKyZ0tUwPkC6ZdtwhX8ECuu0D++6qBLYEba
 MxLWS/oOI1V7KUuGXKnNDp05GBrmP4W6mSFCickg+pKk+s6Fk3bHLiRBv3E2x7Exp5xi
 IGA3gOxztjpjzr+yVVObn/doqLpbTyTmpX97AIBsz1N6rXaHQ1pl8Z9WYpZPd/Osbvay
 kXzg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:mime-version:references:in-reply-to:from:date
 :message-id:subject:to:cc;
 bh=LxYH2J0pWcS6Iun1bM7grcNaiyYIHc0aspOPWPuOfB0=;
 b=UUCTZUOoOCjN5xGK8Za20eePRtF3+TpN59ZXo8t41W4Wv6eNFU/JjMEoeQ0wHh0ggo
 cpP0+qdeovIlD/1WwMipvbSuCHfaJiMb09abiHMmnSG/67S6NsDlpWzHBiTUoa8ICaSe
 65balkM03jVUs639HsXl0mBPsdGZv2mlpgS4ljUrzl4pOzSI56opoHys2mNBV/Nv/hb+
 tmGJQDNNAx+D+4RJEtgmZAIhydtnjrx/iDlmn+Z8LwfXOg6fEBaus5lnJFWLI5Jc9SqZ
 2Wa4aUrBcBvHA2C64Ijdd1O1BmmxFNCm3qVRYiBK+eCw5GU32YdNSEf7yeW4Ifq82rMD
 xgqg==
X-Gm-Message-State: AGi0PuaBCAy3a9oh/d/2aekRCP7OySQXwA80zwWdVpRGaBDsUr2FKvQb
 D3E0zWZrtrwjgLUWLdKfryOd/6tRUYYkIxyOjg17GU19t3M=
X-Google-Smtp-Source: APiQypIJbr6pZqpyKjfj2fiOKcBZx1oH6ZFtPaJwzKyHswUv6iBsr/OnFr3ITQ7oN/4hvTITnx6RJZKQOJ+RNxlypjU=
X-Received: by 2002:ab0:67cf:: with SMTP id w15mr1107417uar.124.1586724058250; 
 Sun, 12 Apr 2020 13:40:58 -0700 (PDT)
MIME-Version: 1.0
References: <20200412143943.13869-1-murarugeorgec@gmail.com>
 <20200412143943.13869-3-murarugeorgec@gmail.com>
In-Reply-To: <20200412143943.13869-3-murarugeorgec@gmail.com>
From: "felipehuici ." <felipehuici@gmail.com>
Date: Sun, 12 Apr 2020 22:40:47 +0200
Message-ID: <CAEX4t-NJTJLLHi0RGh2AHNL8gPzRMCzGB8TzPQn3r34o8UNFFA@mail.gmail.com>
Subject: Re: [UNIKRAFT/LIBCOMPILERRT PATCH 2/2] Add clrsbdi2 to makefile
To: George Muraru <murarugeorgec@gmail.com>
Content-Type: text/plain; charset="UTF-8"
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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.xenproject.org, Felipe Huici <Felipe.Huici@neclab.eu>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Hi George,

Thanks for the patch! Unfortunately, they don't build as they are,
please see inline.

-- Felipe

On Sun, Apr 12, 2020 at 4:40 PM George Muraru <murarugeorgec@gmail.com> wrote:
>
> Signed-off-by: George Muraru <murarugeorgec@gmail.com>
> ---
>  Makefile.uk | 2 ++
>  1 file changed, 2 insertions(+)
>
> diff --git a/Makefile.uk b/Makefile.uk
> index 23f9e2e..6be65fa 100644
> --- a/Makefile.uk
> +++ b/Makefile.uk
> @@ -238,3 +238,5 @@ LIBCOMPILER_RT_SRCS-$(CONFIG_ARCH_X86_64) += $(LIBCOMPILER_RT_SRC)/lib/builtins/
>  ifdef CONFIG_LIBCOMPILER_RT_ATOMIC
>  LIBCOMPILER_RT_SRCS-y += $(LIBCOMPILER_RT_SRC)/lib/builtins/atomic.c
>  endif
> +
> +LIBCOMPILER_RT_SRCS-y += $(LIBCOMPILER_RT_SRC)/lib/builtins/clrsbdi2.c

The line above should read LIBCOMPILER_RT_SRCS-y +=
$(LIBCOMPILER_RT_BASE)/lib/builtins/clrsbdi2.c , otherwise it points
to a non-existing file, breaking the build.

> --
> 2.17.1
>
>


From minios-devel-bounces@lists.xenproject.org Tue Apr 14 11:49:20 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 14 Apr 2020 11:49: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 1jOK47-0005af-9Z; Tue, 14 Apr 2020 11:49: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=53Wm=56=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1jOK45-0005aD-LF
 for minios-devel@lists.xen.org; Tue, 14 Apr 2020 11:49:17 +0000
X-Inumbo-ID: f6e6af90-7e45-11ea-8927-12813bfff9fa
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id f6e6af90-7e45-11ea-8927-12813bfff9fa;
 Tue, 14 Apr 2020 11:49:15 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 75B0DF2021;
 Tue, 14 Apr 2020 13:49:14 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (atlas-b.office.hd)
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 MdUfWH6qc1YE; Tue, 14 Apr 2020 13:49:14 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from puck.office.hd (puck.office.hd [192.168.24.91])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 4D761F201F
 for <minios-devel@lists.xen.org>; Tue, 14 Apr 2020 13:49:12 +0200 (CEST)
Received: from [10.7.0.24] (192.168.24.96) by puck.office.hd (192.168.24.91)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Tue, 14 Apr
 2020 13:49:11 +0200
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v2] lib/ukalloc: fix memory
 wastage in uk_posix_memalign_ifpages
To: Hugo Lefeuvre <hugo.lefeuvre@neclab.eu>, <minios-devel@lists.xen.org>
References: <8800642dd4d5d1987caee18407df137d86dac472.1586158082.git.hugo.lefeuvre@neclab.eu>
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
Message-ID: <d0898b4b-e459-15c5-c6ba-bcbf69709428@neclab.eu>
Date: Tue, 14 Apr 2020 13:49:10 +0200
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:68.0)
 Gecko/20100101 Thunderbird/68.6.0
MIME-Version: 1.0
In-Reply-To: <8800642dd4d5d1987caee18407df137d86dac472.1586158082.git.hugo.lefeuvre@neclab.eu>
Content-Type: text/plain; charset="utf-8"; format=flowed
Content-Language: en-US
Content-Transfer-Encoding: 7bit
X-Originating-IP: [192.168.24.96]
X-ClientProxiedBy: puck.office.hd (192.168.24.91) To puck.office.hd
 (192.168.24.91)
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Thanks!

Reviewed-by: Simon Kuenzer <simon.kuenzer@neclab.eu>

On 06.04.20 10:53, Hugo Lefeuvre wrote:
> If align == __PAGE_SIZE, we always allocate two pages more than the
> requested size. This is not necessary, because we know that the pointer
> returned to the user will always be intptr + page size.
> 
> Signed-off-by: Hugo Lefeuvre <hugo.lefeuvre@neclab.eu>
> ---
> Changed since v1:
>   + Change the first condition from >= __PAGE_SIZE to == __PAGE_SIZE to make
>     the new else if block reachable.
> 
> diff --git a/lib/ukalloc/alloc.c b/lib/ukalloc/alloc.c
> index 2d16057..2e91ffd 100644
> --- a/lib/ukalloc/alloc.c
> +++ b/lib/ukalloc/alloc.c
> @@ -252,14 +252,21 @@ int uk_posix_memalign_ifpages(struct uk_alloc *a,
>   	 * preceding the memory block, but instead at the beginning of the page
>   	 * preceding the memory returned by this function.
>   	 *
> -	 * align < sizeof(*metadata) implies that metadata are too large to be
> -	 * stored preceding the first memory block at given alignment. In this
> -	 * case, set align to the next power of two >= sizeof(*metadata). Since
> -	 * it is a power of two, the returned pointer will still be aligned at
> -	 * the requested alignment.
> +	 * align < METADATA_IFPAGES_SIZE_POW2 implies that metadata are too
> +	 * large to be stored preceding the first memory block at given
> +	 * alignment. In this case, set align to METADATA_IFPAGES_SIZE_POW2,
> +	 * the next power of two >= sizeof(*metadata). Since it is a power of
> +	 * two, the returned pointer will still be aligned at the requested
> +	 * alignment.
>   	 */
> -	if (align >= __PAGE_SIZE) {
> +	if (align > __PAGE_SIZE) {
>   		padding = __PAGE_SIZE;
> +	} else if (align == __PAGE_SIZE) {
> +		/* No padding needed: in this case we already know that the next
> +		 * aligned pointer will be intptr (as handed to by palloc) +
> +		 * __PAGE_SIZE.
> +		 */
> +		padding = 0;
>   	} else if (align < METADATA_IFPAGES_SIZE_POW2) {
>   		align = METADATA_IFPAGES_SIZE_POW2;
>   		padding = 0;
> 


From minios-devel-bounces@lists.xenproject.org Tue Apr 14 12:03:46 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 14 Apr 2020 12:03: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 1jOKI5-0000KR-4f; Tue, 14 Apr 2020 12:03: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=53Wm=56=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1jOKI3-0000K4-T9
 for minios-devel@lists.xenproject.org; Tue, 14 Apr 2020 12:03:43 +0000
X-Inumbo-ID: fbea86f4-7e47-11ea-8928-12813bfff9fa
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id fbea86f4-7e47-11ea-8928-12813bfff9fa;
 Tue, 14 Apr 2020 12:03:43 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id DF94BF2021;
 Tue, 14 Apr 2020 14:03:41 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (atlas-b.office.hd)
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 xx2Abxhn1eQg; Tue, 14 Apr 2020 14:03:41 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from puck.office.hd (puck.office.hd [192.168.24.91])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id B1838F201F;
 Tue, 14 Apr 2020 14:03:37 +0200 (CEST)
Received: from [10.7.0.24] (192.168.24.96) by puck.office.hd (192.168.24.91)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Tue, 14 Apr
 2020 14:03:37 +0200
Subject: Re: [Minios-devel] [UNIKRAFT PATCH] lib/vfscore: fix null pointer
 dereferences
To: Hugo Lefeuvre <hle@owl.eu.com>
References: <5b7ac3809a611277163efca3d71e7da5120164c5.1582895769.git.hugo.lefeuvre@neclab.eu>
 <b079dd89-2814-a29a-3db8-c9b849c1e20c@neclab.eu>
 <20200406140940.bu3edojyoqt4lumc@behemoth.owl.eu.com.local>
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
Message-ID: <8fb181de-5e58-0875-4a7f-68df4d1692ae@neclab.eu>
Date: Tue, 14 Apr 2020 14:03:36 +0200
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:68.0)
 Gecko/20100101 Thunderbird/68.6.0
MIME-Version: 1.0
In-Reply-To: <20200406140940.bu3edojyoqt4lumc@behemoth.owl.eu.com.local>
Content-Type: text/plain; charset="utf-8"; format=flowed
Content-Language: en-US
Content-Transfer-Encoding: 7bit
X-Originating-IP: [192.168.24.96]
X-ClientProxiedBy: oberon.office.hd (192.168.24.90) To puck.office.hd
 (192.168.24.91)
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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.xenproject.org
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

On 06.04.20 16:09, Hugo Lefeuvre wrote:
> Hi Simon,
> 
>> thanks a lot for this work, I have some comments inline.
> 
> thanks for your review! answers inline.
> 
> Please jump right to the v3, I found another issue in my patch meanwhile :-)
> 
>> On 28.02.20 14:22, Hugo Lefeuvre wrote:
>>> dentry_alloc and dentry_move both create dentry d_path fields using
>>> strdup, without checking for NULL return values. This leads to null
>>> pointer dereferences if the allocator goes OOM.
>>>
>>> Modify dentry_move to return an error code (0 for success, otherwise
>>> error code).
>>>
>>> Signed-off-by: Hugo Lefeuvre <hugo.lefeuvre@neclab.eu>
>>> ---
>>>    lib/vfscore/dentry.c                 | 12 +++++++++++-
>>>    lib/vfscore/include/vfscore/dentry.h |  2 +-
>>>    lib/vfscore/syscalls.c               |  5 ++++-
>>>    3 files changed, 16 insertions(+), 3 deletions(-)
>>>
>>> diff --git a/lib/vfscore/dentry.c b/lib/vfscore/dentry.c
>>> index 76f7a6b..a4728fc 100644
>>> --- a/lib/vfscore/dentry.c
>>> +++ b/lib/vfscore/dentry.c
>>> @@ -81,6 +81,11 @@ dentry_alloc(struct dentry *parent_dp, struct vnode *vp, const char *path)
>>>    	dp->d_vnode = vp;
>>>    	dp->d_mount = mp;
>>>    	dp->d_path = strdup(path);
>>> +
>>> +	if (!dp->d_path) {
>>> +		return NULL;
>>> +	}
>>
>> I think this should be an UK_ASSERT() in the function entry instead if it is
>> required to hand-over a path.
> 
> I'm not sure to understand this comment... checking the return value of
> strdup via UK_ASSERT doesn't sound right to me.

Ah, sorry, I missed the assignment in the declaration block. You are right.

> 
>>> +
>>>    	UK_INIT_LIST_HEAD(&dp->d_child_list);
>>>    	if (parent_dp) {
>>> @@ -133,11 +138,12 @@ static void dentry_children_remove(struct dentry *dp)
>>>    }
>>> -void
>>> +int
>>>    dentry_move(struct dentry *dp, struct dentry *parent_dp, char *path)
>>>    {
>>>    	struct dentry *old_pdp = dp->d_parent;
>>>    	char *old_path = dp->d_path;
>>> +	int error = 0;
>>>    	if (old_pdp) {
>>>    		uk_mutex_lock(&old_pdp->d_lock);
>>> @@ -162,6 +168,9 @@ dentry_move(struct dentry *dp, struct dentry *parent_dp, char *path)
>>>    	uk_hlist_del(&dp->d_link);
>>>    	// Update dp.
>>>    	dp->d_path = strdup(path);
>>> +	if (!dp->d_path)
>>> +		error = ENOMEM;
>>> +
>>
>> Hum... I think it is better to do the strdup() at the function entry and
>> return at failure before changing anything to the VFS.
> 
> Agree. Done in the v3.
> 
>> Btw, do the functions that call dentry_move() expect that the path is newly
>> allocated (e.g., by giving something alocated on the stack). I guess yes and
>> it would be the better style. I just want to double-check.
> 
> Well, as far as I know the path is allocated on the stack (this is src in
> the rename function, lib/vfscore/main.c).
> 
>> Also, could dp have contain already a path? If so, should that one be freed
>> before?
> 
> Yes, dp can already have a path, and we typically free it at the end of
> dentry_move. However, if we fail to allocate a new path at function entry,
> I don't think we should do anything. Just return an error code and let the
> caller decide what to do next. That's the most intuitive thing that comes
> to my mind.

All fine. I had the same issue here: I missed the copy in the 
declaration block (old_path); you are right! ;-)

> 
> cheers,
> Hugo
> 

Thanks,

Simon

> 
> _______________________________________________
> Minios-devel mailing list
> Minios-devel@lists.xenproject.org
> https://lists.xenproject.org/mailman/listinfo/minios-devel
> 


From minios-devel-bounces@lists.xenproject.org Tue Apr 14 12:06:28 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 14 Apr 2020 12:06: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 1jOKKi-0000p4-D6; Tue, 14 Apr 2020 12:06:28 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=53Wm=56=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1jOKKh-0000ow-8a
 for minios-devel@lists.xen.org; Tue, 14 Apr 2020 12:06:27 +0000
X-Inumbo-ID: 5ce317e6-7e48-11ea-b58d-bc764e2007e4
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 5ce317e6-7e48-11ea-b58d-bc764e2007e4;
 Tue, 14 Apr 2020 12:06:25 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id A125510411A;
 Tue, 14 Apr 2020 14:06:24 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (atlas-a.office.hd)
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 Y-BWGrZZBLew; Tue, 14 Apr 2020 14:06:24 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from puck.office.hd (puck.office.hd [192.168.24.91])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 7CB23100BE5
 for <minios-devel@lists.xen.org>; Tue, 14 Apr 2020 14:06:24 +0200 (CEST)
Received: from [10.7.0.24] (192.168.24.96) by puck.office.hd (192.168.24.91)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Tue, 14 Apr
 2020 14:06:23 +0200
Subject: Re: [UNIKRAFT PATCH] lib/ukdebug: always provide uk_asmdumpk
To: Hugo Lefeuvre <hugo.lefeuvre@neclab.eu>, <minios-devel@lists.xen.org>
References: <1f22423dfe2a5deab144374abadb649339a90e45.1586348366.git.hugo.lefeuvre@neclab.eu>
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
Message-ID: <e33c644f-ab96-23af-c096-037e61f74bbd@neclab.eu>
Date: Tue, 14 Apr 2020 14:06:23 +0200
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:68.0)
 Gecko/20100101 Thunderbird/68.6.0
MIME-Version: 1.0
In-Reply-To: <1f22423dfe2a5deab144374abadb649339a90e45.1586348366.git.hugo.lefeuvre@neclab.eu>
Content-Type: text/plain; charset="utf-8"; format=flowed
Content-Language: en-US
Content-Transfer-Encoding: 7bit
X-Originating-IP: [192.168.24.96]
X-ClientProxiedBy: puck.office.hd (192.168.24.91) To puck.office.hd
 (192.168.24.91)
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

This is correct, thanks a lot for this fix!

Reviewed-by: Simon Kuenzer <simon.kuenzer@neclab.eu>

On 08.04.20 14:20, Hugo Lefeuvre wrote:
> uk_asmdumpk is called in do_unhandled_trap, do_gp_fault, etc. regardless
> of CONFIG_LIBUKDEBUG_PRINTK. The builds therefore fails if
> CONFIG_LIBUKDEBUG_PRINTK is disabled.
> 
> Signed-off-by: Hugo Lefeuvre <hugo.lefeuvre@neclab.eu>
> ---
>   lib/ukdebug/include/uk/asmdump.h | 2 --
>   1 file changed, 2 deletions(-)
> 
> diff --git a/lib/ukdebug/include/uk/asmdump.h b/lib/ukdebug/include/uk/asmdump.h
> index a046881..93ef65d 100644
> --- a/lib/ukdebug/include/uk/asmdump.h
> +++ b/lib/ukdebug/include/uk/asmdump.h
> @@ -114,11 +114,9 @@ static inline void uk_asmdumpd(const void *instr __unused,
>   			       unsigned int instr_count __unused)
>   {}
>   
> -#if CONFIG_LIBUKDEBUG_PRINTK
>   static inline void uk_asmdumpk(int lvl __unused, const void *instr __unused,
>   			       unsigned int instr_count __unused)
>   {}
> -#endif /* CONFIG_LIBUKDEBUG_PRINTK */
>   
>   #endif /* Backends */
>   
> 


From minios-devel-bounces@lists.xenproject.org Tue Apr 14 12:30:56 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 14 Apr 2020 12:30: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 1jOKiN-00049h-5m; Tue, 14 Apr 2020 12:30:55 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=53Wm=56=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1jOKiM-00049c-86
 for minios-devel@lists.xen.org; Tue, 14 Apr 2020 12:30:54 +0000
X-Inumbo-ID: c762a688-7e4b-11ea-b58d-bc764e2007e4
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id c762a688-7e4b-11ea-b58d-bc764e2007e4;
 Tue, 14 Apr 2020 12:30:52 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id BB8D9F2021;
 Tue, 14 Apr 2020 14:30:51 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (atlas-b.office.hd)
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 1tBD6nEm_A0C; Tue, 14 Apr 2020 14:30:51 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from puck.office.hd (puck.office.hd [192.168.24.91])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 80099F201F
 for <minios-devel@lists.xen.org>; Tue, 14 Apr 2020 14:30:49 +0200 (CEST)
Received: from [10.7.0.24] (192.168.24.96) by puck.office.hd (192.168.24.91)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Tue, 14 Apr
 2020 14:30:49 +0200
Subject: Re: [UNIKRAFT PATCH] lib/ukalloc: make uk_alloc_get_default static
 inline
To: Hugo Lefeuvre <hugo.lefeuvre@neclab.eu>, <minios-devel@lists.xen.org>
References: <cbbbf26bc2b354122329c8f61723d0b597905f18.1586370158.git.hugo.lefeuvre@neclab.eu>
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
Message-ID: <78a9e1cd-d7e6-76bb-b504-a345e7e57c90@neclab.eu>
Date: Tue, 14 Apr 2020 14:30:48 +0200
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:68.0)
 Gecko/20100101 Thunderbird/68.6.0
MIME-Version: 1.0
In-Reply-To: <cbbbf26bc2b354122329c8f61723d0b597905f18.1586370158.git.hugo.lefeuvre@neclab.eu>
Content-Type: text/plain; charset="utf-8"; format=flowed
Content-Language: en-US
Content-Transfer-Encoding: 7bit
X-Originating-IP: [192.168.24.96]
X-ClientProxiedBy: titania.office.hd (192.168.24.89) To puck.office.hd
 (192.168.24.91)
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Hi Hugo,

this patch looks good. Could you rename uk_alloc_head to _uk_alloc_head? 
This is to show that this symbol is still internally used by the library 
although it is exported because of performance reasons.

Thanks,

Simon

On 08.04.20 20:24, Hugo Lefeuvre wrote:
> Every allocation done through the libc malloc wrapper triggers a function
> call to uk_alloc_get_default in order to get a pointer to the default
> allocator.  This is not great, because the allocation path is performance
> critical, and we should avoid any superflous overhead there.
> 
> This patch removes the capability to change the default allocator once it
> has been set. This never really worked anyways... the libc wrapper would
> forward free() calls to the new allocator, potentially resulting in memory
> corruption if the new allocator doesn't handle these foreign pointers
> correctly, and memory leaks because these pointers won't be freed anymore.
> 
> We make the uk_alloc_head variable global and uk_alloc_get_default static
> inline.
> 
> Retrieving the default allocator becomes less expensive: a single memory
> read instead of a function call + memory read.
> 
> It appears that uk_alloc_set_default was not called anywhere, so this patch
> does not require any additional changes in external libraries.
> 
> Signed-off-by: Hugo Lefeuvre <hugo.lefeuvre@neclab.eu>
> ---
>   lib/ukalloc/alloc.c            | 39 +--------------------------------------
>   lib/ukalloc/exportsyms.uk      |  2 +-
>   lib/ukalloc/include/uk/alloc.h | 10 +++++++---
>   3 files changed, 9 insertions(+), 42 deletions(-)
> 
> diff --git a/lib/ukalloc/alloc.c b/lib/ukalloc/alloc.c
> index 214fbd9..11f58dc 100644
> --- a/lib/ukalloc/alloc.c
> +++ b/lib/ukalloc/alloc.c
> @@ -57,7 +57,7 @@
>   	(ALIGN_UP((unsigned long)(size), __PAGE_SIZE) / __PAGE_SIZE)
>   #define page_off(x) ((unsigned long)(x) & (__PAGE_SIZE - 1))
>   
> -static struct uk_alloc *uk_alloc_head;
> +struct uk_alloc *uk_alloc_head;
>   
>   int uk_alloc_register(struct uk_alloc *a)
>   {
> @@ -76,43 +76,6 @@ int uk_alloc_register(struct uk_alloc *a)
>   	return 0;
>   }
>   
> -struct uk_alloc *uk_alloc_get_default(void)
> -{
> -	return uk_alloc_head;
> -}
> -
> -int uk_alloc_set_default(struct uk_alloc *a)
> -{
> -	struct uk_alloc *head, *this, *prev;
> -
> -	head = uk_alloc_get_default();
> -
> -	if (a == head)
> -		return 0;
> -
> -	if (!head) {
> -		uk_alloc_head = a;
> -		return 0;
> -	}
> -
> -	this = head;
> -	while (this->next) {
> -		prev = this;
> -		this = this->next;
> -		if (a == this) {
> -			prev->next = this->next;
> -			this->next = head->next;
> -			head = this;
> -			return 0;
> -		}
> -	}
> -
> -	/* a is not registered yet. Add in front of the queue. */
> -	a->next = head;
> -	uk_alloc_head = a;
> -	return 0;
> -}
> -
>   struct metadata_ifpages {
>   	unsigned long	num_pages;
>   	void		*base;
> diff --git a/lib/ukalloc/exportsyms.uk b/lib/ukalloc/exportsyms.uk
> index 594999f..903565d 100644
> --- a/lib/ukalloc/exportsyms.uk
> +++ b/lib/ukalloc/exportsyms.uk
> @@ -1,6 +1,5 @@
>   uk_alloc_register
>   uk_alloc_get_default
> -uk_alloc_set_default
>   uk_malloc_ifpages
>   uk_free_ifpages
>   uk_realloc_ifpages
> @@ -14,3 +13,4 @@ uk_memalign_compat
>   uk_realloc_compat
>   uk_palloc_compat
>   uk_pfree_compat
> +uk_alloc_head
> diff --git a/lib/ukalloc/include/uk/alloc.h b/lib/ukalloc/include/uk/alloc.h
> index 73b3a45..3d1f44f 100644
> --- a/lib/ukalloc/include/uk/alloc.h
> +++ b/lib/ukalloc/include/uk/alloc.h
> @@ -53,9 +53,6 @@ extern "C" {
>   #define uk_zalloc(a, size)  uk_calloc(a, 1, size)
>   #define uk_do_zalloc(a, size) uk_do_calloc(a, 1, size)
>   
> -struct uk_alloc *uk_alloc_get_default(void);
> -int uk_alloc_set_default(struct uk_alloc *a);
> -
>   typedef void* (*uk_alloc_malloc_func_t)
>   		(struct uk_alloc *a, size_t size);
>   typedef void* (*uk_alloc_calloc_func_t)
> @@ -108,6 +105,13 @@ struct uk_alloc {
>   	int8_t priv[];
>   };
>   
> +extern struct uk_alloc *uk_alloc_head;
> +
> +static inline struct uk_alloc *uk_alloc_get_default(void)
> +{
> +	return uk_alloc_head;
> +}
> +
>   /* wrapper functions */
>   static inline void *uk_do_malloc(struct uk_alloc *a, size_t size)
>   {
> 


From minios-devel-bounces@lists.xenproject.org Tue Apr 14 12:43:55 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 14 Apr 2020 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 1jOKuv-000590-KZ; Tue, 14 Apr 2020 12:43:53 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=53Wm=56=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1jOKut-00058t-To
 for minios-devel@lists.xen.org; Tue, 14 Apr 2020 12:43:51 +0000
X-Inumbo-ID: 96adcd7c-7e4d-11ea-b4f4-bc764e2007e4
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 96adcd7c-7e4d-11ea-b4f4-bc764e2007e4;
 Tue, 14 Apr 2020 12:43:50 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id 266DF104151;
 Tue, 14 Apr 2020 14:43:49 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (atlas-a.office.hd)
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 OexF7EFnnRYi; Tue, 14 Apr 2020 14:43:49 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from puck.office.hd (puck.office.hd [192.168.24.91])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id 01C6E100BE5
 for <minios-devel@lists.xen.org>; Tue, 14 Apr 2020 14:43:49 +0200 (CEST)
Received: from [10.7.0.24] (192.168.24.96) by puck.office.hd (192.168.24.91)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Tue, 14 Apr
 2020 14:43:48 +0200
Subject: Re: [Minios-devel] [UNIKRAFT PATCH v3] lib/vfscore: fix null pointer
 dereferences
To: Hugo Lefeuvre <hugo.lefeuvre@neclab.eu>, <minios-devel@lists.xen.org>
References: <dc972b4b3b688f81095ef5e0c5a9373c7bebab78.1586181805.git.hugo.lefeuvre@neclab.eu>
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
Message-ID: <c7ec75eb-fc65-b807-1216-fa20a9e01bd2@neclab.eu>
Date: Tue, 14 Apr 2020 14:43:47 +0200
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:68.0)
 Gecko/20100101 Thunderbird/68.6.0
MIME-Version: 1.0
In-Reply-To: <dc972b4b3b688f81095ef5e0c5a9373c7bebab78.1586181805.git.hugo.lefeuvre@neclab.eu>
Content-Type: text/plain; charset="utf-8"; format=flowed
Content-Language: en-US
Content-Transfer-Encoding: 7bit
X-Originating-IP: [192.168.24.96]
X-ClientProxiedBy: oberon.office.hd (192.168.24.90) To puck.office.hd
 (192.168.24.91)
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Great. Thanks a lot for your work!

Reviewed-by: Simon Kuenzer <simon.kuenzer@neclab.eu>

On 06.04.20 16:05, Hugo Lefeuvre wrote:
> dentry_alloc and dentry_move both create dentry d_path fields using
> strdup, without checking for NULL return values. This leads to null
> pointer dereferences if the allocator goes OOM.
> 
> Modify dentry_move to return an error code (0 for success, otherwise
> error code).
> 
> Signed-off-by: Hugo Lefeuvre <hugo.lefeuvre@neclab.eu>
> ---
> Changes since v2:
>   + dentry_alloc: free(dp) if strdup returns NULL, otherwise this is a memory leak.
> 
> diff --git a/lib/vfscore/dentry.c b/lib/vfscore/dentry.c
> index 76f7a6b..43ee2fe 100644
> --- a/lib/vfscore/dentry.c
> +++ b/lib/vfscore/dentry.c
> @@ -75,12 +75,17 @@ dentry_alloc(struct dentry *parent_dp, struct vnode *vp, const char *path)
>   		return NULL;
>   	}
>   
> +	dp->d_path = strdup(path);
> +	if (!dp->d_path) {
> +		free(dp);
> +		return NULL;
> +	}
> +
>   	vref(vp);
>   
>   	dp->d_refcnt = 1;
>   	dp->d_vnode = vp;
>   	dp->d_mount = mp;
> -	dp->d_path = strdup(path);
>   	UK_INIT_LIST_HEAD(&dp->d_child_list);
>   
>   	if (parent_dp) {
> @@ -133,11 +138,17 @@ static void dentry_children_remove(struct dentry *dp)
>   
>   }
>   
> -void
> +int
>   dentry_move(struct dentry *dp, struct dentry *parent_dp, char *path)
>   {
>   	struct dentry *old_pdp = dp->d_parent;
>   	char *old_path = dp->d_path;
> +	char *new_path = strdup(path);
> +
> +	if (!new_path) {
> +		// Fail before changing anything to the VFS
> +		return ENOMEM;
> +	}
>   
>   	if (old_pdp) {
>   		uk_mutex_lock(&old_pdp->d_lock);
> @@ -161,7 +172,8 @@ dentry_move(struct dentry *dp, struct dentry *parent_dp, char *path)
>   	// Remove dp with outdated hash info from the hashtable.
>   	uk_hlist_del(&dp->d_link);
>   	// Update dp.
> -	dp->d_path = strdup(path);
> +	dp->d_path = new_path;
> +
>   	dp->d_parent = parent_dp;
>   	// Insert dp updated hash info into the hashtable.
>   	uk_hlist_add_head(&dp->d_link,
> @@ -173,6 +185,7 @@ dentry_move(struct dentry *dp, struct dentry *parent_dp, char *path)
>   	}
>   
>   	free(old_path);
> +	return 0;
>   }
>   
>   void
> diff --git a/lib/vfscore/include/vfscore/dentry.h b/lib/vfscore/include/vfscore/dentry.h
> index 0a38402..2c35653 100644
> --- a/lib/vfscore/include/vfscore/dentry.h
> +++ b/lib/vfscore/include/vfscore/dentry.h
> @@ -56,7 +56,7 @@ struct dentry {
>   
>   struct dentry *dentry_alloc(struct dentry *parent_dp, struct vnode *vp, const char *path);
>   struct dentry *dentry_lookup(struct mount *mp, char *path);
> -void dentry_move(struct dentry *dp, struct dentry *parent_dp, char *path);
> +int dentry_move(struct dentry *dp, struct dentry *parent_dp, char *path);
>   void dentry_remove(struct dentry *dp);
>   void dref(struct dentry *dp);
>   void drele(struct dentry *dp);
> diff --git a/lib/vfscore/syscalls.c b/lib/vfscore/syscalls.c
> index 9b5a6bd..9a132b7 100644
> --- a/lib/vfscore/syscalls.c
> +++ b/lib/vfscore/syscalls.c
> @@ -833,8 +833,11 @@ sys_rename(char *src, char *dest)
>   	}
>   
>   	error = VOP_RENAME(dvp1, vp1, sname, dvp2, vp2, dname);
> +	if (error)
> +		goto err3;
> +
> +	error = dentry_move(dp1, ddp2, dname);
>   
> -	dentry_move(dp1, ddp2, dname);
>   	if (dp2)
>   		dentry_remove(dp2);
>   
> 


From minios-devel-bounces@lists.xenproject.org Tue Apr 14 15:17:56 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 14 Apr 2020 15:17: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 1jONJy-00036i-9v; Tue, 14 Apr 2020 15:17:54 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Vc2j=56=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1jONJw-00036d-Qw
 for minios-devel@lists.xen.org; Tue, 14 Apr 2020 15:17:52 +0000
X-Inumbo-ID: 1afaaacc-7e63-11ea-83d8-bc764e2007e4
Received: from queen.nlehd.de (unknown [195.37.154.80])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTP
 id 1afaaacc-7e63-11ea-83d8-bc764e2007e4;
 Tue, 14 Apr 2020 15:17:50 +0000 (UTC)
Received: from localhost (c431.ant-net [192.168.0.36])
 by queen.nlehd.de (Postfix) with ESMTP id 5E6E840481;
 Tue, 14 Apr 2020 17:17:50 +0200 (CEST)
From: Felipe Huici <felipe.huici@neclab.eu>
To: minios-devel@lists.xen.org
Subject: [UNIKRAFT/PTHREAD-EMBEDDED PATCH] Remove reference to non-existing
 exportsyms.uk file .
Date: Tue, 14 Apr 2020 17:17:49 +0200
Message-Id: <20200414151749.325-1-felipe.huici@neclab.eu>
X-Mailer: git-send-email 2.20.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

This library used to have an exportsyms.uk file, but no longer
does. When it was removed, the reference to it in Makefile.uk was not
removed, leaving a dangling reference to a non-existing file. The
recent Unikraft build system series turned this into a build error, so
this patch fixes that by removing the line.

Signed-off-by: Felipe Huici <felipe.huici@neclab.eu>
---
 Makefile.uk | 2 --
 1 file changed, 2 deletions(-)

diff --git a/Makefile.uk b/Makefile.uk
index b9b7456..4ee37cd 100644
--- a/Makefile.uk
+++ b/Makefile.uk
@@ -59,8 +59,6 @@ LIBPTHREAD-EMBEDDED_CFLAGS-y   += $(LIBPTHREAD-EMBEDDED_SUPPRESS_FLAGS) \
 	-Wno-pointer-to-int-cast -Wno-int-to-pointer-cast
 LIBPTHREAD-EMBEDDED_CXXFLAGS-y += $(LIBPTHREAD-EMBEDDED_SUPPRESS_FLAGS)
 
-LIBPTHREAD-EMBEDDED_EXPORTS = $(LIBPTHREAD-EMBEDDED_BASE)/exportsyms.uk
-
 ################################################################################
 # OS dependencies code - Glue between Unikraft and pthread-embedded
 ################################################################################
-- 
2.20.1



From minios-devel-bounces@lists.xenproject.org Tue Apr 14 15:29:34 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 14 Apr 2020 15:29: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 1jONVF-0003zX-86; Tue, 14 Apr 2020 15:29:33 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=53Wm=56=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1jONVE-0003z0-Ii
 for minios-devel@lists.xen.org; Tue, 14 Apr 2020 15:29:32 +0000
X-Inumbo-ID: bbef0102-7e64-11ea-b58d-bc764e2007e4
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id bbef0102-7e64-11ea-b58d-bc764e2007e4;
 Tue, 14 Apr 2020 15:29:30 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id E28E2104181;
 Tue, 14 Apr 2020 17:29:29 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (atlas-a.office.hd)
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 xLHX8ex8WiqC; Tue, 14 Apr 2020 17:29:29 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from puck.office.hd (puck.office.hd [192.168.24.91])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id B09BA1038EB
 for <minios-devel@lists.xen.org>; Tue, 14 Apr 2020 17:29:29 +0200 (CEST)
Received: from [10.7.0.24] (192.168.24.96) by puck.office.hd (192.168.24.91)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Tue, 14 Apr
 2020 17:29:29 +0200
Subject: Re: [UNIKRAFT/PTHREAD-EMBEDDED PATCH] Remove reference to
 non-existing exportsyms.uk file .
To: Felipe Huici <felipe.huici@neclab.eu>, <minios-devel@lists.xen.org>
References: <20200414151749.325-1-felipe.huici@neclab.eu>
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
Message-ID: <8f5aa41c-abb0-6025-d17b-5cf5daa4011b@neclab.eu>
Date: Tue, 14 Apr 2020 17:29:28 +0200
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:68.0)
 Gecko/20100101 Thunderbird/68.6.0
MIME-Version: 1.0
In-Reply-To: <20200414151749.325-1-felipe.huici@neclab.eu>
Content-Type: text/plain; charset="utf-8"; format=flowed
Content-Language: en-US
Content-Transfer-Encoding: 7bit
X-Originating-IP: [192.168.24.96]
X-ClientProxiedBy: titania.office.hd (192.168.24.89) To puck.office.hd
 (192.168.24.91)
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Thanks a lot for your fix!

Reviewed-by: Simon Kuenzer <simon.kuenzer@neclab.eu>

On 14.04.20 17:17, Felipe Huici wrote:
> This library used to have an exportsyms.uk file, but no longer
> does. When it was removed, the reference to it in Makefile.uk was not
> removed, leaving a dangling reference to a non-existing file. The
> recent Unikraft build system series turned this into a build error, so
> this patch fixes that by removing the line.
> 
> Signed-off-by: Felipe Huici <felipe.huici@neclab.eu>
> ---
>   Makefile.uk | 2 --
>   1 file changed, 2 deletions(-)
> 
> diff --git a/Makefile.uk b/Makefile.uk
> index b9b7456..4ee37cd 100644
> --- a/Makefile.uk
> +++ b/Makefile.uk
> @@ -59,8 +59,6 @@ LIBPTHREAD-EMBEDDED_CFLAGS-y   += $(LIBPTHREAD-EMBEDDED_SUPPRESS_FLAGS) \
>   	-Wno-pointer-to-int-cast -Wno-int-to-pointer-cast
>   LIBPTHREAD-EMBEDDED_CXXFLAGS-y += $(LIBPTHREAD-EMBEDDED_SUPPRESS_FLAGS)
>   
> -LIBPTHREAD-EMBEDDED_EXPORTS = $(LIBPTHREAD-EMBEDDED_BASE)/exportsyms.uk
> -
>   ################################################################################
>   # OS dependencies code - Glue between Unikraft and pthread-embedded
>   ################################################################################
> 


From minios-devel-bounces@lists.xenproject.org Tue Apr 14 18:45:48 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 14 Apr 2020 18:45: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 1jOQZ8-0006UN-HN; Tue, 14 Apr 2020 18:45:46 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=cvLm=56=gmail.com=felipehuici@srs-us1.protection.inumbo.net>)
 id 1jOQZ7-0006UH-9w
 for minios-devel@lists.xenproject.org; Tue, 14 Apr 2020 18:45:45 +0000
X-Inumbo-ID: 25fc74d8-7e80-11ea-b4f4-bc764e2007e4
Received: from mail-vs1-xe44.google.com (unknown [2607:f8b0:4864:20::e44])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 25fc74d8-7e80-11ea-b4f4-bc764e2007e4;
 Tue, 14 Apr 2020 18:45:44 +0000 (UTC)
Received: by mail-vs1-xe44.google.com with SMTP id a2so680949vsd.0
 for <minios-devel@lists.xenproject.org>; Tue, 14 Apr 2020 11:45:44 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=mime-version:references:in-reply-to:from:date:message-id:subject:to
 :cc; bh=3rbB0fWY2QpNEOKdVLVoxjxmO4kMgU9m6YZZSqDhujw=;
 b=pRYt+pd28Wyc0i+DwUpU7LegdUuoOgcJ+2pcesFdrFnMaamLIFvRVWEd8Y8TbNaul3
 wcwluiY3ses0qNbAZxxFjBBmGGB9YeVp0bg7wKBX+7QkHSVCtA+JKbBRMWwCo1gQkhOt
 s+KgAciVQHtV9UrrKHYkCwRm0KpfvTmdBEcW6oxShENeVw/37ibY7t6MSbVY4VCsiXaE
 KxXRI2/T49oUsOknk/EROsJa4hLcv0gSm26L8v2MH5805rgTiHh1w8wiD7hhg85LBfZu
 B80HMDIQYag9LXH2ZLbJl3trbPlm0sEBw514tsqkj4nPW1HMvegRSTq0LqIt5igRvnRU
 QC0A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:mime-version:references:in-reply-to:from:date
 :message-id:subject:to:cc;
 bh=3rbB0fWY2QpNEOKdVLVoxjxmO4kMgU9m6YZZSqDhujw=;
 b=FQN2dQDIAQixBN3Ou8C0IwDPZeSwBkcZTGIicUZtkN/g1UdqZlnb7qkyQBTGpiFBu0
 jfpIWIz1NZYbmuEz+iseIyOTD7RMxE5zwWyqmpi2dgcfCC2G4dOT9jKLXK3IFqMqB69R
 Rajo+htyWU9m19SyVoADjqUkPV4letJK50JmgeNX5Jrk9LvWOWdXogww2hjPupj9d2/C
 NRS/gFNxYzo4DURGcHl5kftdG8jSiZd6s4ESdqwaqu+VigE9LyOetSmIrl7koYi+vjOq
 O/3hkJwPH5YqOh4PnL9O4lUJFTtsVgGiNUMza33G+OlCvVeWqK1HTPdWl2Y2CKV5LBab
 A7LQ==
X-Gm-Message-State: AGi0PuYJdRNo1c9B7arRQK43Y6YUsZR2gY52/P6MYmUNU7xlg9ZtoRFN
 FKFy07DHGmpa+ZRNzDyOx0RIAKL+zZh8vx4WEEt5VjnuVD4=
X-Google-Smtp-Source: APiQypKiR6rExlcWPq7wIWmOaT12O/peZ+HLq0WR0Qe4riMoikwv38x9S8J8t00sSJ3k3q6nKrA3Uq0aspLy1kIqjR0=
X-Received: by 2002:a05:6102:3190:: with SMTP id
 c16mr1498341vsh.111.1586889944301; 
 Tue, 14 Apr 2020 11:45:44 -0700 (PDT)
MIME-Version: 1.0
References: <20200409113835.19807-1-gaulthier.gain@uliege.be>
In-Reply-To: <20200409113835.19807-1-gaulthier.gain@uliege.be>
From: "felipehuici ." <felipehuici@gmail.com>
Date: Tue, 14 Apr 2020 20:45:33 +0200
Message-ID: <CAEX4t-M2ucCgH5xg4CUNE8L8mgC6dcoGVkGCyuon9w7wiOL=2w@mail.gmail.com>
Subject: Re: [UNIKRAFT/LIB-OPENSSL] Makefile.uk: Fix OpenSSL source url
To: Gaulthier Gain <gaulthier.gain@uliege.be>
Content-Type: text/plain; charset="UTF-8"
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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.xenproject.org, Felipe Huici <felipe.huici@neclab.eu>,
 costin.lupu@cs.pub.ro
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Hi Gaulthier, this patch looks good, thanks.

Reviewed-by: Felipe Huici <felipe.huici@neclab.eu>

On Thu, Apr 9, 2020 at 1:39 PM <gaulthier.gain@uliege.be> wrote:
>
> From: gaulthier gain <gaulthier.gain@uliege.be>
>
> OpenSSL no longer provides version 1.1.1c via the specified url. We
> update the url to the old releases repo.
>
> Signed-off-by: gaulthier gain <gaulthier.gain@uliege.be>
> ---
>  Makefile.uk | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/Makefile.uk b/Makefile.uk
> index db3e92a..0be7307 100644
> --- a/Makefile.uk
> +++ b/Makefile.uk
> @@ -44,8 +44,10 @@ $(eval $(call addlib_s,libopensslglue,$(CONFIG_LIBOPENSSL)))
>  ################################################################################
>  # Original sources
>  ################################################################################
> -LIBOPENSSL_VERSION=1.1.1c
> -LIBOPENSSL_URL=https://www.openssl.org/source/openssl-$(LIBOPENSSL_VERSION).tar.gz
> +LIBOPENSSL_MAJOR=1.1.1
> +LIBOPENSSL_MINOR=c
> +LIBOPENSSL_VERSION=$(LIBOPENSSL_MAJOR)$(LIBOPENSSL_MINOR)
> +LIBOPENSSL_URL=https://www.openssl.org/source/old/$(LIBOPENSSL_MAJOR)/openssl-$(LIBOPENSSL_VERSION).tar.gz
>  LIBOPENSSL_PATCHDIR=$(LIBSSL_BASE)/patches
>  LIBOPENSSL_SUBDIR=openssl-$(LIBOPENSSL_VERSION)
>  $(eval $(call fetch,libssl,$(LIBOPENSSL_URL)))
> --
> 2.17.1
>
>


From minios-devel-bounces@lists.xenproject.org Wed Apr 15 06:16:56 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 15 Apr 2020 06:16: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 1jObLy-0003LY-NX; Wed, 15 Apr 2020 06:16:54 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=U2BP=57=gmail.com=murarugeorgec@srs-us1.protection.inumbo.net>)
 id 1jObLx-0003LS-7y
 for minios-devel@lists.xenproject.org; Wed, 15 Apr 2020 06:16:53 +0000
X-Inumbo-ID: b252f474-7ee0-11ea-b58d-bc764e2007e4
Received: from mail-wr1-x430.google.com (unknown [2a00:1450:4864:20::430])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id b252f474-7ee0-11ea-b58d-bc764e2007e4;
 Wed, 15 Apr 2020 06:16:52 +0000 (UTC)
Received: by mail-wr1-x430.google.com with SMTP id f13so17609798wrm.13
 for <minios-devel@lists.xenproject.org>; Tue, 14 Apr 2020 23:16:52 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=from:to:cc:subject:date:message-id;
 bh=f0QaQBTjjy58wn1y7c8Mt4lNkxQ9f6CvgXPhmLTjdCY=;
 b=c1SdbFuVHP6E9HuNjI/rZ0rV06KJ+ZfN1AaKZfP4GbXXdZioaLESemtziemccJXMLc
 1+Bacn/ZbdBLtm/3kkJn3pYVG353kWOVDbkyj1GBOtYrfmEMDjUGaCUZooNaKUiG+DVY
 3C2KjO3v5LsXdoy+upZRz0ih6ZvcPh6gqXQcg1Yk/1m4sg1YQRSeiT47PuOc8cjbkmoz
 UQtHx1gk39//QAkjLZeUA0QU1wQ9cHGA4MaxvbDBGpoUuEVQkvJ2877+sNpoejHW5MXA
 rHf1QVWwZa0dINsgpemWN08Cm5VDCam/m/SE75Kz8HqrcBMwOesBmYA9FKbHg9zLdRmZ
 vj3w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:from:to:cc:subject:date:message-id;
 bh=f0QaQBTjjy58wn1y7c8Mt4lNkxQ9f6CvgXPhmLTjdCY=;
 b=G/ACgbuawi55fw4ZTnct4CyEA1WSZrgaMIclK2eJZq94tLqF8B+0wSzse/xCkecqjh
 CkqCYu7GUy7l2fn5Jri3XMa74mgXMtUwlUUfuhyO0+CjFT8OsQQ2a7A0rM5QgBUcnVV8
 P6JnOxfNYpEy0tEe7/ug9qP7FnHfWA17L5L79sA8rRuMmjNhYZvqP3kNs3MmYFLclcou
 u3kv5fqd/5Hxg1NIA8bTcmbpZNjfua9Ei3Xh69qMbffyUA5bcEbuaeMbTvQ18uLk3AlG
 TtlueobdStURfTppZA9olJ4SWpUDcVl/JLoQLWs9WSwMMHKATQYjO84uWyxnrGT2JIlO
 ozrw==
X-Gm-Message-State: AGi0PubAwFEWcR7mJM27rMpF7JAGQEVLCYbzqccxQ3dabePm5ZZ70MCo
 AOzwMCldDjbUQxlziHTzVQQa9J5qh+8=
X-Google-Smtp-Source: APiQypLxaSGrUaJgJgA/WGIwoWoqoQEhsiccfmlrA2N9Nu5o17+qYH3APLEh2+mq4VoqjbObUYBfNA==
X-Received: by 2002:adf:cc8c:: with SMTP id p12mr27079992wrj.165.1586931411158; 
 Tue, 14 Apr 2020 23:16:51 -0700 (PDT)
Received: from localhost.localdomain ([2a02:a58:8506:aa00:4d45:a7f3:d8ce:7779])
 by smtp.googlemail.com with ESMTPSA id u7sm23432973wmg.41.2020.04.14.23.16.49
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 14 Apr 2020 23:16:50 -0700 (PDT)
From: George Muraru <murarugeorgec@gmail.com>
To: minios-devel@lists.xenproject.org
Subject: [UNIKRAFT/LIBTFLITE PATCH v2 0/1]
Date: Wed, 15 Apr 2020 09:15:57 +0300
Message-Id: <20200415061558.3416-1-murarugeorgec@gmail.com>
X-Mailer: git-send-email 2.17.1
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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, George Muraru <murarugeorgec@gmail.com>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Added the clrsbdi2 function as external function

George Muraru (1):
  Add clrsbdi2 needed by tensorflowlite

 Makefile.uk             |  5 +++++
 lib/builtins/clrsbdi2.c | 35 +++++++++++++++++++++++++++++++++++
 2 files changed, 40 insertions(+)
 create mode 100644 lib/builtins/clrsbdi2.c

-- 
2.17.1



From minios-devel-bounces@lists.xenproject.org Wed Apr 15 06:16:59 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 15 Apr 2020 06:16: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 1jObM3-0003M7-PQ; Wed, 15 Apr 2020 06:16:59 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=U2BP=57=gmail.com=murarugeorgec@srs-us1.protection.inumbo.net>)
 id 1jObM2-0003Lx-5Q
 for minios-devel@lists.xenproject.org; Wed, 15 Apr 2020 06:16:58 +0000
X-Inumbo-ID: b37f04a0-7ee0-11ea-83d8-bc764e2007e4
Received: from mail-wm1-x32c.google.com (unknown [2a00:1450:4864:20::32c])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id b37f04a0-7ee0-11ea-83d8-bc764e2007e4;
 Wed, 15 Apr 2020 06:16:54 +0000 (UTC)
Received: by mail-wm1-x32c.google.com with SMTP id h2so15926518wmb.4
 for <minios-devel@lists.xenproject.org>; Tue, 14 Apr 2020 23:16:54 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=from:to:cc:subject:date:message-id:in-reply-to:references;
 bh=Xc60jHGzX1rakcyLI8N82gZSoi/grsxVqCgIRgi+t44=;
 b=lUmLcqm048NCCDPNzwRc0TYGf7m2vG8Fjq8lyRkBcQwAkKhc31S2dl2hf2Pp3VEyH+
 upj+xmRpCrNIji5WZetVlv9uNNWHWPWXxslLcNjKYnUDBb4o31FfLJNZy/Znji66ft2J
 SU9r2De2g7y6kZLw8DEGa3euMixbBOisxh7CLNKLV24NQ15oIE3qraVHIT+J29hE/DZZ
 O0DGl1iUgVLUoKL4WktNgURx4Q8eAuSeIWtLxes5gwrMjTmJRKb+4i92Ih3X/g9M6s6x
 UrZwJf2JkI8DaLMdE2f6Ya1VvUnF9IKVM2neqU1SsY38/KT9Fqa2ZSveEK86lKNCYBmP
 SCjA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to
 :references;
 bh=Xc60jHGzX1rakcyLI8N82gZSoi/grsxVqCgIRgi+t44=;
 b=YyOhc4RODYcwxrCUcDjA6P9lsNscFE2GaQWXaCOySIfcwjPRkIE4ZTEvSy0cawaEXj
 ay5vh7DF5gCMqpMDi/BJQu8JTo7MJnM3tu5KDrIfFIw2XjlY5wMdhYnZx6z52WyKHJmT
 lY+qg1mQN+wuyP3RKmYbIW5fF74n7YJewqAcKu7ojwYWuqCfNbtTQJlWlovDxqJ3oQc0
 fBK/D+Vb6Cq7/w+mXd3axZz2fE8JvWtb2JCKKAgcOn06/EUKzDDjazp7lvi9wxELFt0U
 UrrMm0BAqMs0dZwLzl76kdP3qeEOAal07cyFjnNTB9pKYsPYPiXVraHvtlktkH4YSZ0K
 WsYA==
X-Gm-Message-State: AGi0PuaL2fBH3gDkuG88FpLnDlME+H2bmXWbHpBtqNYWNqB19ggNT9Hr
 GIm5vS4uxP7uSfH+eax+hPPQRV3qTmU=
X-Google-Smtp-Source: APiQypKWjBlehrHywezYExKSHD20P8AgPEF+a6fU5FyBfld5JiUfXmMKq4seyIjPd9s59fLSXBYjYw==
X-Received: by 2002:a1c:4e12:: with SMTP id g18mr3404275wmh.11.1586931413038; 
 Tue, 14 Apr 2020 23:16:53 -0700 (PDT)
Received: from localhost.localdomain ([2a02:a58:8506:aa00:4d45:a7f3:d8ce:7779])
 by smtp.googlemail.com with ESMTPSA id u7sm23432973wmg.41.2020.04.14.23.16.52
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 14 Apr 2020 23:16:52 -0700 (PDT)
From: George Muraru <murarugeorgec@gmail.com>
To: minios-devel@lists.xenproject.org
Subject: [UNIKRAFT/LIBTFLITE PATCH v2 1/1] Add clrsbdi2 needed by
 tensorflowlite
Date: Wed, 15 Apr 2020 09:15:58 +0300
Message-Id: <20200415061558.3416-2-murarugeorgec@gmail.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20200415061558.3416-1-murarugeorgec@gmail.com>
References: <20200415061558.3416-1-murarugeorgec@gmail.com>
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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, George Muraru <murarugeorgec@gmail.com>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Signed-off-by: George Muraru <murarugeorgec@gmail.com>
---
 Makefile.uk             |  5 +++++
 lib/builtins/clrsbdi2.c | 35 +++++++++++++++++++++++++++++++++++
 2 files changed, 40 insertions(+)
 create mode 100644 lib/builtins/clrsbdi2.c

diff --git a/Makefile.uk b/Makefile.uk
index 23f9e2e..dcb042b 100644
--- a/Makefile.uk
+++ b/Makefile.uk
@@ -62,8 +62,11 @@ LIBCOMPILER_RT_SRC=$(LIBCOMPILER_RT_ORIGIN)/$(LIBCOMPILER_RT_SUBDIR)
 # Library includes
 ################################################################################
 CINCLUDES-$(CONFIG_LIBCOMPILER_RT) += -I$(LIBCOMPILER_RT_SRC)/lib
+CINCLUDES-$(CONFIG_LIBCOMPILER_RT) += -I$(LIBCOMPILER_RT_SRC)/lib/builtins
 CINCLUDES-$(CONFIG_LIBCOMPILER_RT) += -I$(LIBCOMPILER_RT_SRC)/include
+
 CXXINCLUDES-$(CONFIG_LIBCOMPILER_RT) += -I$(LIBCOMPILER_RT_SRC)/lib
+CXXINCLUDES-$(CONFIG_LIBCOMPILER_RT) += -I$(LIBCOMPILER_RT_SRC)/lib/builtins
 CXXINCLUDES-$(CONFIG_LIBCOMPILER_RT) += -I$(LIBCOMPILER_RT_SRC)/include
 
 ################################################################################
@@ -238,3 +241,5 @@ LIBCOMPILER_RT_SRCS-$(CONFIG_ARCH_X86_64) += $(LIBCOMPILER_RT_SRC)/lib/builtins/
 ifdef CONFIG_LIBCOMPILER_RT_ATOMIC
 LIBCOMPILER_RT_SRCS-y += $(LIBCOMPILER_RT_SRC)/lib/builtins/atomic.c
 endif
+
+LIBCOMPILER_RT_SRCS-y += $(LIBCOMPILER_RT_BASE)/lib/builtins/clrsbdi2.c
diff --git a/lib/builtins/clrsbdi2.c b/lib/builtins/clrsbdi2.c
new file mode 100644
index 0000000..286d510
--- /dev/null
+++ b/lib/builtins/clrsbdi2.c
@@ -0,0 +1,35 @@
+/* Copyright (C) 2013-2017 Free Software Foundation, Inc.
+   This file is part of GCC.
+   GCC is free software; you can redistribute it and/or modify it under
+   the terms of the GNU General Public License as published by the Free
+   Software Foundation; either version 3, or (at your option) any later
+   version.
+   GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+   WARRANTY; without even the implied warranty of MERCHANTABILITY or
+   FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+   for more details.
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+   <http://www.gnu.org/licenses/>.
+*/
+
+#include <int_lib.h>
+
+/* Returns: Number of leading zeroes */
+
+
+COMPILER_RT_ABI di_int
+__clrsbdi2(di_int x)
+{
+    int ret;
+    if (x < 0LL)
+        x = ~x;
+    if (x == 0LL)
+        return 8 * sizeof (x) -1;
+    ret = __builtin_clz((du_int) x);
+    return ret - 1;
+}
-- 
2.17.1



From minios-devel-bounces@lists.xenproject.org Wed Apr 15 10:00:18 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 15 Apr 2020 10:00: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 1jOeq8-0000Kh-Uy; Wed, 15 Apr 2020 10:00: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=Gjij=57=csuc.cat=esteban.martinez@srs-us1.protection.inumbo.net>)
 id 1jOeq7-0000Kb-CK
 for minios-devel@lists.xen.org; Wed, 15 Apr 2020 10:00:15 +0000
X-Inumbo-ID: e5de4c5c-7eff-11ea-8a21-12813bfff9fa
Received: from gabarro.xs.cesca.cat (unknown [84.88.0.6])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTP
 id e5de4c5c-7eff-11ea-8a21-12813bfff9fa;
 Wed, 15 Apr 2020 10:00:13 +0000 (UTC)
DomainKey-Signature: s=csuc; d=csuc.cat; c=nofws; q=dns;
 h=Received:From:To:Cc:Subject:Date:Message-Id:X-Mailer;
 b=VJvx8SkBRxHrGknvRsUOK25yqZosvB4HrwlfttIJ1d7XpBDETT3bVTNI
 qiAa0yCDhxXop4ClB6zqNVR2gwC6RWFQe4hl8zPu9My+ecCqyTucvBD2I
 TnEgerOQMYt/WxilIqSjVMaGdOgJIYOa8xM8in/UNivkV7R0a1IhmfoCZ
 s=;
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple;
 d=csuc.cat; i=@csuc.cat; q=dns/txt; s=csuc;
 t=1586944813; x=1618480813;
 h=from:to:cc:subject:date:message-id;
 bh=AWBPPJPdnPYDZStlMZEULPGGoKkGeLZHvSc8/L7vSTk=;
 b=k+qL2hp5BsR2DQjGEVf031STrxzPYsyLwyG13l+PE/lequN6ESd6inuP
 0Y3oweSOpnDxvwIxvRAMi0QIHrv4T3sodH4+exRe/vCsQ0g6s+o01Izas
 smSJ/HiseeKS8r2LQu6uC9rp7HpU4kxwYvn8dxeFfyPHmOL3ZoUtLwpao 0=;
Received: from unknown (HELO localhost.localdomain) ([10.100.102.130])
 by smtp.xc.csuc.cat with ESMTP/TLS/DHE-RSA-AES128-GCM-SHA256;
 15 Apr 2020 12:00:09 +0200
From: Esteban Martinez <esteban.martinez@csuc.cat>
To: minios-devel@lists.xen.org
Subject: [UNIKRAFT/LCMS PATCH v4 0/2]  LCMS library porting
Date: Wed, 15 Apr 2020 11:59:47 +0200
Message-Id: <20200415095949.31463-1-esteban.martinez@csuc.cat>
X-Mailer: git-send-email 2.17.1
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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: Esteban Martinez <esteban.martinez@csuc.cat>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Support color management

Esteban Martinez (2):
  [LCMS PATCH] lcms: Add skeleton new library
  [LCMS PATCH] lcms: Add Makefile.uk

-- 
2.17.1



From minios-devel-bounces@lists.xenproject.org Wed Apr 15 10:00:22 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 15 Apr 2020 10: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 1jOeqE-0000LZ-10; Wed, 15 Apr 2020 10: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=Gjij=57=csuc.cat=esteban.martinez@srs-us1.protection.inumbo.net>)
 id 1jOeqC-0000LH-Ck
 for minios-devel@lists.xen.org; Wed, 15 Apr 2020 10:00:20 +0000
X-Inumbo-ID: e77ab438-7eff-11ea-8a21-12813bfff9fa
Received: from gabarro.xs.cesca.cat (unknown [84.88.0.6])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTP
 id e77ab438-7eff-11ea-8a21-12813bfff9fa;
 Wed, 15 Apr 2020 10:00:15 +0000 (UTC)
DomainKey-Signature: s=csuc; d=csuc.cat; c=nofws; q=dns;
 h=Received:From:To:Cc:Subject:Date:Message-Id:X-Mailer:
 In-Reply-To:References;
 b=kJ6p968MIsvs+S31HtMmjB225hy6HylhGZ90FnKhxSTA1Pl51L3RhTva
 PYoEgPoFyKONizPBUxgJz0PUtoVlJcVPsqhB+BU93vwMOolzPK3P4ot49
 8YAdxhHdfane/DuZpAYg8lgDc9USexNt9yDWDvkd4dUvP55gl1yTHmmFi
 4=;
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple;
 d=csuc.cat; i=@csuc.cat; q=dns/txt; s=csuc;
 t=1586944815; x=1618480815;
 h=from:to:cc:subject:date:message-id:in-reply-to: references;
 bh=19Yhea6RHfgs/6vdR3Tf4TGDIoqbmQfNPo5/Dpwv+4M=;
 b=qRf3UatWhkEbTo2wWkh6xoNXTrdMAi9FVrnE6GYNsYB6dfdbbonD4hzd
 5kAAZ4Oa9mN44XB8S9o+3NoZdFk7FvDdRsD5Ojqkrdir8GbzS2rYT819k
 2EbnKEIJ3gws14BHyPghz8s9hTA8rzSMCpsTw3SuxjvKVDZ7ZW8JPlmfk g=;
Received: from unknown (HELO localhost.localdomain) ([10.100.102.130])
 by smtp.xc.csuc.cat with ESMTP/TLS/DHE-RSA-AES128-GCM-SHA256;
 15 Apr 2020 12:00:12 +0200
From: Esteban Martinez <esteban.martinez@csuc.cat>
To: minios-devel@lists.xen.org
Subject: [UNIKRAFT/LCMS PATCH v4 1/2] [LCMS PATCH] lcms: Add skeleton new
 library
Date: Wed, 15 Apr 2020 11:59:48 +0200
Message-Id: <20200415095949.31463-2-esteban.martinez@csuc.cat>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20200415095949.31463-1-esteban.martinez@csuc.cat>
References: <20200415095949.31463-1-esteban.martinez@csuc.cat>
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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: Esteban Martinez <esteban.martinez@csuc.cat>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Signed-off-by: Esteban Martinez <esteban.martinez@csuc.cat>
---
 CODING_STYLE.md |  4 ++++
 CONTRIBUTING.md |  4 ++++
 COPYING.md      | 38 ++++++++++++++++++++++++++++++++++++++
 Config.uk       | 11 +++++++++++
 MAINTAINERS.md  | 11 +++++++++++
 README.md       |  7 +++++++
 6 files changed, 75 insertions(+)
 create mode 100644 CODING_STYLE.md
 create mode 100644 CONTRIBUTING.md
 create mode 100644 COPYING.md
 create mode 100644 Config.uk
 create mode 100644 MAINTAINERS.md
 create mode 100644 README.md

diff --git a/CODING_STYLE.md b/CODING_STYLE.md
new file mode 100644
index 0000000..5730041
--- /dev/null
+++ b/CODING_STYLE.md
@@ -0,0 +1,4 @@
+Coding Style
+============
+
+Please refer to the `CODING_STYLE.md` file in the main Unikraft repository.
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 0000000..14f6ac6
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,4 @@
+Contributing to Unikraft
+========================
+
+Please refer to the `CONTRIBUTING.md` file in the main Unikraft repository.
diff --git a/COPYING.md b/COPYING.md
new file mode 100644
index 0000000..1960df6
--- /dev/null
+++ b/COPYING.md
@@ -0,0 +1,38 @@
+License
+=======
+
+Unikraft lcms wrappers
+------------------------
+
+This repository contains wrapper code to build lcms with Unikraft.  The code
+is published as a mixture of BSD and MIT licences; each C code file in
+this repository should declare who is the copyright owner and under which terms
+and conditions the code is licensed. If such a licence note is missing, the
+following copyright notice will apply:
+
+	Copyright (c) 2020, Consorci de Serveis Universitaris de Catalunya (CSUC). All rights reserved.
+
+	Redistribution and use in source and binary forms, with or without
+	modification, are permitted provided that the following conditions
+	are met:
+
+	1. Redistributions of source code must retain the above copyright
+	   notice, this list of conditions and the following disclaimer.
+	2. Redistributions in binary form must reproduce the above copyright
+	   notice, this list of conditions and the following disclaimer in the
+	   documentation and/or other materials provided with the distribution.
+	3. Neither the name of the copyright holder nor the names of its
+	   contributors may be used to endorse or promote products derived from
+	   this software without specific prior written permission.
+
+	THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+	AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+	IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+	ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+	LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+	CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+	SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+	INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+	CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+	ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+	POSSIBILITY OF SUCH DAMAGE.
diff --git a/Config.uk b/Config.uk
new file mode 100644
index 0000000..edb3659
--- /dev/null
+++ b/Config.uk
@@ -0,0 +1,11 @@
+config LIBLCMS
+	bool "liblcms - Color management engine"
+	default n
+	select LIBNOLIBC if !HAVE_LIBC
+	select LIBUKDEBUG
+    select LIBUKALLOC
+    select LIBPTHREAD_EMBEDDED
+    select LIBNEWLIBC
+
+if LIBLCMS
+endif
diff --git a/MAINTAINERS.md b/MAINTAINERS.md
new file mode 100644
index 0000000..ed92fed
--- /dev/null
+++ b/MAINTAINERS.md
@@ -0,0 +1,11 @@
+Maintainers List
+================
+
+For notes on how to read this information, please refer to `MAINTAINERS.md` in
+the main Unikraft repository.
+
+	LCMS-UNIKRAFT
+	M:	Esteban Martinez <esteban.martinez@csuc.cat>
+	M:	Xavier Peralra <xavier.peralta@csuc.cat>
+	L:	minios-devel@lists.xen.org
+	F: *
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..41f3ea5
--- /dev/null
+++ b/README.md
@@ -0,0 +1,7 @@
+lcms for Unikraft
+=============================
+
+This is the port of lcms for Unikraft as external library.
+
+Please refer to the `README.md` as well as the documentation in the `doc/`
+subdirectory of the main unikraft repository.
-- 
2.17.1



From minios-devel-bounces@lists.xenproject.org Wed Apr 15 10:00:27 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 15 Apr 2020 10: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 1jOeqJ-0000MW-3R; Wed, 15 Apr 2020 10: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=Gjij=57=csuc.cat=esteban.martinez@srs-us1.protection.inumbo.net>)
 id 1jOeqH-0000MF-Cy
 for minios-devel@lists.xen.org; Wed, 15 Apr 2020 10:00:25 +0000
X-Inumbo-ID: e788ceec-7eff-11ea-8a21-12813bfff9fa
Received: from gabarro.xs.cesca.cat (unknown [84.88.0.6])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTP
 id e788ceec-7eff-11ea-8a21-12813bfff9fa;
 Wed, 15 Apr 2020 10:00:15 +0000 (UTC)
DomainKey-Signature: s=csuc; d=csuc.cat; c=nofws; q=dns;
 h=Received:From:To:Cc:Subject:Date:Message-Id:X-Mailer:
 In-Reply-To:References;
 b=ceoAz7+hMpcQ/Ao7pHjNNwc1v4rFr2A2B5axzBE3c0xDZS3NqdJ6KDUP
 c1wF/NOiQ+r0r/3fcmYg73QOKen/QNDKPSTn4LRHr2jdAgivtYO6Aw5XC
 O1YPw7wHri9bYAxeGOIKZ8hp69tVM2gHP/msLhu49KloMlWiKq1YLp4LB
 Q=;
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple;
 d=csuc.cat; i=@csuc.cat; q=dns/txt; s=csuc;
 t=1586944815; x=1618480815;
 h=from:to:cc:subject:date:message-id:in-reply-to: references;
 bh=RJEyQLRm0kZIYzUum4jwBjimDATza0gq0L9zuAUmkQc=;
 b=Lg/LKsCoyKZrKCABeE7+NuLUAFkoJtGMf9OM38MmBHF3hNKwANy/oFWu
 lGiPkQzfbDxp2lc/HaRtUNKR+mofs0pB2X8kIbqqzh+V7MuNdZYfsHQeX
 oYHxgyqAy1GBJXU5DU9nIHQeKAm+Osrs6uP2+bA/A0l6f2tdHMsOvIAd9 g=;
Received: from unknown (HELO localhost.localdomain) ([10.100.102.130])
 by smtp.xc.csuc.cat with ESMTP/TLS/DHE-RSA-AES128-GCM-SHA256;
 15 Apr 2020 12:00:15 +0200
From: Esteban Martinez <esteban.martinez@csuc.cat>
To: minios-devel@lists.xen.org
Subject: [UNIKRAFT/LCMS PATCH v4 2/2] [LCMS PATCH] lcms: Add Makefile.uk
Date: Wed, 15 Apr 2020 11:59:49 +0200
Message-Id: <20200415095949.31463-3-esteban.martinez@csuc.cat>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20200415095949.31463-1-esteban.martinez@csuc.cat>
References: <20200415095949.31463-1-esteban.martinez@csuc.cat>
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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: Esteban Martinez <esteban.martinez@csuc.cat>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Signed-off-by: Esteban Martinez <esteban.martinez@csuc.cat>
---
 Makefile.uk | 110 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 110 insertions(+)
 create mode 100644 Makefile.uk

diff --git a/Makefile.uk b/Makefile.uk
new file mode 100644
index 0000000..e6111ab
--- /dev/null
+++ b/Makefile.uk
@@ -0,0 +1,110 @@
+#  SPDX-License-Identifier: BSD-3-Clause
+#
+#  lcms Makefile.uk
+#
+#  Authors: Esteban Martinez <esteban.martinez@csuc.cat>
+#
+#  Copyright (c) 2019, Consorci de Serveis Universitaris de Catalunya (CSUC). All rights reserved.
+#
+#  Redistribution and use in source and binary forms, with or without
+#  modification, are permitted provided that the following conditions
+#  are met:
+#
+#  1. Redistributions of source code must retain the above copyright
+#     notice, this list of conditions and the following disclaimer.
+#  2. Redistributions in binary form must reproduce the above copyright
+#     notice, this list of conditions and the following disclaimer in the
+#     documentation and/or other materials provided with the distribution.
+#  3. Neither the name of the copyright holder nor the names of its
+#     contributors may be used to endorse or promote products derived from
+#     this software without specific prior written permission.
+#
+#  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+#  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+#  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+#  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+#  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+#  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+#  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+#  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+#  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+#  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+#  POSSIBILITY OF SUCH DAMAGE.
+#
+#  THIS HEADER MAY NOT BE EXTRACTED OR MODIFIED IN ANY WAY.
+#
+
+################################################################################
+# Library registration
+################################################################################
+$(eval $(call addlib_s,liblcms,$(CONFIG_LIBLCMS)))
+
+################################################################################
+# Original sources
+################################################################################
+LIBLCMS_VERSION=2.9
+LIBLCMS_URL=https://raw.githubusercontent.com/python-pillow/pillow-depends/master/lcms2-$(LIBLCMS_VERSION).tar.gz
+LIBLCMS_PATCHDIR=$(LIBLCMS_BASE)/patches
+LIBLCMS_SUBDIR=lcms2-$(LIBLCMS_VERSION)
+$(eval $(call fetch,liblcms,$(LIBLCMS_URL)))
+$(eval $(call patch,liblcms,$(LIBLCMS_PATCHDIR),$(LIBLCMS_SUBDIR)))
+
+################################################################################
+# Helpers
+################################################################################
+LIBLCMS_EXTRACTED = $(LIBLCMS_ORIGIN)/$(LIBLCMS_SUBDIR)
+
+################################################################################
+# Library includes
+################################################################################
+LIBLCMS_COMMON_INCLUDES-y      += -I$(LIBLCMS_EXTRACTED)/include
+LIBLCMS_COMMON_INCLUDES-y      += -I$(LIBLCMS_EXTRACTED)/src
+
+CINCLUDES-$(CONFIG_LIBLCMS)    += $(LIBLCMS_COMMON_INCLUDES-y)
+
+LIBLCMS_CINCLUDES   += -I$(LIBLCMS_EXTRACTED)
+
+################################################################################
+# Global flags
+################################################################################
+# Suppressed flags
+LIBLCMS_SUPPRESS_FLAGS += -Wno-unused-parameter \
+	-Wno-unused-variable -Wno-unused-value -Wno-unused-function \
+	-Wno-missing-field-initializers -Wno-implicit-fallthrough \
+	-Wno-misleading-indentation -Wno-stringop-truncation \
+	-Wno-strict-aliasing
+LIBLCMS_CFLAGS-y   += $(LIBLCMS_SUPPRESS_FLAGS) \
+	-Wno-pointer-to-int-cast -Wno-int-to-pointer-cast \
+	-Wno-misleading-indentation -Wno-stringop-truncation \
+	-Wno-strict-aliasing
+
+################################################################################
+# LCMS src
+################################################################################
+LIBLCMS_SRCS-y += $(LIBLCMS_EXTRACTED)/src/cmscnvrt.c
+LIBLCMS_SRCS-y += $(LIBLCMS_EXTRACTED)/src/cmserr.c
+LIBLCMS_SRCS-y += $(LIBLCMS_EXTRACTED)/src/cmsgamma.c
+LIBLCMS_SRCS-y += $(LIBLCMS_EXTRACTED)/src/cmsgmt.c
+LIBLCMS_SRCS-y += $(LIBLCMS_EXTRACTED)/src/cmsintrp.c
+LIBLCMS_SRCS-y += $(LIBLCMS_EXTRACTED)/src/cmsio0.c
+LIBLCMS_SRCS-y += $(LIBLCMS_EXTRACTED)/src/cmsio1.c
+LIBLCMS_SRCS-y += $(LIBLCMS_EXTRACTED)/src/cmslut.c
+LIBLCMS_SRCS-y += $(LIBLCMS_EXTRACTED)/src/cmsplugin.c
+LIBLCMS_SRCS-y += $(LIBLCMS_EXTRACTED)/src/cmssm.c
+LIBLCMS_SRCS-y += $(LIBLCMS_EXTRACTED)/src/cmsmd5.c
+LIBLCMS_SRCS-y += $(LIBLCMS_EXTRACTED)/src/cmsmtrx.c
+LIBLCMS_SRCS-y += $(LIBLCMS_EXTRACTED)/src/cmspack.c
+LIBLCMS_SRCS-y += $(LIBLCMS_EXTRACTED)/src/cmswtpnt.c
+LIBLCMS_SRCS-y += $(LIBLCMS_EXTRACTED)/src/cmsxform.c
+LIBLCMS_SRCS-y += $(LIBLCMS_EXTRACTED)/src/cmssamp.c
+LIBLCMS_SRCS-y += $(LIBLCMS_EXTRACTED)/src/cmsnamed.c
+LIBLCMS_SRCS-y += $(LIBLCMS_EXTRACTED)/src/cmscam02.c
+LIBLCMS_SRCS-y += $(LIBLCMS_EXTRACTED)/src/cmsvirt.c
+LIBLCMS_SRCS-y += $(LIBLCMS_EXTRACTED)/src/cmstypes.c
+LIBLCMS_SRCS-y += $(LIBLCMS_EXTRACTED)/src/cmscgats.c
+LIBLCMS_SRCS-y += $(LIBLCMS_EXTRACTED)/src/cmsps2.c
+LIBLCMS_SRCS-y += $(LIBLCMS_EXTRACTED)/src/cmsopt.c
+LIBLCMS_SRCS-y += $(LIBLCMS_EXTRACTED)/src/cmshalf.c
+LIBLCMS_SRCS-y += $(LIBLCMS_EXTRACTED)/src/cmsalpha.c
+LIBLCMS_SRCS-y += $(LIBLCMS_EXTRACTED)/src/cmspcs.c
+
-- 
2.17.1



From minios-devel-bounces@lists.xenproject.org Wed Apr 15 10:58:57 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 15 Apr 2020 10:58: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 1jOfkt-0005YJ-U5; Wed, 15 Apr 2020 10:58:55 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=G0dT=57=uliege.be=gaulthier.gain@srs-us1.protection.inumbo.net>)
 id 1jOfkr-0005YE-Kr
 for minios-devel@lists.xenproject.org; Wed, 15 Apr 2020 10:58:54 +0000
X-Inumbo-ID: 116670f4-7f08-11ea-b58d-bc764e2007e4
Received: from serv108.segi.ulg.ac.be (unknown [139.165.32.111])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 116670f4-7f08-11ea-b58d-bc764e2007e4;
 Wed, 15 Apr 2020 10:58:42 +0000 (UTC)
Received: from sauron.run.montefiore.ulg.ac.be
 (sauron.run.montefiore.ulg.ac.be [139.165.223.31])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by serv108.segi.ulg.ac.be (Postfix) with ESMTPSA id C5EF2200BFEC;
 Wed, 15 Apr 2020 12:58:40 +0200 (CEST)
DKIM-Filter: OpenDKIM Filter v2.11.0 serv108.segi.ulg.ac.be C5EF2200BFEC
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=uliege.be;
 s=ulg20190529; t=1586948320;
 bh=e6R21IJ4EjGxlO76S8Z9DIu8SxLC3omfU6Z5/PNij68=;
 h=From:To:Cc:Subject:Date:From;
 b=BDIgTtYSMrT0qk4CN7IBR8FuT/56TylsxJfYR8db1gY//pz8hDnZnLSz+JYmdZmHL
 vHbOAx96qSfX0/mdPVddMID7WnQrhjV1h75h0J5vysuaVpRs91CarK/Gg4sexOFWAD
 SlRlHG37JKEFBK1l/QfvuDvBZUQrJra213UZDlgva0eZAtLemXnjCciFZH9ui2ztGZ
 k9FhiVx67MTq6Ayy1+3XggX7BE4pvuWeY2TNcENd5M4WZn2rQQbDEDeKUibiQL24rb
 fkKq4s9nsiJMpXMBcXuOlqzyVoztJBnfmUrpqD+ySp+kqxdcJe+ofGdGz9pIKY44pV
 l52T50IyRuAOA==
From: gaulthier.gain@uliege.be
To: minios-devel@lists.xenproject.org
Subject: [UNIKRAFT/LIB-PCRE] Makefile.uk: Add -f argument to ln
Date: Wed, 15 Apr 2020 10:58:27 +0000
Message-Id: <20200415105827.2591-1-gaulthier.gain@uliege.be>
X-Mailer: git-send-email 2.17.1
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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, gaulthier gain <gaulthier.gain@uliege.be>,
 costin.lupu@cs.pub.ro
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

From: gaulthier gain <gaulthier.gain@uliege.be>

During the creation of the "pcre_chartables.c" symlink, an error
can appear if the file already exists. This patch fixes this issue
by adding the -f option which removes existing destination files.

Signed-off-by: gaulthier gain <gaulthier.gain@uliege.be>
---
 Makefile.uk | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Makefile.uk b/Makefile.uk
index fee51c8..d097ede 100644
--- a/Makefile.uk
+++ b/Makefile.uk
@@ -123,7 +123,7 @@ $(LIBPCRE_EXTRACTED)/config.status: $(LIBPCRE_BUILD)/.origin
 # Create pcre_chartables.c symlink
 $(LIBPCRE_EXTRACTED)/pcre_chartables.c: $(LIBPCRE_EXTRACTED)/config.status
 	$(call verbose_cmd,LINK,libpcre: $(notdir $@), \
-		cd $(LIBPCRE_EXTRACTED) && ln -s pcre_chartables.c.dist $@)
+		cd $(LIBPCRE_EXTRACTED) && ln -fs pcre_chartables.c.dist $@)
 
 LIBPCRE_PREPARED_DEPS = \
 	$(LIBPCRE_EXTRACTED)/config.status \
-- 
2.17.1



From minios-devel-bounces@lists.xenproject.org Wed Apr 15 13:47:21 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 15 Apr 2020 13:47: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 1jOiNq-0005Sv-Ra; Wed, 15 Apr 2020 13:47:18 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=urtZ=57=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1jOiNp-0005Sq-BY
 for minios-devel@lists.xenproject.org; Wed, 15 Apr 2020 13:47:17 +0000
X-Inumbo-ID: 9ce23f0c-7f1f-11ea-b4f4-bc764e2007e4
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 9ce23f0c-7f1f-11ea-b4f4-bc764e2007e4;
 Wed, 15 Apr 2020 13:47:14 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id B57EDF2024;
 Wed, 15 Apr 2020 15:47:13 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (atlas-b.office.hd)
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 WrLnear-CuoV; Wed, 15 Apr 2020 15:47:13 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from titania.office.hd (titania.office.hd [192.168.24.89])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 8B2CBF2008;
 Wed, 15 Apr 2020 15:47:07 +0200 (CEST)
Received: from puck.office.hd (192.168.24.91) by titania.office.hd
 (192.168.24.89) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Wed, 15 Apr
 2020 15:47:07 +0200
Received: from puck.office.hd ([192.168.126.12]) by puck.office.hd
 ([192.168.126.12]) with mapi id 15.01.1713.009; Wed, 15 Apr 2020 15:47:07
 +0200
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: "gaulthier.gain@uliege.be" <gaulthier.gain@uliege.be>,
 "minios-devel@lists.xenproject.org" <minios-devel@lists.xenproject.org>
Subject: Re: [UNIKRAFT/LIB-PCRE] Makefile.uk: Add -f argument to ln
Thread-Topic: [UNIKRAFT/LIB-PCRE] Makefile.uk: Add -f argument to ln
Thread-Index: AQHWExUPX+9lr8EpX0aqgjddnLGbq6h6MokA
Date: Wed, 15 Apr 2020 13:47:06 +0000
Message-ID: <03AF874B-6E87-4137-90DA-96191E843A42@neclab.eu>
References: <20200415105827.2591-1-gaulthier.gain@uliege.be>
In-Reply-To: <20200415105827.2591-1-gaulthier.gain@uliege.be>
Accept-Language: en-GB, gl-ES, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
user-agent: Microsoft-MacOutlook/10.10.14.200307
x-originating-ip: [192.168.24.96]
Content-Type: text/plain; charset="utf-8"
Content-ID: <E75F9C03FA7DE446ACB0F169434492B4@office.hd>
Content-Transfer-Encoding: base64
MIME-Version: 1.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: Felipe Huici <Felipe.Huici@neclab.eu>,
 "costin.lupu@cs.pub.ro" <costin.lupu@cs.pub.ro>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

SGkgR2F1bHRoaWVyLA0KDQp0aGFua3MgYSBsb3QgZm9yIHlvdXIgd29yay4gQSBicmllZiBjb21t
ZW50Og0KDQrvu79PbiAxNS4wNC4yMCwgMTM6MDAsICJNaW5pb3MtZGV2ZWwgb24gYmVoYWxmIG9m
IGdhdWx0aGllci5nYWluQHVsaWVnZS5iZSIgPG1pbmlvcy1kZXZlbC1ib3VuY2VzQGxpc3RzLnhl
bnByb2plY3Qub3JnIG9uIGJlaGFsZiBvZiBnYXVsdGhpZXIuZ2FpbkB1bGllZ2UuYmU+IHdyb3Rl
Og0KDQogICAgRnJvbTogZ2F1bHRoaWVyIGdhaW4gPGdhdWx0aGllci5nYWluQHVsaWVnZS5iZT4N
CiAgICANCiAgICBEdXJpbmcgdGhlIGNyZWF0aW9uIG9mIHRoZSAicGNyZV9jaGFydGFibGVzLmMi
IHN5bWxpbmssIGFuIGVycm9yDQogICAgY2FuIGFwcGVhciBpZiB0aGUgZmlsZSBhbHJlYWR5IGV4
aXN0cy4gVGhpcyBwYXRjaCBmaXhlcyB0aGlzIGlzc3VlDQogICAgYnkgYWRkaW5nIHRoZSAtZiBv
cHRpb24gd2hpY2ggcmVtb3ZlcyBleGlzdGluZyBkZXN0aW5hdGlvbiBmaWxlcy4NCiAgICANCiAg
ICBTaWduZWQtb2ZmLWJ5OiBnYXVsdGhpZXIgZ2FpbiA8Z2F1bHRoaWVyLmdhaW5AdWxpZWdlLmJl
Pg0KICAgIC0tLQ0KICAgICBNYWtlZmlsZS51ayB8IDIgKy0NCiAgICAgMSBmaWxlIGNoYW5nZWQs
IDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pDQogICAgDQogICAgZGlmZiAtLWdpdCBhL01h
a2VmaWxlLnVrIGIvTWFrZWZpbGUudWsNCiAgICBpbmRleCBmZWU1MWM4Li5kMDk3ZWRlIDEwMDY0
NA0KICAgIC0tLSBhL01ha2VmaWxlLnVrDQogICAgKysrIGIvTWFrZWZpbGUudWsNCiAgICBAQCAt
MTIzLDcgKzEyMyw3IEBAICQoTElCUENSRV9FWFRSQUNURUQpL2NvbmZpZy5zdGF0dXM6ICQoTElC
UENSRV9CVUlMRCkvLm9yaWdpbg0KICAgICAjIENyZWF0ZSBwY3JlX2NoYXJ0YWJsZXMuYyBzeW1s
aW5rDQogICAgICQoTElCUENSRV9FWFRSQUNURUQpL3BjcmVfY2hhcnRhYmxlcy5jOiAkKExJQlBD
UkVfRVhUUkFDVEVEKS9jb25maWcuc3RhdHVzDQogICAgIAkkKGNhbGwgdmVyYm9zZV9jbWQsTElO
SyxsaWJwY3JlOiAkKG5vdGRpciAkQCksIFwNCiAgICAtCQljZCAkKExJQlBDUkVfRVhUUkFDVEVE
KSAmJiBsbiAtcyBwY3JlX2NoYXJ0YWJsZXMuYy5kaXN0ICRAKQ0KICAgICsJCWNkICQoTElCUENS
RV9FWFRSQUNURUQpICYmIGxuIC1mcyBwY3JlX2NoYXJ0YWJsZXMuYy5kaXN0ICRAKQ0KDQpDYW4g
eW91IHVzZSAkKEhPU1RMTikgaW5zdGVhZD8gVGhlIGxhYmVsIHNob3VsZCBhbHNvIGJlIExOIGlu
c3RlYWQgb2YgTElOSy4NCg0KICAgICANCiAgICAgTElCUENSRV9QUkVQQVJFRF9ERVBTID0gXA0K
ICAgICAJJChMSUJQQ1JFX0VYVFJBQ1RFRCkvY29uZmlnLnN0YXR1cyBcDQogICAgLS0gDQogICAg
Mi4xNy4xDQogICAgDQogICAgDQpUaGFua3MgYSBsb3QsDQoNClNpbW9uDQoNCg==


From minios-devel-bounces@lists.xenproject.org Thu Apr 16 10:11:46 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 16 Apr 2020 10:11: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 1jP1Um-0008TC-0Y; Thu, 16 Apr 2020 10:11:44 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=GRgf=6A=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1jP1Uk-0008T7-Ex
 for minios-devel@lists.xen.org; Thu, 16 Apr 2020 10:11:42 +0000
X-Inumbo-ID: aa0eba74-7fca-11ea-83d8-bc764e2007e4
Received: from mailer1.neclab.eu (unknown [195.37.70.40])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id aa0eba74-7fca-11ea-83d8-bc764e2007e4;
 Thu, 16 Apr 2020 10:11:40 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer1.neclab.eu (Postfix) with ESMTP id DF457104140;
 Thu, 16 Apr 2020 12:11:39 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (atlas-a.office.hd)
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 2G8597yNhxtL; Thu, 16 Apr 2020 12:11:39 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from puck.office.hd (puck.office.hd [192.168.24.91])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by mailer1.neclab.eu (Postfix) with ESMTPS id BC2231040DA
 for <minios-devel@lists.xen.org>; Thu, 16 Apr 2020 12:11:39 +0200 (CEST)
Received: from localhost (192.168.24.96) by puck.office.hd (192.168.24.91)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Thu, 16 Apr
 2020 12:11:39 +0200
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: <minios-devel@lists.xen.org>
Subject: [UNIKRAFT PATCH 0/3] lib/syscall_shim: Enhancements
Date: Thu, 16 Apr 2020 12:11:33 +0200
Message-ID: <20200416101136.8557-1-simon.kuenzer@neclab.eu>
X-Mailer: git-send-email 2.20.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [192.168.24.96]
X-ClientProxiedBy: oberon.office.hd (192.168.24.90) To puck.office.hd
 (192.168.24.91)
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>,
 Simon Kuenzer <simon.kuenzer@neclab.eu>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

This patch series contains a couple of enhancments to lib/syscall_shim
API that are useful for porting applications to Unikraft.

Simon Kuenzer (3):
  lib/syscall_shim: Provide `uk_syscall_r_fn()`
  lib/syscall_shim: handler: Take only required number of arguments
  lib/syscall_shim: Provide `uk_syscall6()`, `uk_syscall6_r()`

 lib/syscall_shim/Makefile.uk                  | 20 ++++++++
 lib/syscall_shim/{ => arch}/regmap_linuxabi.h |  0
 lib/syscall_shim/gen_uk_syscall.awk           | 15 ++----
 lib/syscall_shim/gen_uk_syscall6.awk          | 39 ++++++++++++++++
 lib/syscall_shim/gen_uk_syscall6_r.awk        | 39 ++++++++++++++++
 lib/syscall_shim/gen_uk_syscall_r.awk         | 15 ++----
 lib/syscall_shim/gen_uk_syscall_r_fn.awk      | 24 ++++++++++
 lib/syscall_shim/include/uk/syscall.h         | 24 ++++++++--
 lib/syscall_shim/uk_syscall.c.in_end          | 28 +++--------
 lib/syscall_shim/uk_syscall6_r.c.in_end       | 18 ++++++++
 lib/syscall_shim/uk_syscall_r.c.in_end        | 46 +++----------------
 11 files changed, 180 insertions(+), 88 deletions(-)
 rename lib/syscall_shim/{ => arch}/regmap_linuxabi.h (100%)
 create mode 100644 lib/syscall_shim/gen_uk_syscall6.awk
 create mode 100644 lib/syscall_shim/gen_uk_syscall6_r.awk
 create mode 100644 lib/syscall_shim/gen_uk_syscall_r_fn.awk
 create mode 100644 lib/syscall_shim/uk_syscall6_r.c.in_end

-- 
2.20.1



From minios-devel-bounces@lists.xenproject.org Thu Apr 16 10:11:52 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 16 Apr 2020 10:11: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 1jP1Uu-0008Tj-2e; Thu, 16 Apr 2020 10:11:52 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=GRgf=6A=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1jP1Us-0008Ta-PY
 for minios-devel@lists.xen.org; Thu, 16 Apr 2020 10:11:50 +0000
X-Inumbo-ID: af2bbb2e-7fca-11ea-b58d-bc764e2007e4
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id af2bbb2e-7fca-11ea-b58d-bc764e2007e4;
 Thu, 16 Apr 2020 10:11:49 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 7FD46F200E;
 Thu, 16 Apr 2020 12:11:48 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (atlas-b.office.hd)
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 8_q9osEZPzTF; Thu, 16 Apr 2020 12:11:48 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from puck.office.hd (puck.office.hd [192.168.24.91])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 49245F200D
 for <minios-devel@lists.xen.org>; Thu, 16 Apr 2020 12:11:46 +0200 (CEST)
Received: from localhost (192.168.24.96) by puck.office.hd (192.168.24.91)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Thu, 16 Apr
 2020 12:11:42 +0200
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: <minios-devel@lists.xen.org>
Subject: [UNIKRAFT PATCH 1/3] lib/syscall_shim: Provide `uk_syscall_r_fn()`
Date: Thu, 16 Apr 2020 12:11:34 +0200
Message-ID: <20200416101136.8557-2-simon.kuenzer@neclab.eu>
X-Mailer: git-send-email 2.20.1
In-Reply-To: <20200416101136.8557-1-simon.kuenzer@neclab.eu>
References: <20200416101136.8557-1-simon.kuenzer@neclab.eu>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [192.168.24.96]
X-ClientProxiedBy: puck.office.hd (192.168.24.91) To puck.office.hd
 (192.168.24.91)
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>,
 Simon Kuenzer <simon.kuenzer@neclab.eu>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

`uk_syscall_r_fn()` returns a the raw system call handler as function
pointer for a given system call.

Signed-off-by: Simon Kuenzer <simon.kuenzer@neclab.eu>
---
 lib/syscall_shim/Makefile.uk             |  7 +++++++
 lib/syscall_shim/gen_uk_syscall_r_fn.awk | 24 ++++++++++++++++++++++++
 lib/syscall_shim/include/uk/syscall.h    | 12 ++++++++++++
 3 files changed, 43 insertions(+)
 create mode 100644 lib/syscall_shim/gen_uk_syscall_r_fn.awk

diff --git a/lib/syscall_shim/Makefile.uk b/lib/syscall_shim/Makefile.uk
index d3bfe4f8..ad4c8188 100644
--- a/lib/syscall_shim/Makefile.uk
+++ b/lib/syscall_shim/Makefile.uk
@@ -10,6 +10,7 @@ LIBSYSCALL_SHIM_PHONY_SRC_NEW := $(addsuffix .new, $(LIBSYSCALL_SHIM_PHONY_SRC))
 LIBSYSCALL_SHIM_GEN_SRC := $(LIBSYSCALL_SHIM_INCLUDES_PATH)/provided_syscalls.h
 LIBSYSCALL_SHIM_GEN_SRC += $(LIBSYSCALL_SHIM_BUILD)/uk_syscall.c
 LIBSYSCALL_SHIM_GEN_SRC += $(LIBSYSCALL_SHIM_BUILD)/uk_syscall_r.c
+LIBSYSCALL_SHIM_GEN_SRC += $(LIBSYSCALL_SHIM_BUILD)/uk_syscall_r_fn.c
 LIBSYSCALL_SHIM_GEN_SRC += $(LIBSYSCALL_SHIM_BUILD)/uk_syscall_name.c
 LIBSYSCALL_SHIM_GEN_SRC += $(LIBSYSCALL_SHIM_BUILD)/uk_syscall_name_p.c
 LIBSYSCALL_SHIM_GEN_SRC += $(LIBSYSCALL_SHIM_BUILD)/libc_stubs.c
@@ -57,6 +58,10 @@ $(LIBSYSCALL_SHIM_BUILD)/uk_syscall_r.c: $(LIBSYSCALL_SHIM_BUILD)/provided_sysca
 		$(AWK) -F '-' -f $(LIBSYSCALL_SHIM_BASE)/gen_uk_syscall_r.awk $< > $@ && \
 		cat $(LIBSYSCALL_SHIM_BASE)/uk_syscall_r.c.in_end >> $@)
 
+$(LIBSYSCALL_SHIM_BUILD)/uk_syscall_r_fn.c: $(LIBSYSCALL_SHIM_BUILD)/provided_syscalls.h.in $(LIBSYSCALL_SHIM_BASE)/gen_uk_syscall_r_fn.awk
+	$(call build_cmd,GEN,libsyscall_shim,$(notdir $@), \
+		$(AWK) -F '-' -f $(LIBSYSCALL_SHIM_BASE)/gen_uk_syscall_r_fn.awk $< > $@)
+
 $(LIBSYSCALL_SHIM_BUILD)/uk_syscall_name.c: $(LIBSYSCALL_SHIM_BASE)/gen_uk_syscall_name.awk $(LIBSYSCALL_SHIM_TEMPL)
 	$(call build_cmd,GEN,libsyscall_shim,$(notdir $@), \
 		$(AWK) -f $(LIBSYSCALL_SHIM_BASE)/gen_uk_syscall_name.awk \
@@ -89,6 +94,8 @@ LIBSYSCALL_SHIM_CINCLUDES += -I$(LIBSYSCALL_SHIM_BASE)
 
 LIBSYSCALL_SHIM_SRCS-y += $(LIBSYSCALL_SHIM_BUILD)/uk_syscall.c
 LIBSYSCALL_SHIM_SRCS-y += $(LIBSYSCALL_SHIM_BUILD)/uk_syscall_r.c
+LIBSYSCALL_SHIM_SRCS-y += $(LIBSYSCALL_SHIM_BUILD)/uk_syscall_r_fn.c
+LIBSYSCALL_SHIM_UK_SYSCALL_R_FN_FLAGS+=-Wno-cast-function-type
 LIBSYSCALL_SHIM_SRCS-y += $(LIBSYSCALL_SHIM_BUILD)/uk_syscall_name.c
 LIBSYSCALL_SHIM_SRCS-y += $(LIBSYSCALL_SHIM_BUILD)/uk_syscall_name_p.c
 LIBSYSCALL_SHIM_SRCS-$(CONFIG_LIBSYSCALL_SHIM_LIBCSTUBS) += $(LIBSYSCALL_SHIM_BUILD)/libc_stubs.c
diff --git a/lib/syscall_shim/gen_uk_syscall_r_fn.awk b/lib/syscall_shim/gen_uk_syscall_r_fn.awk
new file mode 100644
index 00000000..767b902d
--- /dev/null
+++ b/lib/syscall_shim/gen_uk_syscall_r_fn.awk
@@ -0,0 +1,24 @@
+BEGIN {
+	print "/* Auto generated file. DO NOT EDIT */\n"
+
+	print "#include <uk/syscall.h>"
+	print "#include <uk/print.h>"
+	print "#include <stdlib.h>\n"
+
+	print "long (*uk_syscall_r_fn(long nr))(void)\n{"
+	print "\tswitch (nr) {"
+}
+
+/[a-zA-Z0-9]+-[0-9]+/{
+	name = $1
+	sys_name = "SYS_" name
+	uk_syscall_r = "uk_syscall_r_" name
+	printf "\tcase %s:\n", sys_name;
+	printf "\t\treturn (long (*)(void)) %s;\n", uk_syscall_r;
+}
+
+END {
+	print "\tdefault:"
+	print "\t\treturn NULL;"
+	print "\t}\n}"
+}
diff --git a/lib/syscall_shim/include/uk/syscall.h b/lib/syscall_shim/include/uk/syscall.h
index dc7bc7ef..078129e5 100644
--- a/lib/syscall_shim/include/uk/syscall.h
+++ b/lib/syscall_shim/include/uk/syscall.h
@@ -337,6 +337,18 @@ const char *uk_syscall_name(long nr);
  */
 const char *uk_syscall_name_p(long nr);
 
+/**
+ * Returns the according raw system call handler as function pointer for the
+ * given system call number. If the system call handler is not available,
+ * NULL is returned.
+ * @param nr
+ *  System call number of current architecture
+ * @return
+ *  - Function pointer to raw system call handler
+ *  - (NULL): if system call handler is not provided
+ */
+long (*uk_syscall_r_fn(long nr))(void);
+
 #endif /* CONFIG_LIBSYSCALL_SHIM */
 
 #endif /* __UK_SYSCALL_H__ */
-- 
2.20.1



From minios-devel-bounces@lists.xenproject.org Thu Apr 16 10:11:54 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 16 Apr 2020 10:11: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 1jP1Uw-0008Ux-4E; Thu, 16 Apr 2020 10:11:54 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=GRgf=6A=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1jP1Uu-0008U2-L4
 for minios-devel@lists.xen.org; Thu, 16 Apr 2020 10:11:52 +0000
X-Inumbo-ID: b0654488-7fca-11ea-83d8-bc764e2007e4
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id b0654488-7fca-11ea-83d8-bc764e2007e4;
 Thu, 16 Apr 2020 10:11:51 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 8BA1BF2028;
 Thu, 16 Apr 2020 12:11:50 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (atlas-b.office.hd)
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 RhCSjVLDQzlq; Thu, 16 Apr 2020 12:11:50 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from puck.office.hd (puck.office.hd [192.168.24.91])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 6349FF200D
 for <minios-devel@lists.xen.org>; Thu, 16 Apr 2020 12:11:48 +0200 (CEST)
Received: from localhost (192.168.24.96) by puck.office.hd (192.168.24.91)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Thu, 16 Apr
 2020 12:11:43 +0200
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: <minios-devel@lists.xen.org>
Subject: [UNIKRAFT PATCH 2/3] lib/syscall_shim: handler: Take only required
 number of arguments
Date: Thu, 16 Apr 2020 12:11:35 +0200
Message-ID: <20200416101136.8557-3-simon.kuenzer@neclab.eu>
X-Mailer: git-send-email 2.20.1
In-Reply-To: <20200416101136.8557-1-simon.kuenzer@neclab.eu>
References: <20200416101136.8557-1-simon.kuenzer@neclab.eu>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [192.168.24.96]
X-ClientProxiedBy: titania.office.hd (192.168.24.89) To puck.office.hd
 (192.168.24.91)
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>,
 Simon Kuenzer <simon.kuenzer@neclab.eu>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Improves the `uk_syscall()`,  `uk_syscall_r()`, `uk_vsyscall()`, and
`uk_vsyscall_r()` implementations in a way that only the number of
required arguments are taken from the stack.

Signed-off-by: Simon Kuenzer <simon.kuenzer@neclab.eu>
---
 lib/syscall_shim/gen_uk_syscall.awk    | 15 +++---------
 lib/syscall_shim/gen_uk_syscall_r.awk  | 15 +++---------
 lib/syscall_shim/include/uk/syscall.h  |  8 +++---
 lib/syscall_shim/uk_syscall.c.in_end   | 28 +++++----------------
 lib/syscall_shim/uk_syscall_r.c.in_end | 34 +++++++-------------------
 5 files changed, 27 insertions(+), 73 deletions(-)

diff --git a/lib/syscall_shim/gen_uk_syscall.awk b/lib/syscall_shim/gen_uk_syscall.awk
index 2f2e1fa9..fb5be369 100644
--- a/lib/syscall_shim/gen_uk_syscall.awk
+++ b/lib/syscall_shim/gen_uk_syscall.awk
@@ -5,15 +5,8 @@ BEGIN {
 	print "#include <uk/syscall.h>"
 	print "#include <uk/print.h>\n"
 
-	printf "static inline long __uk_syscall(long nr, "
-	for (i = 1; i < max_args; i++)
-		printf "long arg%d, ",i
-	printf "long arg%d)\n{\n", max_args
-
-	for (i = 1; i <= max_args; i++)
-		printf "\t(void) arg%d;\n", i
-
-	print "\n\tswitch (nr) {"
+	print "long uk_vsyscall(long nr, va_list arg)\n{"
+	print "\tswitch (nr) {"
 }
 
 
@@ -24,9 +17,9 @@ BEGIN {
 	printf "\tcase %s:\n", sys_name;
 	printf "\t\treturn uk_syscall_e_%s(", name;
 	for (i = 1; i < args_nr; i++)
-		printf("arg%d, ", i)
+		printf("va_arg(arg, long), ")
 	if (args_nr > 0)
-		printf("arg%d", args_nr)
+		printf("va_arg(arg, long)")
 	printf(");\n")
 }
 
diff --git a/lib/syscall_shim/gen_uk_syscall_r.awk b/lib/syscall_shim/gen_uk_syscall_r.awk
index c591fc47..2074996f 100644
--- a/lib/syscall_shim/gen_uk_syscall_r.awk
+++ b/lib/syscall_shim/gen_uk_syscall_r.awk
@@ -5,15 +5,8 @@ BEGIN {
 	print "#include <uk/syscall.h>"
 	print "#include <uk/print.h>\n"
 
-	printf "static inline long __uk_syscall_r(long nr, "
-	for (i = 1; i < max_args; i++)
-		printf "long arg%d, ",i
-	printf "long arg%d)\n{\n", max_args
-
-	for (i = 1; i <= max_args; i++)
-		printf "\t(void) arg%d;\n", i
-
-	print "\n\tswitch (nr) {"
+	print "long uk_vsyscall_r(long nr, va_list arg)\n{"
+	print "\tswitch (nr) {"
 }
 
 
@@ -25,9 +18,9 @@ BEGIN {
 	printf "\tcase %s:\n", sys_name;
 	printf "\t\treturn %s(", uk_syscall_r;
 	for (i = 1; i < args_nr; i++)
-		printf("arg%d, ", i)
+		printf("va_arg(arg, long), ")
 	if (args_nr > 0)
-		printf("arg%d", args_nr)
+		printf("va_arg(arg, long)")
 	printf(");\n")
 }
 
diff --git a/lib/syscall_shim/include/uk/syscall.h b/lib/syscall_shim/include/uk/syscall.h
index 078129e5..3d2e4e89 100644
--- a/lib/syscall_shim/include/uk/syscall.h
+++ b/lib/syscall_shim/include/uk/syscall.h
@@ -288,8 +288,8 @@ typedef long uk_syscall_arg_t;
 #include <uk/bits/syscall_stubs.h>
 
 /* System call, returns -1 and sets errno on errors */
-long uk_syscall(long n, ...);
-long uk_vsyscall(long n, va_list arg);
+long uk_syscall(long nr, ...);
+long uk_vsyscall(long nr, va_list arg);
 
 /*
  * Use this variant instead of `uk_syscall()` whenever the system call number
@@ -300,8 +300,8 @@ long uk_vsyscall(long n, va_list arg);
 	UK_CONCAT(__uk_syscall, __UK_SYSCALL_NARGS(__VA_ARGS__))(__VA_ARGS__)
 
 /* Raw system call, returns negative codes on errors */
-long uk_syscall_r(long n, ...);
-long uk_vsyscall_r(long n, va_list arg);
+long uk_syscall_r(long nr, ...);
+long uk_vsyscall_r(long nr, va_list arg);
 
 /*
  * Use this variant instead of `uk_syscall_r()` whenever the system call number
diff --git a/lib/syscall_shim/uk_syscall.c.in_end b/lib/syscall_shim/uk_syscall.c.in_end
index 8a5f8e0b..73e74dd0 100644
--- a/lib/syscall_shim/uk_syscall.c.in_end
+++ b/lib/syscall_shim/uk_syscall.c.in_end
@@ -1,27 +1,11 @@
 
-long uk_syscall(long n, ...)
+long uk_syscall(long nr, ...)
 {
+	long ret;
 	va_list ap;
-	long a,b,c,d,e,f;
-	va_start(ap, n);
-	a=va_arg(ap, long);
-	b=va_arg(ap, long);
-	c=va_arg(ap, long);
-	d=va_arg(ap, long);
-	e=va_arg(ap, long);
-	f=va_arg(ap, long);
-	va_end(ap);
-	return __uk_syscall(n,a,b,c,d,e,f);
-}
 
-long uk_vsyscall(long n, va_list arg)
-{
-	long a,b,c,d,e,f;
-	a=va_arg(arg, long);
-	b=va_arg(arg, long);
-	c=va_arg(arg, long);
-	d=va_arg(arg, long);
-	e=va_arg(arg, long);
-	f=va_arg(arg, long);
-	return __uk_syscall(n,a,b,c,d,e,f);
+	va_start(ap, nr);
+	ret = uk_vsyscall(nr, ap);
+	va_end(ap);
+	return ret;
 }
diff --git a/lib/syscall_shim/uk_syscall_r.c.in_end b/lib/syscall_shim/uk_syscall_r.c.in_end
index ae74716e..73ff755c 100644
--- a/lib/syscall_shim/uk_syscall_r.c.in_end
+++ b/lib/syscall_shim/uk_syscall_r.c.in_end
@@ -1,29 +1,13 @@
 
-long uk_syscall_r(long n, ...)
+long uk_syscall_r(long nr, ...)
 {
+	long ret;
 	va_list ap;
-	long a,b,c,d,e,f;
-	va_start(ap, n);
-	a=va_arg(ap, long);
-	b=va_arg(ap, long);
-	c=va_arg(ap, long);
-	d=va_arg(ap, long);
-	e=va_arg(ap, long);
-	f=va_arg(ap, long);
-	va_end(ap);
-	return __uk_syscall_r(n,a,b,c,d,e,f);
-}
 
-long uk_vsyscall_r(long n, va_list arg)
-{
-	long a,b,c,d,e,f;
-	a=va_arg(arg, long);
-	b=va_arg(arg, long);
-	c=va_arg(arg, long);
-	d=va_arg(arg, long);
-	e=va_arg(arg, long);
-	f=va_arg(arg, long);
-	return __uk_syscall_r(n,a,b,c,d,e,f);
+	va_start(ap, nr);
+	ret = uk_vsyscall_r(nr, ap);
+	va_end(ap);
+	return ret;
 }
 
 #if CONFIG_LIBSYSCALL_SHIM_HANDLER
@@ -38,8 +22,8 @@ void ukplat_syscall_handler(struct __regs *r)
 	uk_pr_debug("Binary system call request \"%s\" (%lu) at ip:%p (arg0=0x%lx, arg1=0x%lx, ...)\n",
 		    uk_syscall_name(r->rsyscall), r->rsyscall,
 		    (void *) r->rip, r->rarg0, r->rarg1);
-	r->rret0 = __uk_syscall_r(r->rsyscall,
-				  r->rarg0, r->rarg1, r->rarg2,
-				  r->rarg3, r->rarg4, r->rarg5);
+	r->rret0 = uk_syscall_r(r->rsyscall,
+				r->rarg0, r->rarg1, r->rarg2,
+				r->rarg3, r->rarg4, r->rarg5);
 }
 #endif /* CONFIG_LIBSYSCALL_SHIM_HANDLER */
-- 
2.20.1



From minios-devel-bounces@lists.xenproject.org Thu Apr 16 10:11:59 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 16 Apr 2020 10:11: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 1jP1V1-0008Vt-6E; Thu, 16 Apr 2020 10:11:59 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=GRgf=6A=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1jP1Uz-0008Ve-CE
 for minios-devel@lists.xen.org; Thu, 16 Apr 2020 10:11:57 +0000
X-Inumbo-ID: b1a5596e-7fca-11ea-b58d-bc764e2007e4
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id b1a5596e-7fca-11ea-b58d-bc764e2007e4;
 Thu, 16 Apr 2020 10:11:53 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 9FFFCF200E;
 Thu, 16 Apr 2020 12:11:52 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (atlas-b.office.hd)
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 kcfuBFporuZc; Thu, 16 Apr 2020 12:11:52 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from puck.office.hd (puck.office.hd [192.168.24.91])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 6E92AF200D
 for <minios-devel@lists.xen.org>; Thu, 16 Apr 2020 12:11:50 +0200 (CEST)
Received: from localhost (192.168.24.96) by puck.office.hd (192.168.24.91)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Thu, 16 Apr
 2020 12:11:45 +0200
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: <minios-devel@lists.xen.org>
Subject: [UNIKRAFT PATCH 3/3] lib/syscall_shim: Provide `uk_syscall6()`,
 `uk_syscall6_r()`
Date: Thu, 16 Apr 2020 12:11:36 +0200
Message-ID: <20200416101136.8557-4-simon.kuenzer@neclab.eu>
X-Mailer: git-send-email 2.20.1
In-Reply-To: <20200416101136.8557-1-simon.kuenzer@neclab.eu>
References: <20200416101136.8557-1-simon.kuenzer@neclab.eu>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [192.168.24.96]
X-ClientProxiedBy: oberon.office.hd (192.168.24.90) To puck.office.hd
 (192.168.24.91)
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>,
 Simon Kuenzer <simon.kuenzer@neclab.eu>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

`uk_syscall6()` and `uk_syscall6_r()` are a variant of `uk_syscall()` and
`uk_syscall_r()` that are not variadic.

Signed-off-by: Simon Kuenzer <simon.kuenzer@neclab.eu>
---
 lib/syscall_shim/Makefile.uk                  | 13 +++++++
 lib/syscall_shim/{ => arch}/regmap_linuxabi.h |  0
 lib/syscall_shim/gen_uk_syscall6.awk          | 39 +++++++++++++++++++
 lib/syscall_shim/gen_uk_syscall6_r.awk        | 39 +++++++++++++++++++
 lib/syscall_shim/include/uk/syscall.h         |  4 ++
 lib/syscall_shim/uk_syscall6_r.c.in_end       | 18 +++++++++
 lib/syscall_shim/uk_syscall_r.c.in_end        | 18 ---------
 7 files changed, 113 insertions(+), 18 deletions(-)
 rename lib/syscall_shim/{ => arch}/regmap_linuxabi.h (100%)
 create mode 100644 lib/syscall_shim/gen_uk_syscall6.awk
 create mode 100644 lib/syscall_shim/gen_uk_syscall6_r.awk
 create mode 100644 lib/syscall_shim/uk_syscall6_r.c.in_end

diff --git a/lib/syscall_shim/Makefile.uk b/lib/syscall_shim/Makefile.uk
index ad4c8188..b758f830 100644
--- a/lib/syscall_shim/Makefile.uk
+++ b/lib/syscall_shim/Makefile.uk
@@ -9,7 +9,9 @@ LIBSYSCALL_SHIM_PHONY_SRC_NEW := $(addsuffix .new, $(LIBSYSCALL_SHIM_PHONY_SRC))
 
 LIBSYSCALL_SHIM_GEN_SRC := $(LIBSYSCALL_SHIM_INCLUDES_PATH)/provided_syscalls.h
 LIBSYSCALL_SHIM_GEN_SRC += $(LIBSYSCALL_SHIM_BUILD)/uk_syscall.c
+LIBSYSCALL_SHIM_GEN_SRC += $(LIBSYSCALL_SHIM_BUILD)/uk_syscall6.c
 LIBSYSCALL_SHIM_GEN_SRC += $(LIBSYSCALL_SHIM_BUILD)/uk_syscall_r.c
+LIBSYSCALL_SHIM_GEN_SRC += $(LIBSYSCALL_SHIM_BUILD)/uk_syscall6_r.c
 LIBSYSCALL_SHIM_GEN_SRC += $(LIBSYSCALL_SHIM_BUILD)/uk_syscall_r_fn.c
 LIBSYSCALL_SHIM_GEN_SRC += $(LIBSYSCALL_SHIM_BUILD)/uk_syscall_name.c
 LIBSYSCALL_SHIM_GEN_SRC += $(LIBSYSCALL_SHIM_BUILD)/uk_syscall_name_p.c
@@ -48,6 +50,10 @@ $(LIBSYSCALL_SHIM_INCLUDES_PATH)/provided_syscalls.h: $(LIBSYSCALL_SHIM_BASE)/ge
 		$(AWK) -F '-' -f  $(LIBSYSCALL_SHIM_BASE)/gen_provided.awk \
 		$(LIBSYSCALL_SHIM_BUILD)/provided_syscalls.h.in > $@)
 
+$(LIBSYSCALL_SHIM_BUILD)/uk_syscall6.c: $(LIBSYSCALL_SHIM_BUILD)/provided_syscalls.h.in $(LIBSYSCALL_SHIM_BASE)/gen_uk_syscall6.awk
+	$(call build_cmd,GEN,libsyscall_shim,$(notdir $@), \
+		$(AWK) -F '-' -f $(LIBSYSCALL_SHIM_BASE)/gen_uk_syscall6.awk $< > $@)
+
 $(LIBSYSCALL_SHIM_BUILD)/uk_syscall.c: $(LIBSYSCALL_SHIM_BUILD)/provided_syscalls.h.in $(LIBSYSCALL_SHIM_BASE)/gen_uk_syscall.awk $(LIBSYSCALL_SHIM_BASE)/uk_syscall.c.in_end
 	$(call build_cmd,GEN,libsyscall_shim,$(notdir $@), \
 		$(AWK) -F '-' -f $(LIBSYSCALL_SHIM_BASE)/gen_uk_syscall.awk $< > $@ && \
@@ -58,6 +64,11 @@ $(LIBSYSCALL_SHIM_BUILD)/uk_syscall_r.c: $(LIBSYSCALL_SHIM_BUILD)/provided_sysca
 		$(AWK) -F '-' -f $(LIBSYSCALL_SHIM_BASE)/gen_uk_syscall_r.awk $< > $@ && \
 		cat $(LIBSYSCALL_SHIM_BASE)/uk_syscall_r.c.in_end >> $@)
 
+$(LIBSYSCALL_SHIM_BUILD)/uk_syscall6_r.c: $(LIBSYSCALL_SHIM_BUILD)/provided_syscalls.h.in $(LIBSYSCALL_SHIM_BASE)/gen_uk_syscall6_r.awk $(LIBSYSCALL_SHIM_BASE)/uk_syscall6_r.c.in_end
+	$(call build_cmd,GEN,libsyscall_shim,$(notdir $@), \
+		$(AWK) -F '-' -f $(LIBSYSCALL_SHIM_BASE)/gen_uk_syscall6_r.awk $< > $@ && \
+		cat $(LIBSYSCALL_SHIM_BASE)/uk_syscall6_r.c.in_end >> $@)
+
 $(LIBSYSCALL_SHIM_BUILD)/uk_syscall_r_fn.c: $(LIBSYSCALL_SHIM_BUILD)/provided_syscalls.h.in $(LIBSYSCALL_SHIM_BASE)/gen_uk_syscall_r_fn.awk
 	$(call build_cmd,GEN,libsyscall_shim,$(notdir $@), \
 		$(AWK) -F '-' -f $(LIBSYSCALL_SHIM_BASE)/gen_uk_syscall_r_fn.awk $< > $@)
@@ -93,7 +104,9 @@ CXXINCLUDES-y += -I$(LIBSYSCALL_SHIM_BASE)/include
 LIBSYSCALL_SHIM_CINCLUDES += -I$(LIBSYSCALL_SHIM_BASE)
 
 LIBSYSCALL_SHIM_SRCS-y += $(LIBSYSCALL_SHIM_BUILD)/uk_syscall.c
+LIBSYSCALL_SHIM_SRCS-y += $(LIBSYSCALL_SHIM_BUILD)/uk_syscall6.c
 LIBSYSCALL_SHIM_SRCS-y += $(LIBSYSCALL_SHIM_BUILD)/uk_syscall_r.c
+LIBSYSCALL_SHIM_SRCS-y += $(LIBSYSCALL_SHIM_BUILD)/uk_syscall6_r.c
 LIBSYSCALL_SHIM_SRCS-y += $(LIBSYSCALL_SHIM_BUILD)/uk_syscall_r_fn.c
 LIBSYSCALL_SHIM_UK_SYSCALL_R_FN_FLAGS+=-Wno-cast-function-type
 LIBSYSCALL_SHIM_SRCS-y += $(LIBSYSCALL_SHIM_BUILD)/uk_syscall_name.c
diff --git a/lib/syscall_shim/regmap_linuxabi.h b/lib/syscall_shim/arch/regmap_linuxabi.h
similarity index 100%
rename from lib/syscall_shim/regmap_linuxabi.h
rename to lib/syscall_shim/arch/regmap_linuxabi.h
diff --git a/lib/syscall_shim/gen_uk_syscall6.awk b/lib/syscall_shim/gen_uk_syscall6.awk
new file mode 100644
index 00000000..d6eae04e
--- /dev/null
+++ b/lib/syscall_shim/gen_uk_syscall6.awk
@@ -0,0 +1,39 @@
+BEGIN {
+	max_args = 6
+	print "/* Auto generated file. DO NOT EDIT */\n\n"
+
+	print "#include <uk/syscall.h>"
+	print "#include <uk/print.h>\n"
+
+	printf "long uk_syscall6(long nr, "
+	for (i = 1; i < max_args; i++)
+		printf "long arg%d, ",i
+	printf "long arg%d)\n{\n", max_args
+
+	for (i = 1; i <= max_args; i++)
+		printf "\t(void) arg%d;\n", i
+
+	print "\n\tswitch (nr) {"
+}
+
+
+/[a-zA-Z0-9]+-[0-9]+/{
+	name = $1
+	sys_name = "SYS_" name
+	args_nr = $2 + 0
+	printf "\tcase %s:\n", sys_name;
+	printf "\t\treturn uk_syscall_e_%s(", name;
+	for (i = 1; i < args_nr; i++)
+		printf("arg%d, ", i)
+	if (args_nr > 0)
+		printf("arg%d", args_nr)
+	printf(");\n")
+}
+
+END {
+	printf "\tdefault:\n"
+	printf "\t\tuk_pr_debug(\"syscall \\\"%%s\\\" is not available\\n\", uk_syscall_name(nr));\n"
+	printf "\t\terrno = -ENOSYS;\n"
+	printf "\t\treturn -1;\n"
+	printf "\t}\n}\n"
+}
diff --git a/lib/syscall_shim/gen_uk_syscall6_r.awk b/lib/syscall_shim/gen_uk_syscall6_r.awk
new file mode 100644
index 00000000..d5f8c8ba
--- /dev/null
+++ b/lib/syscall_shim/gen_uk_syscall6_r.awk
@@ -0,0 +1,39 @@
+BEGIN {
+	max_args = 6
+	print "/* Auto generated file. DO NOT EDIT */\n\n"
+
+	print "#include <uk/syscall.h>"
+	print "#include <uk/print.h>\n"
+
+	printf "long uk_syscall6_r(long nr, "
+	for (i = 1; i < max_args; i++)
+		printf "long arg%d, ",i
+	printf "long arg%d)\n{\n", max_args
+
+	for (i = 1; i <= max_args; i++)
+		printf "\t(void) arg%d;\n", i
+
+	print "\n\tswitch (nr) {"
+}
+
+
+/[a-zA-Z0-9]+-[0-9]+/{
+	name = $1
+	sys_name = "SYS_" name
+	uk_syscall_r = "uk_syscall_r_" name
+	args_nr = $2 + 0
+	printf "\tcase %s:\n", sys_name;
+	printf "\t\treturn %s(", uk_syscall_r;
+	for (i = 1; i < args_nr; i++)
+		printf("arg%d, ", i)
+	if (args_nr > 0)
+		printf("arg%d", args_nr)
+	printf(");\n")
+}
+
+END {
+	printf "\tdefault:\n"
+	printf "\t\tuk_pr_debug(\"syscall \\\"%%s\\\" is not available\\n\", uk_syscall_name(nr));\n"
+	printf "\t\treturn -ENOSYS;\n"
+	printf "\t}\n}\n"
+}
diff --git a/lib/syscall_shim/include/uk/syscall.h b/lib/syscall_shim/include/uk/syscall.h
index 3d2e4e89..a3b79d41 100644
--- a/lib/syscall_shim/include/uk/syscall.h
+++ b/lib/syscall_shim/include/uk/syscall.h
@@ -290,6 +290,8 @@ typedef long uk_syscall_arg_t;
 /* System call, returns -1 and sets errno on errors */
 long uk_syscall(long nr, ...);
 long uk_vsyscall(long nr, va_list arg);
+long uk_syscall6(long nr, long arg1, long arg2, long arg3,
+		 long arg4, long arg5, long arg6);
 
 /*
  * Use this variant instead of `uk_syscall()` whenever the system call number
@@ -302,6 +304,8 @@ long uk_vsyscall(long nr, va_list arg);
 /* Raw system call, returns negative codes on errors */
 long uk_syscall_r(long nr, ...);
 long uk_vsyscall_r(long nr, va_list arg);
+long uk_syscall6_r(long nr, long arg1, long arg2, long arg3,
+		   long arg4, long arg5, long arg6);
 
 /*
  * Use this variant instead of `uk_syscall_r()` whenever the system call number
diff --git a/lib/syscall_shim/uk_syscall6_r.c.in_end b/lib/syscall_shim/uk_syscall6_r.c.in_end
new file mode 100644
index 00000000..daa75d95
--- /dev/null
+++ b/lib/syscall_shim/uk_syscall6_r.c.in_end
@@ -0,0 +1,18 @@
+
+#if CONFIG_LIBSYSCALL_SHIM_HANDLER
+#include <uk/plat/syscall.h>
+#include <uk/assert.h>
+#include <arch/regmap_linuxabi.h>
+
+void ukplat_syscall_handler(struct __regs *r)
+{
+	UK_ASSERT(r);
+
+	uk_pr_debug("Binary system call request \"%s\" (%lu) at ip:%p (arg0=0x%lx, arg1=0x%lx, ...)\n",
+		    uk_syscall_name(r->rsyscall), r->rsyscall,
+		    (void *) r->rip, r->rarg0, r->rarg1);
+	r->rret0 = uk_syscall6_r(r->rsyscall,
+				 r->rarg0, r->rarg1, r->rarg2,
+				 r->rarg3, r->rarg4, r->rarg5);
+}
+#endif /* CONFIG_LIBSYSCALL_SHIM_HANDLER */
diff --git a/lib/syscall_shim/uk_syscall_r.c.in_end b/lib/syscall_shim/uk_syscall_r.c.in_end
index 73ff755c..a09c473c 100644
--- a/lib/syscall_shim/uk_syscall_r.c.in_end
+++ b/lib/syscall_shim/uk_syscall_r.c.in_end
@@ -9,21 +9,3 @@ long uk_syscall_r(long nr, ...)
 	va_end(ap);
 	return ret;
 }
-
-#if CONFIG_LIBSYSCALL_SHIM_HANDLER
-#include <uk/plat/syscall.h>
-#include <uk/assert.h>
-#include <regmap_linuxabi.h>
-
-void ukplat_syscall_handler(struct __regs *r)
-{
-	UK_ASSERT(r);
-
-	uk_pr_debug("Binary system call request \"%s\" (%lu) at ip:%p (arg0=0x%lx, arg1=0x%lx, ...)\n",
-		    uk_syscall_name(r->rsyscall), r->rsyscall,
-		    (void *) r->rip, r->rarg0, r->rarg1);
-	r->rret0 = uk_syscall_r(r->rsyscall,
-				r->rarg0, r->rarg1, r->rarg2,
-				r->rarg3, r->rarg4, r->rarg5);
-}
-#endif /* CONFIG_LIBSYSCALL_SHIM_HANDLER */
-- 
2.20.1



From minios-devel-bounces@lists.xenproject.org Thu Apr 16 12:27:06 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 16 Apr 2020 12:27: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 1jP3bl-0003Sk-7Y; Thu, 16 Apr 2020 12:27:05 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=fNsn=6A=suse.com=jgross@srs-us1.protection.inumbo.net>)
 id 1jP3bk-0003Sf-5l
 for minios-devel@lists.xenproject.org; Thu, 16 Apr 2020 12:27:04 +0000
X-Inumbo-ID: 93aa684c-7fdd-11ea-b58d-bc764e2007e4
Received: from mx2.suse.de (unknown [195.135.220.15])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 93aa684c-7fdd-11ea-b58d-bc764e2007e4;
 Thu, 16 Apr 2020 12:27:03 +0000 (UTC)
X-Virus-Scanned: by amavisd-new at test-mx.suse.de
Received: from relay2.suse.de (unknown [195.135.220.254])
 by mx2.suse.de (Postfix) with ESMTP id 0D00BAC6D;
 Thu, 16 Apr 2020 12:27:01 +0000 (UTC)
From: Juergen Gross <jgross@suse.com>
To: minios-devel@lists.xenproject.org,
	xen-devel@lists.xenproject.org
Subject: [PATCH] mini-os: allow 4096 event channels for 64-bit mini-os
Date: Thu, 16 Apr 2020 14:27:00 +0200
Message-Id: <20200416122700.22620-1-jgross@suse.com>
X-Mailer: git-send-email 2.16.4
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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: Juergen Gross <jgross@suse.com>, samuel.thibault@ens-lyon.org
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Limiting the number of event channels to 1024 is fine for 32-bit
builds, but not for 64-bit ones. This might be a problem when using
Xenstore-stubdom as the number of domains which can be supported is
then limited to a little bit more than 1000.

So raise the number of event channels to 4096 in 64-bit builds.

Signed-off-by: Juergen Gross <jgross@suse.com>
---
 events.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/events.c b/events.c
index 342aead..cdae90f 100644
--- a/events.c
+++ b/events.c
@@ -23,7 +23,7 @@
 #include <mini-os/lib.h>
 #include <xen/xsm/flask_op.h>
 
-#define NR_EVS 1024
+#define NR_EVS EVTCHN_2L_NR_CHANNELS
 
 /* this represents a event handler. Chaining or sharing is not allowed */
 typedef struct _ev_action_t {
-- 
2.16.4



From minios-devel-bounces@lists.xenproject.org Thu Apr 16 12:27:36 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 16 Apr 2020 12:27: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 1jP3cF-0003X1-V1; Thu, 16 Apr 2020 12:27: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=fNsn=6A=suse.com=jgross@srs-us1.protection.inumbo.net>)
 id 1jP3cE-0003Wb-NQ
 for minios-devel@lists.xenproject.org; Thu, 16 Apr 2020 12:27:34 +0000
X-Inumbo-ID: a51e214b-7fdd-11ea-8b81-12813bfff9fa
Received: from mx2.suse.de (unknown [195.135.220.15])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id a51e214b-7fdd-11ea-8b81-12813bfff9fa;
 Thu, 16 Apr 2020 12:27:33 +0000 (UTC)
X-Virus-Scanned: by amavisd-new at test-mx.suse.de
Received: from relay2.suse.de (unknown [195.135.220.254])
 by mx2.suse.de (Postfix) with ESMTP id 2D0CBAC6D;
 Thu, 16 Apr 2020 12:27:32 +0000 (UTC)
From: Juergen Gross <jgross@suse.com>
To: minios-devel@lists.xenproject.org,
	xen-devel@lists.xenproject.org
Subject: [PATCH] mini-os: use -m elf_i386 for final linking
Date: Thu, 16 Apr 2020 14:27:31 +0200
Message-Id: <20200416122731.22713-1-jgross@suse.com>
X-Mailer: git-send-email 2.16.4
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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: Juergen Gross <jgross@suse.com>, samuel.thibault@ens-lyon.org
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Using the standard -m elf_x86_64 for 64-bit mini-os results in the
first section (.text) to start only at offset 2MB in the binary file.

Using -m elf_i386 avoids that problem without any visible disadvantage.

Signed-off-by: Juergen Gross <jgross@suse.com>
---
 arch/x86/arch.mk | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/arch/x86/arch.mk b/arch/x86/arch.mk
index c87885f..00028a0 100644
--- a/arch/x86/arch.mk
+++ b/arch/x86/arch.mk
@@ -26,3 +26,5 @@ ifeq ($(CONFIG_PARAVIRT),n)
 ARCH_LDFLAGS_FINAL := --oformat=elf32-i386
 ARCH_AS_DEPS += x86_hvm.S
 endif
+
+ARCH_LDFLAGS_FINAL += -m elf_i386
-- 
2.16.4



From minios-devel-bounces@lists.xenproject.org Thu Apr 16 12:27:53 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 16 Apr 2020 12:27: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 1jP3cX-0003ap-0j; Thu, 16 Apr 2020 12:27: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=fNsn=6A=suse.com=jgross@srs-us1.protection.inumbo.net>)
 id 1jP3cW-0003aV-0J
 for minios-devel@lists.xenproject.org; Thu, 16 Apr 2020 12:27:52 +0000
X-Inumbo-ID: b036c136-7fdd-11ea-8b81-12813bfff9fa
Received: from mx2.suse.de (unknown [195.135.220.15])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id b036c136-7fdd-11ea-8b81-12813bfff9fa;
 Thu, 16 Apr 2020 12:27:51 +0000 (UTC)
X-Virus-Scanned: by amavisd-new at test-mx.suse.de
Received: from relay2.suse.de (unknown [195.135.220.254])
 by mx2.suse.de (Postfix) with ESMTP id 003A4AC7B;
 Thu, 16 Apr 2020 12:27:49 +0000 (UTC)
From: Juergen Gross <jgross@suse.com>
To: minios-devel@lists.xenproject.org,
	xen-devel@lists.xenproject.org
Subject: [PATCH] mini-os: provide binary without debug information
Date: Thu, 16 Apr 2020 14:27:48 +0200
Message-Id: <20200416122748.22798-1-jgross@suse.com>
X-Mailer: git-send-email 2.16.4
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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: Juergen Gross <jgross@suse.com>, samuel.thibault@ens-lyon.org
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Provide a mini-os binary stripped from debug information in order to
have a smaller resulting kernel file. The binary with debug
information is kept with the suffix "-debug".

Signed-off-by: Juergen Gross <jgross@suse.com>
---
 Makefile | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/Makefile b/Makefile
index 6a05de6..be640cd 100644
--- a/Makefile
+++ b/Makefile
@@ -167,7 +167,9 @@ $(OBJ_DIR)/arch/x86/minios-x86%.lds:  arch/x86/minios-x86.lds.S
 $(OBJ_DIR)/$(TARGET): $(OBJS) $(APP_O) arch_lib $(OBJ_DIR)/$(TARGET_ARCH_DIR)/minios-$(MINIOS_TARGET_ARCH).lds
 	$(LD) -r $(LDFLAGS) $(HEAD_OBJ) $(APP_O) $(OBJS) $(LDARCHLIB) $(LDLIBS) -o $@.o
 	$(OBJCOPY) -w -G $(GLOBAL_PREFIX)* -G _start $@.o $@.o
-	$(LD) $(LDFLAGS) $(LDFLAGS_FINAL) $@.o $(EXTRA_OBJS) -o $@
+	$(LD) $(LDFLAGS) $(LDFLAGS_FINAL) $@.o $(EXTRA_OBJS) -o $@-debug
+	strip -s $@-debug -o $@
+	gzip -n -f -9 -c $@-debug >$@-debug.gz
 	gzip -n -f -9 -c $@ >$@.gz
 
 .PHONY: config
-- 
2.16.4



From minios-devel-bounces@lists.xenproject.org Thu Apr 16 12:29:24 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 16 Apr 2020 12:29: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 1jP3e0-0003pk-J7; Thu, 16 Apr 2020 12:29:24 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=3QVr=6A=ens-lyon.org=samuel.thibault@srs-us1.protection.inumbo.net>)
 id 1jP3dz-0003pd-GR
 for minios-devel@lists.xenproject.org; Thu, 16 Apr 2020 12:29:23 +0000
X-Inumbo-ID: e64e230e-7fdd-11ea-83d8-bc764e2007e4
Received: from hera.aquilenet.fr (unknown [185.233.100.1])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id e64e230e-7fdd-11ea-83d8-bc764e2007e4;
 Thu, 16 Apr 2020 12:29:22 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by hera.aquilenet.fr (Postfix) with ESMTP id 2ED09AD8B;
 Thu, 16 Apr 2020 14:29:21 +0200 (CEST)
X-Virus-Scanned: Debian amavisd-new at aquilenet.fr
Received: from hera.aquilenet.fr ([127.0.0.1])
 by localhost (hera.aquilenet.fr [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id R7saMafNshcE; Thu, 16 Apr 2020 14:29:19 +0200 (CEST)
Received: from function (lfbn-bor-1-797-11.w86-234.abo.wanadoo.fr
 [86.234.239.11])
 by hera.aquilenet.fr (Postfix) with ESMTPSA id 96418A85A;
 Thu, 16 Apr 2020 14:29:19 +0200 (CEST)
Received: from samy by function with local (Exim 4.93)
 (envelope-from <samuel.thibault@ens-lyon.org>)
 id 1jP3du-004UPj-E0; Thu, 16 Apr 2020 14:29:18 +0200
Date: Thu, 16 Apr 2020 14:29:18 +0200
From: Samuel Thibault <samuel.thibault@ens-lyon.org>
To: Juergen Gross <jgross@suse.com>
Subject: Re: [PATCH] mini-os: allow 4096 event channels for 64-bit mini-os
Message-ID: <20200416122918.p757arqwyvjamwv5@function>
Mail-Followup-To: Samuel Thibault <samuel.thibault@ens-lyon.org>,
 Juergen Gross <jgross@suse.com>, minios-devel@lists.xenproject.org,
 xen-devel@lists.xenproject.org
References: <20200416122700.22620-1-jgross@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20200416122700.22620-1-jgross@suse.com>
Organization: I am not organized
User-Agent: NeoMutt/20170609 (1.8.3)
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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.xenproject.org, xen-devel@lists.xenproject.org
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Juergen Gross, le jeu. 16 avril 2020 14:27:00 +0200, a ecrit:
> Limiting the number of event channels to 1024 is fine for 32-bit
> builds, but not for 64-bit ones. This might be a problem when using
> Xenstore-stubdom as the number of domains which can be supported is
> then limited to a little bit more than 1000.
> 
> So raise the number of event channels to 4096 in 64-bit builds.
> 
> Signed-off-by: Juergen Gross <jgross@suse.com>

Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>

> ---
>  events.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/events.c b/events.c
> index 342aead..cdae90f 100644
> --- a/events.c
> +++ b/events.c
> @@ -23,7 +23,7 @@
>  #include <mini-os/lib.h>
>  #include <xen/xsm/flask_op.h>
>  
> -#define NR_EVS 1024
> +#define NR_EVS EVTCHN_2L_NR_CHANNELS
>  
>  /* this represents a event handler. Chaining or sharing is not allowed */
>  typedef struct _ev_action_t {
> -- 
> 2.16.4
> 


From minios-devel-bounces@lists.xenproject.org Thu Apr 16 12:30:12 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 16 Apr 2020 12:30: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 1jP3em-0004ad-Aa; Thu, 16 Apr 2020 12:30:12 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=3QVr=6A=ens-lyon.org=samuel.thibault@srs-us1.protection.inumbo.net>)
 id 1jP3el-0004aK-CL
 for minios-devel@lists.xenproject.org; Thu, 16 Apr 2020 12:30:11 +0000
X-Inumbo-ID: ffd47fd0-7fdd-11ea-9e09-bc764e2007e4
Received: from hera.aquilenet.fr (unknown [2a0c:e300::1])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id ffd47fd0-7fdd-11ea-9e09-bc764e2007e4;
 Thu, 16 Apr 2020 12:30:05 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by hera.aquilenet.fr (Postfix) with ESMTP id 498E8AD8C;
 Thu, 16 Apr 2020 14:30:04 +0200 (CEST)
X-Virus-Scanned: Debian amavisd-new at aquilenet.fr
Received: from hera.aquilenet.fr ([127.0.0.1])
 by localhost (hera.aquilenet.fr [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id fLJn6-P7OT8N; Thu, 16 Apr 2020 14:30:02 +0200 (CEST)
Received: from function (lfbn-bor-1-797-11.w86-234.abo.wanadoo.fr
 [86.234.239.11])
 by hera.aquilenet.fr (Postfix) with ESMTPSA id D8D9FAD8B;
 Thu, 16 Apr 2020 14:30:02 +0200 (CEST)
Received: from samy by function with local (Exim 4.93)
 (envelope-from <samuel.thibault@ens-lyon.org>)
 id 1jP3ec-004UQ3-8b; Thu, 16 Apr 2020 14:30:02 +0200
Date: Thu, 16 Apr 2020 14:30:02 +0200
From: Samuel Thibault <samuel.thibault@ens-lyon.org>
To: Juergen Gross <jgross@suse.com>
Subject: Re: [PATCH] mini-os: provide binary without debug information
Message-ID: <20200416123002.hmituo73bydg43kr@function>
Mail-Followup-To: Samuel Thibault <samuel.thibault@ens-lyon.org>,
 Juergen Gross <jgross@suse.com>, minios-devel@lists.xenproject.org,
 xen-devel@lists.xenproject.org
References: <20200416122748.22798-1-jgross@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20200416122748.22798-1-jgross@suse.com>
Organization: I am not organized
User-Agent: NeoMutt/20170609 (1.8.3)
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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.xenproject.org, xen-devel@lists.xenproject.org
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Juergen Gross, le jeu. 16 avril 2020 14:27:48 +0200, a ecrit:
> Provide a mini-os binary stripped from debug information in order to
> have a smaller resulting kernel file. The binary with debug
> information is kept with the suffix "-debug".
> 
> Signed-off-by: Juergen Gross <jgross@suse.com>

Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>

> ---
>  Makefile | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/Makefile b/Makefile
> index 6a05de6..be640cd 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -167,7 +167,9 @@ $(OBJ_DIR)/arch/x86/minios-x86%.lds:  arch/x86/minios-x86.lds.S
>  $(OBJ_DIR)/$(TARGET): $(OBJS) $(APP_O) arch_lib $(OBJ_DIR)/$(TARGET_ARCH_DIR)/minios-$(MINIOS_TARGET_ARCH).lds
>  	$(LD) -r $(LDFLAGS) $(HEAD_OBJ) $(APP_O) $(OBJS) $(LDARCHLIB) $(LDLIBS) -o $@.o
>  	$(OBJCOPY) -w -G $(GLOBAL_PREFIX)* -G _start $@.o $@.o
> -	$(LD) $(LDFLAGS) $(LDFLAGS_FINAL) $@.o $(EXTRA_OBJS) -o $@
> +	$(LD) $(LDFLAGS) $(LDFLAGS_FINAL) $@.o $(EXTRA_OBJS) -o $@-debug
> +	strip -s $@-debug -o $@
> +	gzip -n -f -9 -c $@-debug >$@-debug.gz
>  	gzip -n -f -9 -c $@ >$@.gz
>  
>  .PHONY: config
> -- 
> 2.16.4
> 


From minios-devel-bounces@lists.xenproject.org Thu Apr 16 12:46:48 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 16 Apr 2020 12:46: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 1jP3uq-0005il-6q; Thu, 16 Apr 2020 12:46:48 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=3QVr=6A=ens-lyon.org=samuel.thibault@srs-us1.protection.inumbo.net>)
 id 1jP3up-0005ic-AW
 for minios-devel@lists.xenproject.org; Thu, 16 Apr 2020 12:46:47 +0000
X-Inumbo-ID: 515fa5a8-7fe0-11ea-b58d-bc764e2007e4
Received: from hera.aquilenet.fr (unknown [185.233.100.1])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 515fa5a8-7fe0-11ea-b58d-bc764e2007e4;
 Thu, 16 Apr 2020 12:46:40 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by hera.aquilenet.fr (Postfix) with ESMTP id E129E3384;
 Thu, 16 Apr 2020 14:46:39 +0200 (CEST)
X-Virus-Scanned: Debian amavisd-new at aquilenet.fr
Received: from hera.aquilenet.fr ([127.0.0.1])
 by localhost (hera.aquilenet.fr [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id DnbOd6ykFoxr; Thu, 16 Apr 2020 14:46:39 +0200 (CEST)
Received: from function (lfbn-bor-1-797-11.w86-234.abo.wanadoo.fr
 [86.234.239.11])
 by hera.aquilenet.fr (Postfix) with ESMTPSA id E80473251;
 Thu, 16 Apr 2020 14:46:38 +0200 (CEST)
Received: from samy by function with local (Exim 4.93)
 (envelope-from <samuel.thibault@ens-lyon.org>)
 id 1jP3ue-004VIx-W9; Thu, 16 Apr 2020 14:46:37 +0200
Date: Thu, 16 Apr 2020 14:46:36 +0200
From: Samuel Thibault <samuel.thibault@ens-lyon.org>
To: Juergen Gross <jgross@suse.com>
Subject: Re: [PATCH] mini-os: use -m elf_i386 for final linking
Message-ID: <20200416124636.35zgnf5bhq3d3bpw@function>
Mail-Followup-To: Samuel Thibault <samuel.thibault@ens-lyon.org>,
 Juergen Gross <jgross@suse.com>, minios-devel@lists.xenproject.org,
 xen-devel@lists.xenproject.org
References: <20200416122731.22713-1-jgross@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20200416122731.22713-1-jgross@suse.com>
Organization: I am not organized
User-Agent: NeoMutt/20170609 (1.8.3)
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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.xenproject.org, xen-devel@lists.xenproject.org
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>


Juergen Gross, le jeu. 16 avril 2020 14:27:31 +0200, a ecrit:
> Using the standard -m elf_x86_64 for 64-bit mini-os results in the
> first section (.text) to start only at offset 2MB in the binary file.

? I'm not seeing this on my system:

  0 .text         0001933a  0000000000000000  0000000000000000  00001000  2**12
                  CONTENTS, ALLOC, LOAD, READONLY, CODE

so only 4K offset in the file, the file ends up being 135K big after
stripping.

> Using -m elf_i386 avoids that problem without any visible disadvantage.

Using a 32bit emulation for a 64bit binary? This looks very odd to me?
(and probably fragile)

I'd like to know more where this 2MB binary file offset is coming from,
since AIUI it'd basically impact all binaries built by the toolchain of
your system, not just mini-os, and I don't think the maintainers of your
system want that :)

Samuel


From minios-devel-bounces@lists.xenproject.org Thu Apr 16 12:58:40 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 16 Apr 2020 12:58: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 1jP46J-0006jV-EZ; Thu, 16 Apr 2020 12:58: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=fNsn=6A=suse.com=jgross@srs-us1.protection.inumbo.net>)
 id 1jP46I-0006jQ-GR
 for minios-devel@lists.xenproject.org; Thu, 16 Apr 2020 12:58:38 +0000
X-Inumbo-ID: fb03a9ab-7fe1-11ea-8b89-12813bfff9fa
Received: from mx2.suse.de (unknown [195.135.220.15])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id fb03a9ab-7fe1-11ea-8b89-12813bfff9fa;
 Thu, 16 Apr 2020 12:58:35 +0000 (UTC)
X-Virus-Scanned: by amavisd-new at test-mx.suse.de
Received: from relay2.suse.de (unknown [195.135.220.254])
 by mx2.suse.de (Postfix) with ESMTP id 5208BAC5B;
 Thu, 16 Apr 2020 12:58:34 +0000 (UTC)
Subject: Re: [PATCH] mini-os: use -m elf_i386 for final linking
To: Samuel Thibault <samuel.thibault@ens-lyon.org>,
 minios-devel@lists.xenproject.org, xen-devel@lists.xenproject.org
References: <20200416122731.22713-1-jgross@suse.com>
 <20200416124636.35zgnf5bhq3d3bpw@function>
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>
Message-ID: <71871753-d4e5-9afc-9637-479f5ecb2776@suse.com>
Date: Thu, 16 Apr 2020 14:58:34 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101
 Thunderbird/68.6.0
MIME-Version: 1.0
In-Reply-To: <20200416124636.35zgnf5bhq3d3bpw@function>
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Language: en-US
Content-Transfer-Encoding: 7bit
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

On 16.04.20 14:46, Samuel Thibault wrote:
> 
> Juergen Gross, le jeu. 16 avril 2020 14:27:31 +0200, a ecrit:
>> Using the standard -m elf_x86_64 for 64-bit mini-os results in the
>> first section (.text) to start only at offset 2MB in the binary file.
> 
> ? I'm not seeing this on my system:
> 
>    0 .text         0001933a  0000000000000000  0000000000000000  00001000  2**12
>                    CONTENTS, ALLOC, LOAD, READONLY, CODE

# readelf -S mini-os
There are 19 section headers, starting at offset 0x245e88:

Section Headers:
   [Nr] Name              Type             Address           Offset
        Size              EntSize          Flags  Link  Info  Align
   [ 0]                   NULL             0000000000000000  00000000
        0000000000000000  0000000000000000           0     0     0
   [ 1] .text             PROGBITS         0000000000000000  00200000
        0000000000017d07  0000000000000000  AX       0     0     4096
   [ 2] .rodata           PROGBITS         0000000000017d20  00217d20

> 
> so only 4K offset in the file, the file ends up being 135K big after
> stripping.

Lucky you. :-)

Might be specific to the linker used.

> 
>> Using -m elf_i386 avoids that problem without any visible disadvantage.
> 
> Using a 32bit emulation for a 64bit binary? This looks very odd to me?
> (and probably fragile)

That is only the final linking process, the option must not be used
earlier (I had linking errors in that case).

> I'd like to know more where this 2MB binary file offset is coming from,
> since AIUI it'd basically impact all binaries built by the toolchain of
> your system, not just mini-os, and I don't think the maintainers of your
> system want that :)

Andrew Cooper gave me the hint how to solve the problem. He has seen it
as well and told me (via IRC):

"I actually figured that out while hacking up a KVM-friendly version of
  XTF for Andy Luto. The linking -m elf_i386/elf_x86_64 option sets the
  "target emulation" which is more than just "what this is compiled for".
  I haven't yet cleaned up the patch for XTF (which also suffers the same
  problem), but linking an ELF64 using -m elf_i386 will DTRT with no
  other ill effects.
  Sadly, LD's documentation about details like this (and the linker
  script for that matter) are poor at best. Specifically, 64bit emulation
  appears to include "align primary sections to 2M so your OS can make
  better use of superpages even when mmap()ing", with no way I can spot
  to override this in the linker file."


Juergen


From minios-devel-bounces@lists.xenproject.org Thu Apr 16 13:11:10 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 16 Apr 2020 13:11: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 1jP4IP-00008m-Mn; Thu, 16 Apr 2020 13:11: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=3QVr=6A=ens-lyon.org=samuel.thibault@srs-us1.protection.inumbo.net>)
 id 1jP4IN-00008U-Ov
 for minios-devel@lists.xenproject.org; Thu, 16 Apr 2020 13:11:07 +0000
X-Inumbo-ID: b7e65698-7fe3-11ea-8b90-12813bfff9fa
Received: from hera.aquilenet.fr (unknown [185.233.100.1])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id b7e65698-7fe3-11ea-8b90-12813bfff9fa;
 Thu, 16 Apr 2020 13:11:01 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by hera.aquilenet.fr (Postfix) with ESMTP id 7E81CAE65;
 Thu, 16 Apr 2020 15:11:00 +0200 (CEST)
X-Virus-Scanned: Debian amavisd-new at aquilenet.fr
Received: from hera.aquilenet.fr ([127.0.0.1])
 by localhost (hera.aquilenet.fr [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id MTR01cjk79An; Thu, 16 Apr 2020 15:10:59 +0200 (CEST)
Received: from function (lfbn-bor-1-797-11.w86-234.abo.wanadoo.fr
 [86.234.239.11])
 by hera.aquilenet.fr (Postfix) with ESMTPSA id 5E2BFADE6;
 Thu, 16 Apr 2020 15:10:59 +0200 (CEST)
Received: from samy by function with local (Exim 4.93)
 (envelope-from <samuel.thibault@ens-lyon.org>)
 id 1jP4ID-004Vno-Tr; Thu, 16 Apr 2020 15:10:57 +0200
Date: Thu, 16 Apr 2020 15:10:57 +0200
From: Samuel Thibault <samuel.thibault@ens-lyon.org>
To: =?utf-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>
Subject: Re: [PATCH] mini-os: use -m elf_i386 for final linking
Message-ID: <20200416131057.yvrsijib7aqjzc4s@function>
Mail-Followup-To: Samuel Thibault <samuel.thibault@ens-lyon.org>,
 =?utf-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>,
 minios-devel@lists.xenproject.org, xen-devel@lists.xenproject.org
References: <20200416122731.22713-1-jgross@suse.com>
 <20200416124636.35zgnf5bhq3d3bpw@function>
 <71871753-d4e5-9afc-9637-479f5ecb2776@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <71871753-d4e5-9afc-9637-479f5ecb2776@suse.com>
Organization: I am not organized
User-Agent: NeoMutt/20170609 (1.8.3)
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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.xenproject.org, xen-devel@lists.xenproject.org
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Jürgen Groß, le jeu. 16 avril 2020 14:58:34 +0200, a ecrit:
>  Specifically, 64bit emulation appears to include "align primary
>  sections to 2M so your OS can make better use of superpages even when
>  mmap()ing", with no way I can spot to override this in the linker
>  file."

Ok, I see, I had indeed guessed that the 2M rounding probably had
something to do with 2M pages.

I'm afraid it may bite us back some day, but I'd say it is fine enough
for now to include it, so 

Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>

with the information quoted above put in the changelog, please :)

Samuel


From minios-devel-bounces@lists.xenproject.org Thu Apr 16 13:17:27 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 16 Apr 2020 13:17: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 1jP4OT-0000Rc-U8; Thu, 16 Apr 2020 13:17: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=fNsn=6A=suse.com=jgross@srs-us1.protection.inumbo.net>)
 id 1jP4OS-0000RO-NZ
 for minios-devel@lists.xenproject.org; Thu, 16 Apr 2020 13:17:24 +0000
X-Inumbo-ID: 98912a10-7fe4-11ea-8b92-12813bfff9fa
Received: from mx2.suse.de (unknown [195.135.220.15])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 98912a10-7fe4-11ea-8b92-12813bfff9fa;
 Thu, 16 Apr 2020 13:17:18 +0000 (UTC)
X-Virus-Scanned: by amavisd-new at test-mx.suse.de
Received: from relay2.suse.de (unknown [195.135.220.254])
 by mx2.suse.de (Postfix) with ESMTP id B58E7AC6D;
 Thu, 16 Apr 2020 13:17:16 +0000 (UTC)
From: Juergen Gross <jgross@suse.com>
To: minios-devel@lists.xenproject.org,
	xen-devel@lists.xenproject.org
Subject: [PATCH v2] mini-os: use -m elf_i386 for final linking
Date: Thu, 16 Apr 2020 15:17:15 +0200
Message-Id: <20200416131715.24498-1-jgross@suse.com>
X-Mailer: git-send-email 2.16.4
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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: Juergen Gross <jgross@suse.com>, samuel.thibault@ens-lyon.org
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Using the standard -m elf_x86_64 for 64-bit mini-os results in the
first section (.text) to start only at offset 2MB in the binary file.

Quoting Andrew Cooper on that topic:

  Specifically, 64bit emulation appears to include "align primary
  sections to 2M so your OS can make better use of superpages even when
  mmap()ing", with no way I can spot to override this in the linker
  file.

Using -m elf_i386 avoids that problem without any visible disadvantage.

Signed-off-by: Juergen Gross <jgross@suse.com>
---
 arch/x86/arch.mk | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/arch/x86/arch.mk b/arch/x86/arch.mk
index c87885f..00028a0 100644
--- a/arch/x86/arch.mk
+++ b/arch/x86/arch.mk
@@ -26,3 +26,5 @@ ifeq ($(CONFIG_PARAVIRT),n)
 ARCH_LDFLAGS_FINAL := --oformat=elf32-i386
 ARCH_AS_DEPS += x86_hvm.S
 endif
+
+ARCH_LDFLAGS_FINAL += -m elf_i386
-- 
2.16.4



From minios-devel-bounces@lists.xenproject.org Thu Apr 16 13:19:08 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 16 Apr 2020 13:19: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 1jP4Q8-0000a8-3I; Thu, 16 Apr 2020 13:19: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=3tZ7=6A=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1jP4Q7-0000a2-2a
 for minios-devel@lists.xen.org; Thu, 16 Apr 2020 13:19:07 +0000
X-Inumbo-ID: d7b243d4-7fe4-11ea-8b92-12813bfff9fa
Received: from queen.nlehd.de (unknown [195.37.154.80])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTP
 id d7b243d4-7fe4-11ea-8b92-12813bfff9fa;
 Thu, 16 Apr 2020 13:19:05 +0000 (UTC)
Received: from localhost (c431.ant-net [192.168.0.36])
 by queen.nlehd.de (Postfix) with ESMTP id 1DC5641263;
 Thu, 16 Apr 2020 15:19:04 +0200 (CEST)
From: Felipe Huici <felipe.huici@neclab.eu>
To: minios-devel@lists.xen.org
Subject: [UNIKRAFT/NEWLIB PATCH] Define tzname
Date: Thu, 16 Apr 2020 15:19:03 +0200
Message-Id: <20200416131903.1797-1-felipe.huici@neclab.eu>
X-Mailer: git-send-email 2.20.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Currently, tzname is defined as an extern, which results in a
undefined reference linker error when attempting to use it. This patch
maps tzname to _tzanme, which *is* defined. newlib does this mapping
in OS-specific files that we don't compile in, so this is a way to
mimic that behavior.

Signed-off-by: Felipe Huici <felipe.huici@neclab.eu>
---
 include/sys/time.h | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/include/sys/time.h b/include/sys/time.h
index 4a81946..07dc078 100644
--- a/include/sys/time.h
+++ b/include/sys/time.h
@@ -39,4 +39,8 @@
 
 #include <sys/reent.h>
 
+#ifndef tzname
+#define tzname _tzname
+#endif
+
 #endif /* __NEWLIB_GLUE_SYS_TIME_H__ */
-- 
2.20.1



From minios-devel-bounces@lists.xenproject.org Thu Apr 16 13:30:50 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 16 Apr 2020 13:30: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 1jP4bR-0002IE-1a; Thu, 16 Apr 2020 13:30:49 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=tGEC=6A=xen.org=wl@srs-us1.protection.inumbo.net>)
 id 1jP4bQ-0002I7-8N
 for minios-devel@lists.xenproject.org; Thu, 16 Apr 2020 13:30:48 +0000
X-Inumbo-ID: 7850c9a2-7fe6-11ea-b58d-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 7850c9a2-7fe6-11ea-b58d-bc764e2007e4;
 Thu, 16 Apr 2020 13:30:42 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=In-Reply-To:Content-Type:MIME-Version:References:Message-ID
 :Subject:Cc:To:From:Date:Sender:Reply-To:Content-Transfer-Encoding:Content-ID
 :Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:
 Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe
 :List-Post:List-Owner:List-Archive;
 bh=jVDr4ghE8GHOij+dttnIDL2OkTWCoRsjL55B/g2+vh4=; b=uiZyr1tdM6nFtBYe3KgedjvjEe
 aS0HZ8KxTYUE7zKE53sbCrdkkOLrxYxOSYTzkybLgB5APPin9l8FAxZraiW7qTwZeexbGyqwWcUc5
 9y56RuIGTNxIgwLGvVI08h8bh4SV2FZjWRHrwPoL8sGtL+6+md4ZjOAC2ga/kYjznNcc=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <wl@xen.org>)
 id 1jP4bH-0005BM-Ok; Thu, 16 Apr 2020 13:30:39 +0000
Received: from 44.142.6.51.dyn.plus.net ([51.6.142.44] helo=debian)
 by xenbits.xenproject.org with esmtpsa
 (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89)
 (envelope-from <wl@xen.org>)
 id 1jP4bH-00034X-FR; Thu, 16 Apr 2020 13:30:39 +0000
Date: Thu, 16 Apr 2020 14:30:36 +0100
From: Wei Liu <wl@xen.org>
To: Samuel Thibault <samuel.thibault@ens-lyon.org>,
 Juergen Gross <jgross@suse.com>, minios-devel@lists.xenproject.org,
 xen-devel@lists.xenproject.org
Subject: Re: [PATCH] mini-os: provide binary without debug information
Message-ID: <20200416133036.6igduiwssnvjatfe@debian>
References: <20200416122748.22798-1-jgross@suse.com>
 <20200416123002.hmituo73bydg43kr@function>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20200416123002.hmituo73bydg43kr@function>
User-Agent: NeoMutt/20180716
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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: Wei Liu <wl@xen.org>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

On Thu, Apr 16, 2020 at 02:30:02PM +0200, Samuel Thibault wrote:
> Juergen Gross, le jeu. 16 avril 2020 14:27:48 +0200, a ecrit:
> > Provide a mini-os binary stripped from debug information in order to
> > have a smaller resulting kernel file. The binary with debug
> > information is kept with the suffix "-debug".
> > 
> > Signed-off-by: Juergen Gross <jgross@suse.com>
> 
> Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
> 

Applied.


From minios-devel-bounces@lists.xenproject.org Thu Apr 16 13:31:11 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 16 Apr 2020 13:31: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 1jP4bn-0002M2-DV; Thu, 16 Apr 2020 13:31: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=tGEC=6A=xen.org=wl@srs-us1.protection.inumbo.net>)
 id 1jP4bm-0002Le-6Y
 for minios-devel@lists.xenproject.org; Thu, 16 Apr 2020 13:31:10 +0000
X-Inumbo-ID: 8498d6d2-7fe6-11ea-8b92-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 8498d6d2-7fe6-11ea-8b92-12813bfff9fa;
 Thu, 16 Apr 2020 13:31:03 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=In-Reply-To:Content-Type:MIME-Version:References:Message-ID
 :Subject:Cc:To:From:Date:Sender:Reply-To:Content-Transfer-Encoding:Content-ID
 :Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:
 Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe
 :List-Post:List-Owner:List-Archive;
 bh=BONflVOk44YPtXzQwXdBYDSr4YhDryB8SuquSdSqYKk=; b=zzhsfCc/HCuI4brmnFGRKdVarp
 QIQDTZuekxuVeecwSWnuBhyEk4z88VJTDm2qVg7p0quvNlNVj04ZJLNQuNcbSKQQsR1Jvx8ARu/K0
 tNnGSYgl1V0DTxI47Hq/+KUr8o71x4xwXaVVt2Xt5iwvVFvYh+pfRNiuQuSsXibPtn6o=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <wl@xen.org>)
 id 1jP4be-0005Bn-FE; Thu, 16 Apr 2020 13:31:02 +0000
Received: from 44.142.6.51.dyn.plus.net ([51.6.142.44] helo=debian)
 by xenbits.xenproject.org with esmtpsa
 (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89)
 (envelope-from <wl@xen.org>)
 id 1jP4be-00034v-6h; Thu, 16 Apr 2020 13:31:02 +0000
Date: Thu, 16 Apr 2020 14:30:59 +0100
From: Wei Liu <wl@xen.org>
To: Juergen Gross <jgross@suse.com>
Subject: Re: [PATCH v2] mini-os: use -m elf_i386 for final linking
Message-ID: <20200416133059.eetlpshw3gzxks6z@debian>
References: <20200416131715.24498-1-jgross@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20200416131715.24498-1-jgross@suse.com>
User-Agent: NeoMutt/20180716
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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.xenproject.org, xen-devel@lists.xenproject.org,
 Wei Liu <wl@xen.org>, samuel.thibault@ens-lyon.org
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

On Thu, Apr 16, 2020 at 03:17:15PM +0200, Juergen Gross wrote:
> Using the standard -m elf_x86_64 for 64-bit mini-os results in the
> first section (.text) to start only at offset 2MB in the binary file.
> 
> Quoting Andrew Cooper on that topic:
> 
>   Specifically, 64bit emulation appears to include "align primary
>   sections to 2M so your OS can make better use of superpages even when
>   mmap()ing", with no way I can spot to override this in the linker
>   file.
> 
> Using -m elf_i386 avoids that problem without any visible disadvantage.
> 
> Signed-off-by: Juergen Gross <jgross@suse.com>

Applied with Samuel's Rb from v1.

Wei.


From minios-devel-bounces@lists.xenproject.org Thu Apr 16 13:32:17 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 16 Apr 2020 13:32: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 1jP4cr-0002Um-QO; Thu, 16 Apr 2020 13:32:17 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <SRS0=tGEC=6A=xen.org=wl@srs-us1.protection.inumbo.net>)
 id 1jP4cq-0002US-3A
 for minios-devel@lists.xenproject.org; Thu, 16 Apr 2020 13:32:16 +0000
X-Inumbo-ID: acb0ca8a-7fe6-11ea-9e09-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id acb0ca8a-7fe6-11ea-9e09-bc764e2007e4;
 Thu, 16 Apr 2020 13:32:10 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=In-Reply-To:Content-Type:MIME-Version:References:Message-ID
 :Subject:Cc:To:From:Date:Sender:Reply-To:Content-Transfer-Encoding:Content-ID
 :Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:
 Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe
 :List-Post:List-Owner:List-Archive;
 bh=w2sVyh/xsnx9fzZdKP+3VDX/aWeSKnjEekHGi2q7hck=; b=kYLuJBaPiKyTLjm1Wr/fbMXnt8
 uTEyyipj+ci+/lPgrrpXbKnkAwveDsatcpqigB3cGYUmA03IK/UTcqIfCGdb9o3vqveXB9CgyZrBh
 XEVFv5SCYOmoOSNSRSO6GdNPYm8a42oX58pEOXOJzNDQzpTHQ8Laqk54tlHizBy2vs48=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <wl@xen.org>)
 id 1jP4ci-0005Dg-Up; Thu, 16 Apr 2020 13:32:08 +0000
Received: from 44.142.6.51.dyn.plus.net ([51.6.142.44] helo=debian)
 by xenbits.xenproject.org with esmtpsa
 (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89)
 (envelope-from <wl@xen.org>)
 id 1jP4ci-00038R-MO; Thu, 16 Apr 2020 13:32:08 +0000
Date: Thu, 16 Apr 2020 14:32:06 +0100
From: Wei Liu <wl@xen.org>
To: Samuel Thibault <samuel.thibault@ens-lyon.org>,
 Juergen Gross <jgross@suse.com>, minios-devel@lists.xenproject.org,
 xen-devel@lists.xenproject.org
Subject: Re: [PATCH] mini-os: allow 4096 event channels for 64-bit mini-os
Message-ID: <20200416133206.hezesgzrzkvm6hcd@debian>
References: <20200416122700.22620-1-jgross@suse.com>
 <20200416122918.p757arqwyvjamwv5@function>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20200416122918.p757arqwyvjamwv5@function>
User-Agent: NeoMutt/20180716
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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: Wei Liu <wl@xen.org>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

On Thu, Apr 16, 2020 at 02:29:18PM +0200, Samuel Thibault wrote:
> Juergen Gross, le jeu. 16 avril 2020 14:27:00 +0200, a ecrit:
> > Limiting the number of event channels to 1024 is fine for 32-bit
> > builds, but not for 64-bit ones. This might be a problem when using
> > Xenstore-stubdom as the number of domains which can be supported is
> > then limited to a little bit more than 1000.
> > 
> > So raise the number of event channels to 4096 in 64-bit builds.
> > 
> > Signed-off-by: Juergen Gross <jgross@suse.com>
> 
> Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>

Applied.


From minios-devel-bounces@lists.xenproject.org Thu Apr 16 19:48:38 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 16 Apr 2020 19:48: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 1jPAV1-0001hZ-VG; Thu, 16 Apr 2020 19:48:35 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=oWQP=6A=gmail.com=felipehuici@srs-us1.protection.inumbo.net>)
 id 1jPAV0-0001hU-NT
 for minios-devel@lists.xen.org; Thu, 16 Apr 2020 19:48:34 +0000
X-Inumbo-ID: 41681780-801b-11ea-b58d-bc764e2007e4
Received: from mail-vs1-xe42.google.com (unknown [2607:f8b0:4864:20::e42])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 41681780-801b-11ea-b58d-bc764e2007e4;
 Thu, 16 Apr 2020 19:48:33 +0000 (UTC)
Received: by mail-vs1-xe42.google.com with SMTP id z1so3205572vsn.11
 for <minios-devel@lists.xen.org>; Thu, 16 Apr 2020 12:48:33 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=mime-version:references:in-reply-to:from:date:message-id:subject:to
 :cc; bh=vb/tyCxObTydxV+SAyXFPfPx7i8olv6AE7Y2TSlLFbU=;
 b=LT8qzEFRCDnk6FEbWPJBS2NA/PuosCD/uTyTNdRyjMd/tswqtoK1FlOAgJKYa8SeE6
 lVDOS4/C1pC9nldqPJbL4aT2Mib2N9UQfwtL+U2vrWbrmFJ5NYIOTHtsBIloaKJHE1do
 NJwbNqnd2NwgVQa16hNEs6MiphqeLl3bMM99mHw8Nr5Yiak84zqcSaxZ421cFGtYbNY8
 DQQ3aazAbJHzU86PQkxknkxOmd42vJY5V4rs/rKFEBniEVfIHxNwB7n1NRcp3/R3IRbY
 NozROhqJlSxRvEphYLMznpFOkK+kLBsoifmlNB7DaLvt6gzbftcp630RFZnVFaceqI61
 Z+ww==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:mime-version:references:in-reply-to:from:date
 :message-id:subject:to:cc;
 bh=vb/tyCxObTydxV+SAyXFPfPx7i8olv6AE7Y2TSlLFbU=;
 b=A4KDrWRdhVxh8J0jcPNnnIXcnd4AfGaXLr8n8L2BjXRcI3aOvydKMYmR8HqdSdne+H
 VxMnxfAuVRxxkS46hOVLhNuQwchKqg/lpSBP7LkcaTT/xFckSP9sYI7lXRM6eezE467H
 VgWiHbATdh5FK77/G9M9FrajZus4jnofYpoN216HelYNNLsM1r2encHvHj+mcdjO7okt
 eQobMGusdzCQNNVGPLW4lkfx+kqVZwL1yC2uxGmORrB4wnzzoSkeGkz6AcIFb/uujHJI
 hZnVF5ey3vWQAbheNZX3GyMV7k3OY+XPuFGizxTTaqwD2J5GeLB6jAXNTu+pXcFfiEEz
 WAVw==
X-Gm-Message-State: AGi0PuZGcmcecDh2GJM6v0Lonc5fL09Im742H/UE0m+yCNqTLtpexZvX
 kVuSxe/AYJJfOqVr3amR83HMUUezD8gdK0BIyDsNVU44
X-Google-Smtp-Source: APiQypKhVF/ETmQqoKbJFQivySdh1fI7zEc0wscZjozxVz7MCQQ6bMihTJTlXI/VhqGSs6TD6tRRCXOBLSGAHr6SiJQ=
X-Received: by 2002:a05:6102:2007:: with SMTP id
 p7mr10400321vsr.181.1587066513374; 
 Thu, 16 Apr 2020 12:48:33 -0700 (PDT)
MIME-Version: 1.0
References: <20200416131903.1797-1-felipe.huici@neclab.eu>
In-Reply-To: <20200416131903.1797-1-felipe.huici@neclab.eu>
From: "felipehuici ." <felipehuici@gmail.com>
Date: Thu, 16 Apr 2020 21:48:21 +0200
Message-ID: <CAEX4t-ORqjXiR8Xyot2HD5C+pw+ob_Z1JLOjcHYXhM7p_d8jYg@mail.gmail.com>
Subject: Re: [UNIKRAFT/NEWLIB PATCH] Define tzname
To: Felipe Huici <felipe.huici@neclab.eu>
Content-Type: text/plain; charset="UTF-8"
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Please ignore this patch, I'll be sending a cleaner version of it soon.

Thanks,

-- Felipe

On Thu, Apr 16, 2020 at 3:19 PM Felipe Huici <felipe.huici@neclab.eu> wrote:
>
> Currently, tzname is defined as an extern, which results in a
> undefined reference linker error when attempting to use it. This patch
> maps tzname to _tzanme, which *is* defined. newlib does this mapping
> in OS-specific files that we don't compile in, so this is a way to
> mimic that behavior.
>
> Signed-off-by: Felipe Huici <felipe.huici@neclab.eu>
> ---
>  include/sys/time.h | 4 ++++
>  1 file changed, 4 insertions(+)
>
> diff --git a/include/sys/time.h b/include/sys/time.h
> index 4a81946..07dc078 100644
> --- a/include/sys/time.h
> +++ b/include/sys/time.h
> @@ -39,4 +39,8 @@
>
>  #include <sys/reent.h>
>
> +#ifndef tzname
> +#define tzname _tzname
> +#endif
> +
>  #endif /* __NEWLIB_GLUE_SYS_TIME_H__ */
> --
> 2.20.1
>
>


From minios-devel-bounces@lists.xenproject.org Thu Apr 16 19:49:44 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 16 Apr 2020 19:49: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 1jPAW8-0001jB-3h; Thu, 16 Apr 2020 19:49:44 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=3tZ7=6A=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1jPAW6-0001j6-L5
 for minios-devel@lists.xen.org; Thu, 16 Apr 2020 19:49:42 +0000
X-Inumbo-ID: 696570c0-801b-11ea-b4f4-bc764e2007e4
Received: from queen.nlehd.de (unknown [195.37.154.80])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTP
 id 696570c0-801b-11ea-b4f4-bc764e2007e4;
 Thu, 16 Apr 2020 19:49:41 +0000 (UTC)
Received: from localhost (c110.ant-net [192.168.0.36])
 by queen.nlehd.de (Postfix) with ESMTP id 86E6541358;
 Thu, 16 Apr 2020 21:49:40 +0200 (CEST)
From: Felipe Huici <felipe.huici@neclab.eu>
To: minios-devel@lists.xen.org
Subject: [UNIKRAFT/NEWLIB PATCH] Define tzname
Date: Thu, 16 Apr 2020 21:49:39 +0200
Message-Id: <20200416194939.18481-1-felipe.huici@neclab.eu>
X-Mailer: git-send-email 2.20.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Currently, tzname is defined as an extern, which results in a
undefined reference linker error when attempting to use
it. This patch maps tzname to _tzanme, which *is*
defined. newlib does this mapping in OS-specific files that we
don't compile in, so this is a way to mimic that behavior.

 Signed-off-by: Felipe Huici <felipe.huici@neclab.eu>
---
 include/time.h | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/include/time.h b/include/time.h
index a510293..0f94358 100644
--- a/include/time.h
+++ b/include/time.h
@@ -70,4 +70,8 @@ extern long _timezone;
 extern int _daylight;
 extern char *_tzname[2];
 
+#ifndef tzname
+#define tzname _tzname
+#endif
+
 #endif /* NEWLIBGLUE_TIME_H */
-- 
2.20.1



From minios-devel-bounces@lists.xenproject.org Thu Apr 16 19:57:27 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 16 Apr 2020 19:57: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 1jPAdb-0002Vh-6H; Thu, 16 Apr 2020 19:57:27 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=3tZ7=6A=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1jPAda-0002Va-Cy
 for minios-devel@lists.xen.org; Thu, 16 Apr 2020 19:57:26 +0000
X-Inumbo-ID: 7e3ce090-801c-11ea-9e09-bc764e2007e4
Received: from queen.nlehd.de (unknown [195.37.154.80])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTP
 id 7e3ce090-801c-11ea-9e09-bc764e2007e4;
 Thu, 16 Apr 2020 19:57:25 +0000 (UTC)
Received: from localhost (c431.ant-net [192.168.0.36])
 by queen.nlehd.de (Postfix) with ESMTP id 1081141367;
 Thu, 16 Apr 2020 21:57:25 +0200 (CEST)
From: Felipe Huici <felipe.huici@neclab.eu>
To: minios-devel@lists.xen.org
Subject: [UNIKRAFT/LIBICU PATCH 0/2] Introducing libicu port to Unikraft
Date: Thu, 16 Apr 2020 21:57:22 +0200
Message-Id: <20200416195724.18620-1-felipe.huici@neclab.eu>
X-Mailer: git-send-email 2.20.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

This is our initial port of the International Components for Unicode library to Unikraft.

Felipe Huici (2):
  Introduce icu to Unikraft.
  Add documentation

 .gitignore      |  27 +++
 CODING_STYLE.md |   4 +
 CONTRIBUTING.md |   4 +
 COPYING.md      |  30 ++++
 Config.uk       |  14 ++
 MAINTAINERS.md  |  10 ++
 Makefile.uk     | 466 ++++++++++++++++++++++++++++++++++++++++++++++++
 README.md       |  10 ++
 8 files changed, 565 insertions(+)
 create mode 100644 .gitignore
 create mode 100644 CODING_STYLE.md
 create mode 100644 CONTRIBUTING.md
 create mode 100644 COPYING.md
 create mode 100644 Config.uk
 create mode 100644 MAINTAINERS.md
 create mode 100644 Makefile.uk
 create mode 100644 README.md

-- 
2.20.1



From minios-devel-bounces@lists.xenproject.org Thu Apr 16 19:57:30 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 16 Apr 2020 19:57: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 1jPAde-0002Wi-8I; Thu, 16 Apr 2020 19:57: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=3tZ7=6A=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1jPAdd-0002WR-2T
 for minios-devel@lists.xen.org; Thu, 16 Apr 2020 19:57:29 +0000
X-Inumbo-ID: 7ea72a9a-801c-11ea-8c00-12813bfff9fa
Received: from queen.nlehd.de (unknown [195.37.154.80])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTP
 id 7ea72a9a-801c-11ea-8c00-12813bfff9fa;
 Thu, 16 Apr 2020 19:57:26 +0000 (UTC)
Received: from localhost (c110.ant-net [192.168.0.36])
 by queen.nlehd.de (Postfix) with ESMTP id D41DB41368;
 Thu, 16 Apr 2020 21:57:25 +0200 (CEST)
From: Felipe Huici <felipe.huici@neclab.eu>
To: minios-devel@lists.xen.org
Subject: [UNIKRAFT/LIBICU PATCH 1/2] Introduce icu to Unikraft.
Date: Thu, 16 Apr 2020 21:57:23 +0200
Message-Id: <20200416195724.18620-2-felipe.huici@neclab.eu>
X-Mailer: git-send-email 2.20.1
In-Reply-To: <20200416195724.18620-1-felipe.huici@neclab.eu>
References: <20200416195724.18620-1-felipe.huici@neclab.eu>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

This is a port of the International Components for Unicode library to
Unikraft.

Signed-off-by: Felipe Huici <felipe.huici@neclab.eu>
---
 .gitignore  |  27 +++
 Config.uk   |  14 ++
 Makefile.uk | 466 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 507 insertions(+)
 create mode 100644 .gitignore
 create mode 100644 Config.uk
 create mode 100644 Makefile.uk

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..75d2fd3
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,27 @@
+*.depend
+*.o
+*.a
+*.d
+*.so
+*.orig
+*.rej
+*.bak
+*.swp
+*~
+,*
+\#*\#
+.\#*
+\#_*\#
+.\#_*
+!.gitignore
+.*
+
+# gnu global files
+GPATH
+GRTAGS
+GSYMS
+GTAGS
+
+# cscope files
+cscope.*
+ncscope.*
diff --git a/Config.uk b/Config.uk
new file mode 100644
index 0000000..daba142
--- /dev/null
+++ b/Config.uk
@@ -0,0 +1,14 @@
+menuconfig LIBICU
+	   bool "ICU - International Components for Unicode"
+	   select LIBPOSIX_LIBDL
+	   select LIBNEWLIBC
+	   select LIBUNWIND
+ 	   select LIBCXXABI
+	   select LIBCXXABI_THREADS
+           select LIBCOMPILER_RT
+	   select LIBCXX
+	   select CXX_THREADS
+	   select LIBPTHREAD_EMBEDDED
+	   select LIBUKMMAP
+	   select LIBPOSIX_SYSINFO
+	   default n
diff --git a/Makefile.uk b/Makefile.uk
new file mode 100644
index 0000000..c46e479
--- /dev/null
+++ b/Makefile.uk
@@ -0,0 +1,466 @@
+################################################################################
+# Library registration
+################################################################################
+$(eval $(call addlib_s,libicu,$(CONFIG_LIBICU)))
+
+LIBICU_VERSION=63staging
+LIBICU_URL=https://chromium.googlesource.com/chromium/deps/icu.git/+archive/chromium/63staging.tar.gz
+LIBICU_PATCHDIR=$(LIBICU_BASE)/patches
+
+$(eval $(call fetch,libicu,$(LIBICU_URL)))
+
+################################################################################
+# Helpers
+################################################################################
+LIBICU_SRC = $(LIBICU_ORIGIN)/source
+
+################################################################################
+# Library includes
+################################################################################
+CINCLUDES-$(CONFIG_ICU)   += -I$(LIBICU_SRC)/common
+CINCLUDES-$(CONFIG_ICU)   += -I$(LIBICU_SRC)/i18n
+CXXINCLUDES-$(CONFIG_ICU) += -I$(LIBICU_SRC)/common
+CXXINCLUDES-$(CONFIG_ICU) += -I$(LIBICU_SRC)/i18n
+
+LIBICU_CINCLUDES   += -I$(LIBICU_SRC)/common
+LIBICU_CINCLUDES   += -I$(LIBICU_SRC)/i18n
+LIBICU_CXXINCLUDES += -I$(LIBICU_SRC)/common
+LIBICU_CXXINCLUDES += -I$(LIBICU_SRC)/i18n
+
+################################################################################
+# Global flags
+################################################################################
+# Suppress some warnings to make the build process look neater
+LIBICU_SUPRESS_FLAGS += -Wno-parentheses -Wno-array-bounds		      \
+		     	-Wno-maybe-uninitialized -Wno-deprecated-declarations \
+			-Wno-stringop-truncation -Wno-extra -Wno-restrict     \
+			-Wno-stringop-overflow
+
+LIBICU_CONFIG_FLAGS += -D U_COMMON_IMPLEMENTATION \
+		       -D U_I18N_IMPLEMENTATION 
+
+LIBICU_CFLAGS-y     += $(LIBICU_SUPRESS_FLAGS) $(LIBICU_CONFIG_FLAGS)
+LIBICU_CXXFLAGS-y   += $(LIBICU_SUPRESS_FLAGS) $(LIBICU_CONFIG_FLAGS)
+
+################################################################################
+# Library sources
+################################################################################
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/ucmndata.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/ucnvbocu.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/ucnv_cb.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/ucnv_bld.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/ucnv2022.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/ucnv_ct.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/ucnv_cnv.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/ucnvhz.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/ucnv_err.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/ucnvisci.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/ucnv_lmb.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/ucnv_ext.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/ucnvdisp.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/ucnvscsu.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/ucnv.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/ucnv_set.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/ucnvlat1.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/ucnv_io.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/ucnv_u32.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/ucnv_u7.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/ucol_swp.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/ucptrie.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/udatamem.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/ucnv_u16.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/ucnv_u8.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/udataswp.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/uenum.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/uhash.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/uinit.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/ucnvsel.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/uidna.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/uhash_us.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/ulist.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/udata.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/ucurr.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/uinvchar.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/ucnvmbcs.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/uiter.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/uloc.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/collationrootelements.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/anytrans.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/alphaindex.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/astro.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/bocsu.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/basictz.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/brktrans.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/buddhcal.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/cecal.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/casetrn.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/chnsecal.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/choicfmt.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/coleitr.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/collationcompare.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/collationbuilder.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/calendar.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/collation.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/collationdata.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/collationdatabuilder.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/collationdatawriter.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/collationfcd.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/collationdatareader.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/collationfastlatinbuilder.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/collationfastlatin.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/collationroot.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/collationiterator.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/collationkeys.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/nfrs.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/collationweights.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/nfrule.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/collationtailoring.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/collationsets.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/collationsettings.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/collationruleparser.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/coptccal.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/csdetect.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/coll.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/csrecog.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/compactdecimalformat.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/csr2022.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/csrucode.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/csrutf8.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/cpdtrans.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/csrsbcs.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/csrmbcs.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/csmatch.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/curramt.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/currunit.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/currfmt.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/dangical.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/decContext.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/currpinf.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/datefmt.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/dayperiodrules.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/double-conversion-bignum.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/dcfmtsym.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/double-conversion-diy-fp.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/double-conversion-cached-powers.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/double-conversion-bignum-dtoa.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/double-conversion.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/double-conversion-strtod.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/decimfmt.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/cmemory.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/bytestrieiterator.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/cstring.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/charstr.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/chariter.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/cwchar.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/dtintrv.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/characterproperties.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/caniter.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/cstr.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/double-conversion-fast-dtoa.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/dictionarydata.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/dtrule.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/edits.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/decNumber.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/dictbe.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/dtitvinf.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/erarules.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/esctrn.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/fphdlimp.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/fpositer.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/dtitvfmt.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/ethpccal.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/fmtable_cnv.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/format.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/funcrepl.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/inputext.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/gregoimp.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/gender.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/hebrwcal.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/gregocal.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/fmtable.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/indiancal.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/japancal.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/dtptngen.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/utmscale.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/islamcal.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/measure.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/listformatter.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/name2uni.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/measunit.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/measfmt.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/utrans.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/nortrans.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/nounit.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/dtfmtsym.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/nfsubs.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/nultrans.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/msgfmt.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/number_affixutils.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/number_asformat.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/number_capi.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/vtzone.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/number_currencysymbols.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/number_compact.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/number_decimfmtprops.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/number_grouping.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/number_decimalquantity.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/number_integerwidth.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/number_formatimpl.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/number_modifiers.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/number_mapper.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/number_longnames.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/number_fluent.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/number_notation.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/number_multiplier.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/number_padding.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/number_rounding.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/number_patternmodifier.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/number_scientific.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/numparse_compositions.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/number_utils.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/number_stringbuilder.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/number_patternstring.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/numparse_affixes.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/number_skeletons.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/numparse_currency.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/numparse_decimal.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/numfmt.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/numparse_parsednumber.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/numparse_validators.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/numparse_scientific.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/numparse_stringsegment.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/numparse_symbols.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/numparse_impl.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/numrange_impl.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/numsys.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/persncal.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/quant.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/numrange_fluent.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/olsontz.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/quantityformatter.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/plurfmt.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/rbt_data.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/rbt.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/rbt_rule.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/rbt_set.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/rbtz.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/regeximp.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/regextxt.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/plurrule.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/regexst.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/rbt_pars.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/rbnf.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/remtrans.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/reldtfmt.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/repattrn.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/reldatefmt.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/scientificnumberformatter.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/region.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/scriptset.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/search.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/regexcmp.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/selfmt.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/sharedbreakiterator.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/rulebasedcollator.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/smpdtfst.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/standardplural.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/sortkey.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/simpletz.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/strrepl.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/stsearch.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/strmatch.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/tmutamt.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/tmunit.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/taiwncal.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/titletrn.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/tolowtrn.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/toupptrn.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/timezone.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/tmutfmt.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/smpdtfmt.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/tznames.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/transreg.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/translit.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/ucln_in.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/tridpars.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/tzrule.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/rematch.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/tztrans.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/ucsdet.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/tzgnames.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/ucol.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/ufieldpositer.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/tzfmt.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/ucoleitr.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/ucal.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/tznames_impl.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/udateintervalformat.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/ucol_res.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/ucol_sit.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/udatpg.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/udat.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/ulistformatter.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/ulocdata.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/uni2name.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/unumsys.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/uitercollationiterator.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/umsg.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/unesctrn.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/unum.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/uregexc.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/upluralrules.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/uregion.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/windtfmt.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/winnmfmt.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/uspoof_build.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/wintzimpl.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/uspoof_conf.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/vzone.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/errorcode.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/ztrans.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/uspoof_impl.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/utf16collationiterator.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/uspoof.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/icuplug.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/uregex.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/zrule.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/usearch.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/utf8collationiterator.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/icudataver.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/locbased.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/i18n/zonemeta.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/locavailable.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/loadednormalizer2impl.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/appendable.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/locmap.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/filterednormalizer2.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/filteredbrk.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/loclikely.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/bytestream.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/locdispnames.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/bytesinkutil.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/bmpset.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/locid.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/brkeng.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/locdspnm.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/brkiter.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/parsepos.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/patternprops.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/bytestriebuilder.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/bytestrie.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/propsvec.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/locutil.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/locresdata.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/punycode.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/pluralmap.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/normlzr.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/propname.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/messagepattern.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/normalizer2.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/rbbidata.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/rbbi.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/rbbinode.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/putil.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/rbbirb.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/rbbi_cache.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/rbbiscan.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/rbbistbl.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/rbbisetb.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/resbund_cnv.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/resource.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/normalizer2impl.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/ruleiter.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/resbund.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/schriter.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/rbbitblb.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/serv.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/sharedobject.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/servlkf.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/servlk.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/servrbf.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/servnotf.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/servls.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/uarrsort.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/servslkf.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/ubiditransform.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/ubidi_props.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/simpleformatter.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/stringpiece.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/stringtriebuilder.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/ubidiwrt.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/static_unicode_sets.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/ubidiln.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/ubrk.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/ucasemap_titlecase_brkiter.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/ucat.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/uchar.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/ucln_cmn.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/ucase.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/ucharstrie.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/umapfile.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/umath.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/ucasemap.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/ubidi.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/ucharstriebuilder.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/ucharstrieiterator.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/unifunct.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/umutex.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/unifilt.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/uchriter.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/uloc_keytype.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/unifiedcache.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/unistr_case.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/unames.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/uniset_closure.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/uniset_props.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/unisetspan.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/unistr_case_locale.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/unistr_cnv.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/uobject.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/uloc_tag.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/unistr_props.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/uniset.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/unormcmp.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/usc_impl.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/umutablecptrie.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/uscript.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/unistr_titlecase_brkiter.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/unorm.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/ures_cnv.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/uprops.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/uset_props.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/unistr.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/uscript_props.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/usetiter.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/ustack.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/uset.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/uresdata.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/ustrfmt.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/ustr_cnv.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/ustr_wcs.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/ushape.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/uresbund.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/utf_impl.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/ustring.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/ustrtrns.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/ustrcase_locale.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/ustrenum.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/usprep.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/ustr_titlecase_brkiter.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/ustrcase.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/utypes.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/utrie2.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/util_props.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/utrie_swap.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/wintz.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/utrie.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/uvectr64.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/stubdata/stubdata.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/util.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/uvectr32.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/utrace.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/utext.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/uvector.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/utrie2_builder.cpp
+LIBICU_SRCS-y += $(LIBICU_SRC)/common/uts46.cpp
+
-- 
2.20.1



From minios-devel-bounces@lists.xenproject.org Thu Apr 16 19:57:32 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 16 Apr 2020 19:57: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 1jPAdg-0002XZ-Bi; Thu, 16 Apr 2020 19:57:32 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=3tZ7=6A=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1jPAdf-0002XD-DZ
 for minios-devel@lists.xen.org; Thu, 16 Apr 2020 19:57:31 +0000
X-Inumbo-ID: 7fda1ea4-801c-11ea-b4f4-bc764e2007e4
Received: from queen.nlehd.de (unknown [195.37.154.80])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTP
 id 7fda1ea4-801c-11ea-b4f4-bc764e2007e4;
 Thu, 16 Apr 2020 19:57:28 +0000 (UTC)
Received: from localhost (c431.ant-net [192.168.0.36])
 by queen.nlehd.de (Postfix) with ESMTP id D703041367;
 Thu, 16 Apr 2020 21:57:27 +0200 (CEST)
From: Felipe Huici <felipe.huici@neclab.eu>
To: minios-devel@lists.xen.org
Subject: [UNIKRAFT/LIBICU PATCH 2/2] Add documentation
Date: Thu, 16 Apr 2020 21:57:24 +0200
Message-Id: <20200416195724.18620-3-felipe.huici@neclab.eu>
X-Mailer: git-send-email 2.20.1
In-Reply-To: <20200416195724.18620-1-felipe.huici@neclab.eu>
References: <20200416195724.18620-1-felipe.huici@neclab.eu>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Signed-off-by: Felipe Huici <felipe.huici@neclab.eu
---
 CODING_STYLE.md |  4 ++++
 CONTRIBUTING.md |  4 ++++
 COPYING.md      | 30 ++++++++++++++++++++++++++++++
 MAINTAINERS.md  | 10 ++++++++++
 README.md       | 10 ++++++++++
 5 files changed, 58 insertions(+)
 create mode 100644 CODING_STYLE.md
 create mode 100644 CONTRIBUTING.md
 create mode 100644 COPYING.md
 create mode 100644 MAINTAINERS.md
 create mode 100644 README.md

diff --git a/CODING_STYLE.md b/CODING_STYLE.md
new file mode 100644
index 0000000..5730041
--- /dev/null
+++ b/CODING_STYLE.md
@@ -0,0 +1,4 @@
+Coding Style
+============
+
+Please refer to the `CODING_STYLE.md` file in the main Unikraft repository.
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 0000000..5f55eca
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,4 @@
+Contributing to Unikraft
+=======================
+
+Please refer to the `CONTRIBUTING.md` file in the main Unikraft repository.
diff --git a/COPYING.md b/COPYING.md
new file mode 100644
index 0000000..af378cc
--- /dev/null
+++ b/COPYING.md
@@ -0,0 +1,30 @@
+License
+=======
+
+Unikraft UCI wrapper
+-----------------------
+
+This repository contains wrapper code to build uci with Unikraft.
+Each C code file in this repository should declare who is the
+copyright owner and under which terms and conditions the code is
+licensed. If such a licence note is missing, the following copyright
+notice will apply:
+
+	Copyright (c) 2019, University Politehnica of Bucharest. All rights 
+	reserved.
+
+	This library is free software; you can redistribute it and/or
+	modify it under the terms of the GNU Lesser General Public
+	License as published by the Free Software Foundation; either
+	version 2 of the License, or (at your option) any later version.
+	
+	This library is distributed in the hope that it will be useful,
+	but WITHOUT ANY WARRANTY; without even the implied warranty of
+	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+	Lesser General Public License for more details.
+	
+	You should have received a copy of the GNU Lesser General Public
+	License along with this library in the file COPYING.LIB;
+	if not, write to the Free Software Foundation, Inc.,
+	59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+
diff --git a/MAINTAINERS.md b/MAINTAINERS.md
new file mode 100644
index 0000000..8a1ebb0
--- /dev/null
+++ b/MAINTAINERS.md
@@ -0,0 +1,10 @@
+Maintainers List
+================
+
+For notes on how to read this information, please refer to `MAINTAINERS.md` in
+the main Unikraft repository.
+
+	PROTOBUF-UNIKRAFT
+	M:	Felipe Huici <felipe.huici@neclab.eu>
+	L:	minios-devel@lists.xen.org
+	F: *
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..e7ccff0
--- /dev/null
+++ b/README.md
@@ -0,0 +1,10 @@
+icu for Unikraft
+===================
+
+This is the port of icu as a Unikraft external library; it depends on
+the following libraries that need to be added to `Makefile` in this
+order:
+
+* `pthreads`, e.g. `pthread-embedded`
+* CXX standard library, e.g. `libunwind`, `compiler-rt`, `libcxxabi`, `libcxx`
+* `libc`, e.g. `newlib`
-- 
2.20.1



From minios-devel-bounces@lists.xenproject.org Thu Apr 16 21:31:33 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 16 Apr 2020 21: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 1jPC6d-0002NG-9q; Thu, 16 Apr 2020 21: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=AZH/=6A=neclab.eu=sharan.santhanam@srs-us1.protection.inumbo.net>)
 id 1jPC6c-0002NB-CF
 for minios-devel@lists.xenproject.org; Thu, 16 Apr 2020 21:31:30 +0000
X-Inumbo-ID: a0e97895-8029-11ea-8c16-12813bfff9fa
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id a0e97895-8029-11ea-8c16-12813bfff9fa;
 Thu, 16 Apr 2020 21:31:28 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 46213F200E;
 Thu, 16 Apr 2020 23:31:27 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (atlas-b.office.hd)
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 G07lIVA6YGD3; Thu, 16 Apr 2020 23:31:27 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from puck.office.hd (puck.office.hd [192.168.24.91])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 172EEF200D
 for <minios-devel@lists.xenproject.org>; Thu, 16 Apr 2020 23:31:25 +0200 (CEST)
Received: from [10.7.0.82] (192.168.24.96) by puck.office.hd (192.168.24.91)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Thu, 16 Apr
 2020 23:31:24 +0200
Subject: Re: [UNIKRAFT/NEWLIB PATCH] Define tzname
To: <minios-devel@lists.xenproject.org>
References: <20200416194939.18481-1-felipe.huici@neclab.eu>
From: Sharan Santhanam <sharan.santhanam@neclab.eu>
Message-ID: <40a4362d-1f35-f3ea-5b93-4557a596356f@neclab.eu>
Date: Thu, 16 Apr 2020 23:31:22 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.9.1
MIME-Version: 1.0
In-Reply-To: <20200416194939.18481-1-felipe.huici@neclab.eu>
Content-Type: text/plain; charset="utf-8"; format=flowed
Content-Language: en-US
Content-Transfer-Encoding: 7bit
X-Originating-IP: [192.168.24.96]
X-ClientProxiedBy: puck.office.hd (192.168.24.91) To puck.office.hd
 (192.168.24.91)
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Reviewed-by: Sharan Santhanam <sharan.santhanam@neclab.eu>

On 4/16/20 9:49 PM, Felipe Huici wrote:
> Currently, tzname is defined as an extern, which results in a
> undefined reference linker error when attempting to use
> it. This patch maps tzname to _tzanme, which *is*
> defined. newlib does this mapping in OS-specific files that we
> don't compile in, so this is a way to mimic that behavior.
> 
>   Signed-off-by: Felipe Huici <felipe.huici@neclab.eu>
> ---
>   include/time.h | 4 ++++
>   1 file changed, 4 insertions(+)
> 
> diff --git a/include/time.h b/include/time.h
> index a510293..0f94358 100644
> --- a/include/time.h
> +++ b/include/time.h
> @@ -70,4 +70,8 @@ extern long _timezone;
>   extern int _daylight;
>   extern char *_tzname[2];
>   
> +#ifndef tzname
> +#define tzname _tzname
> +#endif
> +
>   #endif /* NEWLIBGLUE_TIME_H */
> 


From minios-devel-bounces@lists.xenproject.org Fri Apr 17 19:43:25 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 17 Apr 2020 19:43: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 1jPWtX-0002TO-2c; Fri, 17 Apr 2020 19:43:23 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=9BuH=6B=gmail.com=raducanu.costi@srs-us1.protection.inumbo.net>)
 id 1jPWtW-0002TJ-19
 for minios-devel@lists.xen.org; Fri, 17 Apr 2020 19:43:22 +0000
X-Inumbo-ID: b11cb964-80e3-11ea-83d8-bc764e2007e4
Received: from mail-wr1-x442.google.com (unknown [2a00:1450:4864:20::442])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id b11cb964-80e3-11ea-83d8-bc764e2007e4;
 Fri, 17 Apr 2020 19:43:21 +0000 (UTC)
Received: by mail-wr1-x442.google.com with SMTP id x18so4411366wrq.2
 for <minios-devel@lists.xen.org>; Fri, 17 Apr 2020 12:43:21 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=from:to:cc:subject:date:message-id;
 bh=/d8/sRPbiaB7oeGWuxk/wzFjeZMGR5YZbSoXtAtoQxI=;
 b=uwIQNXwCITQMTDrWHa4FFfriWHmjeUdQb9B+qTNi88IVkpd/d3rxggYNCz+vgHedGI
 TAUdtk7JZoiWxHhn+46Sotk3OBpnfEYpkBWI3QsnFO4xCv1Eaqu1YrA9wVMErGid0EGQ
 tqVCsSvNZVDaKY+nrWBstJzLrI0ldA97ydDE1nPaQyFit3Krjo9ABGaTldOaksGoaEbG
 m60Bi7GTJokZV2DBfmeDEjHdpSEUrndruj+kNXErokJ6s2moSSx0bNkhIzyD9Ru0m8+Z
 eHcrOgL9fkse/OjVvLkrZTxqlUIRokdIl8HmRoshxE70YtAsw5m3VlIpoQ5GnXTWLV5C
 Rqbg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:from:to:cc:subject:date:message-id;
 bh=/d8/sRPbiaB7oeGWuxk/wzFjeZMGR5YZbSoXtAtoQxI=;
 b=sw8g990VEn5zuEM+xCkqaj1lsMAmYRjJo00AE08Vhb3lwsp4sCme2fZopQqvYlqq3i
 NSpCd9RKZ67tnkuoNcbz2xn2oi1gxcVFCq4Ivcuo5s507Nl2u+5T7gl0ChSFfv68yxfC
 0v9XdJB7OZl0RaCC85qnwVrRJcn5Po7ptuIm1HsbtS1IHuoA2V2+tDP6oOAd6wLLi31H
 1BZuQbNF9crstXycyBWAE47CdGmS+BcSouSUEBapnp4rO4Q4hvAaBdMNTaFIBjQdPpBS
 x5pVJNRluxulvPtEeEvsdPxsaccoFX6d0WqIhCtg+HQ63wQDiBawyZm3Of3pjYrO+wUs
 JtWA==
X-Gm-Message-State: AGi0PuZe/QU3wVtHfuDtZ4RtIynKQ843/n3NH9s9/VXQSqSTYQLHy7wX
 Ov1dZidyIWAdQ981YfgQkwJptFtkCBo=
X-Google-Smtp-Source: APiQypLbgdJrpXEhifemX35VTp7IwqIgl/icd2ynkmOTWfYKOaSWhwuBj6HvSYwWlznH2FoLkKy/yw==
X-Received: by 2002:adf:82a6:: with SMTP id 35mr5345469wrc.378.1587152599872; 
 Fri, 17 Apr 2020 12:43:19 -0700 (PDT)
Received: from localhost.localdomain ([188.25.211.20])
 by smtp.gmail.com with ESMTPSA id w6sm29977263wrm.86.2020.04.17.12.43.19
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 17 Apr 2020 12:43:19 -0700 (PDT)
From: Constantin Raducanu <raducanu.costi@gmail.com>
To: minios-devel@lists.xen.org
Subject: [UNIKRAFT PATCH 1/5] lib/vfscore: Register `close` to syscall_shim
Date: Fri, 17 Apr 2020 22:41:12 +0300
Message-Id: <20200417194116.23195-1-raducanu.costi@gmail.com>
X-Mailer: git-send-email 2.17.1
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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, Constantin Raducanu <raducanu.costi@gmail.com>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Registers `close` system call to syscall_shim library.

Signed-off-by: Constantin Raducanu <raducanu.costi@gmail.com>
---
 lib/vfscore/Makefile.uk   | 1 +
 lib/vfscore/exportsyms.uk | 2 ++
 lib/vfscore/main.c        | 9 ++++-----
 3 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/lib/vfscore/Makefile.uk b/lib/vfscore/Makefile.uk
index a3391e6..631f351 100644
--- a/lib/vfscore/Makefile.uk
+++ b/lib/vfscore/Makefile.uk
@@ -29,3 +29,4 @@ UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += write-3 writev-3
 UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += read-3 readv-3
 UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += fstat-2
 UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += readlink-3
+UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += close-1
\ No newline at end of file
diff --git a/lib/vfscore/exportsyms.uk b/lib/vfscore/exportsyms.uk
index 223bb72..cb01f33 100644
--- a/lib/vfscore/exportsyms.uk
+++ b/lib/vfscore/exportsyms.uk
@@ -18,6 +18,8 @@ write
 uk_syscall_e_write
 uk_syscall_r_write
 close
+uk_syscall_e_close
+uk_syscall_r_close
 read
 uk_syscall_e_read
 uk_syscall_r_read
diff --git a/lib/vfscore/main.c b/lib/vfscore/main.c
index 846e2ef..e970df1 100644
--- a/lib/vfscore/main.c
+++ b/lib/vfscore/main.c
@@ -207,22 +207,21 @@ int fdclose(int fd)
 	return error;
 }
 
-int close(int fd)
+UK_SYSCALL_R_DEFINE(int, close, int, fd)
 {
 	int error;
 
 	trace_vfs_close(fd);
 	error = fdclose(fd);
 	if (error)
-		goto out_errno;
+		goto out_error;
 
 	trace_vfs_close_ret();
 	return 0;
 
-	out_errno:
+	out_error:
 	trace_vfs_close_err(error);
-	errno = error;
-	return -1;
+	return -error;
 }
 
 UK_TRACEPOINT(trace_vfs_mknod, "\"%s\" 0%0o 0x%x", const char*, mode_t, dev_t);
-- 
2.17.1



From minios-devel-bounces@lists.xenproject.org Fri Apr 17 19:43:28 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 17 Apr 2020 19:43: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 1jPWtc-0002Tn-4W; Fri, 17 Apr 2020 19:43:28 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=9BuH=6B=gmail.com=raducanu.costi@srs-us1.protection.inumbo.net>)
 id 1jPWtb-0002Te-0D
 for minios-devel@lists.xen.org; Fri, 17 Apr 2020 19:43:27 +0000
X-Inumbo-ID: b1cdfdf0-80e3-11ea-b4f4-bc764e2007e4
Received: from mail-wm1-x341.google.com (unknown [2a00:1450:4864:20::341])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id b1cdfdf0-80e3-11ea-b4f4-bc764e2007e4;
 Fri, 17 Apr 2020 19:43:22 +0000 (UTC)
Received: by mail-wm1-x341.google.com with SMTP id u127so3127831wmg.1
 for <minios-devel@lists.xen.org>; Fri, 17 Apr 2020 12:43:22 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=from:to:cc:subject:date:message-id:in-reply-to:references;
 bh=u9I/3Y3EpLFX3qA8XfFdcSlWA4mz87ksth6kPyR1W14=;
 b=O1NYx+MlCiLi9ZCPIRq9jHObcAflgMLjXE4uILnBYfU2Qnkr8uP5sapRO4O58kF19a
 VgDySdrZsbzYkeSd5KQc2x5zmWrZGX4l6VlHEWbNuF4ZlCMa+Wj3rOb767vXeJJiODn6
 HvW+tNHDIcHgmy80iXbZ91MBRJN3nzfEe1QBGZImRKqeIYsfznwCaCOdWhDgAn+Xf0Ai
 2guE6Cf/yp0PDS9eSh0Zguq643UCeksN4y7OKQeXwV50E//EDWl5pfdyDq3S8GBLxpyF
 H/VWVSRUa4f73CENhgidJ3UYUo86ck6zst4dd0jNFNXbqmCTbiEzL1E8Feuf8qPfDpB+
 E+Gw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to
 :references;
 bh=u9I/3Y3EpLFX3qA8XfFdcSlWA4mz87ksth6kPyR1W14=;
 b=I77XyWkHs4UrIN+GYRX29MtCH0KrxoHPEmlgtPeCmfxrUW4rogPali/rLaSgTMizQc
 KdWfBBxSnyzMsfBcRr3DLjqXx8AToJ/yCat4dg+M/J3WrGBnf6RGdHBu6Q5OkwQ3FoHb
 biAw4LbjTgIfE0rVMfM80Dt97esUljgaDYVE9APW1dzDmM0f8oYswW/g0ZYM3epCu3mW
 YFCQA9NemFS+FfYDLx9Z6k1r46OvPGCUw/2eZc4epbaUe5t1CG6CTAsKYZBaDBWidbF4
 YQtecqLMlDYeKIasZhaz98P2OBvlXTBXTCkJD2S3p5TYTfEXzrpGjlp8m2whOTHDz98Q
 8vIA==
X-Gm-Message-State: AGi0PubtJNEimuH0FrE2tFXSYNbJt6MtzJEqplM6xLLCcaEiwSItefNq
 v5w7ztWRDOejzZ/FVNGrQgp006TZOVPvgw==
X-Google-Smtp-Source: APiQypJ5WoelNtQiYxta6RERUsgOq6cpvG8yvUcFbEWfsH8BbLl/+6pLNOswyCC1s7Bv67buMhVjTQ==
X-Received: by 2002:a05:600c:2210:: with SMTP id
 z16mr5129837wml.151.1587152601104; 
 Fri, 17 Apr 2020 12:43:21 -0700 (PDT)
Received: from localhost.localdomain ([188.25.211.20])
 by smtp.gmail.com with ESMTPSA id w6sm29977263wrm.86.2020.04.17.12.43.19
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 17 Apr 2020 12:43:20 -0700 (PDT)
From: Constantin Raducanu <raducanu.costi@gmail.com>
To: minios-devel@lists.xen.org
Subject: [UNIKRAFT PATCH 2/5] lib/vfscore: Register `lseek` to syscall_shim
Date: Fri, 17 Apr 2020 22:41:13 +0300
Message-Id: <20200417194116.23195-2-raducanu.costi@gmail.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20200417194116.23195-1-raducanu.costi@gmail.com>
References: <20200417194116.23195-1-raducanu.costi@gmail.com>
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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, Constantin Raducanu <raducanu.costi@gmail.com>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Registers `lseek` system call to syscall_shim library.

Signed-off-by: Constantin Raducanu <raducanu.costi@gmail.com>
---
 lib/vfscore/Makefile.uk   |  3 ++-
 lib/vfscore/exportsyms.uk |  2 ++
 lib/vfscore/main.c        | 11 +++++------
 3 files changed, 9 insertions(+), 7 deletions(-)

diff --git a/lib/vfscore/Makefile.uk b/lib/vfscore/Makefile.uk
index 631f351..ec415f4 100644
--- a/lib/vfscore/Makefile.uk
+++ b/lib/vfscore/Makefile.uk
@@ -29,4 +29,5 @@ UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += write-3 writev-3
 UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += read-3 readv-3
 UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += fstat-2
 UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += readlink-3
-UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += close-1
\ No newline at end of file
+UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += close-1
+UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += lseek-3
\ No newline at end of file
diff --git a/lib/vfscore/exportsyms.uk b/lib/vfscore/exportsyms.uk
index cb01f33..5ad97c2 100644
--- a/lib/vfscore/exportsyms.uk
+++ b/lib/vfscore/exportsyms.uk
@@ -89,6 +89,8 @@ uk_syscall_e_readlink
 uk_syscall_r_readlink
 fallocate
 lseek
+uk_syscall_e_lseek
+uk_syscall_r_lseek
 uk_syscall_e_writev
 uk_syscall_r_writev
 umask
diff --git a/lib/vfscore/main.c b/lib/vfscore/main.c
index e970df1..8bbce80 100644
--- a/lib/vfscore/main.c
+++ b/lib/vfscore/main.c
@@ -262,7 +262,7 @@ UK_TRACEPOINT(trace_vfs_lseek, "%d 0x%x %d", int, off_t, int);
 UK_TRACEPOINT(trace_vfs_lseek_ret, "0x%x", off_t);
 UK_TRACEPOINT(trace_vfs_lseek_err, "%d", int);
 
-off_t lseek(int fd, off_t offset, int whence)
+UK_SYSCALL_R_DEFINE(off_t, lseek, int, fd, off_t, offset, int, whence)
 {
 	struct vfscore_file *fp;
 	off_t org;
@@ -271,20 +271,19 @@ off_t lseek(int fd, off_t offset, int whence)
 	trace_vfs_lseek(fd, offset, whence);
 	error = fget(fd, &fp);
 	if (error)
-		goto out_errno;
+		goto out_error;
 
 	error = sys_lseek(fp, offset, whence, &org);
 	fdrop(fp);
 
 	if (error)
-		goto out_errno;
+		goto out_error;
 	trace_vfs_lseek_ret(org);
 	return org;
 
-	out_errno:
+	out_error:
 	trace_vfs_lseek_err(error);
-	errno = error;
-	return -1;
+	return -error;
 }
 
 LFS64(lseek);
-- 
2.17.1



From minios-devel-bounces@lists.xenproject.org Fri Apr 17 19:43:54 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 17 Apr 2020 19:43: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 1jPWu2-0002Vj-7j; Fri, 17 Apr 2020 19:43:54 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=9BuH=6B=gmail.com=raducanu.costi@srs-us1.protection.inumbo.net>)
 id 1jPWu1-0002Va-Fz
 for minios-devel@lists.xen.org; Fri, 17 Apr 2020 19:43:53 +0000
X-Inumbo-ID: c4129e30-80e3-11ea-83d8-bc764e2007e4
Received: from mail-wm1-x343.google.com (unknown [2a00:1450:4864:20::343])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id c4129e30-80e3-11ea-83d8-bc764e2007e4;
 Fri, 17 Apr 2020 19:43:52 +0000 (UTC)
Received: by mail-wm1-x343.google.com with SMTP id t63so3077547wmt.3
 for <minios-devel@lists.xen.org>; Fri, 17 Apr 2020 12:43:52 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=from:to:cc:subject:date:message-id:in-reply-to:references;
 bh=HPQ8l3u1VzEkg0OU4oqv6NQ3C+6++6A7odSratV7Paw=;
 b=EY6ogj7+7mk5s135g/DfQksARDjR8RYOfeWln3oL5wE9mC2RPDC+lezBck7QV9n7Lz
 /xboIuer4x1NtVjqB32fSyikuLElfTtA0+1jYC4c2/1D8eB5QgQvO+bVT79OcmeyXPa2
 Vm+nV5SWZo8g2pZ3uFG4ZbfGHzXzMItQk+BE48ZQD7+lfK/tnbbIaZ/9NvsoDO8fk3eq
 k/k76r+GWB9fVIiNsNzoT0p8yDdL0ruHPB/OUO6xODRxOU3L7NZa6qf4D2vog8tqGTSz
 pj1w+mb8mYJ3uRHmYobBSZI7sKivl3jBmqVtoTwF2beRNDgv5Zkzk2TDFqjuCoGbspSO
 p9LA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to
 :references;
 bh=HPQ8l3u1VzEkg0OU4oqv6NQ3C+6++6A7odSratV7Paw=;
 b=G+ZdQATTg/fEK/NTv66HEo0y8FGAK9CyhDyIPshsAGsH0pNfllPH3+rgPsXQtvGlof
 OChKGKG6ubeHXp0E3Ym9smIqfg99OD0Qho0guylL1YZovS9S2JDi+SzDa2LIfOQuwz2k
 RaDyxG3cwDthqvf5+Qpafps6wiRw8dDJmpVJUloK8iBA2yWaHUJJH7I3l1aPMPoqOzAc
 6jCy7wY1dnfU2EGSegWS6YWHvkjQqqIPos2HhuqUiU5LiONrp5Sf9JmXaHFnOjF8zSG9
 /sE33fiiA86hkhCiiE1nZE8Nm7PhcaCR8eZdrUmsKVhi+Od2836+hwGup2a1T7KAK/hT
 NWFA==
X-Gm-Message-State: AGi0Pua0K9pCEQ0u2JOzkQ+1zYaTgLpNB1olH497czY9afjPgTayfUnH
 aTSjIkrOZA77Mp0OANLLcCfilWMModPc+A==
X-Google-Smtp-Source: APiQypIVk/+bmWIs3JFGjOIHiQT+aXjMbojQSrAZy+kUNMm/kM53Wy16aWCUng9Wob+ORq14UZgeyw==
X-Received: by 2002:a1c:bc02:: with SMTP id m2mr4855448wmf.60.1587152631677;
 Fri, 17 Apr 2020 12:43:51 -0700 (PDT)
Received: from localhost.localdomain ([188.25.211.20])
 by smtp.gmail.com with ESMTPSA id w6sm29977263wrm.86.2020.04.17.12.43.50
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 17 Apr 2020 12:43:51 -0700 (PDT)
From: Constantin Raducanu <raducanu.costi@gmail.com>
To: minios-devel@lists.xen.org
Subject: [UNIKRAFT PATCH 3/5] lib/vfscore: Register `link` to syscall_shim
Date: Fri, 17 Apr 2020 22:41:14 +0300
Message-Id: <20200417194116.23195-3-raducanu.costi@gmail.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20200417194116.23195-1-raducanu.costi@gmail.com>
References: <20200417194116.23195-1-raducanu.costi@gmail.com>
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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, Constantin Raducanu <raducanu.costi@gmail.com>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Registers `link` system call to syscall_shim library.

Signed-off-by: Constantin Raducanu <raducanu.costi@gmail.com>
---
 lib/vfscore/Makefile.uk   |  3 ++-
 lib/vfscore/exportsyms.uk |  2 ++
 lib/vfscore/main.c        | 17 +++++++++--------
 3 files changed, 13 insertions(+), 9 deletions(-)

diff --git a/lib/vfscore/Makefile.uk b/lib/vfscore/Makefile.uk
index ec415f4..3986676 100644
--- a/lib/vfscore/Makefile.uk
+++ b/lib/vfscore/Makefile.uk
@@ -30,4 +30,5 @@ UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += read-3 readv-3
 UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += fstat-2
 UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += readlink-3
 UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += close-1
-UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += lseek-3
\ No newline at end of file
+UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += lseek-3
+UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += link-2
\ No newline at end of file
diff --git a/lib/vfscore/exportsyms.uk b/lib/vfscore/exportsyms.uk
index 5ad97c2..57413d6 100644
--- a/lib/vfscore/exportsyms.uk
+++ b/lib/vfscore/exportsyms.uk
@@ -45,6 +45,8 @@ vfscore_mount_dump
 umount
 umount2
 link
+uk_syscall_e_link
+uk_syscall_r_link
 unlink
 getcwd
 chown
diff --git a/lib/vfscore/main.c b/lib/vfscore/main.c
index 8bbce80..b5b7e40 100644
--- a/lib/vfscore/main.c
+++ b/lib/vfscore/main.c
@@ -1070,7 +1070,7 @@ UK_TRACEPOINT(trace_vfs_link, "\"%s\" \"%s\"", const char*, const char*);
 UK_TRACEPOINT(trace_vfs_link_ret, "");
 UK_TRACEPOINT(trace_vfs_link_err, "%d", int);
 
-int link(const char *oldpath, const char *newpath)
+UK_SYSCALL_R_DEFINE(int, link, const char*, oldpath, const char*, newpath)
 {
 	struct task *t = main_task;
 	char path1[PATH_MAX];
@@ -1081,21 +1081,22 @@ int link(const char *oldpath, const char *newpath)
 
 	error = ENOENT;
 	if (oldpath == NULL || newpath == NULL)
-		goto out_errno;
+		goto out_error;
 	if ((error = task_conv(t, oldpath, VWRITE, path1)) != 0)
-		goto out_errno;
+		goto out_error;
 	if ((error = task_conv(t, newpath, VWRITE, path2)) != 0)
-		goto out_errno;
+		goto out_error;
 
 	error = sys_link(path1, path2);
 	if (error)
-		goto out_errno;
+		goto out_error;
+
 	trace_vfs_link_ret();
 	return 0;
-	out_errno:
+
+	out_error:
 	trace_vfs_link_err(error);
-	errno = error;
-	return -1;
+	return -error;
 }
 
 
-- 
2.17.1



From minios-devel-bounces@lists.xenproject.org Fri Apr 17 19:44:00 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 17 Apr 2020 19:44: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 1jPWu8-0002WR-9h; Fri, 17 Apr 2020 19:44:00 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=9BuH=6B=gmail.com=raducanu.costi@srs-us1.protection.inumbo.net>)
 id 1jPWu7-0002WH-GX
 for minios-devel@lists.xen.org; Fri, 17 Apr 2020 19:43:59 +0000
X-Inumbo-ID: c7b2edc4-80e3-11ea-b4f4-bc764e2007e4
Received: from mail-wm1-x341.google.com (unknown [2a00:1450:4864:20::341])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id c7b2edc4-80e3-11ea-b4f4-bc764e2007e4;
 Fri, 17 Apr 2020 19:43:58 +0000 (UTC)
Received: by mail-wm1-x341.google.com with SMTP id t63so3077827wmt.3
 for <minios-devel@lists.xen.org>; Fri, 17 Apr 2020 12:43:58 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=from:to:cc:subject:date:message-id:in-reply-to:references;
 bh=fdgx5jFjGzX4mwXiYYPH6WqT2r0L0qQdSh3gT73mJ84=;
 b=Bx+VlC868pjVZgRoUIaGk+qK8khcnzdEj18D6AOQBDBfrBimz5fPUM0YwnnifZ25F2
 T3w8g8ewwalxPEqhi4J+UnDT91Ipe9/bCxSfy9u802SRsXtsBHvpKxMJ2tYNybh3iU+F
 giHm6mzBQbq79Dv7vTipDaGx3Fx/0yBI/XI7+fgyzw5BagUXnrBkDpAvCAqZTePBphZ4
 ptJ5s4iw4Yjdk67s5cfrO77wlOWvkKGt1UAZOrEbZ7O/uv8yYp2xIlWVlo4qzbuDUIkX
 IQ/+VIxEJazoUTuIzh53L9MDtX5TNH+1bK/6aTJtQ/Wi8M23vK8l8RaspE5Ois9EDyrw
 iksw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to
 :references;
 bh=fdgx5jFjGzX4mwXiYYPH6WqT2r0L0qQdSh3gT73mJ84=;
 b=oEjEi19UWEeRT/nOKWjVKS55A0Kb74NuXbax/9qLi1krduyzzfR31edtaMXXfdQBfZ
 5vR/m+LpLWdAkl4SDNwgTLlWOH0OQNFWVlnTe65gjh+2YLR58W1Ik/kZ2joEhWEfRqm1
 eS4u6y8FzgMUPne3DuZPjyORMFnLOOTLiFvoH8wodwAmLJjQRvrJ3utr5H0Li3A8Ci+w
 ChkICsQ3uIfpwDI40ukAh8ex97hQwi+Ec8fvOJ73ndB1SEgXVSfJoTgDIiVLQOQ06Ma6
 7QUJgcPbt0eJGjMEBIf9h0XaKlInGc1qNOrCSxHNMt5R9E/4FdRabmX/4zH6Pt0HoaZO
 zU/A==
X-Gm-Message-State: AGi0PuYidJAlUR5sEmkvO5zGIDWcEL/zSpV1MCMjmyBsmtGcyo/ETvLv
 DZxjJJIzh0w6e5ZnoLWBUdHvjDE0CZFkhw==
X-Google-Smtp-Source: APiQypK/t4xIfml33UDyVMeBW49A5bGpiV2saA5hVxDUNAhDcmHFFmzyE22lhmJRtJ2bFvtbw/4nCw==
X-Received: by 2002:a1c:b445:: with SMTP id d66mr5129922wmf.187.1587152637837; 
 Fri, 17 Apr 2020 12:43:57 -0700 (PDT)
Received: from localhost.localdomain ([188.25.211.20])
 by smtp.gmail.com with ESMTPSA id w6sm29977263wrm.86.2020.04.17.12.43.57
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 17 Apr 2020 12:43:57 -0700 (PDT)
From: Constantin Raducanu <raducanu.costi@gmail.com>
To: minios-devel@lists.xen.org
Subject: [UNIKRAFT PATCH 4/5] lib/vfscore: Register `ftruncate` to syscall_shim
Date: Fri, 17 Apr 2020 22:41:15 +0300
Message-Id: <20200417194116.23195-4-raducanu.costi@gmail.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20200417194116.23195-1-raducanu.costi@gmail.com>
References: <20200417194116.23195-1-raducanu.costi@gmail.com>
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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, Constantin Raducanu <raducanu.costi@gmail.com>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Registers `ftruncate` system call to syscall_shim library.

Signed-off-by: Constantin Raducanu <raducanu.costi@gmail.com>
---
 lib/vfscore/Makefile.uk   |  3 ++-
 lib/vfscore/exportsyms.uk |  2 ++
 lib/vfscore/main.c        | 11 +++++------
 3 files changed, 9 insertions(+), 7 deletions(-)

diff --git a/lib/vfscore/Makefile.uk b/lib/vfscore/Makefile.uk
index 3986676..6580573 100644
--- a/lib/vfscore/Makefile.uk
+++ b/lib/vfscore/Makefile.uk
@@ -31,4 +31,5 @@ UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += fstat-2
 UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += readlink-3
 UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += close-1
 UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += lseek-3
-UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += link-2
\ No newline at end of file
+UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += link-2
+UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += ftruncate-2
\ No newline at end of file
diff --git a/lib/vfscore/exportsyms.uk b/lib/vfscore/exportsyms.uk
index 57413d6..158386b 100644
--- a/lib/vfscore/exportsyms.uk
+++ b/lib/vfscore/exportsyms.uk
@@ -33,6 +33,8 @@ fhold
 fdrop
 fget
 ftruncate
+uk_syscall_e_ftruncate
+uk_syscall_r_ftruncate
 stat
 chmod
 fchmod
diff --git a/lib/vfscore/main.c b/lib/vfscore/main.c
index b5b7e40..2600dd2 100644
--- a/lib/vfscore/main.c
+++ b/lib/vfscore/main.c
@@ -1724,7 +1724,7 @@ UK_TRACEPOINT(trace_vfs_ftruncate, "%d 0x%x", int, off_t);
 UK_TRACEPOINT(trace_vfs_ftruncate_ret, "");
 UK_TRACEPOINT(trace_vfs_ftruncate_err, "%d", int);
 
-int ftruncate(int fd, off_t length)
+UK_SYSCALL_R_DEFINE(int, ftruncate, int, fd, off_t, length)
 {
 	trace_vfs_ftruncate(fd, length);
 	struct vfscore_file *fp;
@@ -1732,20 +1732,19 @@ int ftruncate(int fd, off_t length)
 
 	error = fget(fd, &fp);
 	if (error)
-		goto out_errno;
+		goto out_error;
 
 	error = sys_ftruncate(fp, length);
 	fdrop(fp);
 
 	if (error)
-		goto out_errno;
+		goto out_error;
 	trace_vfs_ftruncate_ret();
 	return 0;
 
-	out_errno:
-	errno = error;
+	out_error:
 	trace_vfs_ftruncate_err(error);
-	return -1;
+	return -error;
 }
 
 LFS64(ftruncate);
-- 
2.17.1



From minios-devel-bounces@lists.xenproject.org Fri Apr 17 19:44:17 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 17 Apr 2020 19:44: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 1jPWuP-0002Xc-C6; Fri, 17 Apr 2020 19:44:17 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=9BuH=6B=gmail.com=raducanu.costi@srs-us1.protection.inumbo.net>)
 id 1jPWuO-0002XX-5a
 for minios-devel@lists.xen.org; Fri, 17 Apr 2020 19:44:16 +0000
X-Inumbo-ID: d19acc3a-80e3-11ea-b58d-bc764e2007e4
Received: from mail-wm1-x344.google.com (unknown [2a00:1450:4864:20::344])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id d19acc3a-80e3-11ea-b58d-bc764e2007e4;
 Fri, 17 Apr 2020 19:44:15 +0000 (UTC)
Received: by mail-wm1-x344.google.com with SMTP id x4so4087571wmj.1
 for <minios-devel@lists.xen.org>; Fri, 17 Apr 2020 12:44:15 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=from:to:cc:subject:date:message-id:in-reply-to:references;
 bh=Hr4p+Z4KcW5zZTratL6WJuHWA9Qgw69d8exKFDipN7o=;
 b=IMfsSejGsNiYu+fpsMAvmA2h6AuuoJ5l8NhrwGipUVOp/2L+jD1AhClC9fOsP6zBG7
 It31zuq4uFlIyl9KSIeHGjUOanW6mMVneBz6n+XdB2KWTWGbE/E/MlvLCyDEHRurpbjV
 dVkaLw0XN4uzWX9OVIOi8H50y72568fDzbjMJYWMj82rnyVygAmCxxw+wD8Qz9e7zjNy
 cqdnOVcCjJbucmuZKL7k0b+ciqZAt/jYFnbN8XulJ6lE4tolSPxpUwXY6jP0HSMU1M7m
 oqeZlFxF2NbSzEohU1h6NoeRzK4vXiv0Z3Lg/TT053mV1o8pb3ASBlSMYiIvUId67Iub
 ewFw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to
 :references;
 bh=Hr4p+Z4KcW5zZTratL6WJuHWA9Qgw69d8exKFDipN7o=;
 b=pUsJrB30T6bHEAYESqcW7p//q39tWZFt4vS4w2IbhmIdTMxPqgFLAwljnvK3T4Gd6v
 V0AXQuHKnu7IXkWbjQPQC6CSiUHPa5cKl66aylrfOU84lgO83lxoIFHhRPQolF2xd4IG
 uRV1FxVhifa75YZU6nmHo/6D2R4rroO5Zn6fH+etRm15/Y2kiuZzr9C7rKF00ONKQHv/
 AbnavqwUGvHdGVU40VMAvY9zXLzY0dgbfrBWs1bJggUUkOmIDsn5Mb1VVqKbqGoKj8iI
 4C6nQCIVByo4B/r6CS47jFMdaOj63T3b/TMaDkfdlAhe7U2wo6LwH43gHGIjcdvQVYNW
 Um2g==
X-Gm-Message-State: AGi0PuaeTjsehUHJmKM2jzkaZ11TsRgWM6oGLphsBLL6Ik7ZLw2Wp73M
 bRBuXiDu1PbHHHLo+r9XXUbzb1ZH0xkVkw==
X-Google-Smtp-Source: APiQypLi2sCD/rrF9JbShiMt/S7+F931F0juiaoUxEuYC2mDM9A9vD7hGZDxw0GSF+t+r6AnNlGi9Q==
X-Received: by 2002:a7b:c642:: with SMTP id q2mr5156594wmk.41.1587152654416;
 Fri, 17 Apr 2020 12:44:14 -0700 (PDT)
Received: from localhost.localdomain ([188.25.211.20])
 by smtp.gmail.com with ESMTPSA id w6sm29977263wrm.86.2020.04.17.12.44.13
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 17 Apr 2020 12:44:13 -0700 (PDT)
From: Constantin Raducanu <raducanu.costi@gmail.com>
To: minios-devel@lists.xen.org
Subject: [UNIKRAFT PATCH 5/5] lib/vfscore: Register `truncate` to syscall_shim
Date: Fri, 17 Apr 2020 22:41:16 +0300
Message-Id: <20200417194116.23195-5-raducanu.costi@gmail.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20200417194116.23195-1-raducanu.costi@gmail.com>
References: <20200417194116.23195-1-raducanu.costi@gmail.com>
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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, Constantin Raducanu <raducanu.costi@gmail.com>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Registers `truncate` system call to syscall_shim library.

Signed-off-by: Constantin Raducanu <raducanu.costi@gmail.com>
---
 lib/vfscore/Makefile.uk   |  3 ++-
 lib/vfscore/exportsyms.uk |  2 ++
 lib/vfscore/main.c        | 16 +++++++++-------
 3 files changed, 13 insertions(+), 8 deletions(-)

diff --git a/lib/vfscore/Makefile.uk b/lib/vfscore/Makefile.uk
index 6580573..662a2c8 100644
--- a/lib/vfscore/Makefile.uk
+++ b/lib/vfscore/Makefile.uk
@@ -32,4 +32,5 @@ UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += readlink-3
 UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += close-1
 UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += lseek-3
 UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += link-2
-UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += ftruncate-2
\ No newline at end of file
+UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += ftruncate-2
+UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += truncate-2
\ No newline at end of file
diff --git a/lib/vfscore/exportsyms.uk b/lib/vfscore/exportsyms.uk
index 158386b..2805b73 100644
--- a/lib/vfscore/exportsyms.uk
+++ b/lib/vfscore/exportsyms.uk
@@ -72,6 +72,8 @@ uk_syscall_e_readv
 uk_syscall_r_readv
 writev
 truncate
+uk_syscall_e_truncate
+uk_syscall_r_truncate
 mknod
 preadv
 ioctl
diff --git a/lib/vfscore/main.c b/lib/vfscore/main.c
index 2600dd2..1bcafe0 100644
--- a/lib/vfscore/main.c
+++ b/lib/vfscore/main.c
@@ -1694,7 +1694,7 @@ UK_TRACEPOINT(trace_vfs_truncate, "\"%s\" 0x%x", const char*, off_t);
 UK_TRACEPOINT(trace_vfs_truncate_ret, "");
 UK_TRACEPOINT(trace_vfs_truncate_err, "%d", int);
 
-int truncate(const char *pathname, off_t length)
+UK_SYSCALL_R_DEFINE(int, truncate, const char*, pathname, off_t, length)
 {
 	trace_vfs_truncate(pathname, length);
 	struct task *t = main_task;
@@ -1703,19 +1703,21 @@ int truncate(const char *pathname, off_t length)
 
 	error = ENOENT;
 	if (pathname == NULL)
-		goto out_errno;
+		goto out_error;
+
 	if ((error = task_conv(t, pathname, VWRITE, path)) != 0)
-		goto out_errno;
+		goto out_error;
 
 	error = sys_truncate(path, length);
 	if (error)
-		goto out_errno;
+		goto out_error;
+
 	trace_vfs_truncate_ret();
 	return 0;
-	out_errno:
-	errno = error;
+
+	out_error:
 	trace_vfs_truncate_err(error);
-	return -1;
+	return -error;
 }
 
 LFS64(truncate);
-- 
2.17.1



From minios-devel-bounces@lists.xenproject.org Fri Apr 17 20:15:53 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 17 Apr 2020 20:15: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 1jPXOy-0005Sy-Bn; Fri, 17 Apr 2020 20:15: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=nVPA=6B=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1jPXOw-0005St-LP
 for minios-devel@lists.xen.org; Fri, 17 Apr 2020 20:15:50 +0000
X-Inumbo-ID: 39ee5eb0-80e8-11ea-8d8e-12813bfff9fa
Received: from queen.nlehd.de (unknown [195.37.154.80])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTP
 id 39ee5eb0-80e8-11ea-8d8e-12813bfff9fa;
 Fri, 17 Apr 2020 20:15:48 +0000 (UTC)
Received: from localhost (c110.ant-net [192.168.0.36])
 by queen.nlehd.de (Postfix) with ESMTP id 9C82D410E2;
 Fri, 17 Apr 2020 22:15:47 +0200 (CEST)
From: Felipe Huici <felipe.huici@neclab.eu>
To: minios-devel@lists.xen.org
Subject: [UNIKRAFT/COMPILER-RT PATCH] Add suppress flags for cleaner builds.
Date: Fri, 17 Apr 2020 22:15:46 +0200
Message-Id: <20200417201546.17533-1-felipe.huici@neclab.eu>
X-Mailer: git-send-email 2.20.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Signed-off-by: Felipe Huici <felipe.huici@neclab.eu>
---
 Makefile.uk | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/Makefile.uk b/Makefile.uk
index dcb042b..900c5ae 100644
--- a/Makefile.uk
+++ b/Makefile.uk
@@ -72,8 +72,11 @@ CXXINCLUDES-$(CONFIG_LIBCOMPILER_RT) += -I$(LIBCOMPILER_RT_SRC)/include
 ################################################################################
 # Global flags
 ################################################################################
+LIBCOMPILER_RT_SUPPRESS_FLAGS += -Wno-unused-parameter		   \
+			         -Wno-builtin-declaration-mismatch \
+				 -Wno-incompatible-pointer-types   \
+				 -Wno-implicit-fallthrough
 
-LIBCOMPILER_RT_SUPPRESS_FLAGS += -Wno-unused-parameter -Wno-builtin-declaration-mismatch
 LIBCOMPILER_RT_CFLAGS-y   += $(LIBCOMPILER_RT_SUPPRESS_FLAGS)
 LIBCOMPILER_RT_CXXFLAGS-y += $(LIBCOMPILER_RT_SUPPRESS_FLAGS)
 
-- 
2.20.1



From minios-devel-bounces@lists.xenproject.org Fri Apr 17 20:16:38 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 17 Apr 2020 20:16: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 1jPXPi-0005Ud-GQ; Fri, 17 Apr 2020 20:16:38 +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=nVPA=6B=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1jPXPh-0005UY-10
 for minios-devel@lists.xen.org; Fri, 17 Apr 2020 20:16:37 +0000
X-Inumbo-ID: 562fada4-80e8-11ea-8d8e-12813bfff9fa
Received: from queen.nlehd.de (unknown [195.37.154.80])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTP
 id 562fada4-80e8-11ea-8d8e-12813bfff9fa;
 Fri, 17 Apr 2020 20:16:35 +0000 (UTC)
Received: from localhost (c431.ant-net [192.168.0.36])
 by queen.nlehd.de (Postfix) with ESMTP id 3C068410E2;
 Fri, 17 Apr 2020 22:16:35 +0200 (CEST)
From: Felipe Huici <felipe.huici@neclab.eu>
To: minios-devel@lists.xen.org
Subject: [UNIKRAFT/NEWLIB PATCH] Add suppress flag for cleaner builds.
Date: Fri, 17 Apr 2020 22:16:33 +0200
Message-Id: <20200417201633.18782-1-felipe.huici@neclab.eu>
X-Mailer: git-send-email 2.20.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Signed-off-by: Felipe Huici <felipe.huici@neclab.eu>
---
 Makefile.uk | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Makefile.uk b/Makefile.uk
index 82836e4..fce2f54 100644
--- a/Makefile.uk
+++ b/Makefile.uk
@@ -105,7 +105,7 @@ LIBNEWLIB_SUPPRESS_FLAGS-y += \
 -Wno-array-bounds -Wno-maybe-uninitialized -Wno-pointer-sign -Wno-unused-value	\
 -Wno-unused-macros -Wno-parentheses -Wno-implicit-function-declaration		\
 -Wno-missing-braces -Wno-endif-labels -Wno-unused-but-set-variable		\
--Wno-type-limits -Wno-sign-compare
+-Wno-type-limits -Wno-sign-compare -Wno-parentheses
 LIBNEWLIB_SUPPRESS_FLAGS-$(call gcc_version_ge,6,0) += -Wno-misleading-indentation
 LIBNEWLIB_SUPPRESS_FLAGS-$(call gcc_version_ge,6,0) += -Wno-shift-negative-value
 LIBNEWLIB_SUPPRESS_FLAGS-$(call gcc_version_ge,7,0) += -Wno-implicit-fallthrough
-- 
2.20.1



From minios-devel-bounces@lists.xenproject.org Fri Apr 17 20:17:28 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 17 Apr 2020 20:17: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 1jPXQV-0005WP-K9; Fri, 17 Apr 2020 20:17:27 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=nVPA=6B=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1jPXQU-0005WK-GP
 for minios-devel@lists.xen.org; Fri, 17 Apr 2020 20:17:26 +0000
X-Inumbo-ID: 72aeaa20-80e8-11ea-9e09-bc764e2007e4
Received: from queen.nlehd.de (unknown [195.37.154.80])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTP
 id 72aeaa20-80e8-11ea-9e09-bc764e2007e4;
 Fri, 17 Apr 2020 20:17:23 +0000 (UTC)
Received: from localhost (c110.ant-net [192.168.0.36])
 by queen.nlehd.de (Postfix) with ESMTP id 16249410E2;
 Fri, 17 Apr 2020 22:17:23 +0200 (CEST)
From: Felipe Huici <felipe.huici@neclab.eu>
To: minios-devel@lists.xen.org
Subject: [UNIKRAFT/LIBCXX PATCH] Add suppress flag for cleaner builds.
Date: Fri, 17 Apr 2020 22:17:22 +0200
Message-Id: <20200417201722.21029-1-felipe.huici@neclab.eu>
X-Mailer: git-send-email 2.20.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Signed-off-by: Felipe Huici <felipe.huici@neclab.eu>
---
 Makefile.uk | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Makefile.uk b/Makefile.uk
index 6f5f37c..65f8710 100644
--- a/Makefile.uk
+++ b/Makefile.uk
@@ -103,7 +103,7 @@ endif
 LIBCXX_CFLAGS-y    +=   $(CONFIG_FLAGS)
 LIBCXX_CXXFLAGS-y    +=   $(CONFIG_FLAGS)
 
-LIBCXX_SUPPRESS_FLAGS += -Wno-unused-parameter
+LIBCXX_SUPPRESS_FLAGS += -Wno-unused-parameter -Wno-parentheses
 LIBCXX_CFLAGS-y   += $(LIBCXX_SUPPRESS_FLAGS)
 LIBCXX_CXXFLAGS-y += $(LIBCXX_SUPPRESS_FLAGS)
 
-- 
2.20.1



From minios-devel-bounces@lists.xenproject.org Fri Apr 17 20:18:00 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 17 Apr 2020 20:18: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 1jPXR2-0005Z2-NB; Fri, 17 Apr 2020 20:18: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=nVPA=6B=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1jPXR1-0005Yx-Hq
 for minios-devel@lists.xen.org; Fri, 17 Apr 2020 20:17:59 +0000
X-Inumbo-ID: 87a654e6-80e8-11ea-8d8e-12813bfff9fa
Received: from queen.nlehd.de (unknown [195.37.154.80])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTP
 id 87a654e6-80e8-11ea-8d8e-12813bfff9fa;
 Fri, 17 Apr 2020 20:17:58 +0000 (UTC)
Received: from localhost (c110.ant-net [192.168.0.36])
 by queen.nlehd.de (Postfix) with ESMTP id 3A131410E2;
 Fri, 17 Apr 2020 22:17:58 +0200 (CEST)
From: Felipe Huici <felipe.huici@neclab.eu>
To: minios-devel@lists.xen.org
Subject: [UNIKRAFT/LIBCXXABI PATCH] Add suppress flag for cleaner build.
Date: Fri, 17 Apr 2020 22:17:57 +0200
Message-Id: <20200417201757.23064-1-felipe.huici@neclab.eu>
X-Mailer: git-send-email 2.20.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Signed-off-by: Felipe Huici <felipe.huici@neclab.eu>
---
 Makefile.uk | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Makefile.uk b/Makefile.uk
index 3bc2e91..a4ad2b4 100644
--- a/Makefile.uk
+++ b/Makefile.uk
@@ -74,7 +74,7 @@ endif
 LIBCXXABI_CFLAGS-y    +=  $(CONFIG_FLAGS)
 LIBCXXABI_CXXFLAGS-y    +=  $(CONFIG_FLAGS)
 
-LIBCXXABI_SUPPRESS_FLAGS += -Wno-unused-parameter
+LIBCXXABI_SUPPRESS_FLAGS += -Wno-unused-parameter -Wno-parentheses
 LIBCXXABI_CFLAGS-y   += $(LIBCXXABI_SUPPRESS_FLAGS)
 LIBCXXABI_CXXFLAGS-y += $(LIBCXXABI_SUPPRESS_FLAGS)
 
-- 
2.20.1



From minios-devel-bounces@lists.xenproject.org Fri Apr 17 20:19:09 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 17 Apr 2020 20:19: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 1jPXS8-0005ak-Rf; Fri, 17 Apr 2020 20:19: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=nVPA=6B=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1jPXS7-0005af-1k
 for minios-devel@lists.xen.org; Fri, 17 Apr 2020 20:19:07 +0000
X-Inumbo-ID: afaca0d0-80e8-11ea-8d8e-12813bfff9fa
Received: from queen.nlehd.de (unknown [195.37.154.80])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTP
 id afaca0d0-80e8-11ea-8d8e-12813bfff9fa;
 Fri, 17 Apr 2020 20:19:05 +0000 (UTC)
Received: from localhost (c431.ant-net [192.168.0.36])
 by queen.nlehd.de (Postfix) with ESMTP id 5D624410E2;
 Fri, 17 Apr 2020 22:19:05 +0200 (CEST)
From: Felipe Huici <felipe.huici@neclab.eu>
To: minios-devel@lists.xen.org
Subject: [UNIKRAFT/LIBUNWIND PATCH] Add suppress flag for cleaner builds.
Date: Fri, 17 Apr 2020 22:19:04 +0200
Message-Id: <20200417201904.23424-1-felipe.huici@neclab.eu>
X-Mailer: git-send-email 2.20.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Signed-off-by: Felipe Huici <felipe.huici@neclab.eu>
---
 Makefile.uk | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/Makefile.uk b/Makefile.uk
index 5afc385..7c29887 100644
--- a/Makefile.uk
+++ b/Makefile.uk
@@ -71,13 +71,13 @@ LIBUNWIND_CXXINCLUDES-y += -I$(LIBUNWIND_SRC)/src
 ################################################################################
 # Global flags
 ################################################################################
-CONFIG_FLAGS   += -D _LIBUNWIND_HAS_NO_THREADS  -D __ELF__  -D _LIBUNWIND_IS_NATIVE_ONLY		\
+CONFIG_FLAGS   += -D _LIBUNWIND_HAS_NO_THREADS  -D __ELF__  -D _LIBUNWIND_IS_NATIVE_ONLY \
 		  -D _LIBUNWIND_SUPPORT_DWARF_UNWIND -D _LIBUNWIND_IS_BAREMETAL
 
 LIBUNWIND_CFLAGS-y      +=  $(CONFIG_FLAGS)
 LIBUNWIND_CXXFLAGS-y    +=  $(CONFIG_FLAGS)
 
-LIBUNWIND_SUPPRESS_FLAGS += -Wno-unused-parameter
+LIBUNWIND_SUPPRESS_FLAGS += -Wno-unused-parameter -Wno-maybe-uninitialized
 LIBUNWIND_CFLAGS-y   += $(LIBUNWIND_SUPPRESS_FLAGS)
 LIBUNWIND_CXXFLAGS-y += $(LIBUNWIND_SUPPRESS_FLAGS)
 
-- 
2.20.1



From minios-devel-bounces@lists.xenproject.org Fri Apr 17 20:19:59 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 17 Apr 2020 20:19: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 1jPXSw-0005cJ-VF; Fri, 17 Apr 2020 20:19:58 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=nVPA=6B=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1jPXSw-0005cA-0b
 for minios-devel@lists.xen.org; Fri, 17 Apr 2020 20:19:58 +0000
X-Inumbo-ID: ce701150-80e8-11ea-b58d-bc764e2007e4
Received: from queen.nlehd.de (unknown [195.37.154.80])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTP
 id ce701150-80e8-11ea-b58d-bc764e2007e4;
 Fri, 17 Apr 2020 20:19:57 +0000 (UTC)
Received: from localhost (c431.ant-net [192.168.0.36])
 by queen.nlehd.de (Postfix) with ESMTP id 077AB410E2;
 Fri, 17 Apr 2020 22:19:57 +0200 (CEST)
From: Felipe Huici <felipe.huici@neclab.eu>
To: minios-devel@lists.xen.org
Subject: [UNIKRAFT/GEMMLOWP PATCH] Add supress flags for cleaner builds.
Date: Fri, 17 Apr 2020 22:19:56 +0200
Message-Id: <20200417201956.23569-1-felipe.huici@neclab.eu>
X-Mailer: git-send-email 2.20.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Signed-off-by: Felipe Huici <felipe.huici@neclab.eu>
---
 Makefile.uk | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/Makefile.uk b/Makefile.uk
index 1283c59..9fdfe6c 100644
--- a/Makefile.uk
+++ b/Makefile.uk
@@ -51,9 +51,15 @@ LIBGEMMLOWP_SRC = $(LIBGEMMLOWP_ORIGIN)/$(LIBGEMMLOWP_SUBDIR)
 # Library includes
 ################################################################################
 CINCLUDES-$(CONFIG_LIBGEMMLOWP) += -I$(LIBGEMMLOWP_SRC)
-
 CXXINCLUDES-$(CONFIG_LIBGEMMLOWP) += -I$(LIBGEMMLOWP_SRC)
 
+################################################################################
+# Global flags
+################################################################################
+LIBGEMMLOWP_SUPPRESS_FLAGS += -Wno-sign-compare
+LIBGEMMLOWP_CFLAGS-y += $(LIBGEMMLOWP_SUPPRESS_FLAGS)
+LIBGEMMLOWP_CXXFLAGS-y += $(LIBGEMMLOWP_SUPPRESS_FLAGS)
+
 ################################################################################
 # Library sources
 ################################################################################
-- 
2.20.1



From minios-devel-bounces@lists.xenproject.org Fri Apr 17 20:23:20 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 17 Apr 2020 20:23: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 1jPXWB-0006KC-8R; Fri, 17 Apr 2020 20:23:19 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=nVPA=6B=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1jPXWA-0006K7-P5
 for minios-devel@lists.xen.org; Fri, 17 Apr 2020 20:23:18 +0000
X-Inumbo-ID: 45e0b668-80e9-11ea-b4f4-bc764e2007e4
Received: from queen.nlehd.de (unknown [195.37.154.80])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTP
 id 45e0b668-80e9-11ea-b4f4-bc764e2007e4;
 Fri, 17 Apr 2020 20:23:17 +0000 (UTC)
Received: from localhost (c110.ant-net [192.168.0.36])
 by queen.nlehd.de (Postfix) with ESMTP id 1CE92410E2;
 Fri, 17 Apr 2020 22:23:17 +0200 (CEST)
From: Felipe Huici <felipe.huici@neclab.eu>
To: minios-devel@lists.xen.org
Subject: [UNIKRAFT/EIGEN PATCH] Prevent kludgeoning by barrier macro.
Date: Fri, 17 Apr 2020 22:23:15 +0200
Message-Id: <20200417202315.24133-1-felipe.huici@neclab.eu>
X-Mailer: git-send-email 2.20.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Add patch to prevent the definition of the macro "barrier" in lcpu.h
from kludgeoning the use of the word barrier in eigen code.

Signed-off-by: Felipe Huici <felipe.huici@neclab.eu
---
 patches/0002-prevent-barrier-macro-code-kludge.patch | 10 ++++++++++
 1 file changed, 10 insertions(+)
 create mode 100644 patches/0002-prevent-barrier-macro-code-kludge.patch

diff --git a/patches/0002-prevent-barrier-macro-code-kludge.patch b/patches/0002-prevent-barrier-macro-code-kludge.patch
new file mode 100644
index 0000000..0b3fe78
--- /dev/null
+++ b/patches/0002-prevent-barrier-macro-code-kludge.patch
@@ -0,0 +1,10 @@
+--- a/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceThreadPool.h	2020-04-17 17:13:19.072796790 +0200
++++ b/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceThreadPool.h	2021-04-17 17:13:41.800543414 +0200
+@@ -98,6 +98,7 @@
+       const char* src_ptr = static_cast<const char*>(src);
+       char* dst_ptr = static_cast<char*>(dst);
+       const size_t blocksize = (n + (num_threads - 1)) / num_threads;
++#undef barrier      
+       Barrier barrier(static_cast<int>(num_threads - 1));
+       // Launch the last 3 blocks on worker threads.
+       for (size_t i = 1; i < num_threads; ++i) {
-- 
2.20.1



From minios-devel-bounces@lists.xenproject.org Fri Apr 17 20:28:51 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 17 Apr 2020 20:28: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 1jPXbV-0006Pl-NV; Fri, 17 Apr 2020 20:28:49 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=nVPA=6B=neclab.eu=felipe.huici@srs-us1.protection.inumbo.net>)
 id 1jPXbU-0006Pg-Li
 for minios-devel@lists.xen.org; Fri, 17 Apr 2020 20:28:48 +0000
X-Inumbo-ID: 0a783f96-80ea-11ea-9e09-bc764e2007e4
Received: from queen.nlehd.de (unknown [195.37.154.80])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTP
 id 0a783f96-80ea-11ea-9e09-bc764e2007e4;
 Fri, 17 Apr 2020 20:28:47 +0000 (UTC)
Received: from localhost (c110.ant-net [192.168.0.36])
 by queen.nlehd.de (Postfix) with ESMTP id 2AA7E41433;
 Fri, 17 Apr 2020 22:28:47 +0200 (CEST)
From: Felipe Huici <felipe.huici@neclab.eu>
To: minios-devel@lists.xen.org
Subject: [UNIKRAFT/LIBFFT2D PATCH] Set default "dimension" menu option to 2,
 as needed by tflite.
Date: Fri, 17 Apr 2020 22:28:46 +0200
Message-Id: <20200417202846.24963-1-felipe.huici@neclab.eu>
X-Mailer: git-send-email 2.20.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

There is no practical way to programmatically set a choice option in
kConfig, so we set the default value to 2, as needed by TensorFlow
Lite. We also add suppress flags for cleaner builds.

Signed-off-by: Felipe Huici <felipe.huici@neclab.eu
---
 Config.uk   |  3 ++-
 Makefile.uk | 10 ++++++++--
 2 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/Config.uk b/Config.uk
index 73f6b2e..58aeaf1 100644
--- a/Config.uk
+++ b/Config.uk
@@ -1,5 +1,5 @@
 menuconfig LIBFFT2D
-    bool "Fast Fourier Transform library"
+    bool "libff2td - Fast Fourier Transform library"
     select LIBUNWIND
     select LIBCOMPILER-RT
     select LIBCXX
@@ -11,6 +11,7 @@ menuconfig LIBFFT2D
 if LIBFFT2D
     choice DIMENSION
         prompt "DIMENSION"
+	default LIBFFT2D_2D
 
         config LIBFFT2D_1D
             bool "1"
diff --git a/Makefile.uk b/Makefile.uk
index 3a00071..412319f 100644
--- a/Makefile.uk
+++ b/Makefile.uk
@@ -49,9 +49,15 @@ LIBFFT2D_SRC=$(LIBFFT2D_ORIGIN)/$(LIBFFT2D_SUBDIR)
 ################################################################################
 # Library includes
 ################################################################################
-CXXINCLUDES-$(CONFIG_LIBFFT2D) += -I$(LIBFFT2D_SRC)/
+CXXINCLUDES-$(CONFIG_LIBFFT2D) += -I$(LIBFFT2D_SRC)
+CINCLUDES-$(CONFIG_LIBFFT2D) += -I$(LIBFFT2D_SRC)
 
-CINCLUDES-$(CONFIG_LIBFFT2D) += -I$(LIBFFT2D_SRC)/
+################################################################################
+# Global flags
+################################################################################
+LIBFFT2D_SUPPRESS_FLAGS += -Wno-unused-parameter
+LIBFFT2D_CFLAGS-y += $(LIBFFT2D_SUPPRESS_FLAGS)
+LIBFFT2D_CXXFLAGS-y += $(LIBFFT2D_SUPPRESS_FLAGS)
 
 ################################################################################
 # Library sources
-- 
2.20.1



From minios-devel-bounces@lists.xenproject.org Fri Apr 17 23:50:34 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 17 Apr 2020 23:50: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 1jPaki-0006W3-A1; Fri, 17 Apr 2020 23:50:32 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=++Bl=6B=gmail.com=felipehuici@srs-us1.protection.inumbo.net>)
 id 1jPakg-0006Vy-8l
 for minios-devel@lists.xenproject.org; Fri, 17 Apr 2020 23:50:30 +0000
X-Inumbo-ID: 37b60e7c-8106-11ea-83d8-bc764e2007e4
Received: from mail-vk1-xa42.google.com (unknown [2607:f8b0:4864:20::a42])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 37b60e7c-8106-11ea-83d8-bc764e2007e4;
 Fri, 17 Apr 2020 23:50:29 +0000 (UTC)
Received: by mail-vk1-xa42.google.com with SMTP id 10so1032333vkr.7
 for <minios-devel@lists.xenproject.org>; Fri, 17 Apr 2020 16:50:29 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=mime-version:references:in-reply-to:from:date:message-id:subject:to
 :cc; bh=loEPfEKG9+9LeZ1/SaXElQ/L90cvQy3/jqKJYqM2Gs4=;
 b=VrNVODkIw4FLJkQmYGEh5JQN7WN9A9lVxNVuaJlfCwu7PJxKERiYIcT9zpkVDkyRUX
 GIsNsxUWi41w9wrFh+iXh7csUVt3WQmsoIktq1FmcsmZaOEPuHujKY03IH7DCqY22FRu
 sPCKl9+FRFTPTCc4fBaedkEptlI6J75V1ucoRjdbK6+7H3WhnKq/B/do05QidtmNHSjd
 KyUnrzlutnb6sH1oKjhqkdL5+TZDmwHTCpTSS3B0DUQYvyNX46/BPA7CiJneQcSSX1en
 Vle+Mde5J9utPAYlUSqJtZpb/eS0MM/+OdP2WFP7z1aiNA5BJlAo6H3rReP4nBC8rIRy
 hMuw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:mime-version:references:in-reply-to:from:date
 :message-id:subject:to:cc;
 bh=loEPfEKG9+9LeZ1/SaXElQ/L90cvQy3/jqKJYqM2Gs4=;
 b=nBjIuX/etAFNNNOGZil1puNHDPXImgpKvPyc4dHDN2tH66p+bvwrdDMv7FZ2e2Tw66
 lLj853QlrCH8v9/WDNW1n2qQAQEk162Vec/jX9RO7IKu+w/N+1Zx68QVWX0pq+SqDob3
 WWBZZoZ6m1bAjPDw7/L05l1iGeyE9mo7fDCW6sREAkRNb6AgFUarZBa9HB1cudwF8xFJ
 G2cFrOlLXiwRqXr+I38HUqQz9OIjKMiT8wD+SBs/KaIslapZE/ZuLUjgWE0LdQAgKyHD
 NCQPmYNWtad2hn+4MlGsJXUk66+JpfASW6tChpmFsq2yZgPCrYHafl+wd7IG3KBarCCL
 TwBg==
X-Gm-Message-State: AGi0PuYnt/mbjBOU5izOGdwLaeVHW/pSBnHu6AcRABdmmQUhXcGvhP6J
 lRyoqVhSnkm7Z5X+f+tBwKX4SbE2oTnFpxb2PYM=
X-Google-Smtp-Source: APiQypJ/F+dZSoKS4+Xn0K6lVKx2eSBILnr5oznMeLzRB9da8xiezvrU/Ef3pFVGizN6YXMRnnJbGMRpMDEzxmKllgQ=
X-Received: by 2002:a1f:908c:: with SMTP id s134mr4677091vkd.1.1587167428841; 
 Fri, 17 Apr 2020 16:50:28 -0700 (PDT)
MIME-Version: 1.0
References: <20200415061558.3416-1-murarugeorgec@gmail.com>
 <20200415061558.3416-2-murarugeorgec@gmail.com>
In-Reply-To: <20200415061558.3416-2-murarugeorgec@gmail.com>
From: "felipehuici ." <felipehuici@gmail.com>
Date: Sat, 18 Apr 2020 01:50:17 +0200
Message-ID: <CAEX4t-N11xMUNXTdAtuO2WdEG6HhsfXc6==br1gnAsDf75CB2g@mail.gmail.com>
Subject: Re: [UNIKRAFT/LIBTFLITE PATCH v2 1/1] Add clrsbdi2 needed by
 tensorflowlite
To: George Muraru <murarugeorgec@gmail.com>
Content-Type: text/plain; charset="UTF-8"
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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.xenproject.org, Felipe Huici <Felipe.Huici@neclab.eu>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Hi George, this patch looks good, thanks.

Reviewed-by: Felipe Huici <felipe.huici@neclab.eu>

On Wed, Apr 15, 2020 at 8:17 AM George Muraru <murarugeorgec@gmail.com> wrote:
>
> Signed-off-by: George Muraru <murarugeorgec@gmail.com>
> ---
>  Makefile.uk             |  5 +++++
>  lib/builtins/clrsbdi2.c | 35 +++++++++++++++++++++++++++++++++++
>  2 files changed, 40 insertions(+)
>  create mode 100644 lib/builtins/clrsbdi2.c
>
> diff --git a/Makefile.uk b/Makefile.uk
> index 23f9e2e..dcb042b 100644
> --- a/Makefile.uk
> +++ b/Makefile.uk
> @@ -62,8 +62,11 @@ LIBCOMPILER_RT_SRC=$(LIBCOMPILER_RT_ORIGIN)/$(LIBCOMPILER_RT_SUBDIR)
>  # Library includes
>  ################################################################################
>  CINCLUDES-$(CONFIG_LIBCOMPILER_RT) += -I$(LIBCOMPILER_RT_SRC)/lib
> +CINCLUDES-$(CONFIG_LIBCOMPILER_RT) += -I$(LIBCOMPILER_RT_SRC)/lib/builtins
>  CINCLUDES-$(CONFIG_LIBCOMPILER_RT) += -I$(LIBCOMPILER_RT_SRC)/include
> +
>  CXXINCLUDES-$(CONFIG_LIBCOMPILER_RT) += -I$(LIBCOMPILER_RT_SRC)/lib
> +CXXINCLUDES-$(CONFIG_LIBCOMPILER_RT) += -I$(LIBCOMPILER_RT_SRC)/lib/builtins
>  CXXINCLUDES-$(CONFIG_LIBCOMPILER_RT) += -I$(LIBCOMPILER_RT_SRC)/include
>
>  ################################################################################
> @@ -238,3 +241,5 @@ LIBCOMPILER_RT_SRCS-$(CONFIG_ARCH_X86_64) += $(LIBCOMPILER_RT_SRC)/lib/builtins/
>  ifdef CONFIG_LIBCOMPILER_RT_ATOMIC
>  LIBCOMPILER_RT_SRCS-y += $(LIBCOMPILER_RT_SRC)/lib/builtins/atomic.c
>  endif
> +
> +LIBCOMPILER_RT_SRCS-y += $(LIBCOMPILER_RT_BASE)/lib/builtins/clrsbdi2.c
> diff --git a/lib/builtins/clrsbdi2.c b/lib/builtins/clrsbdi2.c
> new file mode 100644
> index 0000000..286d510
> --- /dev/null
> +++ b/lib/builtins/clrsbdi2.c
> @@ -0,0 +1,35 @@
> +/* Copyright (C) 2013-2017 Free Software Foundation, Inc.
> +   This file is part of GCC.
> +   GCC is free software; you can redistribute it and/or modify it under
> +   the terms of the GNU General Public License as published by the Free
> +   Software Foundation; either version 3, or (at your option) any later
> +   version.
> +   GCC is distributed in the hope that it will be useful, but WITHOUT ANY
> +   WARRANTY; without even the implied warranty of MERCHANTABILITY or
> +   FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
> +   for more details.
> +   Under Section 7 of GPL version 3, you are granted additional
> +   permissions described in the GCC Runtime Library Exception, version
> +   3.1, as published by the Free Software Foundation.
> +   You should have received a copy of the GNU General Public License and
> +   a copy of the GCC Runtime Library Exception along with this program;
> +   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
> +   <http://www.gnu.org/licenses/>.
> +*/
> +
> +#include <int_lib.h>
> +
> +/* Returns: Number of leading zeroes */
> +
> +
> +COMPILER_RT_ABI di_int
> +__clrsbdi2(di_int x)
> +{
> +    int ret;
> +    if (x < 0LL)
> +        x = ~x;
> +    if (x == 0LL)
> +        return 8 * sizeof (x) -1;
> +    ret = __builtin_clz((du_int) x);
> +    return ret - 1;
> +}
> --
> 2.17.1
>
>


From minios-devel-bounces@lists.xenproject.org Fri Apr 17 23:57:51 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 17 Apr 2020 23:57: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 1jParm-0006dP-TS; Fri, 17 Apr 2020 23:57:50 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=++Bl=6B=gmail.com=felipehuici@srs-us1.protection.inumbo.net>)
 id 1jPark-0006dK-No
 for minios-devel@lists.xenproject.org; Fri, 17 Apr 2020 23:57:48 +0000
X-Inumbo-ID: 3cee4318-8107-11ea-83d8-bc764e2007e4
Received: from mail-vk1-xa44.google.com (unknown [2607:f8b0:4864:20::a44])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 3cee4318-8107-11ea-83d8-bc764e2007e4;
 Fri, 17 Apr 2020 23:57:47 +0000 (UTC)
Received: by mail-vk1-xa44.google.com with SMTP id q200so817981vka.13
 for <minios-devel@lists.xenproject.org>; Fri, 17 Apr 2020 16:57:47 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=mime-version:references:in-reply-to:from:date:message-id:subject:to
 :cc; bh=NDlB0BkOKjeqbrLh68oBj+lTMwc9qmkAFeGrDwGoPg0=;
 b=rBO+veB4UBil8OLpSCDbSrFYdryOE9QEH4N6D0JIZDzG9a371MmuXSE5BuJ+w16sPi
 BU6Tw3CtyR/ngZ2ZOkCsiWhdprxlCSXMrd+JVNrDop+WC+3exjh+vlooFYHDqMTfbiBz
 okFbNLvQSRPx+ZGnHQWR0vXfwUiae3GaBF6C56W4TLprg7DBb9h+HmcSP1FXES1G8wTQ
 vr/yRxfVgcehwYRe05Artmiy91rHA6R2y2qR9FeI3keb/Jpe2qMYd72usttrVE2gMRZ6
 Wnd0Aag0H0jeFV29o/E+uKL4IyZdtwH8auhjOcOeFY9wD4trL2LRhVtRuqnxWgQBRoIT
 Kc3g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:mime-version:references:in-reply-to:from:date
 :message-id:subject:to:cc;
 bh=NDlB0BkOKjeqbrLh68oBj+lTMwc9qmkAFeGrDwGoPg0=;
 b=ZoVBWLGUUPDVKmqwr0SPe+EXdqQcM/vFEtiCMl8N/Wmerckbp7p3D4y5TFqm1R2L3U
 SjQnUPPQG0CzpK/WpTecpCM5nWOIV4k9QpgYDOVnTe9lsyYsU1B2Kow+8ymSw8mfUj7z
 ma7Cai0nENU0WzfRZ1aONQia63AwTfg/qwI1kvPVmFWpS+r2gxToh2MRyk2pRk4bpTUB
 7yic8zKUWRPa0/gkPeHEyj59IEnoLoSwX067KP0+tF7h0mR8hl+TeLQ3OWm1DTTy3UPS
 036qoTG8bFokEvL9Z3ppWVs9hq8cTC2WeD0UbPWATyU+tlewAMuvrMIHDk6IlseObHHl
 jLoA==
X-Gm-Message-State: AGi0Pub3n4lupEREHOlimfHMmZhU/Jz1IE+p6Tio+8/aWhP50CPmnWwT
 5ObYbKwFXRFRk8U9FoNSSQ+lumNyOkbbtxZrjQ0=
X-Google-Smtp-Source: APiQypLgMAgg9sJjiEPd7c/jeC7K6m/EtstQ5VGL/7xh1S7LRhC/5JswrkR+9PUJBDSBdR/yZMYQiSi5eCmTyXMRMMs=
X-Received: by 2002:a1f:b295:: with SMTP id b143mr4722550vkf.48.1587167867155; 
 Fri, 17 Apr 2020 16:57:47 -0700 (PDT)
MIME-Version: 1.0
References: <20200412144003.14062-1-murarugeorgec@gmail.com>
 <20200412144003.14062-2-murarugeorgec@gmail.com>
In-Reply-To: <20200412144003.14062-2-murarugeorgec@gmail.com>
From: "felipehuici ." <felipehuici@gmail.com>
Date: Sat, 18 Apr 2020 01:57:36 +0200
Message-ID: <CAEX4t-ObU0b7wcvo+LYj8BfLVDOZhtNpTgQMQ5pi0BCPNyi8Gw@mail.gmail.com>
Subject: Re: [UNIKRAFT/LIBTFLITE PATCH 1/2] Library skeleton
To: George Muraru <murarugeorgec@gmail.com>
Content-Type: text/plain; charset="UTF-8"
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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.xenproject.org, Felipe Huici <Felipe.Huici@neclab.eu>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Hi George,

Thanks for this series! Please see comments inline.

-- Felipe

On Sun, Apr 12, 2020 at 4:40 PM George Muraru <murarugeorgec@gmail.com> wrote:
>
> Signed-off-by: George Muraru <murarugeorgec@gmail.com>
> ---
>  CONTRIBUTING.md |  4 ++++
>  COPYING.md      | 38 ++++++++++++++++++++++++++++++++++++++
>  Config.uk       | 34 ++++++++++++++++++++++++++++++++++
>  MAINTAINERS.md  | 10 ++++++++++
>  README.md       | 12 ++++++++++++
>  5 files changed, 98 insertions(+)
>  create mode 100644 CONTRIBUTING.md
>  create mode 100644 COPYING.md
>  create mode 100644 Config.uk
>  create mode 100644 MAINTAINERS.md
>  create mode 100644 README.md
>
> diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
> new file mode 100644
> index 0000000..14f6ac6
> --- /dev/null
> +++ b/CONTRIBUTING.md
> @@ -0,0 +1,4 @@
> +Contributing to Unikraft
> +========================
> +
> +Please refer to the `CONTRIBUTING.md` file in the main Unikraft repository.
> diff --git a/COPYING.md b/COPYING.md
> new file mode 100644
> index 0000000..fd1dc8e
> --- /dev/null
> +++ b/COPYING.md
> @@ -0,0 +1,38 @@
> +License
> +=======
> +
> +Unikraft tensorflowlite wrappers
> +----------------------------------
> +
> +This repository contains wrapper code to build tensorflowlite with Unikraft.
> +Each C code file in this repository should declare who is the
> +copyright owner and under which terms and conditions the code is
> +licensed. If such a licence note is missing, the following copyright
> +notice will apply:
> +
> +       Copyright (c) Year, Institution. All rights reserved.
> +
> +       Redistribution and use in source and binary forms, with or without
> +       modification, are permitted provided that the following conditions
> +       are met:
> +
> +       1. Redistributions of source code must retain the above copyright
> +          notice, this list of conditions and the following disclaimer.
> +       2. Redistributions in binary form must reproduce the above copyright
> +          notice, this list of conditions and the following disclaimer in the
> +          documentation and/or other materials provided with the distribution.
> +       3. Neither the name of the copyright holder nor the names of its
> +          contributors may be used to endorse or promote products derived from
> +          this software without specific prior written permission.
> +
> +       THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
> +       AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
> +       IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
> +       ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
> +       LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
> +       CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
> +       SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
> +       INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
> +       CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
> +       ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
> +       POSSIBILITY OF SUCH DAMAGE.
> diff --git a/Config.uk b/Config.uk
> new file mode 100644
> index 0000000..38bc5fb
> --- /dev/null
> +++ b/Config.uk
> @@ -0,0 +1,34 @@
> +menuconfig LIBTFLITE
> +    bool "TensorFlowLite - tensorflow lite library"
> +    select LIBCXX
> +    select LIBNEWLIBC
> +    select LIBPOSIX_SYSINFO
> +    select LIBPTHREAD_EMBEDDED
> +    select LIBCOMPILTER_RT
> +    select LIBCOMPILER_RT_ATOMIC
> +    select LIBEIGEN
> +    select LIBFFT2D
> +    select LIBFFT2D_2D
> +    select LIBFLATBUFFERS
> +    select LIBGEMMLOWP
> +    select LIBFARMHASH
> +    default n

This port uses 9pfs to load models. As such, it'd be good to add the
necessary kConfig options to have 9pfs enabled in the build.

> +
> +if LIBTFLITE
> +    config LIBTFLITE_EIGEN_DONT_ALIGN
> +    bool "Do not align the buffers used by eigen library"
> +    default y
> +endif
> +
> +if LIBTFLITE
> +    config LIBTFLITE_BUILD_WITH_RUY
> +    bool "Matrix multiplication library"
> +    default y
> +endif
> +
> +if LIBTFLITE
> +    config LIBTFLITE_BUILD_WITH_NNAPI
> +    bool "Build with Neural Network API"
> +    default n
> +endif
> +
> diff --git a/MAINTAINERS.md b/MAINTAINERS.md
> new file mode 100644
> index 0000000..f53ffe5
> --- /dev/null
> +++ b/MAINTAINERS.md
> @@ -0,0 +1,10 @@
> +Maintainers List
> +================
> +
> +For notes on how to read this information, please refer to `MAINTAINERS.md` in
> +the main Unikraft repository.
> +
> +       LIBGEMMLOWP-UNIKRAFT
> +       M:      George Muraru <murarugeorgec@gmail.com>
> +       L:      minios-devel@lists.xen.org
> +       F: *
> diff --git a/README.md b/README.md
> new file mode 100644
> index 0000000..a7a1a6d
> --- /dev/null
> +++ b/README.md
> @@ -0,0 +1,12 @@
> +gemmlowp for Unikraft
> +=============================
> +
> +This is the port of gemmlowp as a Unikraft external library. It
> +depends on the following libraries that need to be added to `Makefile`
> +in this order:
> +
> +* CXX standard library, e.g. `libunwind`, `compiler-rt`, `libcxxabi`, `libcxx`
> +* `libc`, e.g. `newlib`

This list of dependencies is incomplete (e.g., Config.uk selects more
than these libs).

> +
> +Please refer to the `README.md` as well as the documentation in the `doc/`
> +subdirectory of the main unikraft repository.

There should be an entire section in this file dedicated to mounting a
9pfs volume, and then on how to run a model. In fact, it'd be good if
you actually provided a main file that specified a model name, and
documented where users could modify this. Unless you have other ideas
(populating all models in Config.uk? something else?)

> --
> 2.17.1
>
>


From minios-devel-bounces@lists.xenproject.org Sat Apr 18 00:00:18 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 18 Apr 2020 00:00: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 1jPauA-0007uL-60; Sat, 18 Apr 2020 00:00:18 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=qPAD=6C=gmail.com=felipehuici@srs-us1.protection.inumbo.net>)
 id 1jPau9-0007uG-EU
 for minios-devel@lists.xenproject.org; Sat, 18 Apr 2020 00:00:17 +0000
X-Inumbo-ID: 95b674c0-8107-11ea-b58d-bc764e2007e4
Received: from mail-vs1-xe43.google.com (unknown [2607:f8b0:4864:20::e43])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 95b674c0-8107-11ea-b58d-bc764e2007e4;
 Sat, 18 Apr 2020 00:00:16 +0000 (UTC)
Received: by mail-vs1-xe43.google.com with SMTP id z1so2290696vsn.11
 for <minios-devel@lists.xenproject.org>; Fri, 17 Apr 2020 17:00:16 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=mime-version:references:in-reply-to:from:date:message-id:subject:to
 :cc; bh=K1heSSLD6vBB7yqR4sMz7hFXytgHKDjaLs9LcTvS+gk=;
 b=o7vhXLWJA/IFSdbA+ObL0UhDQIxggdy/i9lRrXIoq+AFQm6DzrozJRu+RcKpYa/beO
 QUVPAO5XGq0iEvJJzjRSjmUXJPaBgoXWNV2W2zCQ78DBY/B6vBGMUwmAt/wDNAXs/7BK
 2+K20K1vnzYAS5JMQ///irzVDDOEMmrkaj1G2wFehNQovgIqeTBTf89l9eU6dQRzxBil
 EZZsWpB7Pa+6AqpoIJBYzuyAwzIArpf0t3Yh2XW7DTILhput06tAL1+WPdFr50eq6QT0
 Erhtbyb+UkKKLU/j0mYAlbeYOk5HM3eltXVZkgeO66lOg+UN7elb284zfdBfIl3D8LpC
 HYbg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:mime-version:references:in-reply-to:from:date
 :message-id:subject:to:cc;
 bh=K1heSSLD6vBB7yqR4sMz7hFXytgHKDjaLs9LcTvS+gk=;
 b=om6TacyHe63O8nyXfI0lTaDSelKmu7BBt/aC90DbkabsEqmtEIQ00Ps7pZ/Zhwgv5v
 zoHL8hyj1zYcekRUzkCEkxt1il7LBEQT2uqD/cutXfib3D6VrLlSACoORh8ohorOWwXL
 AbA/buN9lhJXhAp2j0R2GC60L8eeZRXHWzuVDKUGmdkEx7DfByUspH2JJmSDkUloj4vG
 bt0+TYgHJoDXzIYqLnRvXefI+/MhMA16kMuD3hk/R3wmGooEodBbptFndz+LY9Nz/wTL
 uLV95ueN0UdUapQHWqXRShqxDTySJyHJS5sAlmYGS5wm9mgpZc1Awa/ISA226fRd2HQ9
 DieA==
X-Gm-Message-State: AGi0PuaKQUlzhb8yqx15r84PxTDkU+pc9Jh88AUCGdMYUTkAr5ZliPgp
 5pjKs7CfxGa79gNZi0Po7FzkBl3EqUrBYTSiFTA=
X-Google-Smtp-Source: APiQypLcZzFF7ZkdVkLpGRWcFnKT/9zjgj0I/koa7Dkolp13JA4KxRO+OIjft6Y/+e2/o3M4i72zZb5UmgEuWRsxfhY=
X-Received: by 2002:a67:eb17:: with SMTP id a23mr4887154vso.111.1587168016053; 
 Fri, 17 Apr 2020 17:00:16 -0700 (PDT)
MIME-Version: 1.0
References: <20200412144003.14062-1-murarugeorgec@gmail.com>
 <20200412144003.14062-3-murarugeorgec@gmail.com>
In-Reply-To: <20200412144003.14062-3-murarugeorgec@gmail.com>
From: "felipehuici ." <felipehuici@gmail.com>
Date: Sat, 18 Apr 2020 02:00:04 +0200
Message-ID: <CAEX4t-MgCeH9uuqj7PJcLu47JMFWLv38e7wcSKVcUejPt_Y2Tg@mail.gmail.com>
Subject: Re: [UNIKRAFT/LIBTFLITE PATCH 2/2] Add Makefile.uk
To: George Muraru <murarugeorgec@gmail.com>
Content-Type: text/plain; charset="UTF-8"
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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.xenproject.org, Felipe Huici <Felipe.Huici@neclab.eu>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Hi George,

When running a model, I was getting a crash due to
optional_debug_tools.cc trying to use "zu" as a format specifer.
Changing this to lu fixed the issue, so you might want to provide a
patch under hte patches directory to work around this.

Please also see one more comment inline.

Thanks,

-- Felipe

On Sun, Apr 12, 2020 at 4:40 PM George Muraru <murarugeorgec@gmail.com> wrote:
>
> Signed-off-by: George Muraru <murarugeorgec@gmail.com>
> ---
>  Makefile.uk | 155 ++++++++++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 155 insertions(+)
>  create mode 100644 Makefile.uk
>
> diff --git a/Makefile.uk b/Makefile.uk
> new file mode 100644
> index 0000000..2b5db3f
> --- /dev/null
> +++ b/Makefile.uk
> @@ -0,0 +1,155 @@
> +#  libtensorflow-lite Makefile.uk
> +#
> +#  Authors: George Muraru <murarugeorgec@gmail.com>
> +#
> +#  Copyright (c) 2020, Politehnica University of Bucharest. All rights reserved.
> +#
> +#  Redistribution and use in source and binary forms, with or without
> +#  modification, are permitted provided that the following conditions
> +#  are met:
> +#
> +#  1. Redistributions of source code must retain the above copyright
> +#     notice, this list of conditions and the following disclaimer.
> +#  2. Redistributions in binary form must reproduce the above copyright
> +#     notice, this list of conditions and the following disclaimer in the
> +#     documentation and/or other materials provided with the distribution.
> +#  3. Neither the name of the copyright holder nor the names of its
> +#     contributors may be used to endorse or promote products derived from
> +#     this software without specific prior written permission.
> +#
> +#  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
> +#  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
> +#  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
> +#  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
> +#  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
> +#  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
> +#  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
> +#  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
> +#  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
> +#  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
> +#  POSSIBILITY OF SUCH DAMAGE.
> +#
> +#  THIS HEADER MAY NOT BE EXTRACTED OR MODIFIED IN ANY WAY.
> +#
> +
> +$(eval $(call addlib_s,libtflite,$(CONFIG_LIBTFLITE)))
> +
> +################################################################################
> +# Sources
> +################################################################################
> +LIBTFLITE_VERSION=2.0.1
> +LIBTFLITE_URL=https://github.com/tensorflow/tensorflow/archive/v$(LIBTFLITE_VERSION).tar.gz
> +$(eval $(call fetch,libtflite,$(LIBTFLITE_URL)))
> +
> +################################################################################
> +# Helpers
> +################################################################################
> +LIBTFLITE_SUBDIR=tensorflow-$(LIBTFLITE_VERSION)
> +LIBTFLITE_SRC = $(LIBTFLITE_ORIGIN)/$(LIBTFLITE_SUBDIR)
> +
> +################################################################################
> +# Library includes
> +################################################################################
> +CXXINCLUDES-$(CONFIG_LIBTFLITE) += -I$(LIBTFLITE_SRC)/
> +CXXINCLUDES-$(CONFIG_LIBTFLITE) += -I$(LIBTFLITE_SRC)/tensorflow/lite
> +
> +
> +CINCLUDES-$(CONFIG_LIBTFLITE) += -I$(LIBTFLITE_SRC)/
> +CINCLUDES-$(CONFIG_LIBTFLITE) += -I$(LIBTFLITE_SRC)/tensorflow/lite
> +
> +################################################################################
> +# Global flags
> +################################################################################
> +LIBTFLITE_SUPPRESS_FLAGS += -Wno-sign-compare -Wno-unused-parameter -Wno-comment
> +LIBTFLITE_SUPPRESS_FLAGS += -Wno-missing-field-initializers

I had to add more flags than just these to have a "clean" build:

LIBTFLITE_SUPPRESS_FLAGS += -Wno-sign-compare -Wno-unused-parameter
-Wno-comment \
                           -Wno-missing-field-initializers
-Wno-parentheses     \
                           -Wno-unused-function -Wno-unknown-pragmas

> +
> +LIBTFLITE_CXXFLAGS-y += $(LIBTFLITE_SUPPRESS_FLAGS)
> +
> +
> +ifdef CONFIG_LIBTFLITE_BUILD_WITH_RUY
> +LIBTFLITE_CXXFLAGS-y += -D TFLITE_WITH_RUY
> +LIBTFLITE_CFLAGS-y += -D TFLITE_WITH_RUY
> +endif
> +
> +ifdef CONFIG_LIBTFLITE_EIGEN_DONT_ALIGN
> +LIBTFLITE_CXXFLAGS-y += -D EIGEN_DONT_ALIGN
> +LIBTFLITE_CFLAGS-y += -D EIGEN_DONT_ALIGN
> +endif
> +
> +################################################################################
> +# Library sources
> +################################################################################
> +MINIMAL_SRCS := \
> +                       $(LIBTFLITE_SRC)/tensorflow/lite/examples/minimal/minimal.cc
> +
> +
> +CORE_CC_ALL_SRCS := \
> +                       $(wildcard $(LIBTFLITE_SRC)/tensorflow/lite/*.cc) \
> +                       $(wildcard $(LIBTFLITE_SRC)/tensorflow/lite/*.c) \
> +                       $(wildcard $(LIBTFLITE_SRC)/tensorflow/lite/c/*.c) \
> +                       $(wildcard $(LIBTFLITE_SRC)/tensorflow/lite/core/*.cc) \
> +                       $(wildcard $(LIBTFLITE_SRC)/tensorflow/lite/core/api/*.cc) \
> +                       $(wildcard $(LIBTFLITE_SRC)/tensorflow/lite/experimental/resource_variable/*.cc) \
> +                       $(LIBTFLITE_SRC)/tensorflow/lite/experimental/ruy/allocator.cc \
> +                       $(LIBTFLITE_SRC)/tensorflow/lite/experimental/ruy/block_map.cc \
> +                       $(LIBTFLITE_SRC)/tensorflow/lite/experimental/ruy/blocking_counter.cc \
> +                       $(LIBTFLITE_SRC)/tensorflow/lite/experimental/ruy/context.cc \
> +                       $(LIBTFLITE_SRC)/tensorflow/lite/experimental/ruy/detect_dotprod.cc \
> +                       $(LIBTFLITE_SRC)/tensorflow/lite/experimental/ruy/kernel_arm32.cc \
> +                       $(LIBTFLITE_SRC)/tensorflow/lite/experimental/ruy/kernel_arm64.cc \
> +                       $(LIBTFLITE_SRC)/tensorflow/lite/experimental/ruy/pack_arm.cc \
> +                       $(LIBTFLITE_SRC)/tensorflow/lite/experimental/ruy/pmu.cc \
> +                       $(LIBTFLITE_SRC)/tensorflow/lite/experimental/ruy/thread_pool.cc \
> +                       $(LIBTFLITE_SRC)/tensorflow/lite/experimental/ruy/trace.cc \
> +                       $(LIBTFLITE_SRC)/tensorflow/lite/experimental/ruy/trmul.cc \
> +                       $(LIBTFLITE_SRC)/tensorflow/lite/experimental/ruy/tune.cc \
> +                       $(LIBTFLITE_SRC)/tensorflow/lite/experimental/ruy/wait.cc \
> +               $(LIBTFLITE_SRC)/tensorflow/lite/minimal_logging_default.cc
> +
> +
> +
> +CORE_CC_ALL_SRCS += \
> +                        $(wildcard $(LIBTFLITE_SRC)/tensorflow/lite/kernels/*.cc) \
> +                        $(wildcard $(LIBTFLITE_SRC)/tensorflow/lite/kernels/internal/*.cc) \
> +                        $(wildcard $(LIBTFLITE_SRC)/tensorflow/lite/kernels/internal/optimized/*.cc) \
> +                        $(wildcard $(LIBTFLITE_SRC)/tensorflow/lite/kernels/internal/reference/*.cc)
> +
> +
> +CORE_CC_ALL_SRCS := $(sort $(CORE_CC_ALL_SRCS))
> +CORE_CC_EXCLUDE_SRCS := \
> +                               $(wildcard $(LIBTFLITE_SRC)/tensorflow/lite/*test.cc) \
> +                           $(wildcard $(LIBTFLITE_SRC)/tensorflow/lite/*/*test.cc) \
> +                           $(wildcard $(LIBTFLITE_SRC)/tensorflow/lite/*/*/*test.cc) \
> +                           $(wildcard $(LIBTFLITE_SRC)/tensorflow/lite/*/*/*/*test.cc) \
> +                               $(wildcard $(LIBTFLITE_SRC)/tensorflow/lite/kernels/*test_main.cc) \
> +                               $(wildcard $(LIBTFLITE_SRC)/tensorflow/lite/kernels/*test_util.cc) \
> +                               $(LIBTFLITE_SRC)/tensorflow/lite/experimental/ruy/pmu.cc \
> +                               $(LIBTFLITE_SRC)/tensorflow/lite/minimal_logging_android.cc \
> +                               $(LIBTFLITE_SRC)/tensorflow/lite/minimal_logging_ios.cc \
> +                               $(MINIMAL_SRCS)
> +
> +COMPILE_MANUAL_SRCS := \
> +                               $(LIBTFLITE_SRC)/tensorflow/lite/kernels/internal/mfcc.cc \
> +                               $(LIBTFLITE_SRC)/tensorflow/lite/kernels/mfcc.cc
> +
> +
> +ifeq ($(CONFIG_LIBUKMMAP),y)
> +CORE_CC_EXCLUDE_SRCS += $(LIBTFLITE_SRC)/tensorflow/lite/mmap_allocation_disabled.cc
> +else
> +CORE_CC_EXCLUDE_SRCS += $(LIBTFLITE_SRC)/tensorflow/lite/mmap_allocation.cc
> +endif
> +
> +ifeq ($(LIBTFLITE_BUILD_WITH_NNAPI),y)
> +CORE_CC_ALL_SRCS += \
> +                               $(LIBTFLITE_SRC)/tensorflow/lite/delegates/nnapi/nnapi_delegate.cc \
> +                               $(LIBTFLITE_SRC)/tensorflow/lite/delegates/nnapi/quant_lstm_sup.cc \
> +                       $(LIBTFLITE_SRC)/tensorflow/lite/nnapi/nnapi_implementation.cc
> +else
> +CORE_CC_ALL_SRCS += \
> +                               $(LIBTFLITE_SRC)/tensorflow/lite/delegates/nnapi/nnapi_delegate_disabled.cc \
> +                               $(LIBTFLITE_SRC)/tensorflow/lite/nnapi/nnapi_implementation_disabled.cc
> +endif
> +
> +LIBTFLITE_SRCS-y += $(filter-out $(CORE_CC_EXCLUDE_SRCS) $(COMPILE_MANUAL_SRCS), $(CORE_CC_ALL_SRCS))
> +LIBTFLITE_SRCS-y += $(LIBTFLITE_SRC)/tensorflow/lite/kernels/internal/mfcc.cc|internal
> +LIBTFLITE_SRCS-y += $(LIBTFLITE_SRC)/tensorflow/lite/kernels/mfcc.cc|kernels
> --
> 2.17.1
>
>


From minios-devel-bounces@lists.xenproject.org Sun Apr 19 09:28:40 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 19 Apr 2020 09:28: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 1jQ6Ff-00081Q-NJ; Sun, 19 Apr 2020 09:28:35 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=9Xvv=6D=gmail.com=radunicolau102@srs-us1.protection.inumbo.net>)
 id 1jQ6Fe-00081L-6h
 for minios-devel@lists.xen.org; Sun, 19 Apr 2020 09:28:34 +0000
X-Inumbo-ID: 22f1c8bc-8220-11ea-b4f4-bc764e2007e4
Received: from mail-wm1-x344.google.com (unknown [2a00:1450:4864:20::344])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 22f1c8bc-8220-11ea-b4f4-bc764e2007e4;
 Sun, 19 Apr 2020 09:28:33 +0000 (UTC)
Received: by mail-wm1-x344.google.com with SMTP id x4so7465149wmj.1
 for <minios-devel@lists.xen.org>; Sun, 19 Apr 2020 02:28:32 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=from:to:cc:subject:date:message-id;
 bh=qrUY7OAph2H/0Y30E7mcEYbAeY/e7iSIyehf1dPzenY=;
 b=h7Zlk5n9lXcrF7+PmsrQ7VIpLa8yWkuM9iSYIqCgS06lWO2lGrdN1VkMMbvz0mZPHx
 pl5Qcfkvj7ws9tgwbMv1jm6pUXGhBhaZKifs1CiO2CQq+MvSkc17Kt3UWy/FJ1P13juI
 X4cAghach2KXj0e0AFK7TnGFf2GO04APNtTELA8XcXg00crLjJyOzviryDVJ50U6h5RN
 FcOOz2kp23eC0FkCxLD+2YfRYKXJ7X7TXw7Rj/A3dtc9nda2MlvJOG7oz19rhfupZ26Y
 cxQBa4nAxIaPY8g+zXw/gsLi5WMm90tT2LDZ+AUkIBImOoWurAzAY2dfNGN2ll47Dzp0
 jRAw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:from:to:cc:subject:date:message-id;
 bh=qrUY7OAph2H/0Y30E7mcEYbAeY/e7iSIyehf1dPzenY=;
 b=GC50RotnWkfw4EZ2z67vdaE1shZUo6HAIyThXCjtN9jypbNV9oofvaDTZMGqS3aEXO
 kVeBq07OYVWhbjrFe1UDlbpPXW3s5mnmERFNvwABoGBcgBZkmFsw49jZRNGv8iQqK4i+
 thvTduUHYBleDKS1ZWMX05Q/A17R34LyEYeTZMsUVgK+rENpKUlNjaGFy0EkdAldzU+x
 usybnOi+r8+1ddMDlJJGODZ/wmyw9CMD7DDVI1WurT1YxIU4cCQyPI4nAAMBiqhBIdmn
 YfEeQfo2CS7mjcMQ1zGn4PtbDDCsccHWE3wEfPYNc/M03GnOjFLAbTd9Ej/K8r58EP/Y
 7f7Q==
X-Gm-Message-State: AGi0PuYJpWVa/dUzmV4dRzOm2bWiyjDoCatrX0y9/z0Wd6gY7iM2lj2y
 bqDOR2T8y/58afGocaqitiw4ZfiH
X-Google-Smtp-Source: APiQypJgtZqveiMOUikyAFwHU9wdGdNjzm60uHDWylZI25w4ZWq86D9cXnF658AUdDQMTNnJsEzFgw==
X-Received: by 2002:a1c:4e12:: with SMTP id g18mr11823766wmh.11.1587288511968; 
 Sun, 19 Apr 2020 02:28:31 -0700 (PDT)
Received: from localhost.localdomain (5-12-141-225.residential.rdsnet.ro.
 [5.12.141.225])
 by smtp.gmail.com with ESMTPSA id y40sm17027358wrd.20.2020.04.19.02.28.30
 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128);
 Sun, 19 Apr 2020 02:28:31 -0700 (PDT)
From: Radu Nicolau <radunicolau102@gmail.com>
To: minios-devel@lists.xen.org
Subject: [UNIKRAFT PATCH] blkfront.c: Increase error verbosity
Date: Sun, 19 Apr 2020 12:27:57 +0300
Message-Id: <1587288479-15004-1-git-send-email-radunicolau102@gmail.com>
X-Mailer: git-send-email 2.7.4
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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, Radu Nicolau <radunicolau102@gmail.com>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Add error message for both function calls to differentiate
which one produced an error.

Signed-off-by: Radu Nicolau <radunicolau102@gmail.com>
---
 plat/xen/drivers/blk/blkfront_xs.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/plat/xen/drivers/blk/blkfront_xs.c b/plat/xen/drivers/blk/blkfront_xs.c
index 67c8a4c..e014d90 100644
--- a/plat/xen/drivers/blk/blkfront_xs.c
+++ b/plat/xen/drivers/blk/blkfront_xs.c
@@ -506,12 +506,18 @@ int blkfront_xb_connect(struct blkfront_dev *blkdev)
 	}
 
 	err = xenbus_switch_state(XBT_NIL, xendev, XenbusStateConnected);
-	if (err)
+	if (err) {
+		uk_pr_err("Failed to switch state to XenbusStateConnected: %d.\n",
+				err);
 		goto err;
+	}
+
 
 	err = blkfront_xb_wait_be_connect(blkdev);
-	if (err)
+	if (err) {
+		uk_pr_err("Backend failed to change state: %d.\n", err);
 		goto err;
+	}
 
 	err = blkfront_xb_get_capabilities(blkdev);
 	if (err) {
-- 
2.7.4



From minios-devel-bounces@lists.xenproject.org Sun Apr 19 09:28:40 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 19 Apr 2020 09:28: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 1jQ6Fk-00081n-PF; Sun, 19 Apr 2020 09:28:40 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=9Xvv=6D=gmail.com=radunicolau102@srs-us1.protection.inumbo.net>)
 id 1jQ6Fj-00081Z-22
 for minios-devel@lists.xen.org; Sun, 19 Apr 2020 09:28:39 +0000
X-Inumbo-ID: 237116e4-8220-11ea-9e09-bc764e2007e4
Received: from mail-wm1-x344.google.com (unknown [2a00:1450:4864:20::344])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 237116e4-8220-11ea-9e09-bc764e2007e4;
 Sun, 19 Apr 2020 09:28:33 +0000 (UTC)
Received: by mail-wm1-x344.google.com with SMTP id g12so7750238wmh.3
 for <minios-devel@lists.xen.org>; Sun, 19 Apr 2020 02:28:33 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=from:to:cc:subject:date:message-id:in-reply-to:references;
 bh=OK69u05co+j6FAIvaESnJEYJJPaSU8ig+SUPuQ0CX8g=;
 b=Xf6OvPnxvymOzUF4F8OrmqWZ/p7UgOVR4wmuEvRT6SCrkGVxu9k79iU2FGav4YY4wf
 gbrDGGZOQ7SwUUocRutqy9QCJguxJTS92pvDHmyoz8A06sQ8ZIHWc1CVb5wMQKq3p4K5
 wv1yJ2C3gQvlhayEVzXu0V2qohIYEJCbexau4tKMFD8objXck6PLvAK+7YcOOWvo6Iqp
 bYX330xnqEqzbp8/VFmLbx5sNn6U27Xy7cZm5n6LC/pefLUefjwzePLNSrBV3VnN03H4
 /eUtSQvAVu+lwu4n4aiHQdUDQXODFNZtL1jIJ1VoMABkq33bylfcPvD1vTJe/SSeMDZo
 VrjA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to
 :references;
 bh=OK69u05co+j6FAIvaESnJEYJJPaSU8ig+SUPuQ0CX8g=;
 b=tPj3imbepkHR2eKEMTBYyHgYUa3sk3SggleIQRTQVOKnPGgf2Gbd6XUwV2m3b2c3xV
 YGetV9Lk48ieGE3DCAXWEZdiX1xR6EKrp8tALZzMgNUN3Qd4Wyt5Hna7BCh8Crbd88sV
 IibzbJelK8eMxFlq9Pcq6W2+BaAaopzdMRv/Ggy91G33U0tJg/sd0l2ZCccrGZBQ3X5Z
 UNAkrCfG95l9A125mgKQ3zBbDjgn8/iWAgW0VbEstujSkLAALQpG+UkekuErWjbgnyZ8
 5Zw0p0PepLLIectjRS7jkQDT86R9brFaP9Sd5cALHvi+7NoX+0bxLUonMI1b0SRknDbZ
 YmtA==
X-Gm-Message-State: AGi0Pub1QglqfXvxUet3SGPvVYtJpRSsPIimdxnbCspaxXqK5xQYFpgJ
 dLFJiJ1BJKocUGpnG6JR+Y3hg2XD
X-Google-Smtp-Source: APiQypJdPCi/fX1IeJKDvQFDDK8ycw+eciEBvHIzZJdxjGt9CHObinml54ncFvjRbewibjXGxg1r/A==
X-Received: by 2002:a05:600c:2046:: with SMTP id
 p6mr12042883wmg.177.1587288512833; 
 Sun, 19 Apr 2020 02:28:32 -0700 (PDT)
Received: from localhost.localdomain (5-12-141-225.residential.rdsnet.ro.
 [5.12.141.225])
 by smtp.gmail.com with ESMTPSA id y40sm17027358wrd.20.2020.04.19.02.28.32
 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128);
 Sun, 19 Apr 2020 02:28:32 -0700 (PDT)
From: Radu Nicolau <radunicolau102@gmail.com>
To: minios-devel@lists.xen.org
Subject: [UNIKRAFT PATCH] blkfront_xs.c: Fix warning generated by wrong print
 specifier
Date: Sun, 19 Apr 2020 12:27:58 +0300
Message-Id: <1587288479-15004-2-git-send-email-radunicolau102@gmail.com>
X-Mailer: git-send-email 2.7.4
In-Reply-To: <1587288479-15004-1-git-send-email-radunicolau102@gmail.com>
References: <1587288479-15004-1-git-send-email-radunicolau102@gmail.com>
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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, Radu Nicolau <radunicolau102@gmail.com>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Signed-off-by: Radu Nicolau <radunicolau102@gmail.com>
---
 plat/xen/drivers/blk/blkfront_xs.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/plat/xen/drivers/blk/blkfront_xs.c b/plat/xen/drivers/blk/blkfront_xs.c
index e014d90..b455de5 100644
--- a/plat/xen/drivers/blk/blkfront_xs.c
+++ b/plat/xen/drivers/blk/blkfront_xs.c
@@ -75,7 +75,7 @@ static int blkfront_xb_get_nb_max_queues(struct blkfront_dev *dev)
 	xendev = dev->xendev;
 
 	err = xs_scanf(XBT_NIL, xendev->otherend, "multi-queue-max-queues",
-				"%"PRIu16,
+				"%"SCNu16,
 				&dev->nb_queues);
 	if (err < 0) {
 		uk_pr_err("Failed to read multi-queue-max-queues: %d\n", err);
-- 
2.7.4



From minios-devel-bounces@lists.xenproject.org Sun Apr 19 09:28:45 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 19 Apr 2020 09:28: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 1jQ6Fp-00082S-RY; Sun, 19 Apr 2020 09:28:45 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=9Xvv=6D=gmail.com=radunicolau102@srs-us1.protection.inumbo.net>)
 id 1jQ6Fo-00082C-2a
 for minios-devel@lists.xen.org; Sun, 19 Apr 2020 09:28:44 +0000
X-Inumbo-ID: 240befde-8220-11ea-9e09-bc764e2007e4
Received: from mail-wm1-x342.google.com (unknown [2a00:1450:4864:20::342])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 240befde-8220-11ea-9e09-bc764e2007e4;
 Sun, 19 Apr 2020 09:28:34 +0000 (UTC)
Received: by mail-wm1-x342.google.com with SMTP id z6so7751969wml.2
 for <minios-devel@lists.xen.org>; Sun, 19 Apr 2020 02:28:34 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=from:to:cc:subject:date:message-id:in-reply-to:references;
 bh=0vAyQ86zzQNEh9iRC0lzysRujE3wlf3m9dfpOcLxeCQ=;
 b=VNfqvZF97xu5EyYjl6AFPAkD6O7l3Fbg7OxXlhBvSOehyreMA40UNSvE+eZOsWAXfa
 6/6zXmjj6JG9bxr2xMhKM5ydCyZ4K9e1+YePq82Xj9m0/Dt2rhXmfmEZFLIPJY5XZeZs
 Gy/nyul4kTQQLsch2WCkYogyDcNRGUV2nz78YkDGOaiguMVFrqepzL07Gb7A7fefbg2v
 OKENVsWlJ4M8Fx2TXiA6TLpL3OiMcHr8yBtNdvyZ28EeL7bAGZ7xEsV8B30rpeVge0JY
 +AI49JdlJYX7ms6RFwHjOc48FWrP/xLgCr60woOfeMDrISTeXW/PaQ/FMb1MfiYbgrSp
 +pWg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to
 :references;
 bh=0vAyQ86zzQNEh9iRC0lzysRujE3wlf3m9dfpOcLxeCQ=;
 b=CE+gXwrNcIv488qVSHfP1u3+QxV/woHM3nAeBaqhhbvhoQBtJndLMBjv+7gmGf8dF9
 y3fhHU8qk+Swxq1jyAdDNNO56SWa26J3WafCROePDRbePFbAkilb3rjECpRQb4VkdZ6d
 JFtv/PlF7WA71hFN8q/WeqxGYbVr81BRoMmOv/dECawvKUyq+n+MM+BbqXkzZOxtVU3W
 rARaj9Pph+e6bhlfrRKSuIWYd1smt+1VHb3uCqydaqhjcPkw9EkZdBmEBgZQ8JBcxSvv
 UEkctGiwvnKdrouLmnTo7Iw/IF5sb2/wFGQhPhNJw9M9o1b8HZVYta164ZrLQ5dbtIYu
 9/wQ==
X-Gm-Message-State: AGi0PuYedIq2LYMdoem5DeUcdxxolEEDRYfk+o/rLFVwqOoDGblSbyir
 dJGMbfogyCGZo0no2iwOWMnxOLPB
X-Google-Smtp-Source: APiQypJIQ+BxsGjGKSnOCpXqt9c/B9GWta75DRkD7jswohUUfC55LWIKsrmy7Ea7HG1tnKeJjRGWAA==
X-Received: by 2002:a1c:6a0b:: with SMTP id f11mr11869539wmc.123.1587288513700; 
 Sun, 19 Apr 2020 02:28:33 -0700 (PDT)
Received: from localhost.localdomain (5-12-141-225.residential.rdsnet.ro.
 [5.12.141.225])
 by smtp.gmail.com with ESMTPSA id y40sm17027358wrd.20.2020.04.19.02.28.32
 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128);
 Sun, 19 Apr 2020 02:28:33 -0700 (PDT)
From: Radu Nicolau <radunicolau102@gmail.com>
To: minios-devel@lists.xen.org
Subject: [UNIKRAFT PATCH] mm.c: Rename function call to _arch_rebuild_p2m
Date: Sun, 19 Apr 2020 12:27:59 +0300
Message-Id: <1587288479-15004-3-git-send-email-radunicolau102@gmail.com>
X-Mailer: git-send-email 2.7.4
In-Reply-To: <1587288479-15004-1-git-send-email-radunicolau102@gmail.com>
References: <1587288479-15004-1-git-send-email-radunicolau102@gmail.com>
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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, Radu Nicolau <radunicolau102@gmail.com>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Signed-off-by: Radu Nicolau <radunicolau102@gmail.com>
---
 plat/xen/x86/mm.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/plat/xen/x86/mm.c b/plat/xen/x86/mm.c
index 249b792..e006ab7 100644
--- a/plat/xen/x86/mm.c
+++ b/plat/xen/x86/mm.c
@@ -743,7 +743,7 @@ void arch_mm_pre_suspend(void)
 void arch_mm_post_suspend(int canceled)
 {
 	if (!canceled)
-		arch_rebuild_p2m();
+		_arch_rebuild_p2m();
 }
 #endif
 #endif /* CONFIG_XEN_PV_BUILD_P2M */
-- 
2.7.4



From minios-devel-bounces@lists.xenproject.org Mon Apr 20 09:42:52 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 20 Apr 2020 09: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 1jQSwz-0004jy-Sz; Mon, 20 Apr 2020 09:42:49 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=OhrB=6E=csuc.cat=esteban.martinez@srs-us1.protection.inumbo.net>)
 id 1jQSwy-0004jp-Ac
 for minios-devel@lists.xen.org; Mon, 20 Apr 2020 09:42:48 +0000
X-Inumbo-ID: 4a0a8044-82eb-11ea-b4f4-bc764e2007e4
Received: from gabarro.xs.cesca.cat (unknown [84.88.0.6])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTP
 id 4a0a8044-82eb-11ea-b4f4-bc764e2007e4;
 Mon, 20 Apr 2020 09:42:46 +0000 (UTC)
DomainKey-Signature: s=csuc; d=csuc.cat; c=nofws; q=dns;
 h=Received:From:To:Cc:Subject:Date:Message-Id:X-Mailer;
 b=k0810yuldtGll2HzrsKBfiouSHMoQMt8Pggk0LL+NuOkeqy4gJZEcEZf
 LhX5e7xZ4XWs2xUNsDhXR50dYdUba6ngpBvoyjBQZS1d5TBLtQetI9Mx0
 zOc6bAzuCiF9weK+vXA25Q9ZtHP2kCanOfQ24xyZ+KEG/MoO+Q3D3RInw
 g=;
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple;
 d=csuc.cat; i=@csuc.cat; q=dns/txt; s=csuc;
 t=1587375766; x=1618911766;
 h=from:to:cc:subject:date:message-id;
 bh=coyPleMuBrrLogo5ktsMHD1wAoLMy1R2i++Optm+mME=;
 b=WfL8BfC7zu+J5OZfeY5vGSaVytw3YZag06c5it2COtCIWu/iYDjLdsei
 238zJ8puYeI6bCJKv/rk9aUauvFNm7wj7A2mzX8O0Yxr2dNA7y6KGncqo
 uR3SM3Tdc+w2721L4CRvFEA0euBPaR+EWQKB/MGC7EtcMVGJALdYgmgvN I=;
Received: from unknown (HELO localhost.localdomain) ([10.100.102.130])
 by smtp.xc.csuc.cat with ESMTP/TLS/DHE-RSA-AES128-GCM-SHA256;
 20 Apr 2020 11:42:43 +0200
From: Esteban Martinez <esteban.martinez@csuc.cat>
To: minios-devel@lists.xen.org
Subject: [UNIKRAFT/JPEG PATCH v1 0/2] JPEG library porting
Date: Mon, 20 Apr 2020 11:42:33 +0200
Message-Id: <20200420094235.7016-1-esteban.martinez@csuc.cat>
X-Mailer: git-send-email 2.17.1
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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: Esteban Martinez <esteban.martinez@csuc.cat>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Library for encoding photographic images

Esteban Martinez (2):
  [JPEG PATCH] jpeg: Add skeleton new library
  [JPEG PATCH] jpeg: Add Makefile.uk

 .gitignore      |  27 +++++++++
 CODING_STYLE.md |   4 ++
 CONTRIBUTING.md |   4 ++
 COPYING.md      |  41 +++++++++++++
 Config.uk       |  10 ++++
 MAINTAINERS.md  |  11 ++++
 Makefile.uk     | 153 ++++++++++++++++++++++++++++++++++++++++++++++++
 README.md       |   7 +++
 8 files changed, 257 insertions(+)
 create mode 100644 .gitignore
 create mode 100644 CODING_STYLE.md
 create mode 100644 CONTRIBUTING.md
 create mode 100644 COPYING.md
 create mode 100644 Config.uk
 create mode 100644 MAINTAINERS.md
 create mode 100644 Makefile.uk
 create mode 100644 README.md

-- 
2.17.1



From minios-devel-bounces@lists.xenproject.org Mon Apr 20 09:42:54 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 20 Apr 2020 09:42: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 1jQSx3-0004kJ-Uc; Mon, 20 Apr 2020 09:42:53 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=OhrB=6E=csuc.cat=esteban.martinez@srs-us1.protection.inumbo.net>)
 id 1jQSx3-0004kE-4w
 for minios-devel@lists.xen.org; Mon, 20 Apr 2020 09:42:53 +0000
X-Inumbo-ID: 4abdc668-82eb-11ea-b58d-bc764e2007e4
Received: from gabarro.xs.cesca.cat (unknown [84.88.0.6])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTP
 id 4abdc668-82eb-11ea-b58d-bc764e2007e4;
 Mon, 20 Apr 2020 09:42:47 +0000 (UTC)
DomainKey-Signature: s=csuc; d=csuc.cat; c=nofws; q=dns;
 h=Received:From:To:Cc:Subject:Date:Message-Id:X-Mailer:
 In-Reply-To:References;
 b=j+7eZ3attrdxG2eRrxMRRAKZ92IZAOivoJksGPosDr5BUaWlcQ+4inQn
 wfYRSgaSYqGIJxDVujJ1Vzbpps21GeJThQ9GFDRqAtblhZbgiw3a5sSDF
 TTCYmwiu+FDRNetcMBP2qxHEPxuevLLHTBGOyujPhVan68FFQOYNxqwfj
 w=;
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple;
 d=csuc.cat; i=@csuc.cat; q=dns/txt; s=csuc;
 t=1587375767; x=1618911767;
 h=from:to:cc:subject:date:message-id:in-reply-to: references;
 bh=qkYJ0WZ9WZLpiiCcXRGMmjW5ae0XnOssb1uZ71eMZVY=;
 b=NAnOdUim31FNA4BvJxiAMSSue1Fwu8pXLFzoBdykLPfrfTF/m8PgSYUk
 klBwT4hw+VjdE+7LJcayshdxF2+L4J9uQfrYNxu0ncD7uGrxHWxpItojh
 7qnfM1oIKYaGxVCk3ADk/eLvCKwA70ADSgdrCH2vi+N3Y9GBM8lB7x8QT I=;
Received: from unknown (HELO localhost.localdomain) ([10.100.102.130])
 by smtp.xc.csuc.cat with ESMTP/TLS/DHE-RSA-AES128-GCM-SHA256;
 20 Apr 2020 11:42:45 +0200
From: Esteban Martinez <esteban.martinez@csuc.cat>
To: minios-devel@lists.xen.org
Subject: [UNIKRAFT/JPEG PATCH v1 1/2] [JPEG PATCH] jpeg: Add skeleton new
 library
Date: Mon, 20 Apr 2020 11:42:34 +0200
Message-Id: <20200420094235.7016-2-esteban.martinez@csuc.cat>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20200420094235.7016-1-esteban.martinez@csuc.cat>
References: <20200420094235.7016-1-esteban.martinez@csuc.cat>
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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: Esteban Martinez <esteban.martinez@csuc.cat>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Signed-off-by: Esteban Martinez <esteban.martinez@csuc.cat>
---
 .gitignore      | 27 +++++++++++++++++++++++++++
 CODING_STYLE.md |  4 ++++
 CONTRIBUTING.md |  4 ++++
 COPYING.md      | 41 +++++++++++++++++++++++++++++++++++++++++
 Config.uk       | 10 ++++++++++
 MAINTAINERS.md  | 11 +++++++++++
 README.md       |  7 +++++++
 7 files changed, 104 insertions(+)
 create mode 100644 .gitignore
 create mode 100644 CODING_STYLE.md
 create mode 100644 CONTRIBUTING.md
 create mode 100644 COPYING.md
 create mode 100644 Config.uk
 create mode 100644 MAINTAINERS.md
 create mode 100644 README.md

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..75d2fd3
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,27 @@
+*.depend
+*.o
+*.a
+*.d
+*.so
+*.orig
+*.rej
+*.bak
+*.swp
+*~
+,*
+\#*\#
+.\#*
+\#_*\#
+.\#_*
+!.gitignore
+.*
+
+# gnu global files
+GPATH
+GRTAGS
+GSYMS
+GTAGS
+
+# cscope files
+cscope.*
+ncscope.*
diff --git a/CODING_STYLE.md b/CODING_STYLE.md
new file mode 100644
index 0000000..5730041
--- /dev/null
+++ b/CODING_STYLE.md
@@ -0,0 +1,4 @@
+Coding Style
+============
+
+Please refer to the `CODING_STYLE.md` file in the main Unikraft repository.
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 0000000..14f6ac6
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,4 @@
+Contributing to Unikraft
+========================
+
+Please refer to the `CONTRIBUTING.md` file in the main Unikraft repository.
diff --git a/COPYING.md b/COPYING.md
new file mode 100644
index 0000000..9315fe8
--- /dev/null
+++ b/COPYING.md
@@ -0,0 +1,41 @@
+License
+=======
+
+Unikraft jpeg wrappers
+------------------------
+
+This repository contains wrapper code to build jpeg with Unikraft.  The code
+is published as a mixture of BSD and MIT licences; each C code file in
+this repository should declare who is the copyright owner and under which terms
+and conditions the code is licensed. If such a licence note is missing, the
+following copyright notice will apply:
+
+	Copyright (c) 2020, Consorci de Serveis Universitaris de Catalunya (CSUC). All rights reserved.
+
+	Redistribution and use in source and binary forms, with or without
+	modification, are permitted provided that the following conditions
+	are met:
+
+	1. Redistributions of source code must retain the above copyright
+	   notice, this list of conditions and the following disclaimer.
+	2. Redistributions in binary form must reproduce the above copyright
+	   notice, this list of conditions and the following disclaimer in the
+	   documentation and/or other materials provided with the distribution.
+	3. Neither the name of the copyright holder nor the names of its
+	   contributors may be used to endorse or promote products derived from
+	   this software without specific prior written permission.
+
+	THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+	AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+	IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+	ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+	LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+	CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+	SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+	INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+	CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+	ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+	POSSIBILITY OF SUCH DAMAGE.
+
+jpeg source code
+------------------
\ No newline at end of file
diff --git a/Config.uk b/Config.uk
new file mode 100644
index 0000000..4880bb0
--- /dev/null
+++ b/Config.uk
@@ -0,0 +1,10 @@
+config LIBJPEG
+	bool "libjpeg - JPEG image codec"
+	default n
+	select LIBNOLIBC if !HAVE_LIBC
+	select LIBUKDEBUG
+    select LIBUKALLOC
+    select LIBNEWLIBC
+
+if LIBJPEG
+endif
diff --git a/MAINTAINERS.md b/MAINTAINERS.md
new file mode 100644
index 0000000..409a2a8
--- /dev/null
+++ b/MAINTAINERS.md
@@ -0,0 +1,11 @@
+Maintainers List
+================
+
+For notes on how to read this information, please refer to `MAINTAINERS.md` in
+the main Unikraft repository.
+
+	JPEG-UNIKRAFT
+	M:	Esteban Martinez <esteban.martinez@csuc.cat>
+	M:	Xavier Peralra <xavier.peralta@csuc.cat>
+	L:	minios-devel@lists.xen.org
+	F: *
\ No newline at end of file
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..1f2c3f1
--- /dev/null
+++ b/README.md
@@ -0,0 +1,7 @@
+jpeg for Unikraft
+=============================
+
+This is the port of jpeg for Unikraft as external library.
+
+Please refer to the `README.md` as well as the documentation in the `doc/`
+subdirectory of the main unikraft repository.
-- 
2.17.1



From minios-devel-bounces@lists.xenproject.org Mon Apr 20 09:42:59 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 20 Apr 2020 09:42: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 1jQSx9-0004m3-08; Mon, 20 Apr 2020 09:42:59 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=OhrB=6E=csuc.cat=esteban.martinez@srs-us1.protection.inumbo.net>)
 id 1jQSx8-0004lw-5l
 for minios-devel@lists.xen.org; Mon, 20 Apr 2020 09:42:58 +0000
X-Inumbo-ID: 4b5db7a4-82eb-11ea-b4f4-bc764e2007e4
Received: from gabarro.xs.cesca.cat (unknown [84.88.0.6])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTP
 id 4b5db7a4-82eb-11ea-b4f4-bc764e2007e4;
 Mon, 20 Apr 2020 09:42:48 +0000 (UTC)
DomainKey-Signature: s=csuc; d=csuc.cat; c=nofws; q=dns;
 h=Received:From:To:Cc:Subject:Date:Message-Id:X-Mailer:
 In-Reply-To:References;
 b=SrICm0lJj3QNSY7fbpTIziUeAjZScm3x5vUNxdK3sBLSfwEi73Atogav
 uzpLoqWwE1Kk0P6+Oe6d7G3bvqSfoMAO9EhzRuLzrXTqYj1OjqiaGNVA7
 wczkmb9E8z3qLyypSdxV0XWxKDxscPsU9tm0AphY8R2WcDnnwfSEZESmd
 Y=;
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple;
 d=csuc.cat; i=@csuc.cat; q=dns/txt; s=csuc;
 t=1587375768; x=1618911768;
 h=from:to:cc:subject:date:message-id:in-reply-to: references;
 bh=3BduCXFcfCIfSaGe/PmkTCPKvG+awEOKNMJZ9lCGAVg=;
 b=CjshaJs4/F5/F5HfAtMgW6uJSua4Yz/BefB119x5gVUolg75mn0F/cU5
 xFi12o+I6z8Hj3ai1Qj98RUWf+dzAaar2ajAHQzUcJPtmN49FdKal9BxG
 Yy6XkGPO6GHTanKfV+tEnzP5MDY0mteIv3KSiU7Ij4N48Cu2bdGTg7UNU o=;
Received: from unknown (HELO localhost.localdomain) ([10.100.102.130])
 by smtp.xc.csuc.cat with ESMTP/TLS/DHE-RSA-AES128-GCM-SHA256;
 20 Apr 2020 11:42:46 +0200
From: Esteban Martinez <esteban.martinez@csuc.cat>
To: minios-devel@lists.xen.org
Subject: [UNIKRAFT/JPEG PATCH v1 2/2] [JPEG PATCH] jpeg: Add Makefile.uk
Date: Mon, 20 Apr 2020 11:42:35 +0200
Message-Id: <20200420094235.7016-3-esteban.martinez@csuc.cat>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20200420094235.7016-1-esteban.martinez@csuc.cat>
References: <20200420094235.7016-1-esteban.martinez@csuc.cat>
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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: Esteban Martinez <esteban.martinez@csuc.cat>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Signed-off-by: Esteban Martinez <esteban.martinez@csuc.cat>
---
 Makefile.uk | 153 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 153 insertions(+)
 create mode 100644 Makefile.uk

diff --git a/Makefile.uk b/Makefile.uk
new file mode 100644
index 0000000..b35b97b
--- /dev/null
+++ b/Makefile.uk
@@ -0,0 +1,153 @@
+#  SPDX-License-Identifier: BSD-3-Clause
+#
+#  jpeg Makefile.uk
+#
+#  Authors: Esteban Martinez <esteban.martinez@csuc.cat>
+#
+#  Copyright (c) 2019, Consorci de Serveis Universitaris de Catalunya (CSUC). All rights reserved.
+#
+#  Redistribution and use in source and binary forms, with or without
+#  modification, are permitted provided that the following conditions
+#  are met:
+#
+#  1. Redistributions of source code must retain the above copyright
+#     notice, this list of conditions and the following disclaimer.
+#  2. Redistributions in binary form must reproduce the above copyright
+#     notice, this list of conditions and the following disclaimer in the
+#     documentation and/or other materials provided with the distribution.
+#  3. Neither the name of the copyright holder nor the names of its
+#     contributors may be used to endorse or promote products derived from
+#     this software without specific prior written permission.
+#
+#  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+#  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+#  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+#  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+#  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+#  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+#  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+#  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+#  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+#  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+#  POSSIBILITY OF SUCH DAMAGE.
+#
+#  THIS HEADER MAY NOT BE EXTRACTED OR MODIFIED IN ANY WAY.
+#
+
+################################################################################
+# Library registration
+################################################################################
+$(eval $(call addlib_s,libjpeg,$(CONFIG_LIBJPEG)))
+
+################################################################################
+# Original sources
+################################################################################
+LIBJPEG_VERSION=8
+LIBJPEG_URL=https://www.ijg.org/files/jpegsrc.v$(LIBJPEG_VERSION).tar.gz
+LIBJPEG_PATCHDIR=$(LIBJPEG_BASE)/patches
+LIBJPEG_SUBDIR=jpeg-$(LIBJPEG_VERSION)
+$(eval $(call fetch,libjpeg,$(LIBJPEG_URL)))
+$(eval $(call patch,libjpeg,$(LIBJPEG_PATCHDIR),$(LIBJPEG_SUBDIR)))
+
+################################################################################
+# Helpers
+################################################################################
+LIBJPEG_EXTRACTED = $(LIBJPEG_ORIGIN)/jpeg-$(LIBJPEG_VERSION)
+
+################################################################################
+# Library includes
+################################################################################
+LIBJPEG_COMMON_INCLUDES-y      += -I$(LIBJPEG_EXTRACTED)/
+
+CINCLUDES-$(CONFIG_LIBJPEG)    += $(LIBJPEG_COMMON_INCLUDES-y)
+
+LIBJPEG_CINCLUDES   += -I$(LIBJPEG_EXTRACTED)
+
+################################################################################
+# Global flags
+################################################################################
+# Suppressed flags
+LIBJPEG_SUPPRESS_FLAGS += -Wno-unused-parameter \
+	-Wno-unused-variable -Wno-unused-value -Wno-unused-function \
+	-Wno-missing-field-initializers -Wno-implicit-fallthrough
+LIBJPEG_CFLAGS-y   += $(LIBJPEG_SUPPRESS_FLAGS) \
+	-Wno-pointer-to-int-cast -Wno-int-to-pointer-cast
+
+################################################################################
+# JPEG src
+################################################################################
+LIBJPEG_SRCS-y += $(LIBJPEG_EXTRACTED)/jaricom.c
+LIBJPEG_SRCS-y += $(LIBJPEG_EXTRACTED)/jcapimin.c
+LIBJPEG_SRCS-y += $(LIBJPEG_EXTRACTED)/jcapistd.c
+LIBJPEG_SRCS-y += $(LIBJPEG_EXTRACTED)/jcarith.c
+LIBJPEG_SRCS-y += $(LIBJPEG_EXTRACTED)/jccoefct.c
+LIBJPEG_SRCS-y += $(LIBJPEG_EXTRACTED)/jccolor.c
+LIBJPEG_SRCS-y += $(LIBJPEG_EXTRACTED)/jcdctmgr.c
+LIBJPEG_SRCS-y += $(LIBJPEG_EXTRACTED)/jchuff.c
+LIBJPEG_SRCS-y += $(LIBJPEG_EXTRACTED)/jcinit.c
+LIBJPEG_SRCS-y += $(LIBJPEG_EXTRACTED)/jcmainct.c
+LIBJPEG_SRCS-y += $(LIBJPEG_EXTRACTED)/jcmarker.c
+LIBJPEG_SRCS-y += $(LIBJPEG_EXTRACTED)/jcmaster.c
+LIBJPEG_SRCS-y += $(LIBJPEG_EXTRACTED)/jcomapi.c
+LIBJPEG_SRCS-y += $(LIBJPEG_EXTRACTED)/jcparam.c
+LIBJPEG_SRCS-y += $(LIBJPEG_EXTRACTED)/jcprepct.c
+LIBJPEG_SRCS-y += $(LIBJPEG_EXTRACTED)/jcsample.c
+LIBJPEG_SRCS-y += $(LIBJPEG_EXTRACTED)/jctrans.c
+LIBJPEG_SRCS-y += $(LIBJPEG_EXTRACTED)/jdapimin.c
+LIBJPEG_SRCS-y += $(LIBJPEG_EXTRACTED)/jdapistd.c
+LIBJPEG_SRCS-y += $(LIBJPEG_EXTRACTED)/jdarith.c
+LIBJPEG_SRCS-y += $(LIBJPEG_EXTRACTED)/jdatadst.c
+LIBJPEG_SRCS-y += $(LIBJPEG_EXTRACTED)/jdatasrc.c
+LIBJPEG_SRCS-y += $(LIBJPEG_EXTRACTED)/jdcoefct.c
+LIBJPEG_SRCS-y += $(LIBJPEG_EXTRACTED)/jdcolor.c
+LIBJPEG_SRCS-y += $(LIBJPEG_EXTRACTED)/jddctmgr.c
+LIBJPEG_SRCS-y += $(LIBJPEG_EXTRACTED)/jdhuff.c
+LIBJPEG_SRCS-y += $(LIBJPEG_EXTRACTED)/jdinput.c
+LIBJPEG_SRCS-y += $(LIBJPEG_EXTRACTED)/jdmainct.c
+LIBJPEG_SRCS-y += $(LIBJPEG_EXTRACTED)/jdmarker.c
+LIBJPEG_SRCS-y += $(LIBJPEG_EXTRACTED)/jdmaster.c
+LIBJPEG_SRCS-y += $(LIBJPEG_EXTRACTED)/jdmerge.c
+LIBJPEG_SRCS-y += $(LIBJPEG_EXTRACTED)/jdpostct.c
+LIBJPEG_SRCS-y += $(LIBJPEG_EXTRACTED)/jdsample.c
+LIBJPEG_SRCS-y += $(LIBJPEG_EXTRACTED)/jdtrans.c
+LIBJPEG_SRCS-y += $(LIBJPEG_EXTRACTED)/jerror.c
+LIBJPEG_SRCS-y += $(LIBJPEG_EXTRACTED)/jfdctflt.c
+LIBJPEG_SRCS-y += $(LIBJPEG_EXTRACTED)/jfdctfst.c
+LIBJPEG_SRCS-y += $(LIBJPEG_EXTRACTED)/jfdctint.c
+LIBJPEG_SRCS-y += $(LIBJPEG_EXTRACTED)/jidctflt.c
+LIBJPEG_SRCS-y += $(LIBJPEG_EXTRACTED)/jidctfst.c
+LIBJPEG_SRCS-y += $(LIBJPEG_EXTRACTED)/jidctint.c
+LIBJPEG_SRCS-y += $(LIBJPEG_EXTRACTED)/jquant1.c
+LIBJPEG_SRCS-y += $(LIBJPEG_EXTRACTED)/jquant2.c
+LIBJPEG_SRCS-y += $(LIBJPEG_EXTRACTED)/jutils.c
+LIBJPEG_SRCS-y += $(LIBJPEG_EXTRACTED)/jmemmgr.c
+LIBJPEG_SRCS-y += $(LIBJPEG_EXTRACTED)/jmemnobs.c
+LIBJPEG_SRCS-y += $(LIBJPEG_EXTRACTED)/rdppm.c
+LIBJPEG_SRCS-y += $(LIBJPEG_EXTRACTED)/rdgif.c
+LIBJPEG_SRCS-y += $(LIBJPEG_EXTRACTED)/rdtarga.c
+LIBJPEG_SRCS-y += $(LIBJPEG_EXTRACTED)/rdrle.c
+LIBJPEG_SRCS-y += $(LIBJPEG_EXTRACTED)/rdbmp.c
+LIBJPEG_SRCS-y += $(LIBJPEG_EXTRACTED)/rdswitch.c
+LIBJPEG_SRCS-y += $(LIBJPEG_EXTRACTED)/cdjpeg.c
+LIBJPEG_SRCS-y += $(LIBJPEG_EXTRACTED)/wrppm.c
+LIBJPEG_SRCS-y += $(LIBJPEG_EXTRACTED)/wrgif.c
+LIBJPEG_SRCS-y += $(LIBJPEG_EXTRACTED)/wrtarga.c
+LIBJPEG_SRCS-y += $(LIBJPEG_EXTRACTED)/wrrle.c
+LIBJPEG_SRCS-y += $(LIBJPEG_EXTRACTED)/wrbmp.c
+LIBJPEG_SRCS-y += $(LIBJPEG_EXTRACTED)/rdcolmap.c
+LIBJPEG_SRCS-y += $(LIBJPEG_EXTRACTED)/transupp.c
+
+################################################################################
+# JPEG prepare
+################################################################################
+# Run ./configure
+$(LIBJPEG_EXTRACTED)/config.status: $(LIBJPEG_BUILD)/.origin
+	$(call verbose_cmd,CONFIG,libjpeg: $(notdir $@), \
+		cd $(LIBJPEG_EXTRACTED) && ./configure)
+
+LIBJPEG_PREPARED_DEPS = \
+	$(LIBJPEG_EXTRACTED)/config.status \
+
+$(LIBJPEG_BUILD)/.prepared: $(LIBJPEG_PREPARED_DEPS)
+
+UK_PREPARE += $(LIBJPEG_BUILD)/.prepared
\ No newline at end of file
-- 
2.17.1



From minios-devel-bounces@lists.xenproject.org Mon Apr 20 10:00:38 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 20 Apr 2020 10:00: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 1jQTEC-0006eB-6L; Mon, 20 Apr 2020 10:00:36 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=OhrB=6E=csuc.cat=esteban.martinez@srs-us1.protection.inumbo.net>)
 id 1jQTEB-0006e5-5D
 for minios-devel@lists.xen.org; Mon, 20 Apr 2020 10:00:35 +0000
X-Inumbo-ID: c660d34e-82ed-11ea-83d8-bc764e2007e4
Received: from gabarro.xs.cesca.cat (unknown [84.88.0.6])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTP
 id c660d34e-82ed-11ea-83d8-bc764e2007e4;
 Mon, 20 Apr 2020 10:00:34 +0000 (UTC)
DomainKey-Signature: s=csuc; d=csuc.cat; c=nofws; q=dns;
 h=Received:From:To:Cc:Subject:Date:Message-Id:X-Mailer;
 b=TklgUWkdmtkaz4u73jZnVtrSwiUG1oemwgDJ9GRjPAOjZSnWlenE4TfM
 AYPnAwteg7oScYrn8RJKSMyuXIIp8XSzlZli9+GJVQKY7YEgRU55heCrd
 5QY0DiYMd0g6k28WP7iG/VbiaBJaPqdejYp3wFscc3ND70mKrPbMC46xT
 0=;
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple;
 d=csuc.cat; i=@csuc.cat; q=dns/txt; s=csuc;
 t=1587376834; x=1618912834;
 h=from:to:cc:subject:date:message-id;
 bh=SBC5NqEsjga+9AWDZDZS+hJ/OoBeM5QEEX0VlifnOyc=;
 b=ErXwHg4rEQz/pvI8O1q8jXB99PURgTHvPHzwdxEv1Y+GG8O34CKdQPsm
 45TqQWT1cyTbcYDVUxFG4qIi0Yj33vDx3eClFBhY0DXG0v9bVWvetsDdC
 Hlvq2n7I6R6EYF8BjW5Z/D8krF9oIgsGelmHlyv6w2eDzEQMosD+hx6B8 I=;
Received: from unknown (HELO localhost.localdomain) ([10.100.102.130])
 by smtp.xc.csuc.cat with ESMTP/TLS/DHE-RSA-AES128-GCM-SHA256;
 20 Apr 2020 12:00:33 +0200
From: Esteban Martinez <esteban.martinez@csuc.cat>
To: minios-devel@lists.xen.org
Subject: [UNIKRAFT/LCMS PATCH v5 0/2] LCMS library porting
Date: Mon, 20 Apr 2020 12:00:25 +0200
Message-Id: <20200420100027.12095-1-esteban.martinez@csuc.cat>
X-Mailer: git-send-email 2.17.1
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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: Esteban Martinez <esteban.martinez@csuc.cat>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Support color management

Esteban Martinez (2):
  [LCMS PATCH] lcms: Add skeleton new library
  [LCMS PATCH] lcms: Add Makefile.uk

 .gitignore      |  27 ++++++++++++
 CODING_STYLE.md |   4 ++
 CONTRIBUTING.md |   4 ++
 COPYING.md      |  38 +++++++++++++++++
 Config.uk       |  11 +++++
 MAINTAINERS.md  |  11 +++++
 Makefile.uk     | 110 ++++++++++++++++++++++++++++++++++++++++++++++++
 README.md       |   7 +++
 8 files changed, 212 insertions(+)
 create mode 100644 .gitignore
 create mode 100644 CODING_STYLE.md
 create mode 100644 CONTRIBUTING.md
 create mode 100644 COPYING.md
 create mode 100644 Config.uk
 create mode 100644 MAINTAINERS.md
 create mode 100644 Makefile.uk
 create mode 100644 README.md

-- 
2.17.1



From minios-devel-bounces@lists.xenproject.org Mon Apr 20 10:00:41 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 20 Apr 2020 10:00: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 1jQTEH-0006fO-89; Mon, 20 Apr 2020 10:00:41 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=OhrB=6E=csuc.cat=esteban.martinez@srs-us1.protection.inumbo.net>)
 id 1jQTEG-0006fG-5F
 for minios-devel@lists.xen.org; Mon, 20 Apr 2020 10:00:40 +0000
X-Inumbo-ID: c796b8c8-82ed-11ea-83d8-bc764e2007e4
Received: from gabarro.xs.cesca.cat (unknown [84.88.0.6])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTP
 id c796b8c8-82ed-11ea-83d8-bc764e2007e4;
 Mon, 20 Apr 2020 10:00:35 +0000 (UTC)
DomainKey-Signature: s=csuc; d=csuc.cat; c=nofws; q=dns;
 h=Received:From:To:Cc:Subject:Date:Message-Id:X-Mailer:
 In-Reply-To:References;
 b=UbsgMH75Z4dWODi9Gczj9YNwmZ5GCta2dCMek4qtYerbuEUILxmz+BeG
 5N0eToXhbpbcy+ILgzOtMo+/ugMtAKN4wi/vp+bzgjE6jxIpLTZNtIszk
 F1g5iAJajvFOnTMCItUlX6RXBcNqwmOyq8QFl7yssCY/UXSqhdYp9D7aN
 Y=;
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple;
 d=csuc.cat; i=@csuc.cat; q=dns/txt; s=csuc;
 t=1587376835; x=1618912835;
 h=from:to:cc:subject:date:message-id:in-reply-to: references;
 bh=S9/JO8hRzl5Ajz3nF6GduONHMpqmxAyE5GsdMmBi10E=;
 b=WETy+bcjgs+zm0aYvUIuw09rGuwN4DmrerXq5qzq52CnQL0K9LVC3hwH
 D+YCVWTdOrJD75+lMag049micREK8HvDS6F1MVXDZAI+pI0Yr0/peNKm8
 3tEnkP9Z+RQEdLPE7ejv8SsNajW6qjXn2+bFXBTMxnpDXLh3oo3vxiXrS U=;
Received: from unknown (HELO localhost.localdomain) ([10.100.102.130])
 by smtp.xc.csuc.cat with ESMTP/TLS/DHE-RSA-AES128-GCM-SHA256;
 20 Apr 2020 12:00:35 +0200
From: Esteban Martinez <esteban.martinez@csuc.cat>
To: minios-devel@lists.xen.org
Subject: [UNIKRAFT/LCMS PATCH v5 1/2] [LCMS PATCH] lcms: Add skeleton new
 library
Date: Mon, 20 Apr 2020 12:00:26 +0200
Message-Id: <20200420100027.12095-2-esteban.martinez@csuc.cat>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20200420100027.12095-1-esteban.martinez@csuc.cat>
References: <20200420100027.12095-1-esteban.martinez@csuc.cat>
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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: Esteban Martinez <esteban.martinez@csuc.cat>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Signed-off-by: Esteban Martinez <esteban.martinez@csuc.cat>
---
 .gitignore      | 27 +++++++++++++++++++++++++++
 CODING_STYLE.md |  4 ++++
 CONTRIBUTING.md |  4 ++++
 COPYING.md      | 38 ++++++++++++++++++++++++++++++++++++++
 Config.uk       | 11 +++++++++++
 MAINTAINERS.md  | 11 +++++++++++
 README.md       |  7 +++++++
 7 files changed, 102 insertions(+)
 create mode 100644 .gitignore
 create mode 100644 CODING_STYLE.md
 create mode 100644 CONTRIBUTING.md
 create mode 100644 COPYING.md
 create mode 100644 Config.uk
 create mode 100644 MAINTAINERS.md
 create mode 100644 README.md

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..75d2fd3
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,27 @@
+*.depend
+*.o
+*.a
+*.d
+*.so
+*.orig
+*.rej
+*.bak
+*.swp
+*~
+,*
+\#*\#
+.\#*
+\#_*\#
+.\#_*
+!.gitignore
+.*
+
+# gnu global files
+GPATH
+GRTAGS
+GSYMS
+GTAGS
+
+# cscope files
+cscope.*
+ncscope.*
diff --git a/CODING_STYLE.md b/CODING_STYLE.md
new file mode 100644
index 0000000..5730041
--- /dev/null
+++ b/CODING_STYLE.md
@@ -0,0 +1,4 @@
+Coding Style
+============
+
+Please refer to the `CODING_STYLE.md` file in the main Unikraft repository.
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 0000000..14f6ac6
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,4 @@
+Contributing to Unikraft
+========================
+
+Please refer to the `CONTRIBUTING.md` file in the main Unikraft repository.
diff --git a/COPYING.md b/COPYING.md
new file mode 100644
index 0000000..1960df6
--- /dev/null
+++ b/COPYING.md
@@ -0,0 +1,38 @@
+License
+=======
+
+Unikraft lcms wrappers
+------------------------
+
+This repository contains wrapper code to build lcms with Unikraft.  The code
+is published as a mixture of BSD and MIT licences; each C code file in
+this repository should declare who is the copyright owner and under which terms
+and conditions the code is licensed. If such a licence note is missing, the
+following copyright notice will apply:
+
+	Copyright (c) 2020, Consorci de Serveis Universitaris de Catalunya (CSUC). All rights reserved.
+
+	Redistribution and use in source and binary forms, with or without
+	modification, are permitted provided that the following conditions
+	are met:
+
+	1. Redistributions of source code must retain the above copyright
+	   notice, this list of conditions and the following disclaimer.
+	2. Redistributions in binary form must reproduce the above copyright
+	   notice, this list of conditions and the following disclaimer in the
+	   documentation and/or other materials provided with the distribution.
+	3. Neither the name of the copyright holder nor the names of its
+	   contributors may be used to endorse or promote products derived from
+	   this software without specific prior written permission.
+
+	THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+	AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+	IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+	ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+	LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+	CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+	SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+	INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+	CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+	ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+	POSSIBILITY OF SUCH DAMAGE.
diff --git a/Config.uk b/Config.uk
new file mode 100644
index 0000000..edb3659
--- /dev/null
+++ b/Config.uk
@@ -0,0 +1,11 @@
+config LIBLCMS
+	bool "liblcms - Color management engine"
+	default n
+	select LIBNOLIBC if !HAVE_LIBC
+	select LIBUKDEBUG
+    select LIBUKALLOC
+    select LIBPTHREAD_EMBEDDED
+    select LIBNEWLIBC
+
+if LIBLCMS
+endif
diff --git a/MAINTAINERS.md b/MAINTAINERS.md
new file mode 100644
index 0000000..ed92fed
--- /dev/null
+++ b/MAINTAINERS.md
@@ -0,0 +1,11 @@
+Maintainers List
+================
+
+For notes on how to read this information, please refer to `MAINTAINERS.md` in
+the main Unikraft repository.
+
+	LCMS-UNIKRAFT
+	M:	Esteban Martinez <esteban.martinez@csuc.cat>
+	M:	Xavier Peralra <xavier.peralta@csuc.cat>
+	L:	minios-devel@lists.xen.org
+	F: *
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..41f3ea5
--- /dev/null
+++ b/README.md
@@ -0,0 +1,7 @@
+lcms for Unikraft
+=============================
+
+This is the port of lcms for Unikraft as external library.
+
+Please refer to the `README.md` as well as the documentation in the `doc/`
+subdirectory of the main unikraft repository.
-- 
2.17.1



From minios-devel-bounces@lists.xenproject.org Mon Apr 20 10:00:46 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 20 Apr 2020 10:00: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 1jQTEM-0006gL-BD; Mon, 20 Apr 2020 10:00:46 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=OhrB=6E=csuc.cat=esteban.martinez@srs-us1.protection.inumbo.net>)
 id 1jQTEL-0006g8-4N
 for minios-devel@lists.xen.org; Mon, 20 Apr 2020 10:00:45 +0000
X-Inumbo-ID: c85918be-82ed-11ea-83d8-bc764e2007e4
Received: from gabarro.xs.cesca.cat (unknown [84.88.0.6])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTP
 id c85918be-82ed-11ea-83d8-bc764e2007e4;
 Mon, 20 Apr 2020 10:00:37 +0000 (UTC)
DomainKey-Signature: s=csuc; d=csuc.cat; c=nofws; q=dns;
 h=Received:From:To:Cc:Subject:Date:Message-Id:X-Mailer:
 In-Reply-To:References;
 b=p6CDhOLjdq7ycIoDcF6TakZjTWesgHwbWUkp8YO24wCqufsMPNKmyNJ/
 w5ahpa4SCHJ8DQJMsd75GRJArV+hPygRGnWqHpXaJZlTFPWbRLM+gJ1E6
 I1HbOkMeLqqKV4g0Jv9Je+4jFnBx96DKcnztoxPlDPyaRmtcrdPekkD5g
 I=;
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple;
 d=csuc.cat; i=@csuc.cat; q=dns/txt; s=csuc;
 t=1587376837; x=1618912837;
 h=from:to:cc:subject:date:message-id:in-reply-to: references;
 bh=RJEyQLRm0kZIYzUum4jwBjimDATza0gq0L9zuAUmkQc=;
 b=izMoecy+WnTJxzjBLyL8U/Wlv3hLOOlDo5ERx6Xs32WAKCSMY7fJQTP2
 2v5mBgJKM7n9Qe5KEUWtzeIuLbX5bwNyVD76VJ5EpQMJqnecCbNUppSyQ
 lOjFlsXc2ThNELZFiEewvbRMBVxdsczCttzvnQ1wgXl0h++jMloKC85uL w=;
Received: from unknown (HELO localhost.localdomain) ([10.100.102.130])
 by smtp.xc.csuc.cat with ESMTP/TLS/DHE-RSA-AES128-GCM-SHA256;
 20 Apr 2020 12:00:36 +0200
From: Esteban Martinez <esteban.martinez@csuc.cat>
To: minios-devel@lists.xen.org
Subject: [UNIKRAFT/LCMS PATCH v5 2/2] [LCMS PATCH] lcms: Add Makefile.uk
Date: Mon, 20 Apr 2020 12:00:27 +0200
Message-Id: <20200420100027.12095-3-esteban.martinez@csuc.cat>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20200420100027.12095-1-esteban.martinez@csuc.cat>
References: <20200420100027.12095-1-esteban.martinez@csuc.cat>
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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: Esteban Martinez <esteban.martinez@csuc.cat>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Signed-off-by: Esteban Martinez <esteban.martinez@csuc.cat>
---
 Makefile.uk | 110 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 110 insertions(+)
 create mode 100644 Makefile.uk

diff --git a/Makefile.uk b/Makefile.uk
new file mode 100644
index 0000000..e6111ab
--- /dev/null
+++ b/Makefile.uk
@@ -0,0 +1,110 @@
+#  SPDX-License-Identifier: BSD-3-Clause
+#
+#  lcms Makefile.uk
+#
+#  Authors: Esteban Martinez <esteban.martinez@csuc.cat>
+#
+#  Copyright (c) 2019, Consorci de Serveis Universitaris de Catalunya (CSUC). All rights reserved.
+#
+#  Redistribution and use in source and binary forms, with or without
+#  modification, are permitted provided that the following conditions
+#  are met:
+#
+#  1. Redistributions of source code must retain the above copyright
+#     notice, this list of conditions and the following disclaimer.
+#  2. Redistributions in binary form must reproduce the above copyright
+#     notice, this list of conditions and the following disclaimer in the
+#     documentation and/or other materials provided with the distribution.
+#  3. Neither the name of the copyright holder nor the names of its
+#     contributors may be used to endorse or promote products derived from
+#     this software without specific prior written permission.
+#
+#  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+#  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+#  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+#  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+#  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+#  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+#  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+#  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+#  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+#  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+#  POSSIBILITY OF SUCH DAMAGE.
+#
+#  THIS HEADER MAY NOT BE EXTRACTED OR MODIFIED IN ANY WAY.
+#
+
+################################################################################
+# Library registration
+################################################################################
+$(eval $(call addlib_s,liblcms,$(CONFIG_LIBLCMS)))
+
+################################################################################
+# Original sources
+################################################################################
+LIBLCMS_VERSION=2.9
+LIBLCMS_URL=https://raw.githubusercontent.com/python-pillow/pillow-depends/master/lcms2-$(LIBLCMS_VERSION).tar.gz
+LIBLCMS_PATCHDIR=$(LIBLCMS_BASE)/patches
+LIBLCMS_SUBDIR=lcms2-$(LIBLCMS_VERSION)
+$(eval $(call fetch,liblcms,$(LIBLCMS_URL)))
+$(eval $(call patch,liblcms,$(LIBLCMS_PATCHDIR),$(LIBLCMS_SUBDIR)))
+
+################################################################################
+# Helpers
+################################################################################
+LIBLCMS_EXTRACTED = $(LIBLCMS_ORIGIN)/$(LIBLCMS_SUBDIR)
+
+################################################################################
+# Library includes
+################################################################################
+LIBLCMS_COMMON_INCLUDES-y      += -I$(LIBLCMS_EXTRACTED)/include
+LIBLCMS_COMMON_INCLUDES-y      += -I$(LIBLCMS_EXTRACTED)/src
+
+CINCLUDES-$(CONFIG_LIBLCMS)    += $(LIBLCMS_COMMON_INCLUDES-y)
+
+LIBLCMS_CINCLUDES   += -I$(LIBLCMS_EXTRACTED)
+
+################################################################################
+# Global flags
+################################################################################
+# Suppressed flags
+LIBLCMS_SUPPRESS_FLAGS += -Wno-unused-parameter \
+	-Wno-unused-variable -Wno-unused-value -Wno-unused-function \
+	-Wno-missing-field-initializers -Wno-implicit-fallthrough \
+	-Wno-misleading-indentation -Wno-stringop-truncation \
+	-Wno-strict-aliasing
+LIBLCMS_CFLAGS-y   += $(LIBLCMS_SUPPRESS_FLAGS) \
+	-Wno-pointer-to-int-cast -Wno-int-to-pointer-cast \
+	-Wno-misleading-indentation -Wno-stringop-truncation \
+	-Wno-strict-aliasing
+
+################################################################################
+# LCMS src
+################################################################################
+LIBLCMS_SRCS-y += $(LIBLCMS_EXTRACTED)/src/cmscnvrt.c
+LIBLCMS_SRCS-y += $(LIBLCMS_EXTRACTED)/src/cmserr.c
+LIBLCMS_SRCS-y += $(LIBLCMS_EXTRACTED)/src/cmsgamma.c
+LIBLCMS_SRCS-y += $(LIBLCMS_EXTRACTED)/src/cmsgmt.c
+LIBLCMS_SRCS-y += $(LIBLCMS_EXTRACTED)/src/cmsintrp.c
+LIBLCMS_SRCS-y += $(LIBLCMS_EXTRACTED)/src/cmsio0.c
+LIBLCMS_SRCS-y += $(LIBLCMS_EXTRACTED)/src/cmsio1.c
+LIBLCMS_SRCS-y += $(LIBLCMS_EXTRACTED)/src/cmslut.c
+LIBLCMS_SRCS-y += $(LIBLCMS_EXTRACTED)/src/cmsplugin.c
+LIBLCMS_SRCS-y += $(LIBLCMS_EXTRACTED)/src/cmssm.c
+LIBLCMS_SRCS-y += $(LIBLCMS_EXTRACTED)/src/cmsmd5.c
+LIBLCMS_SRCS-y += $(LIBLCMS_EXTRACTED)/src/cmsmtrx.c
+LIBLCMS_SRCS-y += $(LIBLCMS_EXTRACTED)/src/cmspack.c
+LIBLCMS_SRCS-y += $(LIBLCMS_EXTRACTED)/src/cmswtpnt.c
+LIBLCMS_SRCS-y += $(LIBLCMS_EXTRACTED)/src/cmsxform.c
+LIBLCMS_SRCS-y += $(LIBLCMS_EXTRACTED)/src/cmssamp.c
+LIBLCMS_SRCS-y += $(LIBLCMS_EXTRACTED)/src/cmsnamed.c
+LIBLCMS_SRCS-y += $(LIBLCMS_EXTRACTED)/src/cmscam02.c
+LIBLCMS_SRCS-y += $(LIBLCMS_EXTRACTED)/src/cmsvirt.c
+LIBLCMS_SRCS-y += $(LIBLCMS_EXTRACTED)/src/cmstypes.c
+LIBLCMS_SRCS-y += $(LIBLCMS_EXTRACTED)/src/cmscgats.c
+LIBLCMS_SRCS-y += $(LIBLCMS_EXTRACTED)/src/cmsps2.c
+LIBLCMS_SRCS-y += $(LIBLCMS_EXTRACTED)/src/cmsopt.c
+LIBLCMS_SRCS-y += $(LIBLCMS_EXTRACTED)/src/cmshalf.c
+LIBLCMS_SRCS-y += $(LIBLCMS_EXTRACTED)/src/cmsalpha.c
+LIBLCMS_SRCS-y += $(LIBLCMS_EXTRACTED)/src/cmspcs.c
+
-- 
2.17.1



From minios-devel-bounces@lists.xenproject.org Mon Apr 20 11:30:59 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 20 Apr 2020 11:30: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 1jQUdd-0005mQ-49; Mon, 20 Apr 2020 11:30:57 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=OhrB=6E=csuc.cat=esteban.martinez@srs-us1.protection.inumbo.net>)
 id 1jQUdc-0005mG-F7
 for minios-devel@lists.xen.org; Mon, 20 Apr 2020 11:30:56 +0000
X-Inumbo-ID: 64f78384-82fa-11ea-b4f4-bc764e2007e4
Received: from gabarro.xs.cesca.cat (unknown [84.88.0.6])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTP
 id 64f78384-82fa-11ea-b4f4-bc764e2007e4;
 Mon, 20 Apr 2020 11:30:54 +0000 (UTC)
DomainKey-Signature: s=csuc; d=csuc.cat; c=nofws; q=dns;
 h=Received:From:To:Cc:Subject:Date:Message-Id:X-Mailer:
 In-Reply-To:References;
 b=NCeIOud4N1AziadLtW0NFmr2b64ikwPFBVe2hXn40Os2tu7jIn3vbLJE
 kB0ZWWKDB5BMXIoLsIzavOQQ64F/86t9lTw45N2/HgafCNNl4u3Chi+4D
 kO4ZJhfHm55B8xyblmviKrqFF0IswtLOzqFVXEpDCLy9XqmWJZZ5JlSX2
 c=;
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple;
 d=csuc.cat; i=@csuc.cat; q=dns/txt; s=csuc;
 t=1587382254; x=1618918254;
 h=from:to:cc:subject:date:message-id:in-reply-to: references;
 bh=EvCKkz2INfOqb0hQbrKEeSXPK6t8NTT6zBGLD06AT1w=;
 b=SLNu+pneWQbKS2hoWVH4vYk+Vt4KLRuyFfQzRpv5jX5MbvEJWTMkYtrc
 iMAYXLrcDaqKQ6jrcwCjmP0U0Gn9FPrRWEQoSCdgYhM+1n12JZZnOXCqN
 M8pVEkqYjVal1nKfsuV0JtLAB7/amGCyxkWh7baY8ktV0WFFqk9owej77 A=;
Received: from unknown (HELO localhost.localdomain) ([10.100.102.130])
 by smtp.xc.csuc.cat with ESMTP/TLS/DHE-RSA-AES128-GCM-SHA256;
 20 Apr 2020 13:30:53 +0200
From: Esteban Martinez <esteban.martinez@csuc.cat>
To: minios-devel@lists.xen.org
Subject: [UNIKRAFT/PNG PATCH v1 1/2] [PNG PATCH] png: Add skeleton new library
Date: Mon, 20 Apr 2020 13:30:43 +0200
Message-Id: <20200420113044.7861-2-esteban.martinez@csuc.cat>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20200420113044.7861-1-esteban.martinez@csuc.cat>
References: <20200420113044.7861-1-esteban.martinez@csuc.cat>
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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: Esteban Martinez <esteban.martinez@csuc.cat>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Signed-off-by: Esteban Martinez <esteban.martinez@csuc.cat>
---
 .gitignore      | 27 +++++++++++++++++++++++++++
 CODING_STYLE.md |  4 ++++
 CONTRIBUTING.md |  4 ++++
 COPYING.md      | 38 ++++++++++++++++++++++++++++++++++++++
 Config.uk       | 11 +++++++++++
 MAINTAINERS.md  | 11 +++++++++++
 README.md       |  7 +++++++
 exportsyms.uk   |  1 +
 8 files changed, 103 insertions(+)
 create mode 100644 .gitignore
 create mode 100644 CODING_STYLE.md
 create mode 100644 CONTRIBUTING.md
 create mode 100644 COPYING.md
 create mode 100644 Config.uk
 create mode 100644 MAINTAINERS.md
 create mode 100644 README.md
 create mode 100644 exportsyms.uk

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..75d2fd3
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,27 @@
+*.depend
+*.o
+*.a
+*.d
+*.so
+*.orig
+*.rej
+*.bak
+*.swp
+*~
+,*
+\#*\#
+.\#*
+\#_*\#
+.\#_*
+!.gitignore
+.*
+
+# gnu global files
+GPATH
+GRTAGS
+GSYMS
+GTAGS
+
+# cscope files
+cscope.*
+ncscope.*
diff --git a/CODING_STYLE.md b/CODING_STYLE.md
new file mode 100644
index 0000000..5730041
--- /dev/null
+++ b/CODING_STYLE.md
@@ -0,0 +1,4 @@
+Coding Style
+============
+
+Please refer to the `CODING_STYLE.md` file in the main Unikraft repository.
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 0000000..14f6ac6
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,4 @@
+Contributing to Unikraft
+========================
+
+Please refer to the `CONTRIBUTING.md` file in the main Unikraft repository.
diff --git a/COPYING.md b/COPYING.md
new file mode 100644
index 0000000..45eb00f
--- /dev/null
+++ b/COPYING.md
@@ -0,0 +1,38 @@
+License
+=======
+
+Unikraft png wrappers
+------------------------
+
+This repository contains wrapper code to build png with Unikraft.  The code
+is published as a mixture of BSD and MIT licences; each C code file in
+this repository should declare who is the copyright owner and under which terms
+and conditions the code is licensed. If such a licence note is missing, the
+following copyright notice will apply:
+
+    Copyright (c) 2020, Consorci de Serveis Universitaris de Catalunya (CSUC). All rights reserved.
+
+	Redistribution and use in source and binary forms, with or without
+	modification, are permitted provided that the following conditions
+	are met:
+
+	1. Redistributions of source code must retain the above copyright
+	   notice, this list of conditions and the following disclaimer.
+	2. Redistributions in binary form must reproduce the above copyright
+	   notice, this list of conditions and the following disclaimer in the
+	   documentation and/or other materials provided with the distribution.
+	3. Neither the name of the copyright holder nor the names of its
+	   contributors may be used to endorse or promote products derived from
+	   this software without specific prior written permission.
+
+	THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+	AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+	IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+	ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+	LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+	CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+	SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+	INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+	CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+	ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+	POSSIBILITY OF SUCH DAMAGE.
\ No newline at end of file
diff --git a/Config.uk b/Config.uk
new file mode 100644
index 0000000..d2a04e8
--- /dev/null
+++ b/Config.uk
@@ -0,0 +1,11 @@
+config LIBPNG
+	bool "libpng - Portable Network Graphics"
+	default y
+	select LIBNOLIBC if !HAVE_LIBC
+	select LIBUKDEBUG
+    select LIBUKALLOC
+    select LIBNEWLIBC
+    select LIBZLIB
+
+if LIBPNG
+endif
diff --git a/MAINTAINERS.md b/MAINTAINERS.md
new file mode 100644
index 0000000..5e7b02d
--- /dev/null
+++ b/MAINTAINERS.md
@@ -0,0 +1,11 @@
+Maintainers List
+================
+
+For notes on how to read this information, please refer to `MAINTAINERS.md` in
+the main Unikraft repository.
+
+	PNG-UNIKRAFT
+	M:	Esteban Martinez <esteban.martinez@csuc.cat>
+	M:	Xavier Peralra <xavier.peralta@csuc.cat>
+	L:	minios-devel@lists.xen.org
+	F: *
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..027af5d
--- /dev/null
+++ b/README.md
@@ -0,0 +1,7 @@
+png for Unikraft
+=============================
+
+This is the port of png for Unikraft as external library.
+
+Please refer to the `README.md` as well as the documentation in the `doc/`
+subdirectory of the main unikraft repository.
diff --git a/exportsyms.uk b/exportsyms.uk
new file mode 100644
index 0000000..c86c3f3
--- /dev/null
+++ b/exportsyms.uk
@@ -0,0 +1 @@
+none
\ No newline at end of file
-- 
2.17.1



From minios-devel-bounces@lists.xenproject.org Mon Apr 20 11:30:59 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 20 Apr 2020 11:30: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 1jQUdd-0005mL-1t; Mon, 20 Apr 2020 11:30: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=OhrB=6E=csuc.cat=esteban.martinez@srs-us1.protection.inumbo.net>)
 id 1jQUdb-0005mB-Tv
 for minios-devel@lists.xen.org; Mon, 20 Apr 2020 11:30:56 +0000
X-Inumbo-ID: 64b35f4c-82fa-11ea-9050-12813bfff9fa
Received: from gabarro.xs.cesca.cat (unknown [84.88.0.6])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTP
 id 64b35f4c-82fa-11ea-9050-12813bfff9fa;
 Mon, 20 Apr 2020 11:30:53 +0000 (UTC)
DomainKey-Signature: s=csuc; d=csuc.cat; c=nofws; q=dns;
 h=Received:From:To:Cc:Subject:Date:Message-Id:X-Mailer;
 b=rTuMCw63sLaRSyonGK0tEoBLh4UbKxs2UV6kBjsi0eSh8EndZl0z+78u
 pz3uGKg/Io7j64lVvBL6DejfENL/otcBxdIKLEMXpCIU1UA1btJezMPxx
 qztew9U+1RxfWiULRNO1lJWEk+3i/z3On06KzEUCwLfHIJOdkMcvKq4Hq
 0=;
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple;
 d=csuc.cat; i=@csuc.cat; q=dns/txt; s=csuc;
 t=1587382253; x=1618918253;
 h=from:to:cc:subject:date:message-id;
 bh=MFUK78CrFT6z4zp69aU9zbF/CqBt9Y/zFPOLGbyg7uY=;
 b=D4Ag75TmFd3fTR20Qdp34J7vlBnI95wK3LgP0p9vz39Z1aO3bbMmWQyo
 FRxPFQfEJYrM9nDk1K78Jc58M9t8d8JVQaBqWplKgUnHn28WvR3J74EJT
 L/N44FE5y/BvRdEMUiDkBncaLwUIyFH49O0NWrGqquACcE3CQIp9OERlj g=;
Received: from unknown (HELO localhost.localdomain) ([10.100.102.130])
 by smtp.xc.csuc.cat with ESMTP/TLS/DHE-RSA-AES128-GCM-SHA256;
 20 Apr 2020 13:30:50 +0200
From: Esteban Martinez <esteban.martinez@csuc.cat>
To: minios-devel@lists.xen.org
Subject: [UNIKRAFT/PNG PATCH v1 0/2] PNG library porting
Date: Mon, 20 Apr 2020 13:30:42 +0200
Message-Id: <20200420113044.7861-1-esteban.martinez@csuc.cat>
X-Mailer: git-send-email 2.17.1
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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: Esteban Martinez <esteban.martinez@csuc.cat>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

File-format that supports lossless data compression

Esteban Martinez (2):
  [PNG PATCH] png: Add skeleton new library
  [PNG PATCH] png: Add Makefile.uk

 .gitignore      |  27 +++++++++++
 CODING_STYLE.md |   4 ++
 CONTRIBUTING.md |   4 ++
 COPYING.md      |  38 +++++++++++++++
 Config.uk       |  11 +++++
 MAINTAINERS.md  |  11 +++++
 Makefile.uk     | 121 ++++++++++++++++++++++++++++++++++++++++++++++++
 README.md       |   7 +++
 exportsyms.uk   |   1 +
 9 files changed, 224 insertions(+)
 create mode 100644 .gitignore
 create mode 100644 CODING_STYLE.md
 create mode 100644 CONTRIBUTING.md
 create mode 100644 COPYING.md
 create mode 100644 Config.uk
 create mode 100644 MAINTAINERS.md
 create mode 100644 Makefile.uk
 create mode 100644 README.md
 create mode 100644 exportsyms.uk

-- 
2.17.1



From minios-devel-bounces@lists.xenproject.org Mon Apr 20 11:31:02 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 20 Apr 2020 11:31: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 1jQUdi-0005n7-6X; Mon, 20 Apr 2020 11:31: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=OhrB=6E=csuc.cat=esteban.martinez@srs-us1.protection.inumbo.net>)
 id 1jQUdg-0005mr-Np
 for minios-devel@lists.xen.org; Mon, 20 Apr 2020 11:31:00 +0000
X-Inumbo-ID: 662b7d1e-82fa-11ea-9050-12813bfff9fa
Received: from gabarro.xs.cesca.cat (unknown [84.88.0.6])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTP
 id 662b7d1e-82fa-11ea-9050-12813bfff9fa;
 Mon, 20 Apr 2020 11:30:55 +0000 (UTC)
DomainKey-Signature: s=csuc; d=csuc.cat; c=nofws; q=dns;
 h=Received:From:To:Cc:Subject:Date:Message-Id:X-Mailer:
 In-Reply-To:References;
 b=es9rsJdK1lzJEslBmCvwTFqMmXkdgwfHBANq3cIhFcNf5O5MhQHTC1Gy
 MqgHVH3HrhScQ0PsgJQyk33hgxLbKEn1FwXGGj+MAP0tI49FvtSo+OmYO
 J6C/XYsEQjd0s/FiASWcZlSdY1nd1XEBLiHnLs1VFFpzpE1gyVHUfs+jc
 Y=;
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple;
 d=csuc.cat; i=@csuc.cat; q=dns/txt; s=csuc;
 t=1587382255; x=1618918255;
 h=from:to:cc:subject:date:message-id:in-reply-to: references;
 bh=m2f7GACxII2Bx4f9WfNJOmoRqYnruUgP5bbl82nRScs=;
 b=W3PLblhKm3NUT0Nb48GBcVmp1CEdyB2Ujz8H0l7sfRPtKS4uXybtcUuB
 V1YouQ96JBwYpMXHx+rtEfvS0aMm0pjfHwsw1CjKbXMfCA6Y6WrGQdwYY
 Ku8a1Jd50nsrMyUI0aKRYMan6l/NircjLiemRbJ5updZ7Irylx8M0ps2B g=;
Received: from unknown (HELO localhost.localdomain) ([10.100.102.130])
 by smtp.xc.csuc.cat with ESMTP/TLS/DHE-RSA-AES128-GCM-SHA256;
 20 Apr 2020 13:30:54 +0200
From: Esteban Martinez <esteban.martinez@csuc.cat>
To: minios-devel@lists.xen.org
Subject: [UNIKRAFT/PNG PATCH v1 2/2] [PNG PATCH] png: Add Makefile.uk
Date: Mon, 20 Apr 2020 13:30:44 +0200
Message-Id: <20200420113044.7861-3-esteban.martinez@csuc.cat>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20200420113044.7861-1-esteban.martinez@csuc.cat>
References: <20200420113044.7861-1-esteban.martinez@csuc.cat>
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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: Esteban Martinez <esteban.martinez@csuc.cat>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Signed-off-by: Esteban Martinez <esteban.martinez@csuc.cat>
---
 Makefile.uk | 121 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 121 insertions(+)
 create mode 100644 Makefile.uk

diff --git a/Makefile.uk b/Makefile.uk
new file mode 100644
index 0000000..7e595c9
--- /dev/null
+++ b/Makefile.uk
@@ -0,0 +1,121 @@
+#  SPDX-License-Identifier: BSD-3-Clause
+#
+#  png Makefile.uk
+#
+#  Authors: Esteban Martinez <esteban.martinez@csuc.cat>
+#
+#  Copyright (c) 2019, Consorci de Serveis Universitaris de Catalunya (CSUC). All rights reserved.
+#
+#  Redistribution and use in source and binary forms, with or without
+#  modification, are permitted provided that the following conditions
+#  are met:
+#
+#  1. Redistributions of source code must retain the above copyright
+#     notice, this list of conditions and the following disclaimer.
+#  2. Redistributions in binary form must reproduce the above copyright
+#     notice, this list of conditions and the following disclaimer in the
+#     documentation and/or other materials provided with the distribution.
+#  3. Neither the name of the copyright holder nor the names of its
+#     contributors may be used to endorse or promote products derived from
+#     this software without specific prior written permission.
+#
+#  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+#  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+#  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+#  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+#  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+#  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+#  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+#  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+#  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+#  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+#  POSSIBILITY OF SUCH DAMAGE.
+#
+#  THIS HEADER MAY NOT BE EXTRACTED OR MODIFIED IN ANY WAY.
+#
+
+################################################################################
+# Library registration
+################################################################################
+$(eval $(call addlib_s,libpng,$(CONFIG_LIBPNG)))
+
+################################################################################
+# Original sources
+################################################################################
+LIBPNG_VERSION=1.6.37
+LIBPNG_URL=https://raw.githubusercontent.com/python-pillow/pillow-depends/master/libpng-$(LIBPNG_VERSION).tar.gz
+LIBPNG_PATCHDIR=$(LIBPNG_BASE)/patches
+LIBPNG_SUBDIR=png-$(LIBPNG_VERSION)
+$(eval $(call fetch,libpng,$(LIBPNG_URL)))
+$(eval $(call patch,libpng,$(LIBPNG_PATCHDIR),$(LIBPNG_SUBDIR)))
+
+################################################################################
+# Helpers
+################################################################################
+LIBPNG_EXTRACTED = $(LIBPNG_ORIGIN)/libpng-$(LIBPNG_VERSION)
+
+################################################################################
+# Library includes
+################################################################################
+LIBPNG_COMMON_INCLUDES-y      += -I$(LIBPNG_EXTRACTED)/
+
+CINCLUDES-$(CONFIG_LIBPNG)    += $(LIBPNG_COMMON_INCLUDES-y)
+
+LIBPNG_CINCLUDES   += -I$(LIBPNG_EXTRACTED)
+
+################################################################################
+# Global flags
+################################################################################
+# Suppressed flags
+LIBPNG_SUPPRESS_FLAGS += -Wno-unused-parameter \
+	-Wno-unused-variable -Wno-unused-value -Wno-unused-function \
+	-Wno-missing-field-initializers -Wno-implicit-fallthrough
+LIBPNG_CFLAGS-y   += $(LIBPNG_SUPPRESS_FLAGS) \
+	-Wno-pointer-to-int-cast -Wno-int-to-pointer-cast
+
+LIBPNG_DEFINES    += -DHAVE_CONFIG_H
+LIBPNG_DEFINES    += -DHAVE_FEENABLEEXCEPT
+LIBPNG_CFLAGS-y   += $(LIBPNG_DEFINES)
+
+################################################################################
+# PNG src
+################################################################################
+LIBPNG_SRCS-y += $(LIBPNG_EXTRACTED)/contrib/tools/pngfix.c
+LIBPNG_SRCS-y += $(LIBPNG_EXTRACTED)/png.c
+LIBPNG_SRCS-y += $(LIBPNG_EXTRACTED)/pngerror.c
+LIBPNG_SRCS-y += $(LIBPNG_EXTRACTED)/pngget.c
+LIBPNG_SRCS-y += $(LIBPNG_EXTRACTED)/pngmem.c
+LIBPNG_SRCS-y += $(LIBPNG_EXTRACTED)/pngpread.c
+LIBPNG_SRCS-y += $(LIBPNG_EXTRACTED)/pngread.c
+LIBPNG_SRCS-y += $(LIBPNG_EXTRACTED)/pngrio.c
+LIBPNG_SRCS-y += $(LIBPNG_EXTRACTED)/pngrtran.c
+LIBPNG_SRCS-y += $(LIBPNG_EXTRACTED)/pngrutil.c
+LIBPNG_SRCS-y += $(LIBPNG_EXTRACTED)/pngset.c
+LIBPNG_SRCS-y += $(LIBPNG_EXTRACTED)/pngtrans.c
+LIBPNG_SRCS-y += $(LIBPNG_EXTRACTED)/pngwio.c
+LIBPNG_SRCS-y += $(LIBPNG_EXTRACTED)/pngwrite.c
+LIBPNG_SRCS-y += $(LIBPNG_EXTRACTED)/pngwtran.c
+LIBPNG_SRCS-y += $(LIBPNG_EXTRACTED)/pngwutil.c
+LIBPNG_SRCS-y += $(LIBPNG_EXTRACTED)/mips/mips_init.c
+LIBPNG_SRCS-y += $(LIBPNG_EXTRACTED)/mips/filter_msa_intrinsics.c
+LIBPNG_SRCS-y += $(LIBPNG_EXTRACTED)/intel/intel_init.c
+LIBPNG_SRCS-y += $(LIBPNG_EXTRACTED)/intel/filter_sse2_intrinsics.c
+LIBPNG_SRCS-y += $(LIBPNG_EXTRACTED)/powerpc/powerpc_init.c
+LIBPNG_SRCS-y += $(LIBPNG_EXTRACTED)/powerpc/filter_vsx_intrinsics.c
+
+
+################################################################################
+# PNG prepare
+################################################################################
+# Run ./configure
+$(LIBPNG_EXTRACTED)/config.status: $(LIBPNG_BUILD)/.origin
+	$(call verbose_cmd,CONFIG,libpng: $(notdir $@), \
+		cd $(LIBPNG_EXTRACTED) && ./configure &&\
+		cp -f $(LIBPNG_EXTRACTED)/scripts/pnglibconf.h.prebuilt $(LIBPNG_EXTRACTED)/pnglibconf.h)
+
+LIBPNG_PREPARED_DEPS = \
+	$(LIBPNG_EXTRACTED)/config.status \
+
+$(LIBPNG_BUILD)/.prepared: $(LIBPNG_PREPARED_DEPS)
+
+UK_PREPARE += $(LIBPNG_BUILD)/.prepared
\ No newline at end of file
-- 
2.17.1



From minios-devel-bounces@lists.xenproject.org Mon Apr 20 11:47:11 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 20 Apr 2020 11:47: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 1jQUtK-0006j8-G5; Mon, 20 Apr 2020 11:47:10 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=OhrB=6E=csuc.cat=esteban.martinez@srs-us1.protection.inumbo.net>)
 id 1jQUtJ-0006j3-F4
 for minios-devel@lists.xen.org; Mon, 20 Apr 2020 11:47:09 +0000
X-Inumbo-ID: a994a0c4-82fc-11ea-9e09-bc764e2007e4
Received: from gabarro.xs.cesca.cat (unknown [84.88.0.6])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTP
 id a994a0c4-82fc-11ea-9e09-bc764e2007e4;
 Mon, 20 Apr 2020 11:47:08 +0000 (UTC)
DomainKey-Signature: s=csuc; d=csuc.cat; c=nofws; q=dns;
 h=Received:From:To:Cc:Subject:Date:Message-Id:X-Mailer;
 b=kAO4hiEaWJKiwyIcH5jNpu4M5j+aSYDEGg6b3zJtM8tiFIYV6oBj7jWn
 Rx5SAsgYF8uIOLGd69k22st+nDty5hR3PV1D2XmGleTB+Nt9X9WZlY1gL
 JyHsSySLAlrO+inlAn2eC+HQHRWg2i1hfUxpKJKswAwucv4ZQ01SMXO1p
 s=;
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple;
 d=csuc.cat; i=@csuc.cat; q=dns/txt; s=csuc;
 t=1587383228; x=1618919228;
 h=from:to:cc:subject:date:message-id;
 bh=AJ0vZaU+9WOsC6I9DZAtvqNpUubeGQqH+kHQgwX1wHg=;
 b=SnUHZd69miQJtOHVR/u1OZaPttg1pyVTd827iOsYXvzEpj6DPbWDE2aB
 REwc0EzC386Ll1xgvM8THvDtlZZEoTS83pHp0poYg8zOruToKXP22GFd9
 mlhnw4e2QZvOFfqhPJw6YIOJjGoVOSmyfn2D7NpVHPQV1VTnN2n9waf/A k=;
Received: from unknown (HELO localhost.localdomain) ([10.100.102.130])
 by smtp.xc.csuc.cat with ESMTP/TLS/DHE-RSA-AES128-GCM-SHA256;
 20 Apr 2020 13:47:07 +0200
From: Esteban Martinez <esteban.martinez@csuc.cat>
To: minios-devel@lists.xen.org
Subject: [UNIKRAFT/TIFF PATCH v1 0/2] TIFF library porting
Date: Mon, 20 Apr 2020 13:46:59 +0200
Message-Id: <20200420114701.20237-1-esteban.martinez@csuc.cat>
X-Mailer: git-send-email 2.17.1
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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: Esteban Martinez <esteban.martinez@csuc.cat>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Tagged Image File Format

Esteban Martinez (2):
  [TIFF PATCH] tiff: Add skeleton new library
  [TIFF PATCH] tiff: Add Makefile.uk

 .gitignore      | 27 +++++++++++++++++++++++++++
 CODING_STYLE.md |  0
 CONTRIBUTING.md |  0
 COPYING.md      |  0
 Config.uk       |  0
 MAINTAINERS.md  |  0
 Makefile.uk     | 17 ++++++++++++++++-
 README.md       |  0
 8 files changed, 43 insertions(+), 1 deletion(-)
 create mode 100644 .gitignore
 mode change 100755 => 100644 CODING_STYLE.md
 mode change 100755 => 100644 CONTRIBUTING.md
 mode change 100755 => 100644 COPYING.md
 mode change 100755 => 100644 Config.uk
 mode change 100755 => 100644 MAINTAINERS.md
 mode change 100755 => 100644 Makefile.uk
 mode change 100755 => 100644 README.md

-- 
2.17.1



From minios-devel-bounces@lists.xenproject.org Mon Apr 20 11:47:13 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 20 Apr 2020 11:47: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 1jQUtN-0006ji-Ix; Mon, 20 Apr 2020 11:47: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=OhrB=6E=csuc.cat=esteban.martinez@srs-us1.protection.inumbo.net>)
 id 1jQUtM-0006jV-9A
 for minios-devel@lists.xen.org; Mon, 20 Apr 2020 11:47:12 +0000
X-Inumbo-ID: ab5a206e-82fc-11ea-9051-12813bfff9fa
Received: from gabarro.xs.cesca.cat (unknown [84.88.0.6])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTP
 id ab5a206e-82fc-11ea-9051-12813bfff9fa;
 Mon, 20 Apr 2020 11:47:11 +0000 (UTC)
DomainKey-Signature: s=csuc; d=csuc.cat; c=nofws; q=dns;
 h=Received:From:To:Cc:Subject:Date:Message-Id:X-Mailer:
 In-Reply-To:References;
 b=TtmABPAqEH+j7273x4Wuyy/oRzywb051PdL81F3wkFX2fzvQVUuM1IfK
 nLIq6gBXTjCUr9tq0uSikUU+Y8Z7KwJiVzUjsKaAA5pch+eP5GQNRlNne
 nSiJWyB4nAj9CoHEfZFPcripcKozRbeUCiYb7knG9njOb+abXkBlW2QXa
 8=;
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple;
 d=csuc.cat; i=@csuc.cat; q=dns/txt; s=csuc;
 t=1587383231; x=1618919231;
 h=from:to:cc:subject:date:message-id:in-reply-to: references;
 bh=vlwylPy6yVNjJnB1bYn1Ku2pt5l5vpCh5uDP0tsk8wo=;
 b=gp3b/H2B8r0EogZJTfAFVUaKQBIGGZksOKYrIkh0d4qra7wEeMSETco2
 BKVUJLTz6fw3Yl2jZJvWyyYBYb0hfzoDNEeYrAz8hVlT4mnJOmuBgEnBL
 fsQnqlAYI+wY860d48geuOuXmyBRjyRbUfOipXSiEdAJHKsJJ1GOek2QD c=;
Received: from unknown (HELO localhost.localdomain) ([10.100.102.130])
 by smtp.xc.csuc.cat with ESMTP/TLS/DHE-RSA-AES128-GCM-SHA256;
 20 Apr 2020 13:47:10 +0200
From: Esteban Martinez <esteban.martinez@csuc.cat>
To: minios-devel@lists.xen.org
Subject: [UNIKRAFT/TIFF PATCH v1 2/2] [TIFF PATCH] tiff: Add Makefile.uk
Date: Mon, 20 Apr 2020 13:47:01 +0200
Message-Id: <20200420114701.20237-3-esteban.martinez@csuc.cat>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20200420114701.20237-1-esteban.martinez@csuc.cat>
References: <20200420114701.20237-1-esteban.martinez@csuc.cat>
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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: Esteban Martinez <esteban.martinez@csuc.cat>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Signed-off-by: Esteban Martinez <esteban.martinez@csuc.cat>
---
 Makefile.uk | 143 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 143 insertions(+)
 create mode 100644 Makefile.uk

diff --git a/Makefile.uk b/Makefile.uk
new file mode 100644
index 0000000..ce8f102
--- /dev/null
+++ b/Makefile.uk
@@ -0,0 +1,143 @@
+#  SPDX-License-Identifier: BSD-3-Clause
+#
+#  tiff Makefile.uk
+#
+#  Authors: Esteban Martinez <esteban.martinez@csuc.cat>
+#
+#  Copyright (c) 2019, Consorci de Serveis Universitaris de Catalunya (CSUC). All rights reserved.
+#
+#  Redistribution and use in source and binary forms, with or without
+#  modification, are permitted provided that the following conditions
+#  are met:
+#
+#  1. Redistributions of source code must retain the above copyright
+#     notice, this list of conditions and the following disclaimer.
+#  2. Redistributions in binary form must reproduce the above copyright
+#     notice, this list of conditions and the following disclaimer in the
+#     documentation and/or other materials provided with the distribution.
+#  3. Neither the name of the copyright holder nor the names of its
+#     contributors may be used to endorse or promote products derived from
+#     this software without specific prior written permission.
+#
+#  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+#  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+#  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+#  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+#  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+#  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+#  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+#  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+#  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+#  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+#  POSSIBILITY OF SUCH DAMAGE.
+#
+#  THIS HEADER MAY NOT BE EXTRACTED OR MODIFIED IN ANY WAY.
+#
+
+################################################################################
+# Library registration
+################################################################################
+$(eval $(call addlib_s,libtiff,$(CONFIG_LIBTIFF)))
+
+################################################################################
+# Original sources
+################################################################################
+LIBTIFF_VERSION=4.0.10
+LIBTIFF_URL=https://raw.githubusercontent.com/python-pillow/pillow-depends/master/tiff-$(LIBTIFF_VERSION).tar.gz
+LIBTIFF_PATCHDIR=$(LIBTIFF_BASE)/patches
+LIBTIFF_SUBDIR=tiff-$(LIBTIFF_VERSION)
+$(eval $(call fetch,libtiff,$(LIBTIFF_URL)))
+$(eval $(call patch,libtiff,$(LIBTIFF_PATCHDIR),$(LIBTIFF_SUBDIR)))
+
+################################################################################
+# Helpers
+################################################################################
+LIBTIFF_EXTRACTED = $(LIBTIFF_ORIGIN)/$(LIBTIFF_SUBDIR)
+
+################################################################################
+# Library includes
+################################################################################
+LIBTIFF_COMMON_INCLUDES-y      += -I$(LIBTIFF_EXTRACTED)/
+LIBTIFF_COMMON_INCLUDES-y      += -I$(LIBTIFF_EXTRACTED)/libtiff
+
+CINCLUDES-$(CONFIG_LIBTIFF)    += $(LIBTIFF_COMMON_INCLUDES-y)
+
+LIBTIFF_CINCLUDES   += -I$(LIBTIFF_EXTRACTED)
+
+################################################################################
+# Global flags
+################################################################################
+# Suppressed flags
+LIBTIFF_SUPPRESS_FLAGS += -Wno-unused-parameter \
+	-Wno-unused-variable -Wno-unused-value -Wno-unused-function \
+	-Wno-missing-field-initializers -Wno-implicit-fallthrough \
+	-Wno-misleading-indentation -Wno-stringop-truncation \
+	-Wno-strict-aliasing
+LIBTIFF_CFLAGS-y   += $(LIBLCMS_SUPPRESS_FLAGS) \
+	-Wno-pointer-to-int-cast -Wno-int-to-pointer-cast \
+	-Wno-misleading-indentation -Wno-stringop-truncation \
+	-Wno-strict-aliasing
+
+LIBTIFF_DEFINES    += -DHAVE_CONFIG_H
+LIBTIFF_CFLAGS-y   += $(LIBTIFF_DEFINES)
+
+################################################################################
+# TIFF src
+################################################################################
+LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/port/dummy.c
+LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/libtiff/tif_aux.c
+LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/libtiff/tif_close.c
+LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/libtiff/tif_codec.c
+LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/libtiff/tif_color.c
+LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/libtiff/tif_compress.c
+LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/libtiff/tif_dir.c
+LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/libtiff/tif_dirinfo.c
+LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/libtiff/tif_dirread.c
+LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/libtiff/tif_dirwrite.c
+LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/libtiff/tif_dumpmode.c
+LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/libtiff/tif_error.c
+LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/libtiff/tif_extension.c
+LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/libtiff/tif_fax3.c
+LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/libtiff/tif_fax3sm.c
+LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/libtiff/tif_flush.c
+LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/libtiff/tif_getimage.c
+LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/libtiff/tif_jbig.c
+LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/libtiff/tif_jpeg.c
+LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/libtiff/tif_jpeg_12.c
+LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/libtiff/tif_luv.c
+LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/libtiff/tif_lzma.c
+LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/libtiff/tif_lzw.c
+LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/libtiff/tif_next.c
+LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/libtiff/tif_ojpeg.c
+LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/libtiff/tif_open.c
+LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/libtiff/tif_packbits.c
+LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/libtiff/tif_pixarlog.c
+LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/libtiff/tif_predict.c
+LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/libtiff/tif_print.c
+LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/libtiff/tif_read.c
+LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/libtiff/tif_strip.c
+LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/libtiff/tif_swab.c
+LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/libtiff/tif_thunder.c
+LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/libtiff/tif_tile.c
+LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/libtiff/tif_version.c
+LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/libtiff/tif_warning.c
+LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/libtiff/tif_write.c
+LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/libtiff/tif_zip.c
+LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/libtiff/tif_unix.c
+LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/contrib/addtiffo/tif_overview.c
+LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/contrib/addtiffo/tif_ovrcache.c
+
+################################################################################
+# TIFF prepare
+################################################################################
+# Run ./configure
+$(LIBTIFF_EXTRACTED)/config.status: $(LIBTIFF_BUILD)/.origin
+	$(call verbose_cmd,CONFIG,libtiff: $(notdir $@), \
+		cd $(LIBTIFF_EXTRACTED) && ./configure)
+
+LIBTIFF_PREPARED_DEPS = \
+	$(LIBTIFF_EXTRACTED)/config.status \
+
+$(LIBTIFF_BUILD)/.prepared: $(LIBTIFF_PREPARED_DEPS)
+
+UK_PREPARE += $(LIBTIFF_BUILD)/.prepared
\ No newline at end of file
-- 
2.17.1



From minios-devel-bounces@lists.xenproject.org Mon Apr 20 11:47:15 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 20 Apr 2020 11: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 1jQUtP-0006kG-KY; Mon, 20 Apr 2020 11:47:15 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=OhrB=6E=csuc.cat=esteban.martinez@srs-us1.protection.inumbo.net>)
 id 1jQUtO-0006k4-9E
 for minios-devel@lists.xen.org; Mon, 20 Apr 2020 11:47:14 +0000
X-Inumbo-ID: aab63cba-82fc-11ea-9e09-bc764e2007e4
Received: from gabarro.xs.cesca.cat (unknown [84.88.0.6])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTP
 id aab63cba-82fc-11ea-9e09-bc764e2007e4;
 Mon, 20 Apr 2020 11:47:09 +0000 (UTC)
DomainKey-Signature: s=csuc; d=csuc.cat; c=nofws; q=dns;
 h=Received:From:To:Cc:Subject:Date:Message-Id:X-Mailer:
 In-Reply-To:References;
 b=HE9uqn8N7ta8C2gov+Kvp20/oJnhjT3qdsppr7DMks6qKVmQLSbRA85W
 O19hlLlNfQfwURoKbTualUxCk7fXpJgIWyleP+Rfns0tjSuJr7l9zOb5B
 YTG6FivZ/qK6pB5Ql4ZrpEMRLkg6t7uYhD4jmwCSlMgrN4kmZ2DaXqJ9+
 0=;
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple;
 d=csuc.cat; i=@csuc.cat; q=dns/txt; s=csuc;
 t=1587383229; x=1618919229;
 h=from:to:cc:subject:date:message-id:in-reply-to: references;
 bh=i2LfrMYCzxwmBml84kA/rlMIoooemZ9C9AU2euPguwA=;
 b=FBwLHuodKqj+/AbeNFVTFYs6Ms8/seBS0vL5lvbC0FjofLckBcey3HCB
 8RJq9zn/Jf3iOFVKfIj3zhfiaatCrjS/etJfUugjuHQsO50IgMgo88mKg
 vEcv1abAzOBhk4msrTnsuHId+VnTIlAJLmJ2FCsp61gN2M6ZrBI3wI384 M=;
Received: from unknown (HELO localhost.localdomain) ([10.100.102.130])
 by smtp.xc.csuc.cat with ESMTP/TLS/DHE-RSA-AES128-GCM-SHA256;
 20 Apr 2020 13:47:09 +0200
From: Esteban Martinez <esteban.martinez@csuc.cat>
To: minios-devel@lists.xen.org
Subject: [UNIKRAFT/TIFF PATCH v1 1/2] [TIFF PATCH] tiff: Add skeleton new
 library
Date: Mon, 20 Apr 2020 13:47:00 +0200
Message-Id: <20200420114701.20237-2-esteban.martinez@csuc.cat>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20200420114701.20237-1-esteban.martinez@csuc.cat>
References: <20200420114701.20237-1-esteban.martinez@csuc.cat>
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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: Esteban Martinez <esteban.martinez@csuc.cat>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Signed-off-by: Esteban Martinez <esteban.martinez@csuc.cat>
---
 .gitignore      |  27 ++++++++++
 CODING_STYLE.md |   0
 CONTRIBUTING.md |   0
 COPYING.md      |   0
 Config.uk       |   0
 MAINTAINERS.md  |   0
 Makefile.uk     | 128 ------------------------------------------------
 README.md       |   0
 8 files changed, 27 insertions(+), 128 deletions(-)
 create mode 100644 .gitignore
 mode change 100755 => 100644 CODING_STYLE.md
 mode change 100755 => 100644 CONTRIBUTING.md
 mode change 100755 => 100644 COPYING.md
 mode change 100755 => 100644 Config.uk
 mode change 100755 => 100644 MAINTAINERS.md
 delete mode 100755 Makefile.uk
 mode change 100755 => 100644 README.md

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..75d2fd3
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,27 @@
+*.depend
+*.o
+*.a
+*.d
+*.so
+*.orig
+*.rej
+*.bak
+*.swp
+*~
+,*
+\#*\#
+.\#*
+\#_*\#
+.\#_*
+!.gitignore
+.*
+
+# gnu global files
+GPATH
+GRTAGS
+GSYMS
+GTAGS
+
+# cscope files
+cscope.*
+ncscope.*
diff --git a/CODING_STYLE.md b/CODING_STYLE.md
old mode 100755
new mode 100644
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
old mode 100755
new mode 100644
diff --git a/COPYING.md b/COPYING.md
old mode 100755
new mode 100644
diff --git a/Config.uk b/Config.uk
old mode 100755
new mode 100644
diff --git a/MAINTAINERS.md b/MAINTAINERS.md
old mode 100755
new mode 100644
diff --git a/Makefile.uk b/Makefile.uk
deleted file mode 100755
index ec24b42..0000000
--- a/Makefile.uk
+++ /dev/null
@@ -1,128 +0,0 @@
-#  SPDX-License-Identifier: BSD-3-Clause
-#
-#  tiff Makefile.uk
-#
-#  Authors: Esteban Martinez <esteban.martinez@csuc.cat>
-#
-#  Copyright (c) 2019, Consorci de Serveis Universitaris de Catalunya (CSUC). All rights reserved.
-#
-#  Redistribution and use in source and binary forms, with or without
-#  modification, are permitted provided that the following conditions
-#  are met:
-#
-#  1. Redistributions of source code must retain the above copyright
-#     notice, this list of conditions and the following disclaimer.
-#  2. Redistributions in binary form must reproduce the above copyright
-#     notice, this list of conditions and the following disclaimer in the
-#     documentation and/or other materials provided with the distribution.
-#  3. Neither the name of the copyright holder nor the names of its
-#     contributors may be used to endorse or promote products derived from
-#     this software without specific prior written permission.
-#
-#  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-#  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-#  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-#  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-#  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-#  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-#  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-#  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-#  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-#  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-#  POSSIBILITY OF SUCH DAMAGE.
-#
-#  THIS HEADER MAY NOT BE EXTRACTED OR MODIFIED IN ANY WAY.
-#
-
-################################################################################
-# Library registration
-################################################################################
-$(eval $(call addlib_s,libtiff,$(CONFIG_LIBTIFF)))
-
-################################################################################
-# Original sources
-################################################################################
-LIBTIFF_VERSION=4.0.10
-LIBTIFF_URL=https://raw.githubusercontent.com/python-pillow/pillow-depends/master/tiff-$(LIBTIFF_VERSION).tar.gz
-LIBTIFF_PATCHDIR=$(LIBTIFF_BASE)/patches
-LIBTIFF_SUBDIR=tiff-$(LIBTIFF_VERSION)
-$(eval $(call fetch,libtiff,$(LIBTIFF_URL)))
-$(eval $(call patch,libtiff,$(LIBTIFF_PATCHDIR),$(LIBTIFF_SUBDIR)))
-
-################################################################################
-# Helpers
-################################################################################
-LIBTIFF_EXTRACTED = $(LIBTIFF_ORIGIN)/$(LIBTIFF_SUBDIR)
-
-################################################################################
-# Library includes
-################################################################################
-LIBTIFF_COMMON_INCLUDES-y      += -I$(LIBTIFF_EXTRACTED)/
-LIBTIFF_COMMON_INCLUDES-y      += -I$(LIBTIFF_EXTRACTED)/libtiff
-
-CINCLUDES-$(CONFIG_LIBTIFF)    += $(LIBTIFF_COMMON_INCLUDES-y)
-
-LIBTIFF_CINCLUDES   += -I$(LIBTIFF_EXTRACTED)
-
-################################################################################
-# Global flags
-################################################################################
-# Suppressed flags
-LIBTIFF_SUPPRESS_FLAGS += -Wno-unused-parameter \
-	-Wno-unused-variable -Wno-unused-value -Wno-unused-function \
-	-Wno-missing-field-initializers -Wno-implicit-fallthrough \
-	-Wno-misleading-indentation -Wno-stringop-truncation \
-	-Wno-strict-aliasing
-LIBTIFF_CFLAGS-y   += $(LIBLCMS_SUPPRESS_FLAGS) \
-	-Wno-pointer-to-int-cast -Wno-int-to-pointer-cast \
-	-Wno-misleading-indentation -Wno-stringop-truncation \
-	-Wno-strict-aliasing
-
-LIBTIFF_DEFINES    += -DHAVE_CONFIG_H
-LIBTIFF_CFLAGS-y   += $(LIBTIFF_DEFINES)
-
-################################################################################
-# TIFF src
-################################################################################
-LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/port/dummy.c
-LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/libtiff/tif_aux.c
-LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/libtiff/tif_close.c
-LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/libtiff/tif_codec.c
-LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/libtiff/tif_color.c
-LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/libtiff/tif_compress.c
-LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/libtiff/tif_dir.c
-LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/libtiff/tif_dirinfo.c
-LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/libtiff/tif_dirread.c
-LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/libtiff/tif_dirwrite.c
-LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/libtiff/tif_dumpmode.c
-LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/libtiff/tif_error.c
-LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/libtiff/tif_extension.c
-LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/libtiff/tif_fax3.c
-LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/libtiff/tif_fax3sm.c
-LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/libtiff/tif_flush.c
-LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/libtiff/tif_getimage.c
-LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/libtiff/tif_jbig.c
-LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/libtiff/tif_jpeg.c
-LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/libtiff/tif_jpeg_12.c
-LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/libtiff/tif_luv.c
-LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/libtiff/tif_lzma.c
-LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/libtiff/tif_lzw.c
-LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/libtiff/tif_next.c
-LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/libtiff/tif_ojpeg.c
-LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/libtiff/tif_open.c
-LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/libtiff/tif_packbits.c
-LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/libtiff/tif_pixarlog.c
-LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/libtiff/tif_predict.c
-LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/libtiff/tif_print.c
-LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/libtiff/tif_read.c
-LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/libtiff/tif_strip.c
-LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/libtiff/tif_swab.c
-LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/libtiff/tif_thunder.c
-LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/libtiff/tif_tile.c
-LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/libtiff/tif_version.c
-LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/libtiff/tif_warning.c
-LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/libtiff/tif_write.c
-LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/libtiff/tif_zip.c
-LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/libtiff/tif_unix.c
-LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/contrib/addtiffo/tif_overview.c
-LIBTIFF_SRCS-y += $(LIBTIFF_EXTRACTED)/contrib/addtiffo/tif_ovrcache.c
\ No newline at end of file
diff --git a/README.md b/README.md
old mode 100755
new mode 100644
-- 
2.17.1



From minios-devel-bounces@lists.xenproject.org Mon Apr 20 12:34:02 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 20 Apr 2020 12:34: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 1jQVcf-0002xa-5P; Mon, 20 Apr 2020 12:34:01 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=PeXr=6E=cs.pub.ro=costin.lupu@srs-us1.protection.inumbo.net>)
 id 1jQVcd-0002xV-TV
 for minios-devel@lists.xen.org; Mon, 20 Apr 2020 12:33:59 +0000
X-Inumbo-ID: 3418942a-8303-11ea-83d8-bc764e2007e4
Received: from mx.upb.ro (unknown [141.85.13.220])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 3418942a-8303-11ea-83d8-bc764e2007e4;
 Mon, 20 Apr 2020 12:33:57 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id 8E9E8B5621B9;
 Mon, 20 Apr 2020 15:33:56 +0300 (EEST)
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10032)
 with ESMTP id zYGGkAowIHRH; Mon, 20 Apr 2020 15:33:54 +0300 (EEST)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id 90F49B561FD7;
 Mon, 20 Apr 2020 15:33:54 +0300 (EEST)
X-Virus-Scanned: amavisd-new at upb.ro
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id nxvMhEbjXkeG; Mon, 20 Apr 2020 15:33:54 +0300 (EEST)
Received: from [192.168.1.35] (unknown [86.121.66.46])
 by mx.upb.ro (Postfix) with ESMTPSA id 65AE3B561F08;
 Mon, 20 Apr 2020 15:33:54 +0300 (EEST)
Subject: Re: [Minios-devel] [UNIKRAFT PATCH] plat/xen/drivers/blk: Fix freeing
 zero pages bug in blkfront_ring_fini
To: Radu Nicolau <radunicolau102@gmail.com>, minios-devel@lists.xen.org
References: <1583510914-8701-1-git-send-email-radunicolau102@gmail.com>
From: Costin Lupu <costin.lupu@cs.pub.ro>
Message-ID: <4d346e9b-647d-f933-0db7-5e00e5930fc7@cs.pub.ro>
Date: Mon, 20 Apr 2020 15:33:54 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101
 Thunderbird/68.7.0
MIME-Version: 1.0
In-Reply-To: <1583510914-8701-1-git-send-email-radunicolau102@gmail.com>
Content-Type: text/plain; charset=utf-8
Content-Language: en-US
Content-Transfer-Encoding: 7bit
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Hi Radu,

I'm gonna rename it to BLK_RING_PAGES_NUM on upstreaming because I think
it makes more sense like that. Other than that,

Reviewed-by: Costin Lupu <costin.lupu@cs.pub.ro>

On 3/6/20 6:08 PM, Radu Nicolau wrote:
> An assert would cause the blkfront_ring_fini to fail because the function
> was freeing zero pages.
> Introduced the BLK_NUM_PAGES_RING which defines the number of pages a
> ring uses.
> 
> Signed-off-by: Radu Nicolau <radunicolau102@gmail.com>
> ---
>  plat/xen/drivers/blk/blkfront.c | 4 ++--
>  plat/xen/drivers/blk/blkfront.h | 2 ++
>  2 files changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/plat/xen/drivers/blk/blkfront.c b/plat/xen/drivers/blk/blkfront.c
> index 49d2257..498b3dd 100644
> --- a/plat/xen/drivers/blk/blkfront.c
> +++ b/plat/xen/drivers/blk/blkfront.c
> @@ -562,7 +562,7 @@ static int blkfront_ring_init(struct uk_blkdev_queue *queue)
>  
>  	UK_ASSERT(queue);
>  	dev = queue->dev;
> -	sring = uk_palloc(queue->a, 1);
> +	sring = uk_palloc(queue->a, BLK_NUM_PAGES_RING);
>  	if (!sring)
>  		return -ENOMEM;
>  
> @@ -587,7 +587,7 @@ static void blkfront_ring_fini(struct uk_blkdev_queue *queue)
>  	}
>  
>  	if (queue->ring.sring != NULL)
> -		uk_pfree(queue->a, queue->ring.sring, 0);
> +		uk_pfree(queue->a, queue->ring.sring, BLK_NUM_PAGES_RING);
>  }
>  
>  #if CONFIG_XEN_BLKFRONT_GREFPOOL
> diff --git a/plat/xen/drivers/blk/blkfront.h b/plat/xen/drivers/blk/blkfront.h
> index 9d2ad67..52a825a 100644
> --- a/plat/xen/drivers/blk/blkfront.h
> +++ b/plat/xen/drivers/blk/blkfront.h
> @@ -52,6 +52,8 @@
>  #include <common/gnttab.h>
>  #include <common/events.h>
>  
> +#define BLK_NUM_PAGES_RING 1
> +
>  #if CONFIG_XEN_BLKFRONT_GREFPOOL
>  /**
>   * Structure used to describe a list of blkfront_gref elements.
> 


From minios-devel-bounces@lists.xenproject.org Mon Apr 20 12:34:29 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 20 Apr 2020 12:34: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 1jQVd7-0002yt-7y; Mon, 20 Apr 2020 12:34: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=PeXr=6E=cs.pub.ro=costin.lupu@srs-us1.protection.inumbo.net>)
 id 1jQVd5-0002yo-Qz
 for minios-devel@lists.xen.org; Mon, 20 Apr 2020 12:34:27 +0000
X-Inumbo-ID: 44c25901-8303-11ea-9057-12813bfff9fa
Received: from mx.upb.ro (unknown [141.85.13.220])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 44c25901-8303-11ea-9057-12813bfff9fa;
 Mon, 20 Apr 2020 12:34:26 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id 232D0B561F8F;
 Mon, 20 Apr 2020 15:34:25 +0300 (EEST)
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10032)
 with ESMTP id OeMW0_7beX9B; Mon, 20 Apr 2020 15:34:23 +0300 (EEST)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id 42DAEB561FD7;
 Mon, 20 Apr 2020 15:34:23 +0300 (EEST)
X-Virus-Scanned: amavisd-new at upb.ro
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id PDGxHp4PrczQ; Mon, 20 Apr 2020 15:34:23 +0300 (EEST)
Received: from [192.168.1.35] (unknown [86.121.66.46])
 by mx.upb.ro (Postfix) with ESMTPSA id 14248B561F08;
 Mon, 20 Apr 2020 15:34:23 +0300 (EEST)
Subject: Re: [Minios-devel] [UNIKRAFT PATCH] plat/xen/drivers/blk: Retry
 writing rings info on getting -EAGAIN
To: Radu Nicolau <radunicolau102@gmail.com>, minios-devel@lists.xen.org
References: <1583510914-8701-1-git-send-email-radunicolau102@gmail.com>
 <1583510914-8701-2-git-send-email-radunicolau102@gmail.com>
From: Costin Lupu <costin.lupu@cs.pub.ro>
Message-ID: <1cfe2fb0-0b12-9afe-78c7-fa590ddf5524@cs.pub.ro>
Date: Mon, 20 Apr 2020 15:34:22 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101
 Thunderbird/68.7.0
MIME-Version: 1.0
In-Reply-To: <1583510914-8701-2-git-send-email-radunicolau102@gmail.com>
Content-Type: text/plain; charset=utf-8
Content-Language: en-US
Content-Transfer-Encoding: 7bit
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Reviewed-by: Costin Lupu <costin.lupu@cs.pub.ro>

On 3/6/20 6:08 PM, Radu Nicolau wrote:
> Retry initializing the ring entries on receiving -EAGAIN error
> from xenstore
> 
> Signed-off-by: Radu Nicolau <radunicolau102@gmail.com>
> ---
>  plat/xen/drivers/blk/blkfront_xs.c | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/plat/xen/drivers/blk/blkfront_xs.c b/plat/xen/drivers/blk/blkfront_xs.c
> index e93665c..4424cbf 100644
> --- a/plat/xen/drivers/blk/blkfront_xs.c
> +++ b/plat/xen/drivers/blk/blkfront_xs.c
> @@ -360,6 +360,7 @@ static int blkfront_xb_write_rings_info(struct blkfront_dev *dev)
>  
>  	UK_ASSERT(dev != NULL);
>  
> +again:
>  	err = xs_transaction_start(&xbt);
>  	if (err)
>  		goto abort_transaction;
> @@ -375,6 +376,9 @@ static int blkfront_xb_write_rings_info(struct blkfront_dev *dev)
>  	}
>  
>  	err = xs_transaction_end(xbt, 0);
> +	if (err == -EAGAIN)
> +		goto again;
> +
>  	if (err)
>  		uk_pr_err("Failed to end transaction: %d\n", err);
>  
> 


From minios-devel-bounces@lists.xenproject.org Mon Apr 20 12:36:39 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 20 Apr 2020 12:36: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 1jQVfC-00036j-Sp; Mon, 20 Apr 2020 12:36:38 +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=PeXr=6E=cs.pub.ro=costin.lupu@srs-us1.protection.inumbo.net>)
 id 1jQVfB-00036Z-0P
 for minios-devel@lists.xen.org; Mon, 20 Apr 2020 12:36:37 +0000
X-Inumbo-ID: 92c0388e-8303-11ea-9058-12813bfff9fa
Received: from mx.upb.ro (unknown [141.85.13.200])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 92c0388e-8303-11ea-9058-12813bfff9fa;
 Mon, 20 Apr 2020 12:36:36 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id 98D8BB562175;
 Mon, 20 Apr 2020 15:36:35 +0300 (EEST)
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10032)
 with ESMTP id L--k8faXFfzq; Mon, 20 Apr 2020 15:36:33 +0300 (EEST)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id B9439B5621B7;
 Mon, 20 Apr 2020 15:36:33 +0300 (EEST)
X-Virus-Scanned: amavisd-new at upb.ro
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id MaOrhaIPKD-X; Mon, 20 Apr 2020 15:36:33 +0300 (EEST)
Received: from [192.168.1.35] (unknown [86.121.66.46])
 by mx.upb.ro (Postfix) with ESMTPSA id 7E98AB561F08;
 Mon, 20 Apr 2020 15:36:33 +0300 (EEST)
Subject: Re: [UNIKRAFT PATCH] blkfront.c: Increase error verbosity
To: Radu Nicolau <radunicolau102@gmail.com>, minios-devel@lists.xen.org
References: <1587288479-15004-1-git-send-email-radunicolau102@gmail.com>
From: Costin Lupu <costin.lupu@cs.pub.ro>
Message-ID: <e3bf28fb-d85b-47cb-1d82-9f2d02c2c973@cs.pub.ro>
Date: Mon, 20 Apr 2020 15:36:33 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101
 Thunderbird/68.7.0
MIME-Version: 1.0
In-Reply-To: <1587288479-15004-1-git-send-email-radunicolau102@gmail.com>
Content-Type: text/plain; charset=utf-8
Content-Language: en-US
Content-Transfer-Encoding: 7bit
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Reviewed-by: Costin Lupu <costin.lupu@cs.pub.ro>

On 4/19/20 12:27 PM, Radu Nicolau wrote:
> Add error message for both function calls to differentiate
> which one produced an error.
> 
> Signed-off-by: Radu Nicolau <radunicolau102@gmail.com>
> ---
>  plat/xen/drivers/blk/blkfront_xs.c | 10 ++++++++--
>  1 file changed, 8 insertions(+), 2 deletions(-)
> 
> diff --git a/plat/xen/drivers/blk/blkfront_xs.c b/plat/xen/drivers/blk/blkfront_xs.c
> index 67c8a4c..e014d90 100644
> --- a/plat/xen/drivers/blk/blkfront_xs.c
> +++ b/plat/xen/drivers/blk/blkfront_xs.c
> @@ -506,12 +506,18 @@ int blkfront_xb_connect(struct blkfront_dev *blkdev)
>  	}
>  
>  	err = xenbus_switch_state(XBT_NIL, xendev, XenbusStateConnected);
> -	if (err)
> +	if (err) {
> +		uk_pr_err("Failed to switch state to XenbusStateConnected: %d.\n",
> +				err);
>  		goto err;
> +	}
> +
>  
>  	err = blkfront_xb_wait_be_connect(blkdev);
> -	if (err)
> +	if (err) {
> +		uk_pr_err("Backend failed to change state: %d.\n", err);
>  		goto err;
> +	}
>  
>  	err = blkfront_xb_get_capabilities(blkdev);
>  	if (err) {
> 


From minios-devel-bounces@lists.xenproject.org Mon Apr 20 12:36:53 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 20 Apr 2020 12:36: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 1jQVfQ-00038i-V4; Mon, 20 Apr 2020 12:36: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=PeXr=6E=cs.pub.ro=costin.lupu@srs-us1.protection.inumbo.net>)
 id 1jQVfP-00038W-4Q
 for minios-devel@lists.xen.org; Mon, 20 Apr 2020 12:36:51 +0000
X-Inumbo-ID: 9ac93c6b-8303-11ea-9058-12813bfff9fa
Received: from mx.upb.ro (unknown [141.85.13.200])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 9ac93c6b-8303-11ea-9058-12813bfff9fa;
 Mon, 20 Apr 2020 12:36:50 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id C0117B562175;
 Mon, 20 Apr 2020 15:36:49 +0300 (EEST)
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10032)
 with ESMTP id zFvNCxDD-d8h; Mon, 20 Apr 2020 15:36:48 +0300 (EEST)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id 056C6B5621B9;
 Mon, 20 Apr 2020 15:36:48 +0300 (EEST)
X-Virus-Scanned: amavisd-new at upb.ro
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id 52QssPZzcW6E; Mon, 20 Apr 2020 15:36:47 +0300 (EEST)
Received: from [192.168.1.35] (unknown [86.121.66.46])
 by mx.upb.ro (Postfix) with ESMTPSA id D31A9B561F08;
 Mon, 20 Apr 2020 15:36:47 +0300 (EEST)
Subject: Re: [UNIKRAFT PATCH] blkfront_xs.c: Fix warning generated by wrong
 print specifier
To: Radu Nicolau <radunicolau102@gmail.com>, minios-devel@lists.xen.org
References: <1587288479-15004-1-git-send-email-radunicolau102@gmail.com>
 <1587288479-15004-2-git-send-email-radunicolau102@gmail.com>
From: Costin Lupu <costin.lupu@cs.pub.ro>
Message-ID: <7f6019c1-db1c-c4a6-0d4b-b6186cae5f22@cs.pub.ro>
Date: Mon, 20 Apr 2020 15:36:47 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101
 Thunderbird/68.7.0
MIME-Version: 1.0
In-Reply-To: <1587288479-15004-2-git-send-email-radunicolau102@gmail.com>
Content-Type: text/plain; charset=utf-8
Content-Language: en-US
Content-Transfer-Encoding: 7bit
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Reviewed-by: Costin Lupu <costin.lupu@cs.pub.ro>

On 4/19/20 12:27 PM, Radu Nicolau wrote:
> Signed-off-by: Radu Nicolau <radunicolau102@gmail.com>
> ---
>  plat/xen/drivers/blk/blkfront_xs.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/plat/xen/drivers/blk/blkfront_xs.c b/plat/xen/drivers/blk/blkfront_xs.c
> index e014d90..b455de5 100644
> --- a/plat/xen/drivers/blk/blkfront_xs.c
> +++ b/plat/xen/drivers/blk/blkfront_xs.c
> @@ -75,7 +75,7 @@ static int blkfront_xb_get_nb_max_queues(struct blkfront_dev *dev)
>  	xendev = dev->xendev;
>  
>  	err = xs_scanf(XBT_NIL, xendev->otherend, "multi-queue-max-queues",
> -				"%"PRIu16,
> +				"%"SCNu16,
>  				&dev->nb_queues);
>  	if (err < 0) {
>  		uk_pr_err("Failed to read multi-queue-max-queues: %d\n", err);
> 


From minios-devel-bounces@lists.xenproject.org Mon Apr 20 12:37:28 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 20 Apr 2020 12:37: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 1jQVg0-0003D2-Bp; Mon, 20 Apr 2020 12:37: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=PeXr=6E=cs.pub.ro=costin.lupu@srs-us1.protection.inumbo.net>)
 id 1jQVfz-0003Ct-V5
 for minios-devel@lists.xen.org; Mon, 20 Apr 2020 12:37:27 +0000
X-Inumbo-ID: b133de4c-8303-11ea-9058-12813bfff9fa
Received: from mx.upb.ro (unknown [141.85.13.200])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id b133de4c-8303-11ea-9058-12813bfff9fa;
 Mon, 20 Apr 2020 12:37:27 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id B1C56B562197;
 Mon, 20 Apr 2020 15:37:26 +0300 (EEST)
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10032)
 with ESMTP id 4Z6X25tZ2bVE; Mon, 20 Apr 2020 15:37:20 +0300 (EEST)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id DE002B5621B7;
 Mon, 20 Apr 2020 15:37:20 +0300 (EEST)
X-Virus-Scanned: amavisd-new at upb.ro
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id asVytBB9kO9u; Mon, 20 Apr 2020 15:37:20 +0300 (EEST)
Received: from [192.168.1.35] (unknown [86.121.66.46])
 by mx.upb.ro (Postfix) with ESMTPSA id A0C53B561F08;
 Mon, 20 Apr 2020 15:37:20 +0300 (EEST)
Subject: Re: [UNIKRAFT PATCH] mm.c: Rename function call to _arch_rebuild_p2m
To: Radu Nicolau <radunicolau102@gmail.com>, minios-devel@lists.xen.org
References: <1587288479-15004-1-git-send-email-radunicolau102@gmail.com>
 <1587288479-15004-3-git-send-email-radunicolau102@gmail.com>
From: Costin Lupu <costin.lupu@cs.pub.ro>
Message-ID: <e4f0557d-2251-8843-100f-3fb9185de9f0@cs.pub.ro>
Date: Mon, 20 Apr 2020 15:37:20 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101
 Thunderbird/68.7.0
MIME-Version: 1.0
In-Reply-To: <1587288479-15004-3-git-send-email-radunicolau102@gmail.com>
Content-Type: text/plain; charset=utf-8
Content-Language: en-US
Content-Transfer-Encoding: 7bit
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Hi Radu,

Shouldn't you also rename the function definition?

Cheers,
Costin

On 4/19/20 12:27 PM, Radu Nicolau wrote:
> Signed-off-by: Radu Nicolau <radunicolau102@gmail.com>
> ---
>  plat/xen/x86/mm.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/plat/xen/x86/mm.c b/plat/xen/x86/mm.c
> index 249b792..e006ab7 100644
> --- a/plat/xen/x86/mm.c
> +++ b/plat/xen/x86/mm.c
> @@ -743,7 +743,7 @@ void arch_mm_pre_suspend(void)
>  void arch_mm_post_suspend(int canceled)
>  {
>  	if (!canceled)
> -		arch_rebuild_p2m();
> +		_arch_rebuild_p2m();
>  }
>  #endif
>  #endif /* CONFIG_XEN_PV_BUILD_P2M */
> 


From minios-devel-bounces@lists.xenproject.org Mon Apr 20 13:20:34 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 20 Apr 2020 13:20: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 1jQWLg-0007s3-CE; Mon, 20 Apr 2020 13:20:32 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=OhrB=6E=csuc.cat=esteban.martinez@srs-us1.protection.inumbo.net>)
 id 1jQWLe-0007ry-6e
 for minios-devel@lists.xen.org; Mon, 20 Apr 2020 13:20:30 +0000
X-Inumbo-ID: b3aef98a-8309-11ea-83d8-bc764e2007e4
Received: from gabarro.xs.cesca.cat (unknown [84.88.0.6])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTP
 id b3aef98a-8309-11ea-83d8-bc764e2007e4;
 Mon, 20 Apr 2020 13:20:28 +0000 (UTC)
DomainKey-Signature: s=csuc; d=csuc.cat; c=nofws; q=dns;
 h=Received:From:To:Cc:Subject:Date:Message-Id:X-Mailer;
 b=cHlxyRVqW4CVRPtDngAzMC44ObRNoowMlF6bzlJpDOuq3k7zv+Uyleyp
 HjAcqir3svDg+E0+N9OES5TMCeoX20nsWxC+Zommr3aSGc4iKvNlOAi+b
 rE6UoVvovy61Sg5N3VAm52f1MXgh4JQUoamYhlRHsbeDxHR/7eKKkaDkJ
 Q=;
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple;
 d=csuc.cat; i=@csuc.cat; q=dns/txt; s=csuc;
 t=1587388828; x=1618924828;
 h=from:to:cc:subject:date:message-id;
 bh=QMcBOlKFYoKz4kDQQ1fVzmgWXcmKb0N9fE94zzV7geE=;
 b=R6oxhO2TL2ZxjK8LtnGJeKg1GmHv0VpgiIiGjOuJtvbY8rqI122rzVVW
 Z3XQG2eTrRdtawYLvOAlqyqlAzsbHDrQy5oD4VJ1TZxR/fhTSbLA2xuwf
 BgNE3BgCeEthwhl7l2p9+uLAWQTsUXcbfmc9ErRVD4UZ+lTeZiSkhpDr1 o=;
Received: from unknown (HELO localhost.localdomain) ([10.100.102.130])
 by smtp.xc.csuc.cat with ESMTP/TLS/DHE-RSA-AES128-GCM-SHA256;
 20 Apr 2020 15:20:27 +0200
From: Esteban Martinez <esteban.martinez@csuc.cat>
To: minios-devel@lists.xen.org
Subject: [UNIKRAFT/OPENJPEG PATCH v1 0/2] OPENJPEG library porting
Date: Mon, 20 Apr 2020 15:20:19 +0200
Message-Id: <20200420132021.17388-1-esteban.martinez@csuc.cat>
X-Mailer: git-send-email 2.17.1
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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: Esteban Martinez <esteban.martinez@csuc.cat>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Library to encode and decode JPEG 2000 images

Esteban Martinez (2):
  [OPENJPEG PATCH] openjpeg: Add skeleton new library
  [OPENJPEG PATCH] openjpeg: Add Makefile.uk and includes

 .gitignore          |   27 +
 CODING_STYLE.md     |    4 +
 CONTRIBUTING.md     |    4 +
 COPYING.md          |   38 +
 Config.uk           |   11 +
 MAINTAINERS.md      |   11 +
 Makefile.uk         |  125 ++
 README.md           |    7 +
 include/emmintrin.h | 5024 +++++++++++++++++++++++++++++++++++++++++++
 include/mm_malloc.h |   75 +
 include/mmintrin.h  | 1598 ++++++++++++++
 include/xmmintrin.h | 3127 +++++++++++++++++++++++++++
 12 files changed, 10051 insertions(+)
 create mode 100644 .gitignore
 create mode 100644 CODING_STYLE.md
 create mode 100644 CONTRIBUTING.md
 create mode 100644 COPYING.md
 create mode 100644 Config.uk
 create mode 100644 MAINTAINERS.md
 create mode 100644 Makefile.uk
 create mode 100644 README.md
 create mode 100644 include/emmintrin.h
 create mode 100644 include/mm_malloc.h
 create mode 100644 include/mmintrin.h
 create mode 100644 include/xmmintrin.h

-- 
2.17.1



From minios-devel-bounces@lists.xenproject.org Mon Apr 20 13:20:36 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 20 Apr 2020 13:20: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 1jQWLk-0007sa-EC; Mon, 20 Apr 2020 13:20:36 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=OhrB=6E=csuc.cat=esteban.martinez@srs-us1.protection.inumbo.net>)
 id 1jQWLj-0007sQ-1p
 for minios-devel@lists.xen.org; Mon, 20 Apr 2020 13:20:35 +0000
X-Inumbo-ID: b5061a34-8309-11ea-83d8-bc764e2007e4
Received: from gabarro.xs.cesca.cat (unknown [84.88.0.6])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTP
 id b5061a34-8309-11ea-83d8-bc764e2007e4;
 Mon, 20 Apr 2020 13:20:30 +0000 (UTC)
DomainKey-Signature: s=csuc; d=csuc.cat; c=nofws; q=dns;
 h=Received:From:To:Cc:Subject:Date:Message-Id:X-Mailer:
 In-Reply-To:References;
 b=nu9sW8lXdMCE/GXMEJDII5hgiVZ78CpMkdOcDta0M/rvy1AOF+IZqhQZ
 YplwLJzN11zlZRwrZXBTYUyoyr8XuHjhjA8MRJQm+9tIxssd8x+T7tVbm
 ncwsA17/yd7tXQwkidlOEfCVFf/KIw3ljA/Gzfq9xzNj8bQBl3Tvt0xqk
 4=;
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple;
 d=csuc.cat; i=@csuc.cat; q=dns/txt; s=csuc;
 t=1587388830; x=1618924830;
 h=from:to:cc:subject:date:message-id:in-reply-to: references;
 bh=Cv2CQEh2qiRCZyqk8ZwPKlPwuKvUgWjk8moub7eET0s=;
 b=kc1oU/TGlhFGgZSbGogSYEOBunEAspcUxJCMzHFLegSdzi7lmgL0VAXd
 RtAPpn4+VVh50gFdMhOSSiHBrGiQd7QkW59El4/VNcwW0+NvJKgCftqW4
 weo1mCI91snwMckUyx/9ieE/T862AEStmZCy+QI8MEaNEFJ4t1cEBURyk 8=;
Received: from unknown (HELO localhost.localdomain) ([10.100.102.130])
 by smtp.xc.csuc.cat with ESMTP/TLS/DHE-RSA-AES128-GCM-SHA256;
 20 Apr 2020 15:20:30 +0200
From: Esteban Martinez <esteban.martinez@csuc.cat>
To: minios-devel@lists.xen.org
Subject: [UNIKRAFT/OPENJPEG PATCH v1 1/2] [OPENJPEG PATCH] openjpeg: Add
 skeleton new library
Date: Mon, 20 Apr 2020 15:20:20 +0200
Message-Id: <20200420132021.17388-2-esteban.martinez@csuc.cat>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20200420132021.17388-1-esteban.martinez@csuc.cat>
References: <20200420132021.17388-1-esteban.martinez@csuc.cat>
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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: Esteban Martinez <esteban.martinez@csuc.cat>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Signed-off-by: Esteban Martinez <esteban.martinez@csuc.cat>
---
 .gitignore      | 27 +++++++++++++++++++++++++++
 CODING_STYLE.md |  4 ++++
 CONTRIBUTING.md |  4 ++++
 COPYING.md      | 38 ++++++++++++++++++++++++++++++++++++++
 Config.uk       | 11 +++++++++++
 MAINTAINERS.md  | 11 +++++++++++
 README.md       |  7 +++++++
 7 files changed, 102 insertions(+)
 create mode 100644 .gitignore
 create mode 100644 CODING_STYLE.md
 create mode 100644 CONTRIBUTING.md
 create mode 100644 COPYING.md
 create mode 100644 Config.uk
 create mode 100644 MAINTAINERS.md
 create mode 100644 README.md

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..75d2fd3
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,27 @@
+*.depend
+*.o
+*.a
+*.d
+*.so
+*.orig
+*.rej
+*.bak
+*.swp
+*~
+,*
+\#*\#
+.\#*
+\#_*\#
+.\#_*
+!.gitignore
+.*
+
+# gnu global files
+GPATH
+GRTAGS
+GSYMS
+GTAGS
+
+# cscope files
+cscope.*
+ncscope.*
diff --git a/CODING_STYLE.md b/CODING_STYLE.md
new file mode 100644
index 0000000..5730041
--- /dev/null
+++ b/CODING_STYLE.md
@@ -0,0 +1,4 @@
+Coding Style
+============
+
+Please refer to the `CODING_STYLE.md` file in the main Unikraft repository.
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 0000000..14f6ac6
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,4 @@
+Contributing to Unikraft
+========================
+
+Please refer to the `CONTRIBUTING.md` file in the main Unikraft repository.
diff --git a/COPYING.md b/COPYING.md
new file mode 100644
index 0000000..1bcae51
--- /dev/null
+++ b/COPYING.md
@@ -0,0 +1,38 @@
+License
+=======
+
+Unikraft lcms wrappers
+------------------------
+
+This repository contains wrapper code to build openjpeg with Unikraft.  The code
+is published as a mixture of BSD and MIT licences; each C code file in
+this repository should declare who is the copyright owner and under which terms
+and conditions the code is licensed. If such a licence note is missing, the
+following copyright notice will apply:
+
+	Copyright (c) 2020, Consorci de Serveis Universitaris de Catalunya (CSUC). All rights reserved.
+
+	Redistribution and use in source and binary forms, with or without
+	modification, are permitted provided that the following conditions
+	are met:
+
+	1. Redistributions of source code must retain the above copyright
+	   notice, this list of conditions and the following disclaimer.
+	2. Redistributions in binary form must reproduce the above copyright
+	   notice, this list of conditions and the following disclaimer in the
+	   documentation and/or other materials provided with the distribution.
+	3. Neither the name of the copyright holder nor the names of its
+	   contributors may be used to endorse or promote products derived from
+	   this software without specific prior written permission.
+
+	THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+	AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+	IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+	ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+	LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+	CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+	SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+	INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+	CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+	ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+	POSSIBILITY OF SUCH DAMAGE.
diff --git a/Config.uk b/Config.uk
new file mode 100644
index 0000000..233e1b1
--- /dev/null
+++ b/Config.uk
@@ -0,0 +1,11 @@
+config LIBOPENJPEG
+	bool "libopenjpeg - image compression standard"
+	default n
+	select LIBNOLIBC if !HAVE_LIBC
+	select LIBUKDEBUG
+    select LIBUKALLOC
+    select LIBPTHREAD_EMBEDDED
+    select LIBNEWLIBC
+
+if LIBOPENJPEG
+endif
diff --git a/MAINTAINERS.md b/MAINTAINERS.md
new file mode 100644
index 0000000..ed92fed
--- /dev/null
+++ b/MAINTAINERS.md
@@ -0,0 +1,11 @@
+Maintainers List
+================
+
+For notes on how to read this information, please refer to `MAINTAINERS.md` in
+the main Unikraft repository.
+
+	LCMS-UNIKRAFT
+	M:	Esteban Martinez <esteban.martinez@csuc.cat>
+	M:	Xavier Peralra <xavier.peralta@csuc.cat>
+	L:	minios-devel@lists.xen.org
+	F: *
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..b6728d6
--- /dev/null
+++ b/README.md
@@ -0,0 +1,7 @@
+lcms for Unikraft
+=============================
+
+This is the port of openjpeg for Unikraft as external library.
+
+Please refer to the `README.md` as well as the documentation in the `doc/`
+subdirectory of the main unikraft repository.
-- 
2.17.1



From minios-devel-bounces@lists.xenproject.org Mon Apr 20 13:20:54 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 20 Apr 2020 13:20: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 1jQWM2-0007uj-HI; Mon, 20 Apr 2020 13:20:54 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=OhrB=6E=csuc.cat=esteban.martinez@srs-us1.protection.inumbo.net>)
 id 1jQWM1-0007ub-8t
 for minios-devel@lists.xen.org; Mon, 20 Apr 2020 13:20:53 +0000
X-Inumbo-ID: b6096eea-8309-11ea-83d8-bc764e2007e4
Received: from gabarro.xs.cesca.cat (unknown [84.88.0.6])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTP
 id b6096eea-8309-11ea-83d8-bc764e2007e4;
 Mon, 20 Apr 2020 13:20:32 +0000 (UTC)
DomainKey-Signature: s=csuc; d=csuc.cat; c=nofws; q=dns;
 h=Received:From:To:Cc:Subject:Date:Message-Id:X-Mailer:
 In-Reply-To:References;
 b=g/ipsM/z0fQaYnLN67qaj4sEtU1GxDnAA0nj8K1HGsvIJ+OqdhRf2j09
 bGjoHrozP+LqklMz97TV1EOSKcRpKDObsJ/RRqwABGWuMKJj0i7H1oDy+
 3P3INdGXAsOMy4K0Kp0B3ZEAdpcRqG6vn4NhN49+fUn/qOkdk4+BhJ5N8
 4=;
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple;
 d=csuc.cat; i=@csuc.cat; q=dns/txt; s=csuc;
 t=1587388832; x=1618924832;
 h=from:to:cc:subject:date:message-id:in-reply-to: references;
 bh=/mXjc9B9HACmc6FNpWDGWjMWEtpOpO2ru86M2CMV4H4=;
 b=LdgHNjVOFjMR7liUYrjEKeqo2XMILDSeWezzwejPmFMLavMDoR3ynhjw
 tXlTRSsj5YWp44Kzj0BYBS/PTItBFvf/B515CwszTQIA9EpVMe5KhoP/D
 tHMp1bTPas+kBOj2RU6uQ/HpK7AcsGQhN02p4G1iBIenMGLaMgr2pepPz 0=;
Received: from unknown (HELO localhost.localdomain) ([10.100.102.130])
 by smtp.xc.csuc.cat with ESMTP/TLS/DHE-RSA-AES128-GCM-SHA256;
 20 Apr 2020 15:20:31 +0200
From: Esteban Martinez <esteban.martinez@csuc.cat>
To: minios-devel@lists.xen.org
Subject: [UNIKRAFT/OPENJPEG PATCH v1 2/2] [OPENJPEG PATCH] openjpeg: Add
 Makefile.uk and includes
Date: Mon, 20 Apr 2020 15:20:21 +0200
Message-Id: <20200420132021.17388-3-esteban.martinez@csuc.cat>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20200420132021.17388-1-esteban.martinez@csuc.cat>
References: <20200420132021.17388-1-esteban.martinez@csuc.cat>
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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: Esteban Martinez <esteban.martinez@csuc.cat>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Signed-off-by: Esteban Martinez <esteban.martinez@csuc.cat>
---
 Makefile.uk         |  125 ++
 include/emmintrin.h | 5024 +++++++++++++++++++++++++++++++++++++++++++
 include/mm_malloc.h |   75 +
 include/mmintrin.h  | 1598 ++++++++++++++
 include/xmmintrin.h | 3127 +++++++++++++++++++++++++++
 5 files changed, 9949 insertions(+)
 create mode 100644 Makefile.uk
 create mode 100644 include/emmintrin.h
 create mode 100644 include/mm_malloc.h
 create mode 100644 include/mmintrin.h
 create mode 100644 include/xmmintrin.h

diff --git a/Makefile.uk b/Makefile.uk
new file mode 100644
index 0000000..5f109a0
--- /dev/null
+++ b/Makefile.uk
@@ -0,0 +1,125 @@
+#  SPDX-License-Identifier: BSD-3-Clause
+#
+#  openjpeg Makefile.uk
+#
+#  Authors: Esteban Martinez <esteban.martinez@csuc.cat>
+#
+#  Copyright (c) 2019, Consorci de Serveis Universitaris de Catalunya (CSUC). All rights reserved.
+#
+#  Redistribution and use in source and binary forms, with or without
+#  modification, are permitted provided that the following conditions
+#  are met:
+#
+#  1. Redistributions of source code must retain the above copyright
+#     notice, this list of conditions and the following disclaimer.
+#  2. Redistributions in binary form must reproduce the above copyright
+#     notice, this list of conditions and the following disclaimer in the
+#     documentation and/or other materials provided with the distribution.
+#  3. Neither the name of the copyright holder nor the names of its
+#     contributors may be used to endorse or promote products derived from
+#     this software without specific prior written permission.
+#
+#  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+#  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+#  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+#  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+#  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+#  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+#  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+#  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+#  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+#  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+#  POSSIBILITY OF SUCH DAMAGE.
+#
+#  THIS HEADER MAY NOT BE EXTRACTED OR MODIFIED IN ANY WAY.
+#
+
+################################################################################
+# Library registration
+################################################################################
+$(eval $(call addlib_s,libopenjpeg,$(CONFIG_LIBOPENJPEG)))
+
+################################################################################
+# Original sources
+################################################################################
+LIBOPENJPEG_VERSION=2.3.1
+LIBOPENJPEG_URL=https://github.com/python-pillow/pillow-depends/raw/master/openjpeg-$(LIBOPENJPEG_VERSION).tar.gz
+LIBOPENJPEG_PATCHDIR=$(LIBOPENJPEG_BASE)/patches
+LIBOPENJPEG_SUBDIR=openjpeg-$(LIBOPENJPEG_VERSION)
+$(eval $(call fetch,libopenjpeg,$(LIBOPENJPEG_URL)))
+$(eval $(call patch,libopenjpeg,$(LIBOPENJPEG_PATCHDIR),$(LIBOPENJPEG_SUBDIR)))
+
+################################################################################
+# Helpers
+################################################################################
+LIBOPENJPEG_EXTRACTED = $(LIBOPENJPEG_ORIGIN)/$(LIBOPENJPEG_SUBDIR)
+
+################################################################################
+# Library includes
+################################################################################
+LIBOPENJPEG_COMMON_INCLUDES-y      += -I$(LIBOPENJPEG_EXTRACTED)/src/lib
+LIBOPENJPEG_COMMON_INCLUDES-y      += -I$(LIBOPENJPEG_EXTRACTED)/src/lib/openjp2
+LIBOPENJPEG_COMMON_INCLUDES-y      += -I$(LIBOPENJPEG_EXTRACTED)/src/bin/common
+LIBOPENJPEG_COMMON_INCLUDES-y      += -I$(LIBOPENJPEG_EXTRACTED)/build/src/lib
+LIBOPENJPEG_COMMON_INCLUDES-y      += -I$(LIBOPENJPEG_EXTRACTED)/build/src/lib/openjp2
+LIBOPENJPEG_COMMON_INCLUDES-y      += -I$(LIBOPENJPEG_EXTRACTED)/build/src/bin/common
+LIBOPENJPEG_COMMON_INCLUDES-y      += -I$(LIBOPENJPEG_BASE)/include
+
+CINCLUDES-$(CONFIG_LIBOPENJPEG)    += $(LIBOPENJPEG_COMMON_INCLUDES-y)
+CXXINCLUDES-$(CONFIG_LIBOPENJPEG)  += $(LIBOPENJPEG_COMMON_INCLUDES-y)
+
+LIBOPENJPEG_CINCLUDES   += -I$(LIBOPENJPEG_EXTRACTED)
+
+################################################################################
+# Global flags
+################################################################################
+# Suppressed flags
+LIBOPENJPEG_SUPPRESS_FLAGS += -Wno-unused-parameter \
+	-Wno-unused-variable -Wno-unused-value -Wno-unused-function \
+	-Wno-missing-field-initializers -Wno-implicit-fallthrough \
+	-Wno-misleading-indentation -Wno-stringop-truncation \
+	-Wno-strict-aliasing
+LIBOPENJPEG_CFLAGS-y   += $(LIBOPENJPEG_SUPPRESS_FLAGS) \
+	-Wno-pointer-to-int-cast -Wno-int-to-pointer-cast \
+	-Wno-misleading-indentation -Wno-stringop-truncation \
+	-Wno-strict-aliasing
+
+################################################################################
+# OPENJPEG src
+################################################################################
+LIBOPENJPEG_SRCS-y += $(LIBOPENJPEG_EXTRACTED)/src/lib/openjp2/thread.c
+LIBOPENJPEG_SRCS-y += $(LIBOPENJPEG_EXTRACTED)/src/lib/openjp2/bio.c
+LIBOPENJPEG_SRCS-y += $(LIBOPENJPEG_EXTRACTED)/src/lib/openjp2/cio.c
+LIBOPENJPEG_SRCS-y += $(LIBOPENJPEG_EXTRACTED)/src/lib/openjp2/dwt.c
+LIBOPENJPEG_SRCS-y += $(LIBOPENJPEG_EXTRACTED)/src/lib/openjp2/event.c
+LIBOPENJPEG_SRCS-y += $(LIBOPENJPEG_EXTRACTED)/src/lib/openjp2/image.c
+LIBOPENJPEG_SRCS-y += $(LIBOPENJPEG_EXTRACTED)/src/lib/openjp2/invert.c
+LIBOPENJPEG_SRCS-y += $(LIBOPENJPEG_EXTRACTED)/src/lib/openjp2/j2k.c
+LIBOPENJPEG_SRCS-y += $(LIBOPENJPEG_EXTRACTED)/src/lib/openjp2/jp2.c
+LIBOPENJPEG_SRCS-y += $(LIBOPENJPEG_EXTRACTED)/src/lib/openjp2/mct.c
+LIBOPENJPEG_SRCS-y += $(LIBOPENJPEG_EXTRACTED)/src/lib/openjp2/mqc.c
+LIBOPENJPEG_SRCS-y += $(LIBOPENJPEG_EXTRACTED)/src/lib/openjp2/openjpeg.c
+LIBOPENJPEG_SRCS-y += $(LIBOPENJPEG_EXTRACTED)/src/lib/openjp2/opj_clock.c
+LIBOPENJPEG_SRCS-y += $(LIBOPENJPEG_EXTRACTED)/src/lib/openjp2/pi.c
+LIBOPENJPEG_SRCS-y += $(LIBOPENJPEG_EXTRACTED)/src/lib/openjp2/t1.c
+LIBOPENJPEG_SRCS-y += $(LIBOPENJPEG_EXTRACTED)/src/lib/openjp2/t2.c
+LIBOPENJPEG_SRCS-y += $(LIBOPENJPEG_EXTRACTED)/src/lib/openjp2/tcd.c
+LIBOPENJPEG_SRCS-y += $(LIBOPENJPEG_EXTRACTED)/src/lib/openjp2/tgt.c
+LIBOPENJPEG_SRCS-y += $(LIBOPENJPEG_EXTRACTED)/src/lib/openjp2/function_list.c
+LIBOPENJPEG_SRCS-y += $(LIBOPENJPEG_EXTRACTED)/src/lib/openjp2/opj_malloc.c
+LIBOPENJPEG_SRCS-y += $(LIBOPENJPEG_EXTRACTED)/src/lib/openjp2/sparse_array.c
+
+################################################################################
+# OPENJPEG prepare
+################################################################################
+# Run ./configure
+$(LIBOPENJPEG_EXTRACTED)/config.status: $(LIBOPENJPEG_BUILD)/.origin
+	$(call verbose_cmd,CONFIG,libopenjpeg: $(notdir $@), \
+		cd $(LIBOPENJPEG_EXTRACTED) && mkdir build && cd build && cmake .. -DCMAKE_BUILD_TYPE=Release)
+
+LIBOPENJPEG_PREPARED_DEPS = \
+	$(LIBOPENJPEG_EXTRACTED)/config.status \
+
+$(LIBOPENJPEG_BUILD)/.prepared: $(LIBOPENJPEG_PREPARED_DEPS)
+
+UK_PREPARE += $(LIBOPENJPEG_BUILD)/.prepared
\ No newline at end of file
diff --git a/include/emmintrin.h b/include/emmintrin.h
new file mode 100644
index 0000000..c0573a1
--- /dev/null
+++ b/include/emmintrin.h
@@ -0,0 +1,5024 @@
+/*===---- emmintrin.h - SSE2 intrinsics ------------------------------------===
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ *===-----------------------------------------------------------------------===
+ */
+
+#ifndef __EMMINTRIN_H
+#define __EMMINTRIN_H
+
+#include <xmmintrin.h>
+
+typedef double __m128d __attribute__((__vector_size__(16)));
+typedef long long __m128i __attribute__((__vector_size__(16)));
+
+/* Type defines.  */
+typedef double __v2df __attribute__ ((__vector_size__ (16)));
+typedef long long __v2di __attribute__ ((__vector_size__ (16)));
+typedef short __v8hi __attribute__((__vector_size__(16)));
+typedef char __v16qi __attribute__((__vector_size__(16)));
+
+/* Unsigned types */
+typedef unsigned long long __v2du __attribute__ ((__vector_size__ (16)));
+typedef unsigned short __v8hu __attribute__((__vector_size__(16)));
+typedef unsigned char __v16qu __attribute__((__vector_size__(16)));
+
+/* We need an explicitly signed variant for char. Note that this shouldn't
+ * appear in the interface though. */
+typedef signed char __v16qs __attribute__((__vector_size__(16)));
+
+/* Define the default attributes for the functions in this file. */
+#ifdef  __GNUC__
+#define __DEFAULT_FN_ATTRS __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+#define __DEFAULT_FN_ATTRS_MMX __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+#else
+#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("sse2"), __min_vector_width__(128)))
+#define __DEFAULT_FN_ATTRS_MMX __attribute__((__always_inline__, __nodebug__, __target__("mmx,sse2"), __min_vector_width__(64)))
+#endif
+
+#define _MM_SHUFFLE2(x, y) (((x) << 1) | (y))
+
+/// Adds lower double-precision values in both operands and returns the
+///    sum in the lower 64 bits of the result. The upper 64 bits of the result
+///    are copied from the upper double-precision value of the first operand.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VADDSD / ADDSD </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [2 x double] containing one of the source operands.
+/// \param __b
+///    A 128-bit vector of [2 x double] containing one of the source operands.
+/// \returns A 128-bit vector of [2 x double] whose lower 64 bits contain the
+///    sum of the lower 64 bits of both operands. The upper 64 bits are copied
+///    from the upper 64 bits of the first source operand.
+static __inline__ __m128d __DEFAULT_FN_ATTRS
+_mm_add_sd(__m128d __a, __m128d __b)
+{
+  __a[0] += __b[0];
+  return __a;
+}
+
+/// Adds two 128-bit vectors of [2 x double].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VADDPD / ADDPD </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [2 x double] containing one of the source operands.
+/// \param __b
+///    A 128-bit vector of [2 x double] containing one of the source operands.
+/// \returns A 128-bit vector of [2 x double] containing the sums of both
+///    operands.
+static __inline__ __m128d __DEFAULT_FN_ATTRS
+_mm_add_pd(__m128d __a, __m128d __b)
+{
+  return (__m128d)((__v2df)__a + (__v2df)__b);
+}
+
+/// Subtracts the lower double-precision value of the second operand
+///    from the lower double-precision value of the first operand and returns
+///    the difference in the lower 64 bits of the result. The upper 64 bits of
+///    the result are copied from the upper double-precision value of the first
+///    operand.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VSUBSD / SUBSD </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [2 x double] containing the minuend.
+/// \param __b
+///    A 128-bit vector of [2 x double] containing the subtrahend.
+/// \returns A 128-bit vector of [2 x double] whose lower 64 bits contain the
+///    difference of the lower 64 bits of both operands. The upper 64 bits are
+///    copied from the upper 64 bits of the first source operand.
+static __inline__ __m128d __DEFAULT_FN_ATTRS
+_mm_sub_sd(__m128d __a, __m128d __b)
+{
+  __a[0] -= __b[0];
+  return __a;
+}
+
+/// Subtracts two 128-bit vectors of [2 x double].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VSUBPD / SUBPD </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [2 x double] containing the minuend.
+/// \param __b
+///    A 128-bit vector of [2 x double] containing the subtrahend.
+/// \returns A 128-bit vector of [2 x double] containing the differences between
+///    both operands.
+static __inline__ __m128d __DEFAULT_FN_ATTRS
+_mm_sub_pd(__m128d __a, __m128d __b)
+{
+  return (__m128d)((__v2df)__a - (__v2df)__b);
+}
+
+/// Multiplies lower double-precision values in both operands and returns
+///    the product in the lower 64 bits of the result. The upper 64 bits of the
+///    result are copied from the upper double-precision value of the first
+///    operand.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VMULSD / MULSD </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [2 x double] containing one of the source operands.
+/// \param __b
+///    A 128-bit vector of [2 x double] containing one of the source operands.
+/// \returns A 128-bit vector of [2 x double] whose lower 64 bits contain the
+///    product of the lower 64 bits of both operands. The upper 64 bits are
+///    copied from the upper 64 bits of the first source operand.
+static __inline__ __m128d __DEFAULT_FN_ATTRS
+_mm_mul_sd(__m128d __a, __m128d __b)
+{
+  __a[0] *= __b[0];
+  return __a;
+}
+
+/// Multiplies two 128-bit vectors of [2 x double].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VMULPD / MULPD </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [2 x double] containing one of the operands.
+/// \param __b
+///    A 128-bit vector of [2 x double] containing one of the operands.
+/// \returns A 128-bit vector of [2 x double] containing the products of both
+///    operands.
+static __inline__ __m128d __DEFAULT_FN_ATTRS
+_mm_mul_pd(__m128d __a, __m128d __b)
+{
+  return (__m128d)((__v2df)__a * (__v2df)__b);
+}
+
+/// Divides the lower double-precision value of the first operand by the
+///    lower double-precision value of the second operand and returns the
+///    quotient in the lower 64 bits of the result. The upper 64 bits of the
+///    result are copied from the upper double-precision value of the first
+///    operand.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VDIVSD / DIVSD </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [2 x double] containing the dividend.
+/// \param __b
+///    A 128-bit vector of [2 x double] containing divisor.
+/// \returns A 128-bit vector of [2 x double] whose lower 64 bits contain the
+///    quotient of the lower 64 bits of both operands. The upper 64 bits are
+///    copied from the upper 64 bits of the first source operand.
+static __inline__ __m128d __DEFAULT_FN_ATTRS
+_mm_div_sd(__m128d __a, __m128d __b)
+{
+  __a[0] /= __b[0];
+  return __a;
+}
+
+/// Performs an element-by-element division of two 128-bit vectors of
+///    [2 x double].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VDIVPD / DIVPD </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [2 x double] containing the dividend.
+/// \param __b
+///    A 128-bit vector of [2 x double] containing the divisor.
+/// \returns A 128-bit vector of [2 x double] containing the quotients of both
+///    operands.
+static __inline__ __m128d __DEFAULT_FN_ATTRS
+_mm_div_pd(__m128d __a, __m128d __b)
+{
+  return (__m128d)((__v2df)__a / (__v2df)__b);
+}
+
+/// Calculates the square root of the lower double-precision value of
+///    the second operand and returns it in the lower 64 bits of the result.
+///    The upper 64 bits of the result are copied from the upper
+///    double-precision value of the first operand.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VSQRTSD / SQRTSD </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [2 x double] containing one of the operands. The
+///    upper 64 bits of this operand are copied to the upper 64 bits of the
+///    result.
+/// \param __b
+///    A 128-bit vector of [2 x double] containing one of the operands. The
+///    square root is calculated using the lower 64 bits of this operand.
+/// \returns A 128-bit vector of [2 x double] whose lower 64 bits contain the
+///    square root of the lower 64 bits of operand \a __b, and whose upper 64
+///    bits are copied from the upper 64 bits of operand \a __a.
+static __inline__ __m128d __DEFAULT_FN_ATTRS
+_mm_sqrt_sd(__m128d __a, __m128d __b)
+{
+  __m128d __c = __builtin_ia32_sqrtsd((__v2df)__b);
+  return __extension__ (__m128d) { __c[0], __a[1] };
+}
+
+/// Calculates the square root of the each of two values stored in a
+///    128-bit vector of [2 x double].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VSQRTPD / SQRTPD </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [2 x double].
+/// \returns A 128-bit vector of [2 x double] containing the square roots of the
+///    values in the operand.
+static __inline__ __m128d __DEFAULT_FN_ATTRS
+_mm_sqrt_pd(__m128d __a)
+{
+  return __builtin_ia32_sqrtpd((__v2df)__a);
+}
+
+/// Compares lower 64-bit double-precision values of both operands, and
+///    returns the lesser of the pair of values in the lower 64-bits of the
+///    result. The upper 64 bits of the result are copied from the upper
+///    double-precision value of the first operand.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VMINSD / MINSD </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [2 x double] containing one of the operands. The
+///    lower 64 bits of this operand are used in the comparison.
+/// \param __b
+///    A 128-bit vector of [2 x double] containing one of the operands. The
+///    lower 64 bits of this operand are used in the comparison.
+/// \returns A 128-bit vector of [2 x double] whose lower 64 bits contain the
+///    minimum value between both operands. The upper 64 bits are copied from
+///    the upper 64 bits of the first source operand.
+static __inline__ __m128d __DEFAULT_FN_ATTRS
+_mm_min_sd(__m128d __a, __m128d __b)
+{
+  return __builtin_ia32_minsd((__v2df)__a, (__v2df)__b);
+}
+
+/// Performs element-by-element comparison of the two 128-bit vectors of
+///    [2 x double] and returns the vector containing the lesser of each pair of
+///    values.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VMINPD / MINPD </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [2 x double] containing one of the operands.
+/// \param __b
+///    A 128-bit vector of [2 x double] containing one of the operands.
+/// \returns A 128-bit vector of [2 x double] containing the minimum values
+///    between both operands.
+static __inline__ __m128d __DEFAULT_FN_ATTRS
+_mm_min_pd(__m128d __a, __m128d __b)
+{
+  return __builtin_ia32_minpd((__v2df)__a, (__v2df)__b);
+}
+
+/// Compares lower 64-bit double-precision values of both operands, and
+///    returns the greater of the pair of values in the lower 64-bits of the
+///    result. The upper 64 bits of the result are copied from the upper
+///    double-precision value of the first operand.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VMAXSD / MAXSD </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [2 x double] containing one of the operands. The
+///    lower 64 bits of this operand are used in the comparison.
+/// \param __b
+///    A 128-bit vector of [2 x double] containing one of the operands. The
+///    lower 64 bits of this operand are used in the comparison.
+/// \returns A 128-bit vector of [2 x double] whose lower 64 bits contain the
+///    maximum value between both operands. The upper 64 bits are copied from
+///    the upper 64 bits of the first source operand.
+static __inline__ __m128d __DEFAULT_FN_ATTRS
+_mm_max_sd(__m128d __a, __m128d __b)
+{
+  return __builtin_ia32_maxsd((__v2df)__a, (__v2df)__b);
+}
+
+/// Performs element-by-element comparison of the two 128-bit vectors of
+///    [2 x double] and returns the vector containing the greater of each pair
+///    of values.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VMAXPD / MAXPD </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [2 x double] containing one of the operands.
+/// \param __b
+///    A 128-bit vector of [2 x double] containing one of the operands.
+/// \returns A 128-bit vector of [2 x double] containing the maximum values
+///    between both operands.
+static __inline__ __m128d __DEFAULT_FN_ATTRS
+_mm_max_pd(__m128d __a, __m128d __b)
+{
+  return __builtin_ia32_maxpd((__v2df)__a, (__v2df)__b);
+}
+
+/// Performs a bitwise AND of two 128-bit vectors of [2 x double].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VPAND / PAND </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [2 x double] containing one of the source operands.
+/// \param __b
+///    A 128-bit vector of [2 x double] containing one of the source operands.
+/// \returns A 128-bit vector of [2 x double] containing the bitwise AND of the
+///    values between both operands.
+static __inline__ __m128d __DEFAULT_FN_ATTRS
+_mm_and_pd(__m128d __a, __m128d __b)
+{
+  return (__m128d)((__v2du)__a & (__v2du)__b);
+}
+
+/// Performs a bitwise AND of two 128-bit vectors of [2 x double], using
+///    the one's complement of the values contained in the first source operand.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VPANDN / PANDN </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [2 x double] containing the left source operand. The
+///    one's complement of this value is used in the bitwise AND.
+/// \param __b
+///    A 128-bit vector of [2 x double] containing the right source operand.
+/// \returns A 128-bit vector of [2 x double] containing the bitwise AND of the
+///    values in the second operand and the one's complement of the first
+///    operand.
+static __inline__ __m128d __DEFAULT_FN_ATTRS
+_mm_andnot_pd(__m128d __a, __m128d __b)
+{
+  return (__m128d)(~(__v2du)__a & (__v2du)__b);
+}
+
+/// Performs a bitwise OR of two 128-bit vectors of [2 x double].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VPOR / POR </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [2 x double] containing one of the source operands.
+/// \param __b
+///    A 128-bit vector of [2 x double] containing one of the source operands.
+/// \returns A 128-bit vector of [2 x double] containing the bitwise OR of the
+///    values between both operands.
+static __inline__ __m128d __DEFAULT_FN_ATTRS
+_mm_or_pd(__m128d __a, __m128d __b)
+{
+  return (__m128d)((__v2du)__a | (__v2du)__b);
+}
+
+/// Performs a bitwise XOR of two 128-bit vectors of [2 x double].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VPXOR / PXOR </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [2 x double] containing one of the source operands.
+/// \param __b
+///    A 128-bit vector of [2 x double] containing one of the source operands.
+/// \returns A 128-bit vector of [2 x double] containing the bitwise XOR of the
+///    values between both operands.
+static __inline__ __m128d __DEFAULT_FN_ATTRS
+_mm_xor_pd(__m128d __a, __m128d __b)
+{
+  return (__m128d)((__v2du)__a ^ (__v2du)__b);
+}
+
+/// Compares each of the corresponding double-precision values of the
+///    128-bit vectors of [2 x double] for equality. Each comparison yields 0x0
+///    for false, 0xFFFFFFFFFFFFFFFF for true.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCMPEQPD / CMPEQPD </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [2 x double].
+/// \param __b
+///    A 128-bit vector of [2 x double].
+/// \returns A 128-bit vector containing the comparison results.
+static __inline__ __m128d __DEFAULT_FN_ATTRS
+_mm_cmpeq_pd(__m128d __a, __m128d __b)
+{
+  return (__m128d)__builtin_ia32_cmpeqpd((__v2df)__a, (__v2df)__b);
+}
+
+/// Compares each of the corresponding double-precision values of the
+///    128-bit vectors of [2 x double] to determine if the values in the first
+///    operand are less than those in the second operand. Each comparison
+///    yields 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCMPLTPD / CMPLTPD </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [2 x double].
+/// \param __b
+///    A 128-bit vector of [2 x double].
+/// \returns A 128-bit vector containing the comparison results.
+static __inline__ __m128d __DEFAULT_FN_ATTRS
+_mm_cmplt_pd(__m128d __a, __m128d __b)
+{
+  return (__m128d)__builtin_ia32_cmpltpd((__v2df)__a, (__v2df)__b);
+}
+
+/// Compares each of the corresponding double-precision values of the
+///    128-bit vectors of [2 x double] to determine if the values in the first
+///    operand are less than or equal to those in the second operand.
+///
+///    Each comparison yields 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCMPLEPD / CMPLEPD </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [2 x double].
+/// \param __b
+///    A 128-bit vector of [2 x double].
+/// \returns A 128-bit vector containing the comparison results.
+static __inline__ __m128d __DEFAULT_FN_ATTRS
+_mm_cmple_pd(__m128d __a, __m128d __b)
+{
+  return (__m128d)__builtin_ia32_cmplepd((__v2df)__a, (__v2df)__b);
+}
+
+/// Compares each of the corresponding double-precision values of the
+///    128-bit vectors of [2 x double] to determine if the values in the first
+///    operand are greater than those in the second operand.
+///
+///    Each comparison yields 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCMPLTPD / CMPLTPD </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [2 x double].
+/// \param __b
+///    A 128-bit vector of [2 x double].
+/// \returns A 128-bit vector containing the comparison results.
+static __inline__ __m128d __DEFAULT_FN_ATTRS
+_mm_cmpgt_pd(__m128d __a, __m128d __b)
+{
+  return (__m128d)__builtin_ia32_cmpltpd((__v2df)__b, (__v2df)__a);
+}
+
+/// Compares each of the corresponding double-precision values of the
+///    128-bit vectors of [2 x double] to determine if the values in the first
+///    operand are greater than or equal to those in the second operand.
+///
+///    Each comparison yields 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCMPLEPD / CMPLEPD </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [2 x double].
+/// \param __b
+///    A 128-bit vector of [2 x double].
+/// \returns A 128-bit vector containing the comparison results.
+static __inline__ __m128d __DEFAULT_FN_ATTRS
+_mm_cmpge_pd(__m128d __a, __m128d __b)
+{
+  return (__m128d)__builtin_ia32_cmplepd((__v2df)__b, (__v2df)__a);
+}
+
+/// Compares each of the corresponding double-precision values of the
+///    128-bit vectors of [2 x double] to determine if the values in the first
+///    operand are ordered with respect to those in the second operand.
+///
+///    A pair of double-precision values are "ordered" with respect to each
+///    other if neither value is a NaN. Each comparison yields 0x0 for false,
+///    0xFFFFFFFFFFFFFFFF for true.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCMPORDPD / CMPORDPD </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [2 x double].
+/// \param __b
+///    A 128-bit vector of [2 x double].
+/// \returns A 128-bit vector containing the comparison results.
+static __inline__ __m128d __DEFAULT_FN_ATTRS
+_mm_cmpord_pd(__m128d __a, __m128d __b)
+{
+  return (__m128d)__builtin_ia32_cmpordpd((__v2df)__a, (__v2df)__b);
+}
+
+/// Compares each of the corresponding double-precision values of the
+///    128-bit vectors of [2 x double] to determine if the values in the first
+///    operand are unordered with respect to those in the second operand.
+///
+///    A pair of double-precision values are "unordered" with respect to each
+///    other if one or both values are NaN. Each comparison yields 0x0 for
+///    false, 0xFFFFFFFFFFFFFFFF for true.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCMPUNORDPD / CMPUNORDPD </c>
+///   instruction.
+///
+/// \param __a
+///    A 128-bit vector of [2 x double].
+/// \param __b
+///    A 128-bit vector of [2 x double].
+/// \returns A 128-bit vector containing the comparison results.
+static __inline__ __m128d __DEFAULT_FN_ATTRS
+_mm_cmpunord_pd(__m128d __a, __m128d __b)
+{
+  return (__m128d)__builtin_ia32_cmpunordpd((__v2df)__a, (__v2df)__b);
+}
+
+/// Compares each of the corresponding double-precision values of the
+///    128-bit vectors of [2 x double] to determine if the values in the first
+///    operand are unequal to those in the second operand.
+///
+///    Each comparison yields 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCMPNEQPD / CMPNEQPD </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [2 x double].
+/// \param __b
+///    A 128-bit vector of [2 x double].
+/// \returns A 128-bit vector containing the comparison results.
+static __inline__ __m128d __DEFAULT_FN_ATTRS
+_mm_cmpneq_pd(__m128d __a, __m128d __b)
+{
+  return (__m128d)__builtin_ia32_cmpneqpd((__v2df)__a, (__v2df)__b);
+}
+
+/// Compares each of the corresponding double-precision values of the
+///    128-bit vectors of [2 x double] to determine if the values in the first
+///    operand are not less than those in the second operand.
+///
+///    Each comparison yields 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCMPNLTPD / CMPNLTPD </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [2 x double].
+/// \param __b
+///    A 128-bit vector of [2 x double].
+/// \returns A 128-bit vector containing the comparison results.
+static __inline__ __m128d __DEFAULT_FN_ATTRS
+_mm_cmpnlt_pd(__m128d __a, __m128d __b)
+{
+  return (__m128d)__builtin_ia32_cmpnltpd((__v2df)__a, (__v2df)__b);
+}
+
+/// Compares each of the corresponding double-precision values of the
+///    128-bit vectors of [2 x double] to determine if the values in the first
+///    operand are not less than or equal to those in the second operand.
+///
+///    Each comparison yields 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCMPNLEPD / CMPNLEPD </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [2 x double].
+/// \param __b
+///    A 128-bit vector of [2 x double].
+/// \returns A 128-bit vector containing the comparison results.
+static __inline__ __m128d __DEFAULT_FN_ATTRS
+_mm_cmpnle_pd(__m128d __a, __m128d __b)
+{
+  return (__m128d)__builtin_ia32_cmpnlepd((__v2df)__a, (__v2df)__b);
+}
+
+/// Compares each of the corresponding double-precision values of the
+///    128-bit vectors of [2 x double] to determine if the values in the first
+///    operand are not greater than those in the second operand.
+///
+///    Each comparison yields 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCMPNLTPD / CMPNLTPD </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [2 x double].
+/// \param __b
+///    A 128-bit vector of [2 x double].
+/// \returns A 128-bit vector containing the comparison results.
+static __inline__ __m128d __DEFAULT_FN_ATTRS
+_mm_cmpngt_pd(__m128d __a, __m128d __b)
+{
+  return (__m128d)__builtin_ia32_cmpnltpd((__v2df)__b, (__v2df)__a);
+}
+
+/// Compares each of the corresponding double-precision values of the
+///    128-bit vectors of [2 x double] to determine if the values in the first
+///    operand are not greater than or equal to those in the second operand.
+///
+///    Each comparison yields 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCMPNLEPD / CMPNLEPD </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [2 x double].
+/// \param __b
+///    A 128-bit vector of [2 x double].
+/// \returns A 128-bit vector containing the comparison results.
+static __inline__ __m128d __DEFAULT_FN_ATTRS
+_mm_cmpnge_pd(__m128d __a, __m128d __b)
+{
+  return (__m128d)__builtin_ia32_cmpnlepd((__v2df)__b, (__v2df)__a);
+}
+
+/// Compares the lower double-precision floating-point values in each of
+///    the two 128-bit floating-point vectors of [2 x double] for equality.
+///
+///    The comparison yields 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCMPEQSD / CMPEQSD </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [2 x double]. The lower double-precision value is
+///    compared to the lower double-precision value of \a __b.
+/// \param __b
+///    A 128-bit vector of [2 x double]. The lower double-precision value is
+///    compared to the lower double-precision value of \a __a.
+/// \returns A 128-bit vector. The lower 64 bits contains the comparison
+///    results. The upper 64 bits are copied from the upper 64 bits of \a __a.
+static __inline__ __m128d __DEFAULT_FN_ATTRS
+_mm_cmpeq_sd(__m128d __a, __m128d __b)
+{
+  return (__m128d)__builtin_ia32_cmpeqsd((__v2df)__a, (__v2df)__b);
+}
+
+/// Compares the lower double-precision floating-point values in each of
+///    the two 128-bit floating-point vectors of [2 x double] to determine if
+///    the value in the first parameter is less than the corresponding value in
+///    the second parameter.
+///
+///    The comparison yields 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCMPLTSD / CMPLTSD </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [2 x double]. The lower double-precision value is
+///    compared to the lower double-precision value of \a __b.
+/// \param __b
+///    A 128-bit vector of [2 x double]. The lower double-precision value is
+///    compared to the lower double-precision value of \a __a.
+/// \returns A 128-bit vector. The lower 64 bits contains the comparison
+///    results. The upper 64 bits are copied from the upper 64 bits of \a __a.
+static __inline__ __m128d __DEFAULT_FN_ATTRS
+_mm_cmplt_sd(__m128d __a, __m128d __b)
+{
+  return (__m128d)__builtin_ia32_cmpltsd((__v2df)__a, (__v2df)__b);
+}
+
+/// Compares the lower double-precision floating-point values in each of
+///    the two 128-bit floating-point vectors of [2 x double] to determine if
+///    the value in the first parameter is less than or equal to the
+///    corresponding value in the second parameter.
+///
+///    The comparison yields 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCMPLESD / CMPLESD </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [2 x double]. The lower double-precision value is
+///    compared to the lower double-precision value of \a __b.
+/// \param __b
+///    A 128-bit vector of [2 x double]. The lower double-precision value is
+///    compared to the lower double-precision value of \a __a.
+/// \returns A 128-bit vector. The lower 64 bits contains the comparison
+///    results. The upper 64 bits are copied from the upper 64 bits of \a __a.
+static __inline__ __m128d __DEFAULT_FN_ATTRS
+_mm_cmple_sd(__m128d __a, __m128d __b)
+{
+  return (__m128d)__builtin_ia32_cmplesd((__v2df)__a, (__v2df)__b);
+}
+
+/// Compares the lower double-precision floating-point values in each of
+///    the two 128-bit floating-point vectors of [2 x double] to determine if
+///    the value in the first parameter is greater than the corresponding value
+///    in the second parameter.
+///
+///    The comparison yields 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCMPLTSD / CMPLTSD </c> instruction.
+///
+/// \param __a
+///     A 128-bit vector of [2 x double]. The lower double-precision value is
+///     compared to the lower double-precision value of \a __b.
+/// \param __b
+///     A 128-bit vector of [2 x double]. The lower double-precision value is
+///     compared to the lower double-precision value of \a __a.
+/// \returns A 128-bit vector. The lower 64 bits contains the comparison
+///     results. The upper 64 bits are copied from the upper 64 bits of \a __a.
+static __inline__ __m128d __DEFAULT_FN_ATTRS
+_mm_cmpgt_sd(__m128d __a, __m128d __b)
+{
+  __m128d __c = __builtin_ia32_cmpltsd((__v2df)__b, (__v2df)__a);
+  return __extension__ (__m128d) { __c[0], __a[1] };
+}
+
+/// Compares the lower double-precision floating-point values in each of
+///    the two 128-bit floating-point vectors of [2 x double] to determine if
+///    the value in the first parameter is greater than or equal to the
+///    corresponding value in the second parameter.
+///
+///    The comparison yields 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCMPLESD / CMPLESD </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [2 x double]. The lower double-precision value is
+///    compared to the lower double-precision value of \a __b.
+/// \param __b
+///    A 128-bit vector of [2 x double]. The lower double-precision value is
+///    compared to the lower double-precision value of \a __a.
+/// \returns A 128-bit vector. The lower 64 bits contains the comparison
+///    results. The upper 64 bits are copied from the upper 64 bits of \a __a.
+static __inline__ __m128d __DEFAULT_FN_ATTRS
+_mm_cmpge_sd(__m128d __a, __m128d __b)
+{
+  __m128d __c = __builtin_ia32_cmplesd((__v2df)__b, (__v2df)__a);
+  return __extension__ (__m128d) { __c[0], __a[1] };
+}
+
+/// Compares the lower double-precision floating-point values in each of
+///    the two 128-bit floating-point vectors of [2 x double] to determine if
+///    the value in the first parameter is "ordered" with respect to the
+///    corresponding value in the second parameter.
+///
+///    The comparison yields 0x0 for false, 0xFFFFFFFFFFFFFFFF for true. A pair
+///    of double-precision values are "ordered" with respect to each other if
+///    neither value is a NaN.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCMPORDSD / CMPORDSD </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [2 x double]. The lower double-precision value is
+///    compared to the lower double-precision value of \a __b.
+/// \param __b
+///    A 128-bit vector of [2 x double]. The lower double-precision value is
+///    compared to the lower double-precision value of \a __a.
+/// \returns A 128-bit vector. The lower 64 bits contains the comparison
+///    results. The upper 64 bits are copied from the upper 64 bits of \a __a.
+static __inline__ __m128d __DEFAULT_FN_ATTRS
+_mm_cmpord_sd(__m128d __a, __m128d __b)
+{
+  return (__m128d)__builtin_ia32_cmpordsd((__v2df)__a, (__v2df)__b);
+}
+
+/// Compares the lower double-precision floating-point values in each of
+///    the two 128-bit floating-point vectors of [2 x double] to determine if
+///    the value in the first parameter is "unordered" with respect to the
+///    corresponding value in the second parameter.
+///
+///    The comparison yields 0x0 for false, 0xFFFFFFFFFFFFFFFF for true. A pair
+///    of double-precision values are "unordered" with respect to each other if
+///    one or both values are NaN.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCMPUNORDSD / CMPUNORDSD </c>
+///   instruction.
+///
+/// \param __a
+///    A 128-bit vector of [2 x double]. The lower double-precision value is
+///    compared to the lower double-precision value of \a __b.
+/// \param __b
+///    A 128-bit vector of [2 x double]. The lower double-precision value is
+///    compared to the lower double-precision value of \a __a.
+/// \returns A 128-bit vector. The lower 64 bits contains the comparison
+///    results. The upper 64 bits are copied from the upper 64 bits of \a __a.
+static __inline__ __m128d __DEFAULT_FN_ATTRS
+_mm_cmpunord_sd(__m128d __a, __m128d __b)
+{
+  return (__m128d)__builtin_ia32_cmpunordsd((__v2df)__a, (__v2df)__b);
+}
+
+/// Compares the lower double-precision floating-point values in each of
+///    the two 128-bit floating-point vectors of [2 x double] to determine if
+///    the value in the first parameter is unequal to the corresponding value in
+///    the second parameter.
+///
+///    The comparison yields 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCMPNEQSD / CMPNEQSD </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [2 x double]. The lower double-precision value is
+///    compared to the lower double-precision value of \a __b.
+/// \param __b
+///    A 128-bit vector of [2 x double]. The lower double-precision value is
+///    compared to the lower double-precision value of \a __a.
+/// \returns A 128-bit vector. The lower 64 bits contains the comparison
+///    results. The upper 64 bits are copied from the upper 64 bits of \a __a.
+static __inline__ __m128d __DEFAULT_FN_ATTRS
+_mm_cmpneq_sd(__m128d __a, __m128d __b)
+{
+  return (__m128d)__builtin_ia32_cmpneqsd((__v2df)__a, (__v2df)__b);
+}
+
+/// Compares the lower double-precision floating-point values in each of
+///    the two 128-bit floating-point vectors of [2 x double] to determine if
+///    the value in the first parameter is not less than the corresponding
+///    value in the second parameter.
+///
+///    The comparison yields 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCMPNLTSD / CMPNLTSD </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [2 x double]. The lower double-precision value is
+///    compared to the lower double-precision value of \a __b.
+/// \param __b
+///    A 128-bit vector of [2 x double]. The lower double-precision value is
+///    compared to the lower double-precision value of \a __a.
+/// \returns A 128-bit vector. The lower 64 bits contains the comparison
+///    results. The upper 64 bits are copied from the upper 64 bits of \a __a.
+static __inline__ __m128d __DEFAULT_FN_ATTRS
+_mm_cmpnlt_sd(__m128d __a, __m128d __b)
+{
+  return (__m128d)__builtin_ia32_cmpnltsd((__v2df)__a, (__v2df)__b);
+}
+
+/// Compares the lower double-precision floating-point values in each of
+///    the two 128-bit floating-point vectors of [2 x double] to determine if
+///    the value in the first parameter is not less than or equal to the
+///    corresponding value in the second parameter.
+///
+///    The comparison yields 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCMPNLESD / CMPNLESD </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [2 x double]. The lower double-precision value is
+///    compared to the lower double-precision value of \a __b.
+/// \param __b
+///    A 128-bit vector of [2 x double]. The lower double-precision value is
+///    compared to the lower double-precision value of \a __a.
+/// \returns  A 128-bit vector. The lower 64 bits contains the comparison
+///    results. The upper 64 bits are copied from the upper 64 bits of \a __a.
+static __inline__ __m128d __DEFAULT_FN_ATTRS
+_mm_cmpnle_sd(__m128d __a, __m128d __b)
+{
+  return (__m128d)__builtin_ia32_cmpnlesd((__v2df)__a, (__v2df)__b);
+}
+
+/// Compares the lower double-precision floating-point values in each of
+///    the two 128-bit floating-point vectors of [2 x double] to determine if
+///    the value in the first parameter is not greater than the corresponding
+///    value in the second parameter.
+///
+///    The comparison yields 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCMPNLTSD / CMPNLTSD </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [2 x double]. The lower double-precision value is
+///    compared to the lower double-precision value of \a __b.
+/// \param __b
+///    A 128-bit vector of [2 x double]. The lower double-precision value is
+///    compared to the lower double-precision value of \a __a.
+/// \returns A 128-bit vector. The lower 64 bits contains the comparison
+///    results. The upper 64 bits are copied from the upper 64 bits of \a __a.
+static __inline__ __m128d __DEFAULT_FN_ATTRS
+_mm_cmpngt_sd(__m128d __a, __m128d __b)
+{
+  __m128d __c = __builtin_ia32_cmpnltsd((__v2df)__b, (__v2df)__a);
+  return __extension__ (__m128d) { __c[0], __a[1] };
+}
+
+/// Compares the lower double-precision floating-point values in each of
+///    the two 128-bit floating-point vectors of [2 x double] to determine if
+///    the value in the first parameter is not greater than or equal to the
+///    corresponding value in the second parameter.
+///
+///    The comparison yields 0x0 for false, 0xFFFFFFFFFFFFFFFF for true.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCMPNLESD / CMPNLESD </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [2 x double]. The lower double-precision value is
+///    compared to the lower double-precision value of \a __b.
+/// \param __b
+///    A 128-bit vector of [2 x double]. The lower double-precision value is
+///    compared to the lower double-precision value of \a __a.
+/// \returns A 128-bit vector. The lower 64 bits contains the comparison
+///    results. The upper 64 bits are copied from the upper 64 bits of \a __a.
+static __inline__ __m128d __DEFAULT_FN_ATTRS
+_mm_cmpnge_sd(__m128d __a, __m128d __b)
+{
+  __m128d __c = __builtin_ia32_cmpnlesd((__v2df)__b, (__v2df)__a);
+  return __extension__ (__m128d) { __c[0], __a[1] };
+}
+
+/// Compares the lower double-precision floating-point values in each of
+///    the two 128-bit floating-point vectors of [2 x double] for equality.
+///
+///    The comparison yields 0 for false, 1 for true. If either of the two
+///    lower double-precision values is NaN, 0 is returned.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCOMISD / COMISD </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [2 x double]. The lower double-precision value is
+///    compared to the lower double-precision value of \a __b.
+/// \param __b
+///    A 128-bit vector of [2 x double]. The lower double-precision value is
+///    compared to the lower double-precision value of \a __a.
+/// \returns An integer containing the comparison results. If either of the two
+///    lower double-precision values is NaN, 0 is returned.
+static __inline__ int __DEFAULT_FN_ATTRS
+_mm_comieq_sd(__m128d __a, __m128d __b)
+{
+  return __builtin_ia32_comisdeq((__v2df)__a, (__v2df)__b);
+}
+
+/// Compares the lower double-precision floating-point values in each of
+///    the two 128-bit floating-point vectors of [2 x double] to determine if
+///    the value in the first parameter is less than the corresponding value in
+///    the second parameter.
+///
+///    The comparison yields 0 for false, 1 for true. If either of the two
+///    lower double-precision values is NaN, 0 is returned.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCOMISD / COMISD </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [2 x double]. The lower double-precision value is
+///    compared to the lower double-precision value of \a __b.
+/// \param __b
+///    A 128-bit vector of [2 x double]. The lower double-precision value is
+///    compared to the lower double-precision value of \a __a.
+/// \returns An integer containing the comparison results. If either of the two
+///     lower double-precision values is NaN, 0 is returned.
+static __inline__ int __DEFAULT_FN_ATTRS
+_mm_comilt_sd(__m128d __a, __m128d __b)
+{
+  return __builtin_ia32_comisdlt((__v2df)__a, (__v2df)__b);
+}
+
+/// Compares the lower double-precision floating-point values in each of
+///    the two 128-bit floating-point vectors of [2 x double] to determine if
+///    the value in the first parameter is less than or equal to the
+///    corresponding value in the second parameter.
+///
+///    The comparison yields 0 for false, 1 for true. If either of the two
+///    lower double-precision values is NaN, 0 is returned.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCOMISD / COMISD </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [2 x double]. The lower double-precision value is
+///    compared to the lower double-precision value of \a __b.
+/// \param __b
+///     A 128-bit vector of [2 x double]. The lower double-precision value is
+///     compared to the lower double-precision value of \a __a.
+/// \returns An integer containing the comparison results. If either of the two
+///     lower double-precision values is NaN, 0 is returned.
+static __inline__ int __DEFAULT_FN_ATTRS
+_mm_comile_sd(__m128d __a, __m128d __b)
+{
+  return __builtin_ia32_comisdle((__v2df)__a, (__v2df)__b);
+}
+
+/// Compares the lower double-precision floating-point values in each of
+///    the two 128-bit floating-point vectors of [2 x double] to determine if
+///    the value in the first parameter is greater than the corresponding value
+///    in the second parameter.
+///
+///    The comparison yields 0 for false, 1 for true. If either of the two
+///    lower double-precision values is NaN, 0 is returned.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCOMISD / COMISD </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [2 x double]. The lower double-precision value is
+///    compared to the lower double-precision value of \a __b.
+/// \param __b
+///    A 128-bit vector of [2 x double]. The lower double-precision value is
+///    compared to the lower double-precision value of \a __a.
+/// \returns An integer containing the comparison results. If either of the two
+///     lower double-precision values is NaN, 0 is returned.
+static __inline__ int __DEFAULT_FN_ATTRS
+_mm_comigt_sd(__m128d __a, __m128d __b)
+{
+  return __builtin_ia32_comisdgt((__v2df)__a, (__v2df)__b);
+}
+
+/// Compares the lower double-precision floating-point values in each of
+///    the two 128-bit floating-point vectors of [2 x double] to determine if
+///    the value in the first parameter is greater than or equal to the
+///    corresponding value in the second parameter.
+///
+///    The comparison yields 0 for false, 1 for true. If either of the two
+///    lower double-precision values is NaN, 0 is returned.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCOMISD / COMISD </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [2 x double]. The lower double-precision value is
+///    compared to the lower double-precision value of \a __b.
+/// \param __b
+///    A 128-bit vector of [2 x double]. The lower double-precision value is
+///    compared to the lower double-precision value of \a __a.
+/// \returns An integer containing the comparison results. If either of the two
+///    lower double-precision values is NaN, 0 is returned.
+static __inline__ int __DEFAULT_FN_ATTRS
+_mm_comige_sd(__m128d __a, __m128d __b)
+{
+  return __builtin_ia32_comisdge((__v2df)__a, (__v2df)__b);
+}
+
+/// Compares the lower double-precision floating-point values in each of
+///    the two 128-bit floating-point vectors of [2 x double] to determine if
+///    the value in the first parameter is unequal to the corresponding value in
+///    the second parameter.
+///
+///    The comparison yields 0 for false, 1 for true. If either of the two
+///    lower double-precision values is NaN, 1 is returned.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCOMISD / COMISD </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [2 x double]. The lower double-precision value is
+///    compared to the lower double-precision value of \a __b.
+/// \param __b
+///    A 128-bit vector of [2 x double]. The lower double-precision value is
+///    compared to the lower double-precision value of \a __a.
+/// \returns An integer containing the comparison results. If either of the two
+///     lower double-precision values is NaN, 1 is returned.
+static __inline__ int __DEFAULT_FN_ATTRS
+_mm_comineq_sd(__m128d __a, __m128d __b)
+{
+  return __builtin_ia32_comisdneq((__v2df)__a, (__v2df)__b);
+}
+
+/// Compares the lower double-precision floating-point values in each of
+///    the two 128-bit floating-point vectors of [2 x double] for equality. The
+///    comparison yields 0 for false, 1 for true.
+///
+///    If either of the two lower double-precision values is NaN, 0 is returned.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VUCOMISD / UCOMISD </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [2 x double]. The lower double-precision value is
+///    compared to the lower double-precision value of \a __b.
+/// \param __b
+///    A 128-bit vector of [2 x double]. The lower double-precision value is
+///    compared to the lower double-precision value of \a __a.
+/// \returns An integer containing the comparison results. If either of the two
+///    lower double-precision values is NaN, 0 is returned.
+static __inline__ int __DEFAULT_FN_ATTRS
+_mm_ucomieq_sd(__m128d __a, __m128d __b)
+{
+  return __builtin_ia32_ucomisdeq((__v2df)__a, (__v2df)__b);
+}
+
+/// Compares the lower double-precision floating-point values in each of
+///    the two 128-bit floating-point vectors of [2 x double] to determine if
+///    the value in the first parameter is less than the corresponding value in
+///    the second parameter.
+///
+///    The comparison yields 0 for false, 1 for true. If either of the two lower
+///    double-precision values is NaN, 0 is returned.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VUCOMISD / UCOMISD </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [2 x double]. The lower double-precision value is
+///    compared to the lower double-precision value of \a __b.
+/// \param __b
+///    A 128-bit vector of [2 x double]. The lower double-precision value is
+///    compared to the lower double-precision value of \a __a.
+/// \returns An integer containing the comparison results. If either of the two
+///    lower double-precision values is NaN, 0 is returned.
+static __inline__ int __DEFAULT_FN_ATTRS
+_mm_ucomilt_sd(__m128d __a, __m128d __b)
+{
+  return __builtin_ia32_ucomisdlt((__v2df)__a, (__v2df)__b);
+}
+
+/// Compares the lower double-precision floating-point values in each of
+///    the two 128-bit floating-point vectors of [2 x double] to determine if
+///    the value in the first parameter is less than or equal to the
+///    corresponding value in the second parameter.
+///
+///    The comparison yields 0 for false, 1 for true. If either of the two lower
+///    double-precision values is NaN, 0 is returned.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VUCOMISD / UCOMISD </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [2 x double]. The lower double-precision value is
+///    compared to the lower double-precision value of \a __b.
+/// \param __b
+///     A 128-bit vector of [2 x double]. The lower double-precision value is
+///     compared to the lower double-precision value of \a __a.
+/// \returns An integer containing the comparison results. If either of the two
+///     lower double-precision values is NaN, 0 is returned.
+static __inline__ int __DEFAULT_FN_ATTRS
+_mm_ucomile_sd(__m128d __a, __m128d __b)
+{
+  return __builtin_ia32_ucomisdle((__v2df)__a, (__v2df)__b);
+}
+
+/// Compares the lower double-precision floating-point values in each of
+///    the two 128-bit floating-point vectors of [2 x double] to determine if
+///    the value in the first parameter is greater than the corresponding value
+///    in the second parameter.
+///
+///    The comparison yields 0 for false, 1 for true. If either of the two lower
+///    double-precision values is NaN, 0 is returned.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VUCOMISD / UCOMISD </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [2 x double]. The lower double-precision value is
+///    compared to the lower double-precision value of \a __b.
+/// \param __b
+///     A 128-bit vector of [2 x double]. The lower double-precision value is
+///     compared to the lower double-precision value of \a __a.
+/// \returns An integer containing the comparison results. If either of the two
+///     lower double-precision values is NaN, 0 is returned.
+static __inline__ int __DEFAULT_FN_ATTRS
+_mm_ucomigt_sd(__m128d __a, __m128d __b)
+{
+  return __builtin_ia32_ucomisdgt((__v2df)__a, (__v2df)__b);
+}
+
+/// Compares the lower double-precision floating-point values in each of
+///    the two 128-bit floating-point vectors of [2 x double] to determine if
+///    the value in the first parameter is greater than or equal to the
+///    corresponding value in the second parameter.
+///
+///    The comparison yields 0 for false, 1 for true.  If either of the two
+///    lower double-precision values is NaN, 0 is returned.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VUCOMISD / UCOMISD </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [2 x double]. The lower double-precision value is
+///    compared to the lower double-precision value of \a __b.
+/// \param __b
+///    A 128-bit vector of [2 x double]. The lower double-precision value is
+///    compared to the lower double-precision value of \a __a.
+/// \returns An integer containing the comparison results. If either of the two
+///    lower double-precision values is NaN, 0 is returned.
+static __inline__ int __DEFAULT_FN_ATTRS
+_mm_ucomige_sd(__m128d __a, __m128d __b)
+{
+  return __builtin_ia32_ucomisdge((__v2df)__a, (__v2df)__b);
+}
+
+/// Compares the lower double-precision floating-point values in each of
+///    the two 128-bit floating-point vectors of [2 x double] to determine if
+///    the value in the first parameter is unequal to the corresponding value in
+///    the second parameter.
+///
+///    The comparison yields 0 for false, 1 for true. If either of the two lower
+///    double-precision values is NaN, 1 is returned.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VUCOMISD / UCOMISD </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [2 x double]. The lower double-precision value is
+///    compared to the lower double-precision value of \a __b.
+/// \param __b
+///    A 128-bit vector of [2 x double]. The lower double-precision value is
+///    compared to the lower double-precision value of \a __a.
+/// \returns An integer containing the comparison result. If either of the two
+///    lower double-precision values is NaN, 1 is returned.
+static __inline__ int __DEFAULT_FN_ATTRS
+_mm_ucomineq_sd(__m128d __a, __m128d __b)
+{
+  return __builtin_ia32_ucomisdneq((__v2df)__a, (__v2df)__b);
+}
+
+/// Converts the two double-precision floating-point elements of a
+///    128-bit vector of [2 x double] into two single-precision floating-point
+///    values, returned in the lower 64 bits of a 128-bit vector of [4 x float].
+///    The upper 64 bits of the result vector are set to zero.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCVTPD2PS / CVTPD2PS </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [2 x double].
+/// \returns A 128-bit vector of [4 x float] whose lower 64 bits contain the
+///    converted values. The upper 64 bits are set to zero.
+static __inline__ __m128 __DEFAULT_FN_ATTRS
+_mm_cvtpd_ps(__m128d __a)
+{
+  return __builtin_ia32_cvtpd2ps((__v2df)__a);
+}
+
+/// Converts the lower two single-precision floating-point elements of a
+///    128-bit vector of [4 x float] into two double-precision floating-point
+///    values, returned in a 128-bit vector of [2 x double]. The upper two
+///    elements of the input vector are unused.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCVTPS2PD / CVTPS2PD </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [4 x float]. The lower two single-precision
+///    floating-point elements are converted to double-precision values. The
+///    upper two elements are unused.
+/// \returns A 128-bit vector of [2 x double] containing the converted values.
+static __inline__ __m128d __DEFAULT_FN_ATTRS
+_mm_cvtps_pd(__m128 __a)
+{
+#ifdef __GNUC__
+  return (__m128d)__builtin_ia32_cvtps2pd ((__v4sf) __a);
+#else
+  return (__m128d) __builtin_convertvector(
+      __builtin_shufflevector((__v4sf)__a, (__v4sf)__a, 0, 1), __v2df);
+#endif
+}
+
+/// Converts the lower two integer elements of a 128-bit vector of
+///    [4 x i32] into two double-precision floating-point values, returned in a
+///    128-bit vector of [2 x double].
+///
+///    The upper two elements of the input vector are unused.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCVTDQ2PD / CVTDQ2PD </c> instruction.
+///
+/// \param __a
+///    A 128-bit integer vector of [4 x i32]. The lower two integer elements are
+///    converted to double-precision values.
+///
+///    The upper two elements are unused.
+/// \returns A 128-bit vector of [2 x double] containing the converted values.
+static __inline__ __m128d __DEFAULT_FN_ATTRS
+_mm_cvtepi32_pd(__m128i __a)
+{
+#ifdef __GNUC__
+  return (__m128d)__builtin_ia32_cvtdq2pd ((__v4si) __a);
+#else
+  return (__m128d) __builtin_convertvector(
+      __builtin_shufflevector((__v4si)__a, (__v4si)__a, 0, 1), __v2df);
+#endif
+}
+
+/// Converts the two double-precision floating-point elements of a
+///    128-bit vector of [2 x double] into two signed 32-bit integer values,
+///    returned in the lower 64 bits of a 128-bit vector of [4 x i32]. The upper
+///    64 bits of the result vector are set to zero.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCVTPD2DQ / CVTPD2DQ </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [2 x double].
+/// \returns A 128-bit vector of [4 x i32] whose lower 64 bits contain the
+///    converted values. The upper 64 bits are set to zero.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_cvtpd_epi32(__m128d __a)
+{
+#ifdef __GNUC__
+  return (__m128i)__builtin_ia32_cvtpd2dq ((__v2df) __a);
+#else
+  return __builtin_ia32_cvtpd2dq((__v2df)__a);
+#endif
+}
+
+/// Converts the low-order element of a 128-bit vector of [2 x double]
+///    into a 32-bit signed integer value.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCVTSD2SI / CVTSD2SI </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [2 x double]. The lower 64 bits are used in the
+///    conversion.
+/// \returns A 32-bit signed integer containing the converted value.
+static __inline__ int __DEFAULT_FN_ATTRS
+_mm_cvtsd_si32(__m128d __a)
+{
+  return __builtin_ia32_cvtsd2si((__v2df)__a);
+}
+
+/// Converts the lower double-precision floating-point element of a
+///    128-bit vector of [2 x double], in the second parameter, into a
+///    single-precision floating-point value, returned in the lower 32 bits of a
+///    128-bit vector of [4 x float]. The upper 96 bits of the result vector are
+///    copied from the upper 96 bits of the first parameter.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCVTSD2SS / CVTSD2SS </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [4 x float]. The upper 96 bits of this parameter are
+///    copied to the upper 96 bits of the result.
+/// \param __b
+///    A 128-bit vector of [2 x double]. The lower double-precision
+///    floating-point element is used in the conversion.
+/// \returns A 128-bit vector of [4 x float]. The lower 32 bits contain the
+///    converted value from the second parameter. The upper 96 bits are copied
+///    from the upper 96 bits of the first parameter.
+static __inline__ __m128 __DEFAULT_FN_ATTRS
+_mm_cvtsd_ss(__m128 __a, __m128d __b)
+{
+  return (__m128)__builtin_ia32_cvtsd2ss((__v4sf)__a, (__v2df)__b);
+}
+
+/// Converts a 32-bit signed integer value, in the second parameter, into
+///    a double-precision floating-point value, returned in the lower 64 bits of
+///    a 128-bit vector of [2 x double]. The upper 64 bits of the result vector
+///    are copied from the upper 64 bits of the first parameter.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCVTSI2SD / CVTSI2SD </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [2 x double]. The upper 64 bits of this parameter are
+///    copied to the upper 64 bits of the result.
+/// \param __b
+///    A 32-bit signed integer containing the value to be converted.
+/// \returns A 128-bit vector of [2 x double]. The lower 64 bits contain the
+///    converted value from the second parameter. The upper 64 bits are copied
+///    from the upper 64 bits of the first parameter.
+static __inline__ __m128d __DEFAULT_FN_ATTRS
+_mm_cvtsi32_sd(__m128d __a, int __b)
+{
+  __a[0] = __b;
+  return __a;
+}
+
+/// Converts the lower single-precision floating-point element of a
+///    128-bit vector of [4 x float], in the second parameter, into a
+///    double-precision floating-point value, returned in the lower 64 bits of
+///    a 128-bit vector of [2 x double]. The upper 64 bits of the result vector
+///    are copied from the upper 64 bits of the first parameter.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCVTSS2SD / CVTSS2SD </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [2 x double]. The upper 64 bits of this parameter are
+///    copied to the upper 64 bits of the result.
+/// \param __b
+///    A 128-bit vector of [4 x float]. The lower single-precision
+///    floating-point element is used in the conversion.
+/// \returns A 128-bit vector of [2 x double]. The lower 64 bits contain the
+///    converted value from the second parameter. The upper 64 bits are copied
+///    from the upper 64 bits of the first parameter.
+static __inline__ __m128d __DEFAULT_FN_ATTRS
+_mm_cvtss_sd(__m128d __a, __m128 __b)
+{
+  __a[0] = __b[0];
+  return __a;
+}
+
+/// Converts the two double-precision floating-point elements of a
+///    128-bit vector of [2 x double] into two signed 32-bit integer values,
+///    returned in the lower 64 bits of a 128-bit vector of [4 x i32].
+///
+///    If the result of either conversion is inexact, the result is truncated
+///    (rounded towards zero) regardless of the current MXCSR setting. The upper
+///    64 bits of the result vector are set to zero.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCVTTPD2DQ / CVTTPD2DQ </c>
+///   instruction.
+///
+/// \param __a
+///    A 128-bit vector of [2 x double].
+/// \returns A 128-bit vector of [4 x i32] whose lower 64 bits contain the
+///    converted values. The upper 64 bits are set to zero.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_cvttpd_epi32(__m128d __a)
+{
+  return (__m128i)__builtin_ia32_cvttpd2dq((__v2df)__a);
+}
+
+/// Converts the low-order element of a [2 x double] vector into a 32-bit
+///    signed integer value, truncating the result when it is inexact.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCVTTSD2SI / CVTTSD2SI </c>
+///   instruction.
+///
+/// \param __a
+///    A 128-bit vector of [2 x double]. The lower 64 bits are used in the
+///    conversion.
+/// \returns A 32-bit signed integer containing the converted value.
+static __inline__ int __DEFAULT_FN_ATTRS
+_mm_cvttsd_si32(__m128d __a)
+{
+  return __builtin_ia32_cvttsd2si((__v2df)__a);
+}
+
+/// Converts the two double-precision floating-point elements of a
+///    128-bit vector of [2 x double] into two signed 32-bit integer values,
+///    returned in a 64-bit vector of [2 x i32].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> CVTPD2PI </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [2 x double].
+/// \returns A 64-bit vector of [2 x i32] containing the converted values.
+static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX
+_mm_cvtpd_pi32(__m128d __a)
+{
+  return (__m64)__builtin_ia32_cvtpd2pi((__v2df)__a);
+}
+
+/// Converts the two double-precision floating-point elements of a
+///    128-bit vector of [2 x double] into two signed 32-bit integer values,
+///    returned in a 64-bit vector of [2 x i32].
+///
+///    If the result of either conversion is inexact, the result is truncated
+///    (rounded towards zero) regardless of the current MXCSR setting.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> CVTTPD2PI </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [2 x double].
+/// \returns A 64-bit vector of [2 x i32] containing the converted values.
+static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX
+_mm_cvttpd_pi32(__m128d __a)
+{
+  return (__m64)__builtin_ia32_cvttpd2pi((__v2df)__a);
+}
+
+/// Converts the two signed 32-bit integer elements of a 64-bit vector of
+///    [2 x i32] into two double-precision floating-point values, returned in a
+///    128-bit vector of [2 x double].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> CVTPI2PD </c> instruction.
+///
+/// \param __a
+///    A 64-bit vector of [2 x i32].
+/// \returns A 128-bit vector of [2 x double] containing the converted values.
+static __inline__ __m128d __DEFAULT_FN_ATTRS_MMX
+_mm_cvtpi32_pd(__m64 __a)
+{
+  return __builtin_ia32_cvtpi2pd((__v2si)__a);
+}
+
+/// Returns the low-order element of a 128-bit vector of [2 x double] as
+///    a double-precision floating-point value.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic has no corresponding instruction.
+///
+/// \param __a
+///    A 128-bit vector of [2 x double]. The lower 64 bits are returned.
+/// \returns A double-precision floating-point value copied from the lower 64
+///    bits of \a __a.
+static __inline__ double __DEFAULT_FN_ATTRS
+_mm_cvtsd_f64(__m128d __a)
+{
+  return __a[0];
+}
+
+/// Loads a 128-bit floating-point vector of [2 x double] from an aligned
+///    memory location.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VMOVAPD / MOVAPD </c> instruction.
+///
+/// \param __dp
+///    A pointer to a 128-bit memory location. The address of the memory
+///    location has to be 16-byte aligned.
+/// \returns A 128-bit vector of [2 x double] containing the loaded values.
+static __inline__ __m128d __DEFAULT_FN_ATTRS
+_mm_load_pd(double const *__dp)
+{
+  return *(__m128d*)__dp;
+}
+
+/// Loads a double-precision floating-point value from a specified memory
+///    location and duplicates it to both vector elements of a 128-bit vector of
+///    [2 x double].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VMOVDDUP / MOVDDUP </c> instruction.
+///
+/// \param __dp
+///    A pointer to a memory location containing a double-precision value.
+/// \returns A 128-bit vector of [2 x double] containing the loaded and
+///    duplicated values.
+static __inline__ __m128d __DEFAULT_FN_ATTRS
+_mm_load1_pd(double const *__dp)
+{
+  struct __mm_load1_pd_struct {
+    double __u;
+  } __attribute__((__packed__, __may_alias__));
+  double __u = ((struct __mm_load1_pd_struct*)__dp)->__u;
+  return __extension__ (__m128d){ __u, __u };
+}
+
+#define        _mm_load_pd1(dp)        _mm_load1_pd(dp)
+
+/// Loads two double-precision values, in reverse order, from an aligned
+///    memory location into a 128-bit vector of [2 x double].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VMOVAPD / MOVAPD </c> instruction +
+/// needed shuffling instructions. In AVX mode, the shuffling may be combined
+/// with the \c VMOVAPD, resulting in only a \c VPERMILPD instruction.
+///
+/// \param __dp
+///    A 16-byte aligned pointer to an array of double-precision values to be
+///    loaded in reverse order.
+/// \returns A 128-bit vector of [2 x double] containing the reversed loaded
+///    values.
+static __inline__ __m128d __DEFAULT_FN_ATTRS
+_mm_loadr_pd(double const *__dp)
+{
+#ifdef __GNUC__
+  __m128d __tmp = _mm_load_pd (__dp);
+  return __builtin_ia32_shufpd (__tmp, __tmp, _MM_SHUFFLE2 (0,1));
+#else
+  __m128d __u = *(__m128d*)__dp;
+  return __builtin_shufflevector((__v2df)__u, (__v2df)__u, 1, 0);
+#endif
+}
+
+/// Loads a 128-bit floating-point vector of [2 x double] from an
+///    unaligned memory location.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VMOVUPD / MOVUPD </c> instruction.
+///
+/// \param __dp
+///    A pointer to a 128-bit memory location. The address of the memory
+///    location does not have to be aligned.
+/// \returns A 128-bit vector of [2 x double] containing the loaded values.
+static __inline__ __m128d __DEFAULT_FN_ATTRS
+_mm_loadu_pd(double const *__dp)
+{
+  struct __loadu_pd {
+    __m128d __v;
+  } __attribute__((__packed__, __may_alias__));
+  return ((struct __loadu_pd*)__dp)->__v;
+}
+
+/// Loads a 64-bit integer value to the low element of a 128-bit integer
+///    vector and clears the upper element.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VMOVQ / MOVQ </c> instruction.
+///
+/// \param __a
+///    A pointer to a 64-bit memory location. The address of the memory
+///    location does not have to be aligned.
+/// \returns A 128-bit vector of [2 x i64] containing the loaded value.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_loadu_si64(void const *__a)
+{
+  struct __loadu_si64 {
+    long long __v;
+  } __attribute__((__packed__, __may_alias__));
+  long long __u = ((struct __loadu_si64*)__a)->__v;
+  return __extension__ (__m128i)(__v2di){__u, 0L};
+}
+
+/// Loads a 64-bit double-precision value to the low element of a
+///    128-bit integer vector and clears the upper element.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VMOVSD / MOVSD </c> instruction.
+///
+/// \param __dp
+///    A pointer to a memory location containing a double-precision value.
+///    The address of the memory location does not have to be aligned.
+/// \returns A 128-bit vector of [2 x double] containing the loaded value.
+static __inline__ __m128d __DEFAULT_FN_ATTRS
+_mm_load_sd(double const *__dp)
+{
+  struct __mm_load_sd_struct {
+    double __u;
+  } __attribute__((__packed__, __may_alias__));
+  double __u = ((struct __mm_load_sd_struct*)__dp)->__u;
+  return __extension__ (__m128d){ __u, 0 };
+}
+
+/// Loads a double-precision value into the high-order bits of a 128-bit
+///    vector of [2 x double]. The low-order bits are copied from the low-order
+///    bits of the first operand.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VMOVHPD / MOVHPD </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [2 x double]. \n
+///    Bits [63:0] are written to bits [63:0] of the result.
+/// \param __dp
+///    A pointer to a 64-bit memory location containing a double-precision
+///    floating-point value that is loaded. The loaded value is written to bits
+///    [127:64] of the result. The address of the memory location does not have
+///    to be aligned.
+/// \returns A 128-bit vector of [2 x double] containing the moved values.
+static __inline__ __m128d __DEFAULT_FN_ATTRS
+_mm_loadh_pd(__m128d __a, double const *__dp)
+{
+  struct __mm_loadh_pd_struct {
+    double __u;
+  } __attribute__((__packed__, __may_alias__));
+  double __u = ((struct __mm_loadh_pd_struct*)__dp)->__u;
+  return __extension__ (__m128d){ __a[0], __u };
+}
+
+/// Loads a double-precision value into the low-order bits of a 128-bit
+///    vector of [2 x double]. The high-order bits are copied from the
+///    high-order bits of the first operand.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VMOVLPD / MOVLPD </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [2 x double]. \n
+///    Bits [127:64] are written to bits [127:64] of the result.
+/// \param __dp
+///    A pointer to a 64-bit memory location containing a double-precision
+///    floating-point value that is loaded. The loaded value is written to bits
+///    [63:0] of the result. The address of the memory location does not have to
+///    be aligned.
+/// \returns A 128-bit vector of [2 x double] containing the moved values.
+static __inline__ __m128d __DEFAULT_FN_ATTRS
+_mm_loadl_pd(__m128d __a, double const *__dp)
+{
+  struct __mm_loadl_pd_struct {
+    double __u;
+  } __attribute__((__packed__, __may_alias__));
+  double __u = ((struct __mm_loadl_pd_struct*)__dp)->__u;
+  return __extension__ (__m128d){ __u, __a[1] };
+}
+
+/// Constructs a 128-bit floating-point vector of [2 x double] with
+///    unspecified content. This could be used as an argument to another
+///    intrinsic function where the argument is required but the value is not
+///    actually used.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic has no corresponding instruction.
+///
+/// \returns A 128-bit floating-point vector of [2 x double] with unspecified
+///    content.
+static __inline__ __m128d __DEFAULT_FN_ATTRS
+_mm_undefined_pd(void)
+{
+#ifdef __GNUC__
+  __m128d __X = __X;
+  return __X;
+#else
+  return (__m128d)__builtin_ia32_undef128();
+#endif
+}
+
+/// Constructs a 128-bit floating-point vector of [2 x double]. The lower
+///    64 bits of the vector are initialized with the specified double-precision
+///    floating-point value. The upper 64 bits are set to zero.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VMOVQ / MOVQ </c> instruction.
+///
+/// \param __w
+///    A double-precision floating-point value used to initialize the lower 64
+///    bits of the result.
+/// \returns An initialized 128-bit floating-point vector of [2 x double]. The
+///    lower 64 bits contain the value of the parameter. The upper 64 bits are
+///    set to zero.
+static __inline__ __m128d __DEFAULT_FN_ATTRS
+_mm_set_sd(double __w)
+{
+  return __extension__ (__m128d){ __w, 0 };
+}
+
+/// Constructs a 128-bit floating-point vector of [2 x double], with each
+///    of the two double-precision floating-point vector elements set to the
+///    specified double-precision floating-point value.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VMOVDDUP / MOVLHPS </c> instruction.
+///
+/// \param __w
+///    A double-precision floating-point value used to initialize each vector
+///    element of the result.
+/// \returns An initialized 128-bit floating-point vector of [2 x double].
+static __inline__ __m128d __DEFAULT_FN_ATTRS
+_mm_set1_pd(double __w)
+{
+  return __extension__ (__m128d){ __w, __w };
+}
+
+/// Constructs a 128-bit floating-point vector of [2 x double], with each
+///    of the two double-precision floating-point vector elements set to the
+///    specified double-precision floating-point value.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VMOVDDUP / MOVLHPS </c> instruction.
+///
+/// \param __w
+///    A double-precision floating-point value used to initialize each vector
+///    element of the result.
+/// \returns An initialized 128-bit floating-point vector of [2 x double].
+static __inline__ __m128d __DEFAULT_FN_ATTRS
+_mm_set_pd1(double __w)
+{
+  return _mm_set1_pd(__w);
+}
+
+/// Constructs a 128-bit floating-point vector of [2 x double]
+///    initialized with the specified double-precision floating-point values.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VUNPCKLPD / UNPCKLPD </c> instruction.
+///
+/// \param __w
+///    A double-precision floating-point value used to initialize the upper 64
+///    bits of the result.
+/// \param __x
+///    A double-precision floating-point value used to initialize the lower 64
+///    bits of the result.
+/// \returns An initialized 128-bit floating-point vector of [2 x double].
+static __inline__ __m128d __DEFAULT_FN_ATTRS
+_mm_set_pd(double __w, double __x)
+{
+  return __extension__ (__m128d){ __x, __w };
+}
+
+/// Constructs a 128-bit floating-point vector of [2 x double],
+///    initialized in reverse order with the specified double-precision
+///    floating-point values.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VUNPCKLPD / UNPCKLPD </c> instruction.
+///
+/// \param __w
+///    A double-precision floating-point value used to initialize the lower 64
+///    bits of the result.
+/// \param __x
+///    A double-precision floating-point value used to initialize the upper 64
+///    bits of the result.
+/// \returns An initialized 128-bit floating-point vector of [2 x double].
+static __inline__ __m128d __DEFAULT_FN_ATTRS
+_mm_setr_pd(double __w, double __x)
+{
+  return __extension__ (__m128d){ __w, __x };
+}
+
+/// Constructs a 128-bit floating-point vector of [2 x double]
+///    initialized to zero.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VXORPS / XORPS </c> instruction.
+///
+/// \returns An initialized 128-bit floating-point vector of [2 x double] with
+///    all elements set to zero.
+static __inline__ __m128d __DEFAULT_FN_ATTRS
+_mm_setzero_pd(void)
+{
+  return __extension__ (__m128d){ 0, 0 };
+}
+
+/// Constructs a 128-bit floating-point vector of [2 x double]. The lower
+///    64 bits are set to the lower 64 bits of the second parameter. The upper
+///    64 bits are set to the upper 64 bits of the first parameter.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VBLENDPD / BLENDPD </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [2 x double]. The upper 64 bits are written to the
+///    upper 64 bits of the result.
+/// \param __b
+///    A 128-bit vector of [2 x double]. The lower 64 bits are written to the
+///    lower 64 bits of the result.
+/// \returns A 128-bit vector of [2 x double] containing the moved values.
+static __inline__ __m128d __DEFAULT_FN_ATTRS
+_mm_move_sd(__m128d __a, __m128d __b)
+{
+  __a[0] = __b[0];
+  return __a;
+}
+
+/// Stores the lower 64 bits of a 128-bit vector of [2 x double] to a
+///    memory location.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VMOVSD / MOVSD </c> instruction.
+///
+/// \param __dp
+///    A pointer to a 64-bit memory location.
+/// \param __a
+///    A 128-bit vector of [2 x double] containing the value to be stored.
+static __inline__ void __DEFAULT_FN_ATTRS
+_mm_store_sd(double *__dp, __m128d __a)
+{
+  struct __mm_store_sd_struct {
+    double __u;
+  } __attribute__((__packed__, __may_alias__));
+  ((struct __mm_store_sd_struct*)__dp)->__u = __a[0];
+}
+
+/// Moves packed double-precision values from a 128-bit vector of
+///    [2 x double] to a memory location.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c>VMOVAPD / MOVAPS</c> instruction.
+///
+/// \param __dp
+///    A pointer to an aligned memory location that can store two
+///    double-precision values.
+/// \param __a
+///    A packed 128-bit vector of [2 x double] containing the values to be
+///    moved.
+static __inline__ void __DEFAULT_FN_ATTRS
+_mm_store_pd(double *__dp, __m128d __a)
+{
+  *(__m128d*)__dp = __a;
+}
+
+/// Moves the lower 64 bits of a 128-bit vector of [2 x double] twice to
+///    the upper and lower 64 bits of a memory location.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the
+///   <c> VMOVDDUP + VMOVAPD / MOVLHPS + MOVAPS </c> instruction.
+///
+/// \param __dp
+///    A pointer to a memory location that can store two double-precision
+///    values.
+/// \param __a
+///    A 128-bit vector of [2 x double] whose lower 64 bits are copied to each
+///    of the values in \a __dp.
+static __inline__ void __DEFAULT_FN_ATTRS
+_mm_store1_pd(double *__dp, __m128d __a)
+{
+#ifdef __GNUC__
+  _mm_store_pd (__dp, __builtin_ia32_shufpd (__a, __a, _MM_SHUFFLE2 (0,0)));
+#else
+  __a = __builtin_shufflevector((__v2df)__a, (__v2df)__a, 0, 0);
+  _mm_store_pd(__dp, __a);
+#endif
+}
+
+/// Moves the lower 64 bits of a 128-bit vector of [2 x double] twice to
+///    the upper and lower 64 bits of a memory location.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the
+///   <c> VMOVDDUP + VMOVAPD / MOVLHPS + MOVAPS </c> instruction.
+///
+/// \param __dp
+///    A pointer to a memory location that can store two double-precision
+///    values.
+/// \param __a
+///    A 128-bit vector of [2 x double] whose lower 64 bits are copied to each
+///    of the values in \a __dp.
+static __inline__ void __DEFAULT_FN_ATTRS
+_mm_store_pd1(double *__dp, __m128d __a)
+{
+  _mm_store1_pd(__dp, __a);
+}
+
+/// Stores a 128-bit vector of [2 x double] into an unaligned memory
+///    location.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VMOVUPD / MOVUPD </c> instruction.
+///
+/// \param __dp
+///    A pointer to a 128-bit memory location. The address of the memory
+///    location does not have to be aligned.
+/// \param __a
+///    A 128-bit vector of [2 x double] containing the values to be stored.
+static __inline__ void __DEFAULT_FN_ATTRS
+_mm_storeu_pd(double *__dp, __m128d __a)
+{
+  struct __storeu_pd {
+    __m128d __v;
+  } __attribute__((__packed__, __may_alias__));
+  ((struct __storeu_pd*)__dp)->__v = __a;
+}
+
+/// Stores two double-precision values, in reverse order, from a 128-bit
+///    vector of [2 x double] to a 16-byte aligned memory location.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to a shuffling instruction followed by a
+/// <c> VMOVAPD / MOVAPD </c> instruction.
+///
+/// \param __dp
+///    A pointer to a 16-byte aligned memory location that can store two
+///    double-precision values.
+/// \param __a
+///    A 128-bit vector of [2 x double] containing the values to be reversed and
+///    stored.
+static __inline__ void __DEFAULT_FN_ATTRS
+_mm_storer_pd(double *__dp, __m128d __a)
+{
+#ifdef __GNUC__
+  _mm_store_pd (__dp, __builtin_ia32_shufpd (__a, __a, _MM_SHUFFLE2 (0,1)));
+#else
+  __a = __builtin_shufflevector((__v2df)__a, (__v2df)__a, 1, 0);
+  *(__m128d *)__dp = __a;
+#endif
+}
+
+/// Stores the upper 64 bits of a 128-bit vector of [2 x double] to a
+///    memory location.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VMOVHPD / MOVHPD </c> instruction.
+///
+/// \param __dp
+///    A pointer to a 64-bit memory location.
+/// \param __a
+///    A 128-bit vector of [2 x double] containing the value to be stored.
+static __inline__ void __DEFAULT_FN_ATTRS
+_mm_storeh_pd(double *__dp, __m128d __a)
+{
+  struct __mm_storeh_pd_struct {
+    double __u;
+  } __attribute__((__packed__, __may_alias__));
+  ((struct __mm_storeh_pd_struct*)__dp)->__u = __a[1];
+}
+
+/// Stores the lower 64 bits of a 128-bit vector of [2 x double] to a
+///    memory location.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VMOVLPD / MOVLPD </c> instruction.
+///
+/// \param __dp
+///    A pointer to a 64-bit memory location.
+/// \param __a
+///    A 128-bit vector of [2 x double] containing the value to be stored.
+static __inline__ void __DEFAULT_FN_ATTRS
+_mm_storel_pd(double *__dp, __m128d __a)
+{
+  struct __mm_storeh_pd_struct {
+    double __u;
+  } __attribute__((__packed__, __may_alias__));
+  ((struct __mm_storeh_pd_struct*)__dp)->__u = __a[0];
+}
+
+/// Adds the corresponding elements of two 128-bit vectors of [16 x i8],
+///    saving the lower 8 bits of each sum in the corresponding element of a
+///    128-bit result vector of [16 x i8].
+///
+///    The integer elements of both parameters can be either signed or unsigned.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VPADDB / PADDB </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [16 x i8].
+/// \param __b
+///    A 128-bit vector of [16 x i8].
+/// \returns A 128-bit vector of [16 x i8] containing the sums of both
+///    parameters.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_add_epi8(__m128i __a, __m128i __b)
+{
+  return (__m128i)((__v16qu)__a + (__v16qu)__b);
+}
+
+/// Adds the corresponding elements of two 128-bit vectors of [8 x i16],
+///    saving the lower 16 bits of each sum in the corresponding element of a
+///    128-bit result vector of [8 x i16].
+///
+///    The integer elements of both parameters can be either signed or unsigned.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VPADDW / PADDW </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [8 x i16].
+/// \param __b
+///    A 128-bit vector of [8 x i16].
+/// \returns A 128-bit vector of [8 x i16] containing the sums of both
+///    parameters.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_add_epi16(__m128i __a, __m128i __b)
+{
+  return (__m128i)((__v8hu)__a + (__v8hu)__b);
+}
+
+/// Adds the corresponding elements of two 128-bit vectors of [4 x i32],
+///    saving the lower 32 bits of each sum in the corresponding element of a
+///    128-bit result vector of [4 x i32].
+///
+///    The integer elements of both parameters can be either signed or unsigned.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VPADDD / PADDD </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [4 x i32].
+/// \param __b
+///    A 128-bit vector of [4 x i32].
+/// \returns A 128-bit vector of [4 x i32] containing the sums of both
+///    parameters.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_add_epi32(__m128i __a, __m128i __b)
+{
+  return (__m128i)((__v4su)__a + (__v4su)__b);
+}
+
+/// Adds two signed or unsigned 64-bit integer values, returning the
+///    lower 64 bits of the sum.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> PADDQ </c> instruction.
+///
+/// \param __a
+///    A 64-bit integer.
+/// \param __b
+///    A 64-bit integer.
+/// \returns A 64-bit integer containing the sum of both parameters.
+#ifndef __GNUC__
+static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX
+_mm_add_si64(__m64 __a, __m64 __b)
+{
+  return (__m64)__builtin_ia32_paddq((__v1di)__a, (__v1di)__b);
+}
+#endif
+
+/// Adds the corresponding elements of two 128-bit vectors of [2 x i64],
+///    saving the lower 64 bits of each sum in the corresponding element of a
+///    128-bit result vector of [2 x i64].
+///
+///    The integer elements of both parameters can be either signed or unsigned.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VPADDQ / PADDQ </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [2 x i64].
+/// \param __b
+///    A 128-bit vector of [2 x i64].
+/// \returns A 128-bit vector of [2 x i64] containing the sums of both
+///    parameters.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_add_epi64(__m128i __a, __m128i __b)
+{
+  return (__m128i)((__v2du)__a + (__v2du)__b);
+}
+
+/// Adds, with saturation, the corresponding elements of two 128-bit
+///    signed [16 x i8] vectors, saving each sum in the corresponding element of
+///    a 128-bit result vector of [16 x i8]. Positive sums greater than 0x7F are
+///    saturated to 0x7F. Negative sums less than 0x80 are saturated to 0x80.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VPADDSB / PADDSB </c> instruction.
+///
+/// \param __a
+///    A 128-bit signed [16 x i8] vector.
+/// \param __b
+///    A 128-bit signed [16 x i8] vector.
+/// \returns A 128-bit signed [16 x i8] vector containing the saturated sums of
+///    both parameters.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_adds_epi8(__m128i __a, __m128i __b)
+{
+  return (__m128i)__builtin_ia32_paddsb128((__v16qi)__a, (__v16qi)__b);
+}
+
+/// Adds, with saturation, the corresponding elements of two 128-bit
+///    signed [8 x i16] vectors, saving each sum in the corresponding element of
+///    a 128-bit result vector of [8 x i16]. Positive sums greater than 0x7FFF
+///    are saturated to 0x7FFF. Negative sums less than 0x8000 are saturated to
+///    0x8000.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VPADDSW / PADDSW </c> instruction.
+///
+/// \param __a
+///    A 128-bit signed [8 x i16] vector.
+/// \param __b
+///    A 128-bit signed [8 x i16] vector.
+/// \returns A 128-bit signed [8 x i16] vector containing the saturated sums of
+///    both parameters.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_adds_epi16(__m128i __a, __m128i __b)
+{
+  return (__m128i)__builtin_ia32_paddsw128((__v8hi)__a, (__v8hi)__b);
+}
+
+/// Adds, with saturation, the corresponding elements of two 128-bit
+///    unsigned [16 x i8] vectors, saving each sum in the corresponding element
+///    of a 128-bit result vector of [16 x i8]. Positive sums greater than 0xFF
+///    are saturated to 0xFF. Negative sums are saturated to 0x00.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VPADDUSB / PADDUSB </c> instruction.
+///
+/// \param __a
+///    A 128-bit unsigned [16 x i8] vector.
+/// \param __b
+///    A 128-bit unsigned [16 x i8] vector.
+/// \returns A 128-bit unsigned [16 x i8] vector containing the saturated sums
+///    of both parameters.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_adds_epu8(__m128i __a, __m128i __b)
+{
+  return (__m128i)__builtin_ia32_paddusb128((__v16qi)__a, (__v16qi)__b);
+}
+
+/// Adds, with saturation, the corresponding elements of two 128-bit
+///    unsigned [8 x i16] vectors, saving each sum in the corresponding element
+///    of a 128-bit result vector of [8 x i16]. Positive sums greater than
+///    0xFFFF are saturated to 0xFFFF. Negative sums are saturated to 0x0000.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VPADDUSB / PADDUSB </c> instruction.
+///
+/// \param __a
+///    A 128-bit unsigned [8 x i16] vector.
+/// \param __b
+///    A 128-bit unsigned [8 x i16] vector.
+/// \returns A 128-bit unsigned [8 x i16] vector containing the saturated sums
+///    of both parameters.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_adds_epu16(__m128i __a, __m128i __b)
+{
+  return (__m128i)__builtin_ia32_paddusw128((__v8hi)__a, (__v8hi)__b);
+}
+
+/// Computes the rounded avarages of corresponding elements of two
+///    128-bit unsigned [16 x i8] vectors, saving each result in the
+///    corresponding element of a 128-bit result vector of [16 x i8].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VPAVGB / PAVGB </c> instruction.
+///
+/// \param __a
+///    A 128-bit unsigned [16 x i8] vector.
+/// \param __b
+///    A 128-bit unsigned [16 x i8] vector.
+/// \returns A 128-bit unsigned [16 x i8] vector containing the rounded
+///    averages of both parameters.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_avg_epu8(__m128i __a, __m128i __b)
+{
+#ifdef __GNUC__
+  return (__m128i)__builtin_ia32_pavgb128 ((__v16qi)__a, (__v16qi)__b);
+#else
+  typedef unsigned short __v16hu __attribute__ ((__vector_size__ (32)));
+  return (__m128i)__builtin_convertvector(
+               ((__builtin_convertvector((__v16qu)__a, __v16hu) +
+                 __builtin_convertvector((__v16qu)__b, __v16hu)) + 1)
+                 >> 1, __v16qu);
+#endif
+}
+
+/// Computes the rounded avarages of corresponding elements of two
+///    128-bit unsigned [8 x i16] vectors, saving each result in the
+///    corresponding element of a 128-bit result vector of [8 x i16].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VPAVGW / PAVGW </c> instruction.
+///
+/// \param __a
+///    A 128-bit unsigned [8 x i16] vector.
+/// \param __b
+///    A 128-bit unsigned [8 x i16] vector.
+/// \returns A 128-bit unsigned [8 x i16] vector containing the rounded
+///    averages of both parameters.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_avg_epu16(__m128i __a, __m128i __b)
+{
+#ifdef __GNUC__
+  return (__m128i)__builtin_ia32_pavgw128 ((__v8hi)__a, (__v8hi)__b);
+#else
+  typedef unsigned int __v8su __attribute__ ((__vector_size__ (32)));
+  return (__m128i)__builtin_convertvector(
+               ((__builtin_convertvector((__v8hu)__a, __v8su) +
+                 __builtin_convertvector((__v8hu)__b, __v8su)) + 1)
+                 >> 1, __v8hu);
+#endif
+}
+
+/// Multiplies the corresponding elements of two 128-bit signed [8 x i16]
+///    vectors, producing eight intermediate 32-bit signed integer products, and
+///    adds the consecutive pairs of 32-bit products to form a 128-bit signed
+///    [4 x i32] vector.
+///
+///    For example, bits [15:0] of both parameters are multiplied producing a
+///    32-bit product, bits [31:16] of both parameters are multiplied producing
+///    a 32-bit product, and the sum of those two products becomes bits [31:0]
+///    of the result.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VPMADDWD / PMADDWD </c> instruction.
+///
+/// \param __a
+///    A 128-bit signed [8 x i16] vector.
+/// \param __b
+///    A 128-bit signed [8 x i16] vector.
+/// \returns A 128-bit signed [4 x i32] vector containing the sums of products
+///    of both parameters.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_madd_epi16(__m128i __a, __m128i __b)
+{
+  return (__m128i)__builtin_ia32_pmaddwd128((__v8hi)__a, (__v8hi)__b);
+}
+
+/// Compares corresponding elements of two 128-bit signed [8 x i16]
+///    vectors, saving the greater value from each comparison in the
+///    corresponding element of a 128-bit result vector of [8 x i16].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VPMAXSW / PMAXSW </c> instruction.
+///
+/// \param __a
+///    A 128-bit signed [8 x i16] vector.
+/// \param __b
+///    A 128-bit signed [8 x i16] vector.
+/// \returns A 128-bit signed [8 x i16] vector containing the greater value of
+///    each comparison.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_max_epi16(__m128i __a, __m128i __b)
+{
+  return (__m128i)__builtin_ia32_pmaxsw128((__v8hi)__a, (__v8hi)__b);
+}
+
+/// Compares corresponding elements of two 128-bit unsigned [16 x i8]
+///    vectors, saving the greater value from each comparison in the
+///    corresponding element of a 128-bit result vector of [16 x i8].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VPMAXUB / PMAXUB </c> instruction.
+///
+/// \param __a
+///    A 128-bit unsigned [16 x i8] vector.
+/// \param __b
+///    A 128-bit unsigned [16 x i8] vector.
+/// \returns A 128-bit unsigned [16 x i8] vector containing the greater value of
+///    each comparison.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_max_epu8(__m128i __a, __m128i __b)
+{
+  return (__m128i)__builtin_ia32_pmaxub128((__v16qi)__a, (__v16qi)__b);
+}
+
+/// Compares corresponding elements of two 128-bit signed [8 x i16]
+///    vectors, saving the smaller value from each comparison in the
+///    corresponding element of a 128-bit result vector of [8 x i16].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VPMINSW / PMINSW </c> instruction.
+///
+/// \param __a
+///    A 128-bit signed [8 x i16] vector.
+/// \param __b
+///    A 128-bit signed [8 x i16] vector.
+/// \returns A 128-bit signed [8 x i16] vector containing the smaller value of
+///    each comparison.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_min_epi16(__m128i __a, __m128i __b)
+{
+  return (__m128i)__builtin_ia32_pminsw128((__v8hi)__a, (__v8hi)__b);
+}
+
+/// Compares corresponding elements of two 128-bit unsigned [16 x i8]
+///    vectors, saving the smaller value from each comparison in the
+///    corresponding element of a 128-bit result vector of [16 x i8].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VPMINUB / PMINUB </c> instruction.
+///
+/// \param __a
+///    A 128-bit unsigned [16 x i8] vector.
+/// \param __b
+///    A 128-bit unsigned [16 x i8] vector.
+/// \returns A 128-bit unsigned [16 x i8] vector containing the smaller value of
+///    each comparison.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_min_epu8(__m128i __a, __m128i __b)
+{
+  return (__m128i)__builtin_ia32_pminub128((__v16qi)__a, (__v16qi)__b);
+}
+
+/// Multiplies the corresponding elements of two signed [8 x i16]
+///    vectors, saving the upper 16 bits of each 32-bit product in the
+///    corresponding element of a 128-bit signed [8 x i16] result vector.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VPMULHW / PMULHW </c> instruction.
+///
+/// \param __a
+///    A 128-bit signed [8 x i16] vector.
+/// \param __b
+///    A 128-bit signed [8 x i16] vector.
+/// \returns A 128-bit signed [8 x i16] vector containing the upper 16 bits of
+///    each of the eight 32-bit products.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_mulhi_epi16(__m128i __a, __m128i __b)
+{
+  return (__m128i)__builtin_ia32_pmulhw128((__v8hi)__a, (__v8hi)__b);
+}
+
+/// Multiplies the corresponding elements of two unsigned [8 x i16]
+///    vectors, saving the upper 16 bits of each 32-bit product in the
+///    corresponding element of a 128-bit unsigned [8 x i16] result vector.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VPMULHUW / PMULHUW </c> instruction.
+///
+/// \param __a
+///    A 128-bit unsigned [8 x i16] vector.
+/// \param __b
+///    A 128-bit unsigned [8 x i16] vector.
+/// \returns A 128-bit unsigned [8 x i16] vector containing the upper 16 bits
+///    of each of the eight 32-bit products.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_mulhi_epu16(__m128i __a, __m128i __b)
+{
+  return (__m128i)__builtin_ia32_pmulhuw128((__v8hi)__a, (__v8hi)__b);
+}
+
+/// Multiplies the corresponding elements of two signed [8 x i16]
+///    vectors, saving the lower 16 bits of each 32-bit product in the
+///    corresponding element of a 128-bit signed [8 x i16] result vector.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VPMULLW / PMULLW </c> instruction.
+///
+/// \param __a
+///    A 128-bit signed [8 x i16] vector.
+/// \param __b
+///    A 128-bit signed [8 x i16] vector.
+/// \returns A 128-bit signed [8 x i16] vector containing the lower 16 bits of
+///    each of the eight 32-bit products.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_mullo_epi16(__m128i __a, __m128i __b)
+{
+  return (__m128i)((__v8hu)__a * (__v8hu)__b);
+}
+
+/// Multiplies 32-bit unsigned integer values contained in the lower bits
+///    of the two 64-bit integer vectors and returns the 64-bit unsigned
+///    product.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> PMULUDQ </c> instruction.
+///
+/// \param __a
+///    A 64-bit integer containing one of the source operands.
+/// \param __b
+///    A 64-bit integer containing one of the source operands.
+/// \returns A 64-bit integer vector containing the product of both operands.
+static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX
+_mm_mul_su32(__m64 __a, __m64 __b)
+{
+#ifdef __GNUC__
+  return (__m64)__builtin_ia32_pmuludq ((__v2si)__a, (__v2si)__b);
+#else
+  return __builtin_ia32_pmuludq((__v2si)__a, (__v2si)__b);
+#endif
+}
+
+/// Multiplies 32-bit unsigned integer values contained in the lower
+///    bits of the corresponding elements of two [2 x i64] vectors, and returns
+///    the 64-bit products in the corresponding elements of a [2 x i64] vector.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VPMULUDQ / PMULUDQ </c> instruction.
+///
+/// \param __a
+///    A [2 x i64] vector containing one of the source operands.
+/// \param __b
+///    A [2 x i64] vector containing one of the source operands.
+/// \returns A [2 x i64] vector containing the product of both operands.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_mul_epu32(__m128i __a, __m128i __b)
+{
+  return __builtin_ia32_pmuludq128((__v4si)__a, (__v4si)__b);
+}
+
+/// Computes the absolute differences of corresponding 8-bit integer
+///    values in two 128-bit vectors. Sums the first 8 absolute differences, and
+///    separately sums the second 8 absolute differences. Packs these two
+///    unsigned 16-bit integer sums into the upper and lower elements of a
+///    [2 x i64] vector.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VPSADBW / PSADBW </c> instruction.
+///
+/// \param __a
+///    A 128-bit integer vector containing one of the source operands.
+/// \param __b
+///    A 128-bit integer vector containing one of the source operands.
+/// \returns A [2 x i64] vector containing the sums of the sets of absolute
+///    differences between both operands.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_sad_epu8(__m128i __a, __m128i __b)
+{
+  return __builtin_ia32_psadbw128((__v16qi)__a, (__v16qi)__b);
+}
+
+/// Subtracts the corresponding 8-bit integer values in the operands.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VPSUBB / PSUBB </c> instruction.
+///
+/// \param __a
+///    A 128-bit integer vector containing the minuends.
+/// \param __b
+///    A 128-bit integer vector containing the subtrahends.
+/// \returns A 128-bit integer vector containing the differences of the values
+///    in the operands.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_sub_epi8(__m128i __a, __m128i __b)
+{
+  return (__m128i)((__v16qu)__a - (__v16qu)__b);
+}
+
+/// Subtracts the corresponding 16-bit integer values in the operands.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VPSUBW / PSUBW </c> instruction.
+///
+/// \param __a
+///    A 128-bit integer vector containing the minuends.
+/// \param __b
+///    A 128-bit integer vector containing the subtrahends.
+/// \returns A 128-bit integer vector containing the differences of the values
+///    in the operands.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_sub_epi16(__m128i __a, __m128i __b)
+{
+  return (__m128i)((__v8hu)__a - (__v8hu)__b);
+}
+
+/// Subtracts the corresponding 32-bit integer values in the operands.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VPSUBD / PSUBD </c> instruction.
+///
+/// \param __a
+///    A 128-bit integer vector containing the minuends.
+/// \param __b
+///    A 128-bit integer vector containing the subtrahends.
+/// \returns A 128-bit integer vector containing the differences of the values
+///    in the operands.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_sub_epi32(__m128i __a, __m128i __b)
+{
+  return (__m128i)((__v4su)__a - (__v4su)__b);
+}
+
+/// Subtracts signed or unsigned 64-bit integer values and writes the
+///    difference to the corresponding bits in the destination.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> PSUBQ </c> instruction.
+///
+/// \param __a
+///    A 64-bit integer vector containing the minuend.
+/// \param __b
+///    A 64-bit integer vector containing the subtrahend.
+/// \returns A 64-bit integer vector containing the difference of the values in
+///    the operands.
+
+#ifndef __GNUC__
+static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX
+_mm_sub_si64(__m64 __a, __m64 __b)
+{
+  return (__m64)__builtin_ia32_psubq((__v1di)__a, (__v1di)__b);
+}
+#endif
+
+/// Subtracts the corresponding elements of two [2 x i64] vectors.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VPSUBQ / PSUBQ </c> instruction.
+///
+/// \param __a
+///    A 128-bit integer vector containing the minuends.
+/// \param __b
+///    A 128-bit integer vector containing the subtrahends.
+/// \returns A 128-bit integer vector containing the differences of the values
+///    in the operands.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_sub_epi64(__m128i __a, __m128i __b)
+{
+  return (__m128i)((__v2du)__a - (__v2du)__b);
+}
+
+/// Subtracts corresponding 8-bit signed integer values in the input and
+///    returns the differences in the corresponding bytes in the destination.
+///    Differences greater than 0x7F are saturated to 0x7F, and differences less
+///    than 0x80 are saturated to 0x80.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VPSUBSB / PSUBSB </c> instruction.
+///
+/// \param __a
+///    A 128-bit integer vector containing the minuends.
+/// \param __b
+///    A 128-bit integer vector containing the subtrahends.
+/// \returns A 128-bit integer vector containing the differences of the values
+///    in the operands.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_subs_epi8(__m128i __a, __m128i __b)
+{
+  return (__m128i)__builtin_ia32_psubsb128((__v16qi)__a, (__v16qi)__b);
+}
+
+/// Subtracts corresponding 16-bit signed integer values in the input and
+///    returns the differences in the corresponding bytes in the destination.
+///    Differences greater than 0x7FFF are saturated to 0x7FFF, and values less
+///    than 0x8000 are saturated to 0x8000.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VPSUBSW / PSUBSW </c> instruction.
+///
+/// \param __a
+///    A 128-bit integer vector containing the minuends.
+/// \param __b
+///    A 128-bit integer vector containing the subtrahends.
+/// \returns A 128-bit integer vector containing the differences of the values
+///    in the operands.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_subs_epi16(__m128i __a, __m128i __b)
+{
+  return (__m128i)__builtin_ia32_psubsw128((__v8hi)__a, (__v8hi)__b);
+}
+
+/// Subtracts corresponding 8-bit unsigned integer values in the input
+///    and returns the differences in the corresponding bytes in the
+///    destination. Differences less than 0x00 are saturated to 0x00.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VPSUBUSB / PSUBUSB </c> instruction.
+///
+/// \param __a
+///    A 128-bit integer vector containing the minuends.
+/// \param __b
+///    A 128-bit integer vector containing the subtrahends.
+/// \returns A 128-bit integer vector containing the unsigned integer
+///    differences of the values in the operands.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_subs_epu8(__m128i __a, __m128i __b)
+{
+  return (__m128i)__builtin_ia32_psubusb128((__v16qi)__a, (__v16qi)__b);
+}
+
+/// Subtracts corresponding 16-bit unsigned integer values in the input
+///    and returns the differences in the corresponding bytes in the
+///    destination. Differences less than 0x0000 are saturated to 0x0000.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VPSUBUSW / PSUBUSW </c> instruction.
+///
+/// \param __a
+///    A 128-bit integer vector containing the minuends.
+/// \param __b
+///    A 128-bit integer vector containing the subtrahends.
+/// \returns A 128-bit integer vector containing the unsigned integer
+///    differences of the values in the operands.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_subs_epu16(__m128i __a, __m128i __b)
+{
+  return (__m128i)__builtin_ia32_psubusw128((__v8hi)__a, (__v8hi)__b);
+}
+
+/// Performs a bitwise AND of two 128-bit integer vectors.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VPAND / PAND </c> instruction.
+///
+/// \param __a
+///    A 128-bit integer vector containing one of the source operands.
+/// \param __b
+///    A 128-bit integer vector containing one of the source operands.
+/// \returns A 128-bit integer vector containing the bitwise AND of the values
+///    in both operands.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_and_si128(__m128i __a, __m128i __b)
+{
+  return (__m128i)((__v2du)__a & (__v2du)__b);
+}
+
+/// Performs a bitwise AND of two 128-bit integer vectors, using the
+///    one's complement of the values contained in the first source operand.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VPANDN / PANDN </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector containing the left source operand. The one's complement
+///    of this value is used in the bitwise AND.
+/// \param __b
+///    A 128-bit vector containing the right source operand.
+/// \returns A 128-bit integer vector containing the bitwise AND of the one's
+///    complement of the first operand and the values in the second operand.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_andnot_si128(__m128i __a, __m128i __b)
+{
+  return (__m128i)(~(__v2du)__a & (__v2du)__b);
+}
+/// Performs a bitwise OR of two 128-bit integer vectors.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VPOR / POR </c> instruction.
+///
+/// \param __a
+///    A 128-bit integer vector containing one of the source operands.
+/// \param __b
+///    A 128-bit integer vector containing one of the source operands.
+/// \returns A 128-bit integer vector containing the bitwise OR of the values
+///    in both operands.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_or_si128(__m128i __a, __m128i __b)
+{
+  return (__m128i)((__v2du)__a | (__v2du)__b);
+}
+
+/// Performs a bitwise exclusive OR of two 128-bit integer vectors.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VPXOR / PXOR </c> instruction.
+///
+/// \param __a
+///    A 128-bit integer vector containing one of the source operands.
+/// \param __b
+///    A 128-bit integer vector containing one of the source operands.
+/// \returns A 128-bit integer vector containing the bitwise exclusive OR of the
+///    values in both operands.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_xor_si128(__m128i __a, __m128i __b)
+{
+  return (__m128i)((__v2du)__a ^ (__v2du)__b);
+}
+
+/// Left-shifts the 128-bit integer vector operand by the specified
+///    number of bytes. Low-order bits are cleared.
+///
+/// \headerfile <x86intrin.h>
+///
+/// \code
+/// __m128i _mm_slli_si128(__m128i a, const int imm);
+/// \endcode
+///
+/// This intrinsic corresponds to the <c> VPSLLDQ / PSLLDQ </c> instruction.
+///
+/// \param a
+///    A 128-bit integer vector containing the source operand.
+/// \param imm
+///    An immediate value specifying the number of bytes to left-shift operand
+///    \a a.
+/// \returns A 128-bit integer vector containing the left-shifted value.
+#define _mm_slli_si128(a, imm) \
+  (__m128i)__builtin_ia32_pslldqi128_byteshift((__v2di)(__m128i)(a), (int)(imm))
+
+#define _mm_bslli_si128(a, imm) \
+  (__m128i)__builtin_ia32_pslldqi128_byteshift((__v2di)(__m128i)(a), (int)(imm))
+
+/// Left-shifts each 16-bit value in the 128-bit integer vector operand
+///    by the specified number of bits. Low-order bits are cleared.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VPSLLW / PSLLW </c> instruction.
+///
+/// \param __a
+///    A 128-bit integer vector containing the source operand.
+/// \param __count
+///    An integer value specifying the number of bits to left-shift each value
+///    in operand \a __a.
+/// \returns A 128-bit integer vector containing the left-shifted values.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_slli_epi16(__m128i __a, int __count)
+{
+  return (__m128i)__builtin_ia32_psllwi128((__v8hi)__a, __count);
+}
+
+/// Left-shifts each 16-bit value in the 128-bit integer vector operand
+///    by the specified number of bits. Low-order bits are cleared.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VPSLLW / PSLLW </c> instruction.
+///
+/// \param __a
+///    A 128-bit integer vector containing the source operand.
+/// \param __count
+///    A 128-bit integer vector in which bits [63:0] specify the number of bits
+///    to left-shift each value in operand \a __a.
+/// \returns A 128-bit integer vector containing the left-shifted values.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_sll_epi16(__m128i __a, __m128i __count)
+{
+  return (__m128i)__builtin_ia32_psllw128((__v8hi)__a, (__v8hi)__count);
+}
+
+/// Left-shifts each 32-bit value in the 128-bit integer vector operand
+///    by the specified number of bits. Low-order bits are cleared.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VPSLLD / PSLLD </c> instruction.
+///
+/// \param __a
+///    A 128-bit integer vector containing the source operand.
+/// \param __count
+///    An integer value specifying the number of bits to left-shift each value
+///    in operand \a __a.
+/// \returns A 128-bit integer vector containing the left-shifted values.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_slli_epi32(__m128i __a, int __count)
+{
+  return (__m128i)__builtin_ia32_pslldi128((__v4si)__a, __count);
+}
+
+/// Left-shifts each 32-bit value in the 128-bit integer vector operand
+///    by the specified number of bits. Low-order bits are cleared.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VPSLLD / PSLLD </c> instruction.
+///
+/// \param __a
+///    A 128-bit integer vector containing the source operand.
+/// \param __count
+///    A 128-bit integer vector in which bits [63:0] specify the number of bits
+///    to left-shift each value in operand \a __a.
+/// \returns A 128-bit integer vector containing the left-shifted values.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_sll_epi32(__m128i __a, __m128i __count)
+{
+  return (__m128i)__builtin_ia32_pslld128((__v4si)__a, (__v4si)__count);
+}
+
+/// Left-shifts each 64-bit value in the 128-bit integer vector operand
+///    by the specified number of bits. Low-order bits are cleared.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VPSLLQ / PSLLQ </c> instruction.
+///
+/// \param __a
+///    A 128-bit integer vector containing the source operand.
+/// \param __count
+///    An integer value specifying the number of bits to left-shift each value
+///    in operand \a __a.
+/// \returns A 128-bit integer vector containing the left-shifted values.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_slli_epi64(__m128i __a, int __count)
+{
+  return __builtin_ia32_psllqi128((__v2di)__a, __count);
+}
+
+/// Left-shifts each 64-bit value in the 128-bit integer vector operand
+///    by the specified number of bits. Low-order bits are cleared.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VPSLLQ / PSLLQ </c> instruction.
+///
+/// \param __a
+///    A 128-bit integer vector containing the source operand.
+/// \param __count
+///    A 128-bit integer vector in which bits [63:0] specify the number of bits
+///    to left-shift each value in operand \a __a.
+/// \returns A 128-bit integer vector containing the left-shifted values.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_sll_epi64(__m128i __a, __m128i __count)
+{
+  return __builtin_ia32_psllq128((__v2di)__a, (__v2di)__count);
+}
+
+/// Right-shifts each 16-bit value in the 128-bit integer vector operand
+///    by the specified number of bits. High-order bits are filled with the sign
+///    bit of the initial value.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VPSRAW / PSRAW </c> instruction.
+///
+/// \param __a
+///    A 128-bit integer vector containing the source operand.
+/// \param __count
+///    An integer value specifying the number of bits to right-shift each value
+///    in operand \a __a.
+/// \returns A 128-bit integer vector containing the right-shifted values.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_srai_epi16(__m128i __a, int __count)
+{
+  return (__m128i)__builtin_ia32_psrawi128((__v8hi)__a, __count);
+}
+
+/// Right-shifts each 16-bit value in the 128-bit integer vector operand
+///    by the specified number of bits. High-order bits are filled with the sign
+///    bit of the initial value.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VPSRAW / PSRAW </c> instruction.
+///
+/// \param __a
+///    A 128-bit integer vector containing the source operand.
+/// \param __count
+///    A 128-bit integer vector in which bits [63:0] specify the number of bits
+///    to right-shift each value in operand \a __a.
+/// \returns A 128-bit integer vector containing the right-shifted values.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_sra_epi16(__m128i __a, __m128i __count)
+{
+  return (__m128i)__builtin_ia32_psraw128((__v8hi)__a, (__v8hi)__count);
+}
+
+/// Right-shifts each 32-bit value in the 128-bit integer vector operand
+///    by the specified number of bits. High-order bits are filled with the sign
+///    bit of the initial value.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VPSRAD / PSRAD </c> instruction.
+///
+/// \param __a
+///    A 128-bit integer vector containing the source operand.
+/// \param __count
+///    An integer value specifying the number of bits to right-shift each value
+///    in operand \a __a.
+/// \returns A 128-bit integer vector containing the right-shifted values.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_srai_epi32(__m128i __a, int __count)
+{
+  return (__m128i)__builtin_ia32_psradi128((__v4si)__a, __count);
+}
+
+/// Right-shifts each 32-bit value in the 128-bit integer vector operand
+///    by the specified number of bits. High-order bits are filled with the sign
+///    bit of the initial value.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VPSRAD / PSRAD </c> instruction.
+///
+/// \param __a
+///    A 128-bit integer vector containing the source operand.
+/// \param __count
+///    A 128-bit integer vector in which bits [63:0] specify the number of bits
+///    to right-shift each value in operand \a __a.
+/// \returns A 128-bit integer vector containing the right-shifted values.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_sra_epi32(__m128i __a, __m128i __count)
+{
+  return (__m128i)__builtin_ia32_psrad128((__v4si)__a, (__v4si)__count);
+}
+
+/// Right-shifts the 128-bit integer vector operand by the specified
+///    number of bytes. High-order bits are cleared.
+///
+/// \headerfile <x86intrin.h>
+///
+/// \code
+/// __m128i _mm_srli_si128(__m128i a, const int imm);
+/// \endcode
+///
+/// This intrinsic corresponds to the <c> VPSRLDQ / PSRLDQ </c> instruction.
+///
+/// \param a
+///    A 128-bit integer vector containing the source operand.
+/// \param imm
+///    An immediate value specifying the number of bytes to right-shift operand
+///    \a a.
+/// \returns A 128-bit integer vector containing the right-shifted value.
+#ifdef __GNUC__
+#define _mm_bsrli_si128(a, n) \
+    ((__m128i)__builtin_ia32_psrldqi128 ((__m128i)(a), (int)(n) * 8))
+#define _mm_srli_si128(a, n) \
+    ((__m128i)__builtin_ia32_psrldqi128 ((__m128i)(a), (int)(n) * 8))
+#else
+#define _mm_srli_si128(a, imm) \
+  (__m128i)__builtin_ia32_psrldqi128_byteshift((__v2di)(__m128i)(a), (int)(imm))
+#define _mm_bsrli_si128(a, imm) \
+  (__m128i)__builtin_ia32_psrldqi128_byteshift((__v2di)(__m128i)(a), (int)(imm))
+#endif
+
+
+/// Right-shifts each of 16-bit values in the 128-bit integer vector
+///    operand by the specified number of bits. High-order bits are cleared.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VPSRLW / PSRLW </c> instruction.
+///
+/// \param __a
+///    A 128-bit integer vector containing the source operand.
+/// \param __count
+///    An integer value specifying the number of bits to right-shift each value
+///    in operand \a __a.
+/// \returns A 128-bit integer vector containing the right-shifted values.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_srli_epi16(__m128i __a, int __count)
+{
+  return (__m128i)__builtin_ia32_psrlwi128((__v8hi)__a, __count);
+}
+
+/// Right-shifts each of 16-bit values in the 128-bit integer vector
+///    operand by the specified number of bits. High-order bits are cleared.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VPSRLW / PSRLW </c> instruction.
+///
+/// \param __a
+///    A 128-bit integer vector containing the source operand.
+/// \param __count
+///    A 128-bit integer vector in which bits [63:0] specify the number of bits
+///    to right-shift each value in operand \a __a.
+/// \returns A 128-bit integer vector containing the right-shifted values.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_srl_epi16(__m128i __a, __m128i __count)
+{
+  return (__m128i)__builtin_ia32_psrlw128((__v8hi)__a, (__v8hi)__count);
+}
+
+/// Right-shifts each of 32-bit values in the 128-bit integer vector
+///    operand by the specified number of bits. High-order bits are cleared.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VPSRLD / PSRLD </c> instruction.
+///
+/// \param __a
+///    A 128-bit integer vector containing the source operand.
+/// \param __count
+///    An integer value specifying the number of bits to right-shift each value
+///    in operand \a __a.
+/// \returns A 128-bit integer vector containing the right-shifted values.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_srli_epi32(__m128i __a, int __count)
+{
+  return (__m128i)__builtin_ia32_psrldi128((__v4si)__a, __count);
+}
+
+/// Right-shifts each of 32-bit values in the 128-bit integer vector
+///    operand by the specified number of bits. High-order bits are cleared.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VPSRLD / PSRLD </c> instruction.
+///
+/// \param __a
+///    A 128-bit integer vector containing the source operand.
+/// \param __count
+///    A 128-bit integer vector in which bits [63:0] specify the number of bits
+///    to right-shift each value in operand \a __a.
+/// \returns A 128-bit integer vector containing the right-shifted values.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_srl_epi32(__m128i __a, __m128i __count)
+{
+  return (__m128i)__builtin_ia32_psrld128((__v4si)__a, (__v4si)__count);
+}
+
+/// Right-shifts each of 64-bit values in the 128-bit integer vector
+///    operand by the specified number of bits. High-order bits are cleared.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VPSRLQ / PSRLQ </c> instruction.
+///
+/// \param __a
+///    A 128-bit integer vector containing the source operand.
+/// \param __count
+///    An integer value specifying the number of bits to right-shift each value
+///    in operand \a __a.
+/// \returns A 128-bit integer vector containing the right-shifted values.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_srli_epi64(__m128i __a, int __count)
+{
+  return __builtin_ia32_psrlqi128((__v2di)__a, __count);
+}
+
+/// Right-shifts each of 64-bit values in the 128-bit integer vector
+///    operand by the specified number of bits. High-order bits are cleared.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VPSRLQ / PSRLQ </c> instruction.
+///
+/// \param __a
+///    A 128-bit integer vector containing the source operand.
+/// \param __count
+///    A 128-bit integer vector in which bits [63:0] specify the number of bits
+///    to right-shift each value in operand \a __a.
+/// \returns A 128-bit integer vector containing the right-shifted values.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_srl_epi64(__m128i __a, __m128i __count)
+{
+  return __builtin_ia32_psrlq128((__v2di)__a, (__v2di)__count);
+}
+
+/// Compares each of the corresponding 8-bit values of the 128-bit
+///    integer vectors for equality. Each comparison yields 0x0 for false, 0xFF
+///    for true.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VPCMPEQB / PCMPEQB </c> instruction.
+///
+/// \param __a
+///    A 128-bit integer vector.
+/// \param __b
+///    A 128-bit integer vector.
+/// \returns A 128-bit integer vector containing the comparison results.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_cmpeq_epi8(__m128i __a, __m128i __b)
+{
+  return (__m128i)((__v16qi)__a == (__v16qi)__b);
+}
+
+/// Compares each of the corresponding 16-bit values of the 128-bit
+///    integer vectors for equality. Each comparison yields 0x0 for false,
+///    0xFFFF for true.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VPCMPEQW / PCMPEQW </c> instruction.
+///
+/// \param __a
+///    A 128-bit integer vector.
+/// \param __b
+///    A 128-bit integer vector.
+/// \returns A 128-bit integer vector containing the comparison results.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_cmpeq_epi16(__m128i __a, __m128i __b)
+{
+  return (__m128i)((__v8hi)__a == (__v8hi)__b);
+}
+
+/// Compares each of the corresponding 32-bit values of the 128-bit
+///    integer vectors for equality. Each comparison yields 0x0 for false,
+///    0xFFFFFFFF for true.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VPCMPEQD / PCMPEQD </c> instruction.
+///
+/// \param __a
+///    A 128-bit integer vector.
+/// \param __b
+///    A 128-bit integer vector.
+/// \returns A 128-bit integer vector containing the comparison results.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_cmpeq_epi32(__m128i __a, __m128i __b)
+{
+  return (__m128i)((__v4si)__a == (__v4si)__b);
+}
+
+/// Compares each of the corresponding signed 8-bit values of the 128-bit
+///    integer vectors to determine if the values in the first operand are
+///    greater than those in the second operand. Each comparison yields 0x0 for
+///    false, 0xFF for true.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VPCMPGTB / PCMPGTB </c> instruction.
+///
+/// \param __a
+///    A 128-bit integer vector.
+/// \param __b
+///    A 128-bit integer vector.
+/// \returns A 128-bit integer vector containing the comparison results.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_cmpgt_epi8(__m128i __a, __m128i __b)
+{
+  /* This function always performs a signed comparison, but __v16qi is a char
+     which may be signed or unsigned, so use __v16qs. */
+  return (__m128i)((__v16qs)__a > (__v16qs)__b);
+}
+
+/// Compares each of the corresponding signed 16-bit values of the
+///    128-bit integer vectors to determine if the values in the first operand
+///    are greater than those in the second operand.
+///
+///    Each comparison yields 0x0 for false, 0xFFFF for true.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VPCMPGTW / PCMPGTW </c> instruction.
+///
+/// \param __a
+///    A 128-bit integer vector.
+/// \param __b
+///    A 128-bit integer vector.
+/// \returns A 128-bit integer vector containing the comparison results.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_cmpgt_epi16(__m128i __a, __m128i __b)
+{
+  return (__m128i)((__v8hi)__a > (__v8hi)__b);
+}
+
+/// Compares each of the corresponding signed 32-bit values of the
+///    128-bit integer vectors to determine if the values in the first operand
+///    are greater than those in the second operand.
+///
+///    Each comparison yields 0x0 for false, 0xFFFFFFFF for true.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VPCMPGTD / PCMPGTD </c> instruction.
+///
+/// \param __a
+///    A 128-bit integer vector.
+/// \param __b
+///    A 128-bit integer vector.
+/// \returns A 128-bit integer vector containing the comparison results.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_cmpgt_epi32(__m128i __a, __m128i __b)
+{
+  return (__m128i)((__v4si)__a > (__v4si)__b);
+}
+
+/// Compares each of the corresponding signed 8-bit values of the 128-bit
+///    integer vectors to determine if the values in the first operand are less
+///    than those in the second operand.
+///
+///    Each comparison yields 0x0 for false, 0xFF for true.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VPCMPGTB / PCMPGTB </c> instruction.
+///
+/// \param __a
+///    A 128-bit integer vector.
+/// \param __b
+///    A 128-bit integer vector.
+/// \returns A 128-bit integer vector containing the comparison results.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_cmplt_epi8(__m128i __a, __m128i __b)
+{
+  return _mm_cmpgt_epi8(__b, __a);
+}
+
+/// Compares each of the corresponding signed 16-bit values of the
+///    128-bit integer vectors to determine if the values in the first operand
+///    are less than those in the second operand.
+///
+///    Each comparison yields 0x0 for false, 0xFFFF for true.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VPCMPGTW / PCMPGTW </c> instruction.
+///
+/// \param __a
+///    A 128-bit integer vector.
+/// \param __b
+///    A 128-bit integer vector.
+/// \returns A 128-bit integer vector containing the comparison results.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_cmplt_epi16(__m128i __a, __m128i __b)
+{
+  return _mm_cmpgt_epi16(__b, __a);
+}
+
+/// Compares each of the corresponding signed 32-bit values of the
+///    128-bit integer vectors to determine if the values in the first operand
+///    are less than those in the second operand.
+///
+///    Each comparison yields 0x0 for false, 0xFFFFFFFF for true.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VPCMPGTD / PCMPGTD </c> instruction.
+///
+/// \param __a
+///    A 128-bit integer vector.
+/// \param __b
+///    A 128-bit integer vector.
+/// \returns A 128-bit integer vector containing the comparison results.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_cmplt_epi32(__m128i __a, __m128i __b)
+{
+  return _mm_cmpgt_epi32(__b, __a);
+}
+
+#ifdef __x86_64__
+/// Converts a 64-bit signed integer value from the second operand into a
+///    double-precision value and returns it in the lower element of a [2 x
+///    double] vector; the upper element of the returned vector is copied from
+///    the upper element of the first operand.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCVTSI2SD / CVTSI2SD </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [2 x double]. The upper 64 bits of this operand are
+///    copied to the upper 64 bits of the destination.
+/// \param __b
+///    A 64-bit signed integer operand containing the value to be converted.
+/// \returns A 128-bit vector of [2 x double] whose lower 64 bits contain the
+///    converted value of the second operand. The upper 64 bits are copied from
+///    the upper 64 bits of the first operand.
+static __inline__ __m128d __DEFAULT_FN_ATTRS
+_mm_cvtsi64_sd(__m128d __a, long long __b)
+{
+  __a[0] = __b;
+  return __a;
+}
+
+/// Converts the first (lower) element of a vector of [2 x double] into a
+///    64-bit signed integer value, according to the current rounding mode.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCVTSD2SI / CVTSD2SI </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [2 x double]. The lower 64 bits are used in the
+///    conversion.
+/// \returns A 64-bit signed integer containing the converted value.
+static __inline__ long long __DEFAULT_FN_ATTRS
+_mm_cvtsd_si64(__m128d __a)
+{
+  return __builtin_ia32_cvtsd2si64((__v2df)__a);
+}
+
+/// Converts the first (lower) element of a vector of [2 x double] into a
+///    64-bit signed integer value, truncating the result when it is inexact.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCVTTSD2SI / CVTTSD2SI </c>
+///   instruction.
+///
+/// \param __a
+///    A 128-bit vector of [2 x double]. The lower 64 bits are used in the
+///    conversion.
+/// \returns A 64-bit signed integer containing the converted value.
+static __inline__ long long __DEFAULT_FN_ATTRS
+_mm_cvttsd_si64(__m128d __a)
+{
+  return __builtin_ia32_cvttsd2si64((__v2df)__a);
+}
+#endif
+
+/// Converts a vector of [4 x i32] into a vector of [4 x float].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCVTDQ2PS / CVTDQ2PS </c> instruction.
+///
+/// \param __a
+///    A 128-bit integer vector.
+/// \returns A 128-bit vector of [4 x float] containing the converted values.
+static __inline__ __m128 __DEFAULT_FN_ATTRS
+_mm_cvtepi32_ps(__m128i __a)
+{
+#ifdef __GNUC__
+  return (__m128)__builtin_ia32_cvtdq2ps ((__v4si) __a);
+#else
+  return (__m128)__builtin_convertvector((__v4si)__a, __v4sf);
+#endif
+}
+
+/// Converts a vector of [4 x float] into a vector of [4 x i32].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCVTPS2DQ / CVTPS2DQ </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [4 x float].
+/// \returns A 128-bit integer vector of [4 x i32] containing the converted
+///    values.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_cvtps_epi32(__m128 __a)
+{
+  return (__m128i)__builtin_ia32_cvtps2dq((__v4sf)__a);
+}
+
+/// Converts a vector of [4 x float] into a vector of [4 x i32],
+///    truncating the result when it is inexact.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCVTTPS2DQ / CVTTPS2DQ </c>
+///   instruction.
+///
+/// \param __a
+///    A 128-bit vector of [4 x float].
+/// \returns A 128-bit vector of [4 x i32] containing the converted values.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_cvttps_epi32(__m128 __a)
+{
+  return (__m128i)__builtin_ia32_cvttps2dq((__v4sf)__a);
+}
+
+/// Returns a vector of [4 x i32] where the lowest element is the input
+///    operand and the remaining elements are zero.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VMOVD / MOVD </c> instruction.
+///
+/// \param __a
+///    A 32-bit signed integer operand.
+/// \returns A 128-bit vector of [4 x i32].
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_cvtsi32_si128(int __a)
+{
+  return __extension__ (__m128i)(__v4si){ __a, 0, 0, 0 };
+}
+
+#ifdef __x86_64__
+/// Returns a vector of [2 x i64] where the lower element is the input
+///    operand and the upper element is zero.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VMOVQ / MOVQ </c> instruction.
+///
+/// \param __a
+///    A 64-bit signed integer operand containing the value to be converted.
+/// \returns A 128-bit vector of [2 x i64] containing the converted value.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_cvtsi64_si128(long long __a)
+{
+  return __extension__ (__m128i)(__v2di){ __a, 0 };
+}
+#endif
+
+/// Moves the least significant 32 bits of a vector of [4 x i32] to a
+///    32-bit signed integer value.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VMOVD / MOVD </c> instruction.
+///
+/// \param __a
+///    A vector of [4 x i32]. The least significant 32 bits are moved to the
+///    destination.
+/// \returns A 32-bit signed integer containing the moved value.
+static __inline__ int __DEFAULT_FN_ATTRS
+_mm_cvtsi128_si32(__m128i __a)
+{
+  __v4si __b = (__v4si)__a;
+  return __b[0];
+}
+
+#ifdef __x86_64__
+/// Moves the least significant 64 bits of a vector of [2 x i64] to a
+///    64-bit signed integer value.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VMOVQ / MOVQ </c> instruction.
+///
+/// \param __a
+///    A vector of [2 x i64]. The least significant 64 bits are moved to the
+///    destination.
+/// \returns A 64-bit signed integer containing the moved value.
+static __inline__ long long __DEFAULT_FN_ATTRS
+_mm_cvtsi128_si64(__m128i __a)
+{
+  return __a[0];
+}
+#endif
+
+/// Moves packed integer values from an aligned 128-bit memory location
+///    to elements in a 128-bit integer vector.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VMOVDQA / MOVDQA </c> instruction.
+///
+/// \param __p
+///    An aligned pointer to a memory location containing integer values.
+/// \returns A 128-bit integer vector containing the moved values.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_load_si128(__m128i const *__p)
+{
+  return *__p;
+}
+
+/// Moves packed integer values from an unaligned 128-bit memory location
+///    to elements in a 128-bit integer vector.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VMOVDQU / MOVDQU </c> instruction.
+///
+/// \param __p
+///    A pointer to a memory location containing integer values.
+/// \returns A 128-bit integer vector containing the moved values.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_loadu_si128(__m128i const *__p)
+{
+  struct __loadu_si128 {
+    __m128i __v;
+  } __attribute__((__packed__, __may_alias__));
+  return ((struct __loadu_si128*)__p)->__v;
+}
+
+/// Returns a vector of [2 x i64] where the lower element is taken from
+///    the lower element of the operand, and the upper element is zero.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VMOVQ / MOVQ </c> instruction.
+///
+/// \param __p
+///    A 128-bit vector of [2 x i64]. Bits [63:0] are written to bits [63:0] of
+///    the destination.
+/// \returns A 128-bit vector of [2 x i64]. The lower order bits contain the
+///    moved value. The higher order bits are cleared.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_loadl_epi64(__m128i const *__p)
+{
+  struct __mm_loadl_epi64_struct {
+    long long __u;
+  } __attribute__((__packed__, __may_alias__));
+  return __extension__ (__m128i) { ((struct __mm_loadl_epi64_struct*)__p)->__u, 0};
+}
+
+/// Generates a 128-bit vector of [4 x i32] with unspecified content.
+///    This could be used as an argument to another intrinsic function where the
+///    argument is required but the value is not actually used.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic has no corresponding instruction.
+///
+/// \returns A 128-bit vector of [4 x i32] with unspecified content.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_undefined_si128(void)
+{
+#ifdef __GNUC__
+  __m128i __X = __X;
+  return __X;
+#else
+  return (__m128i)__builtin_ia32_undef128();
+#endif
+}
+
+/// Initializes both 64-bit values in a 128-bit vector of [2 x i64] with
+///    the specified 64-bit integer values.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic is a utility function and does not correspond to a specific
+///    instruction.
+///
+/// \param __q1
+///    A 64-bit integer value used to initialize the upper 64 bits of the
+///    destination vector of [2 x i64].
+/// \param __q0
+///    A 64-bit integer value used to initialize the lower 64 bits of the
+///    destination vector of [2 x i64].
+/// \returns An initialized 128-bit vector of [2 x i64] containing the values
+///    provided in the operands.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_set_epi64x(long long __q1, long long __q0)
+{
+  return __extension__ (__m128i)(__v2di){ __q0, __q1 };
+}
+
+/// Initializes both 64-bit values in a 128-bit vector of [2 x i64] with
+///    the specified 64-bit integer values.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic is a utility function and does not correspond to a specific
+///    instruction.
+///
+/// \param __q1
+///    A 64-bit integer value used to initialize the upper 64 bits of the
+///    destination vector of [2 x i64].
+/// \param __q0
+///    A 64-bit integer value used to initialize the lower 64 bits of the
+///    destination vector of [2 x i64].
+/// \returns An initialized 128-bit vector of [2 x i64] containing the values
+///    provided in the operands.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_set_epi64(__m64 __q1, __m64 __q0)
+{
+  return _mm_set_epi64x((long long)__q1, (long long)__q0);
+}
+
+/// Initializes the 32-bit values in a 128-bit vector of [4 x i32] with
+///    the specified 32-bit integer values.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic is a utility function and does not correspond to a specific
+///    instruction.
+///
+/// \param __i3
+///    A 32-bit integer value used to initialize bits [127:96] of the
+///    destination vector.
+/// \param __i2
+///    A 32-bit integer value used to initialize bits [95:64] of the destination
+///    vector.
+/// \param __i1
+///    A 32-bit integer value used to initialize bits [63:32] of the destination
+///    vector.
+/// \param __i0
+///    A 32-bit integer value used to initialize bits [31:0] of the destination
+///    vector.
+/// \returns An initialized 128-bit vector of [4 x i32] containing the values
+///    provided in the operands.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_set_epi32(int __i3, int __i2, int __i1, int __i0)
+{
+  return __extension__ (__m128i)(__v4si){ __i0, __i1, __i2, __i3};
+}
+
+/// Initializes the 16-bit values in a 128-bit vector of [8 x i16] with
+///    the specified 16-bit integer values.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic is a utility function and does not correspond to a specific
+///    instruction.
+///
+/// \param __w7
+///    A 16-bit integer value used to initialize bits [127:112] of the
+///    destination vector.
+/// \param __w6
+///    A 16-bit integer value used to initialize bits [111:96] of the
+///    destination vector.
+/// \param __w5
+///    A 16-bit integer value used to initialize bits [95:80] of the destination
+///    vector.
+/// \param __w4
+///    A 16-bit integer value used to initialize bits [79:64] of the destination
+///    vector.
+/// \param __w3
+///    A 16-bit integer value used to initialize bits [63:48] of the destination
+///    vector.
+/// \param __w2
+///    A 16-bit integer value used to initialize bits [47:32] of the destination
+///    vector.
+/// \param __w1
+///    A 16-bit integer value used to initialize bits [31:16] of the destination
+///    vector.
+/// \param __w0
+///    A 16-bit integer value used to initialize bits [15:0] of the destination
+///    vector.
+/// \returns An initialized 128-bit vector of [8 x i16] containing the values
+///    provided in the operands.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_set_epi16(short __w7, short __w6, short __w5, short __w4, short __w3, short __w2, short __w1, short __w0)
+{
+  return __extension__ (__m128i)(__v8hi){ __w0, __w1, __w2, __w3, __w4, __w5, __w6, __w7 };
+}
+
+/// Initializes the 8-bit values in a 128-bit vector of [16 x i8] with
+///    the specified 8-bit integer values.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic is a utility function and does not correspond to a specific
+///    instruction.
+///
+/// \param __b15
+///    Initializes bits [127:120] of the destination vector.
+/// \param __b14
+///    Initializes bits [119:112] of the destination vector.
+/// \param __b13
+///    Initializes bits [111:104] of the destination vector.
+/// \param __b12
+///    Initializes bits [103:96] of the destination vector.
+/// \param __b11
+///    Initializes bits [95:88] of the destination vector.
+/// \param __b10
+///    Initializes bits [87:80] of the destination vector.
+/// \param __b9
+///    Initializes bits [79:72] of the destination vector.
+/// \param __b8
+///    Initializes bits [71:64] of the destination vector.
+/// \param __b7
+///    Initializes bits [63:56] of the destination vector.
+/// \param __b6
+///    Initializes bits [55:48] of the destination vector.
+/// \param __b5
+///    Initializes bits [47:40] of the destination vector.
+/// \param __b4
+///    Initializes bits [39:32] of the destination vector.
+/// \param __b3
+///    Initializes bits [31:24] of the destination vector.
+/// \param __b2
+///    Initializes bits [23:16] of the destination vector.
+/// \param __b1
+///    Initializes bits [15:8] of the destination vector.
+/// \param __b0
+///    Initializes bits [7:0] of the destination vector.
+/// \returns An initialized 128-bit vector of [16 x i8] containing the values
+///    provided in the operands.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_set_epi8(char __b15, char __b14, char __b13, char __b12, char __b11, char __b10, char __b9, char __b8, char __b7, char __b6, char __b5, char __b4, char __b3, char __b2, char __b1, char __b0)
+{
+  return __extension__ (__m128i)(__v16qi){ __b0, __b1, __b2, __b3, __b4, __b5, __b6, __b7, __b8, __b9, __b10, __b11, __b12, __b13, __b14, __b15 };
+}
+
+/// Initializes both values in a 128-bit integer vector with the
+///    specified 64-bit integer value.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic is a utility function and does not correspond to a specific
+///    instruction.
+///
+/// \param __q
+///    Integer value used to initialize the elements of the destination integer
+///    vector.
+/// \returns An initialized 128-bit integer vector of [2 x i64] with both
+///    elements containing the value provided in the operand.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_set1_epi64x(long long __q)
+{
+  return _mm_set_epi64x(__q, __q);
+}
+
+/// Initializes both values in a 128-bit vector of [2 x i64] with the
+///    specified 64-bit value.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic is a utility function and does not correspond to a specific
+///    instruction.
+///
+/// \param __q
+///    A 64-bit value used to initialize the elements of the destination integer
+///    vector.
+/// \returns An initialized 128-bit vector of [2 x i64] with all elements
+///    containing the value provided in the operand.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_set1_epi64(__m64 __q)
+{
+  return _mm_set_epi64(__q, __q);
+}
+
+/// Initializes all values in a 128-bit vector of [4 x i32] with the
+///    specified 32-bit value.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic is a utility function and does not correspond to a specific
+///    instruction.
+///
+/// \param __i
+///    A 32-bit value used to initialize the elements of the destination integer
+///    vector.
+/// \returns An initialized 128-bit vector of [4 x i32] with all elements
+///    containing the value provided in the operand.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_set1_epi32(int __i)
+{
+  return _mm_set_epi32(__i, __i, __i, __i);
+}
+
+/// Initializes all values in a 128-bit vector of [8 x i16] with the
+///    specified 16-bit value.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic is a utility function and does not correspond to a specific
+///    instruction.
+///
+/// \param __w
+///    A 16-bit value used to initialize the elements of the destination integer
+///    vector.
+/// \returns An initialized 128-bit vector of [8 x i16] with all elements
+///    containing the value provided in the operand.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_set1_epi16(short __w)
+{
+  return _mm_set_epi16(__w, __w, __w, __w, __w, __w, __w, __w);
+}
+
+/// Initializes all values in a 128-bit vector of [16 x i8] with the
+///    specified 8-bit value.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic is a utility function and does not correspond to a specific
+///    instruction.
+///
+/// \param __b
+///    An 8-bit value used to initialize the elements of the destination integer
+///    vector.
+/// \returns An initialized 128-bit vector of [16 x i8] with all elements
+///    containing the value provided in the operand.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_set1_epi8(char __b)
+{
+  return _mm_set_epi8(__b, __b, __b, __b, __b, __b, __b, __b, __b, __b, __b, __b, __b, __b, __b, __b);
+}
+
+/// Constructs a 128-bit integer vector, initialized in reverse order
+///     with the specified 64-bit integral values.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic does not correspond to a specific instruction.
+///
+/// \param __q0
+///    A 64-bit integral value used to initialize the lower 64 bits of the
+///    result.
+/// \param __q1
+///    A 64-bit integral value used to initialize the upper 64 bits of the
+///    result.
+/// \returns An initialized 128-bit integer vector.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_setr_epi64(__m64 __q0, __m64 __q1)
+{
+  return _mm_set_epi64(__q1, __q0);
+}
+
+/// Constructs a 128-bit integer vector, initialized in reverse order
+///     with the specified 32-bit integral values.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic is a utility function and does not correspond to a specific
+///    instruction.
+///
+/// \param __i0
+///    A 32-bit integral value used to initialize bits [31:0] of the result.
+/// \param __i1
+///    A 32-bit integral value used to initialize bits [63:32] of the result.
+/// \param __i2
+///    A 32-bit integral value used to initialize bits [95:64] of the result.
+/// \param __i3
+///    A 32-bit integral value used to initialize bits [127:96] of the result.
+/// \returns An initialized 128-bit integer vector.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_setr_epi32(int __i0, int __i1, int __i2, int __i3)
+{
+  return _mm_set_epi32(__i3, __i2, __i1, __i0);
+}
+
+/// Constructs a 128-bit integer vector, initialized in reverse order
+///     with the specified 16-bit integral values.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic is a utility function and does not correspond to a specific
+///    instruction.
+///
+/// \param __w0
+///    A 16-bit integral value used to initialize bits [15:0] of the result.
+/// \param __w1
+///    A 16-bit integral value used to initialize bits [31:16] of the result.
+/// \param __w2
+///    A 16-bit integral value used to initialize bits [47:32] of the result.
+/// \param __w3
+///    A 16-bit integral value used to initialize bits [63:48] of the result.
+/// \param __w4
+///    A 16-bit integral value used to initialize bits [79:64] of the result.
+/// \param __w5
+///    A 16-bit integral value used to initialize bits [95:80] of the result.
+/// \param __w6
+///    A 16-bit integral value used to initialize bits [111:96] of the result.
+/// \param __w7
+///    A 16-bit integral value used to initialize bits [127:112] of the result.
+/// \returns An initialized 128-bit integer vector.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_setr_epi16(short __w0, short __w1, short __w2, short __w3, short __w4, short __w5, short __w6, short __w7)
+{
+  return _mm_set_epi16(__w7, __w6, __w5, __w4, __w3, __w2, __w1, __w0);
+}
+
+/// Constructs a 128-bit integer vector, initialized in reverse order
+///     with the specified 8-bit integral values.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic is a utility function and does not correspond to a specific
+///    instruction.
+///
+/// \param __b0
+///    An 8-bit integral value used to initialize bits [7:0] of the result.
+/// \param __b1
+///    An 8-bit integral value used to initialize bits [15:8] of the result.
+/// \param __b2
+///    An 8-bit integral value used to initialize bits [23:16] of the result.
+/// \param __b3
+///    An 8-bit integral value used to initialize bits [31:24] of the result.
+/// \param __b4
+///    An 8-bit integral value used to initialize bits [39:32] of the result.
+/// \param __b5
+///    An 8-bit integral value used to initialize bits [47:40] of the result.
+/// \param __b6
+///    An 8-bit integral value used to initialize bits [55:48] of the result.
+/// \param __b7
+///    An 8-bit integral value used to initialize bits [63:56] of the result.
+/// \param __b8
+///    An 8-bit integral value used to initialize bits [71:64] of the result.
+/// \param __b9
+///    An 8-bit integral value used to initialize bits [79:72] of the result.
+/// \param __b10
+///    An 8-bit integral value used to initialize bits [87:80] of the result.
+/// \param __b11
+///    An 8-bit integral value used to initialize bits [95:88] of the result.
+/// \param __b12
+///    An 8-bit integral value used to initialize bits [103:96] of the result.
+/// \param __b13
+///    An 8-bit integral value used to initialize bits [111:104] of the result.
+/// \param __b14
+///    An 8-bit integral value used to initialize bits [119:112] of the result.
+/// \param __b15
+///    An 8-bit integral value used to initialize bits [127:120] of the result.
+/// \returns An initialized 128-bit integer vector.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_setr_epi8(char __b0, char __b1, char __b2, char __b3, char __b4, char __b5, char __b6, char __b7, char __b8, char __b9, char __b10, char __b11, char __b12, char __b13, char __b14, char __b15)
+{
+  return _mm_set_epi8(__b15, __b14, __b13, __b12, __b11, __b10, __b9, __b8, __b7, __b6, __b5, __b4, __b3, __b2, __b1, __b0);
+}
+
+/// Creates a 128-bit integer vector initialized to zero.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VXORPS / XORPS </c> instruction.
+///
+/// \returns An initialized 128-bit integer vector with all elements set to
+///    zero.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_setzero_si128(void)
+{
+  return __extension__ (__m128i)(__v2di){ 0LL, 0LL };
+}
+
+/// Stores a 128-bit integer vector to a memory location aligned on a
+///    128-bit boundary.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VMOVAPS / MOVAPS </c> instruction.
+///
+/// \param __p
+///    A pointer to an aligned memory location that will receive the integer
+///    values.
+/// \param __b
+///    A 128-bit integer vector containing the values to be moved.
+static __inline__ void __DEFAULT_FN_ATTRS
+_mm_store_si128(__m128i *__p, __m128i __b)
+{
+  *__p = __b;
+}
+
+/// Stores a 128-bit integer vector to an unaligned memory location.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VMOVUPS / MOVUPS </c> instruction.
+///
+/// \param __p
+///    A pointer to a memory location that will receive the integer values.
+/// \param __b
+///    A 128-bit integer vector containing the values to be moved.
+static __inline__ void __DEFAULT_FN_ATTRS
+_mm_storeu_si128(__m128i *__p, __m128i __b)
+{
+  struct __storeu_si128 {
+    __m128i __v;
+  } __attribute__((__packed__, __may_alias__));
+  ((struct __storeu_si128*)__p)->__v = __b;
+}
+
+/// Moves bytes selected by the mask from the first operand to the
+///    specified unaligned memory location. When a mask bit is 1, the
+///    corresponding byte is written, otherwise it is not written.
+///
+///    To minimize caching, the data is flagged as non-temporal (unlikely to be
+///    used again soon). Exception and trap behavior for elements not selected
+///    for storage to memory are implementation dependent.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VMASKMOVDQU / MASKMOVDQU </c>
+///   instruction.
+///
+/// \param __d
+///    A 128-bit integer vector containing the values to be moved.
+/// \param __n
+///    A 128-bit integer vector containing the mask. The most significant bit of
+///    each byte represents the mask bits.
+/// \param __p
+///    A pointer to an unaligned 128-bit memory location where the specified
+///    values are moved.
+static __inline__ void __DEFAULT_FN_ATTRS
+_mm_maskmoveu_si128(__m128i __d, __m128i __n, char *__p)
+{
+  __builtin_ia32_maskmovdqu((__v16qi)__d, (__v16qi)__n, __p);
+}
+
+/// Stores the lower 64 bits of a 128-bit integer vector of [2 x i64] to
+///    a memory location.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VMOVLPS / MOVLPS </c> instruction.
+///
+/// \param __p
+///    A pointer to a 64-bit memory location that will receive the lower 64 bits
+///    of the integer vector parameter.
+/// \param __a
+///    A 128-bit integer vector of [2 x i64]. The lower 64 bits contain the
+///    value to be stored.
+static __inline__ void __DEFAULT_FN_ATTRS
+_mm_storel_epi64(__m128i *__p, __m128i __a)
+{
+  struct __mm_storel_epi64_struct {
+    long long __u;
+  } __attribute__((__packed__, __may_alias__));
+  ((struct __mm_storel_epi64_struct*)__p)->__u = __a[0];
+}
+
+/// Stores a 128-bit floating point vector of [2 x double] to a 128-bit
+///    aligned memory location.
+///
+///    To minimize caching, the data is flagged as non-temporal (unlikely to be
+///    used again soon).
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VMOVNTPS / MOVNTPS </c> instruction.
+///
+/// \param __p
+///    A pointer to the 128-bit aligned memory location used to store the value.
+/// \param __a
+///    A vector of [2 x double] containing the 64-bit values to be stored.
+static __inline__ void __DEFAULT_FN_ATTRS
+_mm_stream_pd(double *__p, __m128d __a)
+{
+#ifdef __GNUC__
+  __builtin_ia32_movntpd (__p, (__v2df)__a);
+#else
+  __builtin_nontemporal_store((__v2df)__a, (__v2df*)__p);
+#endif
+}
+
+/// Stores a 128-bit integer vector to a 128-bit aligned memory location.
+///
+///    To minimize caching, the data is flagged as non-temporal (unlikely to be
+///    used again soon).
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VMOVNTPS / MOVNTPS </c> instruction.
+///
+/// \param __p
+///    A pointer to the 128-bit aligned memory location used to store the value.
+/// \param __a
+///    A 128-bit integer vector containing the values to be stored.
+static __inline__ void __DEFAULT_FN_ATTRS
+_mm_stream_si128(__m128i *__p, __m128i __a)
+{
+#ifdef __GNUC__
+  __builtin_ia32_movntdq ((__v2di *)__p, (__v2di)__a);
+#else
+  __builtin_nontemporal_store((__v2di)__a, (__v2di*)__p);
+#endif
+}
+
+/// Stores a 32-bit integer value in the specified memory location.
+///
+///    To minimize caching, the data is flagged as non-temporal (unlikely to be
+///    used again soon).
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> MOVNTI </c> instruction.
+///
+/// \param __p
+///    A pointer to the 32-bit memory location used to store the value.
+/// \param __a
+///    A 32-bit integer containing the value to be stored.
+static __inline__ void
+#ifdef __GNUC__
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+#else
+__attribute__((__always_inline__, __nodebug__, __target__("sse2")))
+#endif
+_mm_stream_si32(int *__p, int __a)
+{
+  __builtin_ia32_movnti(__p, __a);
+}
+
+#ifdef __x86_64__
+/// Stores a 64-bit integer value in the specified memory location.
+///
+///    To minimize caching, the data is flagged as non-temporal (unlikely to be
+///    used again soon).
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> MOVNTIQ </c> instruction.
+///
+/// \param __p
+///    A pointer to the 64-bit memory location used to store the value.
+/// \param __a
+///    A 64-bit integer containing the value to be stored.
+static __inline__ void
+#ifdef __GNUC__
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+#else
+__attribute__((__always_inline__, __nodebug__, __target__("sse2")))
+#endif
+_mm_stream_si64(long long *__p, long long __a)
+{
+  __builtin_ia32_movnti64(__p, __a);
+}
+#endif
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+/// The cache line containing \a __p is flushed and invalidated from all
+///    caches in the coherency domain.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> CLFLUSH </c> instruction.
+///
+/// \param __p
+///    A pointer to the memory location used to identify the cache line to be
+///    flushed.
+void _mm_clflush(void const * __p);
+
+/// Forces strong memory ordering (serialization) between load
+///    instructions preceding this instruction and load instructions following
+///    this instruction, ensuring the system completes all previous loads before
+///    executing subsequent loads.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> LFENCE </c> instruction.
+///
+void _mm_lfence(void);
+
+/// Forces strong memory ordering (serialization) between load and store
+///    instructions preceding this instruction and load and store instructions
+///    following this instruction, ensuring that the system completes all
+///    previous memory accesses before executing subsequent memory accesses.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> MFENCE </c> instruction.
+///
+void _mm_mfence(void);
+
+#if defined(__cplusplus)
+} // extern "C"
+#endif
+
+/// Converts 16-bit signed integers from both 128-bit integer vector
+///    operands into 8-bit signed integers, and packs the results into the
+///    destination. Positive values greater than 0x7F are saturated to 0x7F.
+///    Negative values less than 0x80 are saturated to 0x80.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VPACKSSWB / PACKSSWB </c> instruction.
+///
+/// \param __a
+///   A 128-bit integer vector of [8 x i16]. Each 16-bit element is treated as
+///   a signed integer and is converted to a 8-bit signed integer with
+///   saturation. Values greater than 0x7F are saturated to 0x7F. Values less
+///   than 0x80 are saturated to 0x80. The converted [8 x i8] values are
+///   written to the lower 64 bits of the result.
+/// \param __b
+///   A 128-bit integer vector of [8 x i16]. Each 16-bit element is treated as
+///   a signed integer and is converted to a 8-bit signed integer with
+///   saturation. Values greater than 0x7F are saturated to 0x7F. Values less
+///   than 0x80 are saturated to 0x80. The converted [8 x i8] values are
+///   written to the higher 64 bits of the result.
+/// \returns A 128-bit vector of [16 x i8] containing the converted values.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_packs_epi16(__m128i __a, __m128i __b)
+{
+  return (__m128i)__builtin_ia32_packsswb128((__v8hi)__a, (__v8hi)__b);
+}
+
+/// Converts 32-bit signed integers from both 128-bit integer vector
+///    operands into 16-bit signed integers, and packs the results into the
+///    destination. Positive values greater than 0x7FFF are saturated to 0x7FFF.
+///    Negative values less than 0x8000 are saturated to 0x8000.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VPACKSSDW / PACKSSDW </c> instruction.
+///
+/// \param __a
+///    A 128-bit integer vector of [4 x i32]. Each 32-bit element is treated as
+///    a signed integer and is converted to a 16-bit signed integer with
+///    saturation. Values greater than 0x7FFF are saturated to 0x7FFF. Values
+///    less than 0x8000 are saturated to 0x8000. The converted [4 x i16] values
+///    are written to the lower 64 bits of the result.
+/// \param __b
+///    A 128-bit integer vector of [4 x i32]. Each 32-bit element is treated as
+///    a signed integer and is converted to a 16-bit signed integer with
+///    saturation. Values greater than 0x7FFF are saturated to 0x7FFF. Values
+///    less than 0x8000 are saturated to 0x8000. The converted [4 x i16] values
+///    are written to the higher 64 bits of the result.
+/// \returns A 128-bit vector of [8 x i16] containing the converted values.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_packs_epi32(__m128i __a, __m128i __b)
+{
+  return (__m128i)__builtin_ia32_packssdw128((__v4si)__a, (__v4si)__b);
+}
+
+/// Converts 16-bit signed integers from both 128-bit integer vector
+///    operands into 8-bit unsigned integers, and packs the results into the
+///    destination. Values greater than 0xFF are saturated to 0xFF. Values less
+///    than 0x00 are saturated to 0x00.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VPACKUSWB / PACKUSWB </c> instruction.
+///
+/// \param __a
+///    A 128-bit integer vector of [8 x i16]. Each 16-bit element is treated as
+///    a signed integer and is converted to an 8-bit unsigned integer with
+///    saturation. Values greater than 0xFF are saturated to 0xFF. Values less
+///    than 0x00 are saturated to 0x00. The converted [8 x i8] values are
+///    written to the lower 64 bits of the result.
+/// \param __b
+///    A 128-bit integer vector of [8 x i16]. Each 16-bit element is treated as
+///    a signed integer and is converted to an 8-bit unsigned integer with
+///    saturation. Values greater than 0xFF are saturated to 0xFF. Values less
+///    than 0x00 are saturated to 0x00. The converted [8 x i8] values are
+///    written to the higher 64 bits of the result.
+/// \returns A 128-bit vector of [16 x i8] containing the converted values.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_packus_epi16(__m128i __a, __m128i __b)
+{
+  return (__m128i)__builtin_ia32_packuswb128((__v8hi)__a, (__v8hi)__b);
+}
+
+/// Extracts 16 bits from a 128-bit integer vector of [8 x i16], using
+///    the immediate-value parameter as a selector.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VPEXTRW / PEXTRW </c> instruction.
+///
+/// \param __a
+///    A 128-bit integer vector.
+/// \param __imm
+///    An immediate value. Bits [2:0] selects values from \a __a to be assigned
+///    to bits[15:0] of the result. \n
+///    000: assign values from bits [15:0] of \a __a. \n
+///    001: assign values from bits [31:16] of \a __a. \n
+///    010: assign values from bits [47:32] of \a __a. \n
+///    011: assign values from bits [63:48] of \a __a. \n
+///    100: assign values from bits [79:64] of \a __a. \n
+///    101: assign values from bits [95:80] of \a __a. \n
+///    110: assign values from bits [111:96] of \a __a. \n
+///    111: assign values from bits [127:112] of \a __a.
+/// \returns An integer, whose lower 16 bits are selected from the 128-bit
+///    integer vector parameter and the remaining bits are assigned zeros.
+#define _mm_extract_epi16(a, imm) \
+  (int)(unsigned short)__builtin_ia32_vec_ext_v8hi((__v8hi)(__m128i)(a), \
+                                                   (int)(imm))
+
+/// Constructs a 128-bit integer vector by first making a copy of the
+///    128-bit integer vector parameter, and then inserting the lower 16 bits
+///    of an integer parameter into an offset specified by the immediate-value
+///    parameter.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VPINSRW / PINSRW </c> instruction.
+///
+/// \param __a
+///    A 128-bit integer vector of [8 x i16]. This vector is copied to the
+///    result and then one of the eight elements in the result is replaced by
+///    the lower 16 bits of \a __b.
+/// \param __b
+///    An integer. The lower 16 bits of this parameter are written to the
+///    result beginning at an offset specified by \a __imm.
+/// \param __imm
+///    An immediate value specifying the bit offset in the result at which the
+///    lower 16 bits of \a __b are written.
+/// \returns A 128-bit integer vector containing the constructed values.
+#define _mm_insert_epi16(a, b, imm) \
+  (__m128i)__builtin_ia32_vec_set_v8hi((__v8hi)(__m128i)(a), (int)(b), \
+                                       (int)(imm))
+
+/// Copies the values of the most significant bits from each 8-bit
+///    element in a 128-bit integer vector of [16 x i8] to create a 16-bit mask
+///    value, zero-extends the value, and writes it to the destination.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VPMOVMSKB / PMOVMSKB </c> instruction.
+///
+/// \param __a
+///    A 128-bit integer vector containing the values with bits to be extracted.
+/// \returns The most significant bits from each 8-bit element in \a __a,
+///    written to bits [15:0]. The other bits are assigned zeros.
+static __inline__ int __DEFAULT_FN_ATTRS
+_mm_movemask_epi8(__m128i __a)
+{
+  return __builtin_ia32_pmovmskb128((__v16qi)__a);
+}
+
+/// Constructs a 128-bit integer vector by shuffling four 32-bit
+///    elements of a 128-bit integer vector parameter, using the immediate-value
+///    parameter as a specifier.
+///
+/// \headerfile <x86intrin.h>
+///
+/// \code
+/// __m128i _mm_shuffle_epi32(__m128i a, const int imm);
+/// \endcode
+///
+/// This intrinsic corresponds to the <c> VPSHUFD / PSHUFD </c> instruction.
+///
+/// \param a
+///    A 128-bit integer vector containing the values to be copied.
+/// \param imm
+///    An immediate value containing an 8-bit value specifying which elements to
+///    copy from a. The destinations within the 128-bit destination are assigned
+///    values as follows: \n
+///    Bits [1:0] are used to assign values to bits [31:0] of the result. \n
+///    Bits [3:2] are used to assign values to bits [63:32] of the result. \n
+///    Bits [5:4] are used to assign values to bits [95:64] of the result. \n
+///    Bits [7:6] are used to assign values to bits [127:96] of the result. \n
+///    Bit value assignments: \n
+///    00: assign values from bits [31:0] of \a a. \n
+///    01: assign values from bits [63:32] of \a a. \n
+///    10: assign values from bits [95:64] of \a a. \n
+///    11: assign values from bits [127:96] of \a a.
+/// \returns A 128-bit integer vector containing the shuffled values.
+#define _mm_shuffle_epi32(a, imm) \
+  (__m128i)__builtin_ia32_pshufd((__v4si)(__m128i)(a), (int)(imm))
+
+/// Constructs a 128-bit integer vector by shuffling four lower 16-bit
+///    elements of a 128-bit integer vector of [8 x i16], using the immediate
+///    value parameter as a specifier.
+///
+/// \headerfile <x86intrin.h>
+///
+/// \code
+/// __m128i _mm_shufflelo_epi16(__m128i a, const int imm);
+/// \endcode
+///
+/// This intrinsic corresponds to the <c> VPSHUFLW / PSHUFLW </c> instruction.
+///
+/// \param a
+///    A 128-bit integer vector of [8 x i16]. Bits [127:64] are copied to bits
+///    [127:64] of the result.
+/// \param imm
+///    An 8-bit immediate value specifying which elements to copy from \a a. \n
+///    Bits[1:0] are used to assign values to bits [15:0] of the result. \n
+///    Bits[3:2] are used to assign values to bits [31:16] of the result. \n
+///    Bits[5:4] are used to assign values to bits [47:32] of the result. \n
+///    Bits[7:6] are used to assign values to bits [63:48] of the result. \n
+///    Bit value assignments: \n
+///    00: assign values from bits [15:0] of \a a. \n
+///    01: assign values from bits [31:16] of \a a. \n
+///    10: assign values from bits [47:32] of \a a. \n
+///    11: assign values from bits [63:48] of \a a. \n
+/// \returns A 128-bit integer vector containing the shuffled values.
+#define _mm_shufflelo_epi16(a, imm) \
+  (__m128i)__builtin_ia32_pshuflw((__v8hi)(__m128i)(a), (int)(imm))
+
+/// Constructs a 128-bit integer vector by shuffling four upper 16-bit
+///    elements of a 128-bit integer vector of [8 x i16], using the immediate
+///    value parameter as a specifier.
+///
+/// \headerfile <x86intrin.h>
+///
+/// \code
+/// __m128i _mm_shufflehi_epi16(__m128i a, const int imm);
+/// \endcode
+///
+/// This intrinsic corresponds to the <c> VPSHUFHW / PSHUFHW </c> instruction.
+///
+/// \param a
+///    A 128-bit integer vector of [8 x i16]. Bits [63:0] are copied to bits
+///    [63:0] of the result.
+/// \param imm
+///    An 8-bit immediate value specifying which elements to copy from \a a. \n
+///    Bits[1:0] are used to assign values to bits [79:64] of the result. \n
+///    Bits[3:2] are used to assign values to bits [95:80] of the result. \n
+///    Bits[5:4] are used to assign values to bits [111:96] of the result. \n
+///    Bits[7:6] are used to assign values to bits [127:112] of the result. \n
+///    Bit value assignments: \n
+///    00: assign values from bits [79:64] of \a a. \n
+///    01: assign values from bits [95:80] of \a a. \n
+///    10: assign values from bits [111:96] of \a a. \n
+///    11: assign values from bits [127:112] of \a a. \n
+/// \returns A 128-bit integer vector containing the shuffled values.
+#define _mm_shufflehi_epi16(a, imm) \
+  (__m128i)__builtin_ia32_pshufhw((__v8hi)(__m128i)(a), (int)(imm))
+
+/// Unpacks the high-order (index 8-15) values from two 128-bit vectors
+///    of [16 x i8] and interleaves them into a 128-bit vector of [16 x i8].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VPUNPCKHBW / PUNPCKHBW </c>
+///   instruction.
+///
+/// \param __a
+///    A 128-bit vector of [16 x i8].
+///    Bits [71:64] are written to bits [7:0] of the result. \n
+///    Bits [79:72] are written to bits [23:16] of the result. \n
+///    Bits [87:80] are written to bits [39:32] of the result. \n
+///    Bits [95:88] are written to bits [55:48] of the result. \n
+///    Bits [103:96] are written to bits [71:64] of the result. \n
+///    Bits [111:104] are written to bits [87:80] of the result. \n
+///    Bits [119:112] are written to bits [103:96] of the result. \n
+///    Bits [127:120] are written to bits [119:112] of the result.
+/// \param __b
+///    A 128-bit vector of [16 x i8]. \n
+///    Bits [71:64] are written to bits [15:8] of the result. \n
+///    Bits [79:72] are written to bits [31:24] of the result. \n
+///    Bits [87:80] are written to bits [47:40] of the result. \n
+///    Bits [95:88] are written to bits [63:56] of the result. \n
+///    Bits [103:96] are written to bits [79:72] of the result. \n
+///    Bits [111:104] are written to bits [95:88] of the result. \n
+///    Bits [119:112] are written to bits [111:104] of the result. \n
+///    Bits [127:120] are written to bits [127:120] of the result.
+/// \returns A 128-bit vector of [16 x i8] containing the interleaved values.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_unpackhi_epi8(__m128i __a, __m128i __b)
+{
+#ifdef __GNUC__
+  return (__m128i)__builtin_ia32_punpckhbw128 ((__v16qi)__a, (__v16qi)__b);
+#else
+  return (__m128i)__builtin_shufflevector((__v16qi)__a, (__v16qi)__b, 8, 16+8, 9, 16+9, 10, 16+10, 11, 16+11, 12, 16+12, 13, 16+13, 14, 16+14, 15, 16+15);
+#endif
+}
+
+/// Unpacks the high-order (index 4-7) values from two 128-bit vectors of
+///    [8 x i16] and interleaves them into a 128-bit vector of [8 x i16].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VPUNPCKHWD / PUNPCKHWD </c>
+///   instruction.
+///
+/// \param __a
+///    A 128-bit vector of [8 x i16].
+///    Bits [79:64] are written to bits [15:0] of the result. \n
+///    Bits [95:80] are written to bits [47:32] of the result. \n
+///    Bits [111:96] are written to bits [79:64] of the result. \n
+///    Bits [127:112] are written to bits [111:96] of the result.
+/// \param __b
+///    A 128-bit vector of [8 x i16].
+///    Bits [79:64] are written to bits [31:16] of the result. \n
+///    Bits [95:80] are written to bits [63:48] of the result. \n
+///    Bits [111:96] are written to bits [95:80] of the result. \n
+///    Bits [127:112] are written to bits [127:112] of the result.
+/// \returns A 128-bit vector of [8 x i16] containing the interleaved values.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_unpackhi_epi16(__m128i __a, __m128i __b)
+{
+#ifdef __GNUC__
+  return (__m128i)__builtin_ia32_punpckhwd128 ((__v8hi)__a, (__v8hi)__b);
+#else
+  return (__m128i)__builtin_shufflevector((__v8hi)__a, (__v8hi)__b, 4, 8+4, 5, 8+5, 6, 8+6, 7, 8+7);
+#endif
+}
+
+/// Unpacks the high-order (index 2,3) values from two 128-bit vectors of
+///    [4 x i32] and interleaves them into a 128-bit vector of [4 x i32].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VPUNPCKHDQ / PUNPCKHDQ </c>
+///   instruction.
+///
+/// \param __a
+///    A 128-bit vector of [4 x i32]. \n
+///    Bits [95:64] are written to bits [31:0] of the destination. \n
+///    Bits [127:96] are written to bits [95:64] of the destination.
+/// \param __b
+///    A 128-bit vector of [4 x i32]. \n
+///    Bits [95:64] are written to bits [64:32] of the destination. \n
+///    Bits [127:96] are written to bits [127:96] of the destination.
+/// \returns A 128-bit vector of [4 x i32] containing the interleaved values.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_unpackhi_epi32(__m128i __a, __m128i __b)
+{
+#ifdef __GNUC__
+  return (__m128i)__builtin_ia32_punpckhdq128 ((__v4si)__a, (__v4si)__b);
+#else
+  return (__m128i)__builtin_shufflevector((__v4si)__a, (__v4si)__b, 2, 4+2, 3, 4+3);
+#endif
+}
+
+/// Unpacks the high-order 64-bit elements from two 128-bit vectors of
+///    [2 x i64] and interleaves them into a 128-bit vector of [2 x i64].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VPUNPCKHQDQ / PUNPCKHQDQ </c>
+///   instruction.
+///
+/// \param __a
+///    A 128-bit vector of [2 x i64]. \n
+///    Bits [127:64] are written to bits [63:0] of the destination.
+/// \param __b
+///    A 128-bit vector of [2 x i64]. \n
+///    Bits [127:64] are written to bits [127:64] of the destination.
+/// \returns A 128-bit vector of [2 x i64] containing the interleaved values.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_unpackhi_epi64(__m128i __a, __m128i __b)
+{
+#ifdef __GNUC__
+  return (__m128i)__builtin_ia32_punpckhqdq128 ((__v2di)__a, (__v2di)__b);
+#else
+  return (__m128i)__builtin_shufflevector((__v2di)__a, (__v2di)__b, 1, 2+1);
+#endif
+}
+
+/// Unpacks the low-order (index 0-7) values from two 128-bit vectors of
+///    [16 x i8] and interleaves them into a 128-bit vector of [16 x i8].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VPUNPCKLBW / PUNPCKLBW </c>
+///   instruction.
+///
+/// \param __a
+///    A 128-bit vector of [16 x i8]. \n
+///    Bits [7:0] are written to bits [7:0] of the result. \n
+///    Bits [15:8] are written to bits [23:16] of the result. \n
+///    Bits [23:16] are written to bits [39:32] of the result. \n
+///    Bits [31:24] are written to bits [55:48] of the result. \n
+///    Bits [39:32] are written to bits [71:64] of the result. \n
+///    Bits [47:40] are written to bits [87:80] of the result. \n
+///    Bits [55:48] are written to bits [103:96] of the result. \n
+///    Bits [63:56] are written to bits [119:112] of the result.
+/// \param __b
+///    A 128-bit vector of [16 x i8].
+///    Bits [7:0] are written to bits [15:8] of the result. \n
+///    Bits [15:8] are written to bits [31:24] of the result. \n
+///    Bits [23:16] are written to bits [47:40] of the result. \n
+///    Bits [31:24] are written to bits [63:56] of the result. \n
+///    Bits [39:32] are written to bits [79:72] of the result. \n
+///    Bits [47:40] are written to bits [95:88] of the result. \n
+///    Bits [55:48] are written to bits [111:104] of the result. \n
+///    Bits [63:56] are written to bits [127:120] of the result.
+/// \returns A 128-bit vector of [16 x i8] containing the interleaved values.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_unpacklo_epi8(__m128i __a, __m128i __b)
+{
+#ifdef __GNUC__
+  return (__m128i)__builtin_ia32_punpcklbw128 ((__v16qi)__a, (__v16qi)__b);
+#else
+  return (__m128i)__builtin_shufflevector((__v16qi)__a, (__v16qi)__b, 0, 16+0, 1, 16+1, 2, 16+2, 3, 16+3, 4, 16+4, 5, 16+5, 6, 16+6, 7, 16+7);
+#endif
+}
+
+/// Unpacks the low-order (index 0-3) values from each of the two 128-bit
+///    vectors of [8 x i16] and interleaves them into a 128-bit vector of
+///    [8 x i16].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VPUNPCKLWD / PUNPCKLWD </c>
+///   instruction.
+///
+/// \param __a
+///    A 128-bit vector of [8 x i16].
+///    Bits [15:0] are written to bits [15:0] of the result. \n
+///    Bits [31:16] are written to bits [47:32] of the result. \n
+///    Bits [47:32] are written to bits [79:64] of the result. \n
+///    Bits [63:48] are written to bits [111:96] of the result.
+/// \param __b
+///    A 128-bit vector of [8 x i16].
+///    Bits [15:0] are written to bits [31:16] of the result. \n
+///    Bits [31:16] are written to bits [63:48] of the result. \n
+///    Bits [47:32] are written to bits [95:80] of the result. \n
+///    Bits [63:48] are written to bits [127:112] of the result.
+/// \returns A 128-bit vector of [8 x i16] containing the interleaved values.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_unpacklo_epi16(__m128i __a, __m128i __b)
+{
+#ifdef __GNUC__
+  return (__m128i)__builtin_ia32_punpcklwd128 ((__v8hi)__a, (__v8hi)__b);
+#else
+  return (__m128i)__builtin_shufflevector((__v8hi)__a, (__v8hi)__b, 0, 8+0, 1, 8+1, 2, 8+2, 3, 8+3);
+#endif
+}
+
+/// Unpacks the low-order (index 0,1) values from two 128-bit vectors of
+///    [4 x i32] and interleaves them into a 128-bit vector of [4 x i32].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VPUNPCKLDQ / PUNPCKLDQ </c>
+///   instruction.
+///
+/// \param __a
+///    A 128-bit vector of [4 x i32]. \n
+///    Bits [31:0] are written to bits [31:0] of the destination. \n
+///    Bits [63:32] are written to bits [95:64] of the destination.
+/// \param __b
+///    A 128-bit vector of [4 x i32]. \n
+///    Bits [31:0] are written to bits [64:32] of the destination. \n
+///    Bits [63:32] are written to bits [127:96] of the destination.
+/// \returns A 128-bit vector of [4 x i32] containing the interleaved values.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_unpacklo_epi32(__m128i __a, __m128i __b)
+{
+#ifdef __GNUC__
+  return (__m128i)__builtin_ia32_punpckldq128 ((__v4si)__a, (__v4si)__b);
+#else
+  return (__m128i)__builtin_shufflevector((__v4si)__a, (__v4si)__b, 0, 4+0, 1, 4+1);
+#endif
+}
+
+/// Unpacks the low-order 64-bit elements from two 128-bit vectors of
+///    [2 x i64] and interleaves them into a 128-bit vector of [2 x i64].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VPUNPCKLQDQ / PUNPCKLQDQ </c>
+///   instruction.
+///
+/// \param __a
+///    A 128-bit vector of [2 x i64]. \n
+///    Bits [63:0] are written to bits [63:0] of the destination. \n
+/// \param __b
+///    A 128-bit vector of [2 x i64]. \n
+///    Bits [63:0] are written to bits [127:64] of the destination. \n
+/// \returns A 128-bit vector of [2 x i64] containing the interleaved values.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_unpacklo_epi64(__m128i __a, __m128i __b)
+{
+#ifdef __GNUC__
+  return (__m128i)__builtin_ia32_punpcklqdq128 ((__v2di)__a, (__v2di)__b);
+#else
+  return (__m128i)__builtin_shufflevector((__v2di)__a, (__v2di)__b, 0, 2+0);
+#endif
+}
+
+/// Returns the lower 64 bits of a 128-bit integer vector as a 64-bit
+///    integer.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> MOVDQ2Q </c> instruction.
+///
+/// \param __a
+///    A 128-bit integer vector operand. The lower 64 bits are moved to the
+///    destination.
+/// \returns A 64-bit integer containing the lower 64 bits of the parameter.
+static __inline__ __m64 __DEFAULT_FN_ATTRS
+_mm_movepi64_pi64(__m128i __a)
+{
+  return (__m64)__a[0];
+}
+
+/// Moves the 64-bit operand to a 128-bit integer vector, zeroing the
+///    upper bits.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> MOVD+VMOVQ </c> instruction.
+///
+/// \param __a
+///    A 64-bit value.
+/// \returns A 128-bit integer vector. The lower 64 bits contain the value from
+///    the operand. The upper 64 bits are assigned zeros.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_movpi64_epi64(__m64 __a)
+{
+  return __extension__ (__m128i)(__v2di){ (long long)__a, 0 };
+}
+
+/// Moves the lower 64 bits of a 128-bit integer vector to a 128-bit
+///    integer vector, zeroing the upper bits.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VMOVQ / MOVQ </c> instruction.
+///
+/// \param __a
+///    A 128-bit integer vector operand. The lower 64 bits are moved to the
+///    destination.
+/// \returns A 128-bit integer vector. The lower 64 bits contain the value from
+///    the operand. The upper 64 bits are assigned zeros.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_move_epi64(__m128i __a)
+{
+#ifdef __GNUC__
+  return (__m128i)__builtin_ia32_movq128 ((__v2di) __a);
+#else
+  return __builtin_shufflevector((__v2di)__a, _mm_setzero_si128(), 0, 2);
+#endif
+}
+
+/// Unpacks the high-order 64-bit elements from two 128-bit vectors of
+///    [2 x double] and interleaves them into a 128-bit vector of [2 x
+///    double].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VUNPCKHPD / UNPCKHPD </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [2 x double]. \n
+///    Bits [127:64] are written to bits [63:0] of the destination.
+/// \param __b
+///    A 128-bit vector of [2 x double]. \n
+///    Bits [127:64] are written to bits [127:64] of the destination.
+/// \returns A 128-bit vector of [2 x double] containing the interleaved values.
+static __inline__ __m128d __DEFAULT_FN_ATTRS
+_mm_unpackhi_pd(__m128d __a, __m128d __b)
+{
+#ifdef __GNUC__
+  return (__m128d)__builtin_ia32_unpckhpd ((__v2df)__a, (__v2df)__b);
+#else
+  return __builtin_shufflevector((__v2df)__a, (__v2df)__b, 1, 2+1);
+#endif
+}
+
+/// Unpacks the low-order 64-bit elements from two 128-bit vectors
+///    of [2 x double] and interleaves them into a 128-bit vector of [2 x
+///    double].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VUNPCKLPD / UNPCKLPD </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [2 x double]. \n
+///    Bits [63:0] are written to bits [63:0] of the destination.
+/// \param __b
+///    A 128-bit vector of [2 x double]. \n
+///    Bits [63:0] are written to bits [127:64] of the destination.
+/// \returns A 128-bit vector of [2 x double] containing the interleaved values.
+static __inline__ __m128d __DEFAULT_FN_ATTRS
+_mm_unpacklo_pd(__m128d __a, __m128d __b)
+{
+#ifdef __GNUC__
+  return (__m128d)__builtin_ia32_unpcklpd ((__v2df)__a, (__v2df)__b);
+#else
+  return __builtin_shufflevector((__v2df)__a, (__v2df)__b, 0, 2+0);
+#endif
+}
+
+/// Extracts the sign bits of the double-precision values in the 128-bit
+///    vector of [2 x double], zero-extends the value, and writes it to the
+///    low-order bits of the destination.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VMOVMSKPD / MOVMSKPD </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [2 x double] containing the values with sign bits to
+///    be extracted.
+/// \returns The sign bits from each of the double-precision elements in \a __a,
+///    written to bits [1:0]. The remaining bits are assigned values of zero.
+static __inline__ int __DEFAULT_FN_ATTRS
+_mm_movemask_pd(__m128d __a)
+{
+  return __builtin_ia32_movmskpd((__v2df)__a);
+}
+
+
+/// Constructs a 128-bit floating-point vector of [2 x double] from two
+///    128-bit vector parameters of [2 x double], using the immediate-value
+///     parameter as a specifier.
+///
+/// \headerfile <x86intrin.h>
+///
+/// \code
+/// __m128d _mm_shuffle_pd(__m128d a, __m128d b, const int i);
+/// \endcode
+///
+/// This intrinsic corresponds to the <c> VSHUFPD / SHUFPD </c> instruction.
+///
+/// \param a
+///    A 128-bit vector of [2 x double].
+/// \param b
+///    A 128-bit vector of [2 x double].
+/// \param i
+///    An 8-bit immediate value. The least significant two bits specify which
+///    elements to copy from \a a and \a b: \n
+///    Bit[0] = 0: lower element of \a a copied to lower element of result. \n
+///    Bit[0] = 1: upper element of \a a copied to lower element of result. \n
+///    Bit[1] = 0: lower element of \a b copied to upper element of result. \n
+///    Bit[1] = 1: upper element of \a b copied to upper element of result. \n
+/// \returns A 128-bit vector of [2 x double] containing the shuffled values.
+#define _mm_shuffle_pd(a, b, i) \
+  (__m128d)__builtin_ia32_shufpd((__v2df)(__m128d)(a), (__v2df)(__m128d)(b), \
+                                 (int)(i))
+
+/// Casts a 128-bit floating-point vector of [2 x double] into a 128-bit
+///    floating-point vector of [4 x float].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic has no corresponding instruction.
+///
+/// \param __a
+///    A 128-bit floating-point vector of [2 x double].
+/// \returns A 128-bit floating-point vector of [4 x float] containing the same
+///    bitwise pattern as the parameter.
+static __inline__ __m128 __DEFAULT_FN_ATTRS
+_mm_castpd_ps(__m128d __a)
+{
+  return (__m128)__a;
+}
+
+/// Casts a 128-bit floating-point vector of [2 x double] into a 128-bit
+///    integer vector.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic has no corresponding instruction.
+///
+/// \param __a
+///    A 128-bit floating-point vector of [2 x double].
+/// \returns A 128-bit integer vector containing the same bitwise pattern as the
+///    parameter.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_castpd_si128(__m128d __a)
+{
+  return (__m128i)__a;
+}
+
+/// Casts a 128-bit floating-point vector of [4 x float] into a 128-bit
+///    floating-point vector of [2 x double].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic has no corresponding instruction.
+///
+/// \param __a
+///    A 128-bit floating-point vector of [4 x float].
+/// \returns A 128-bit floating-point vector of [2 x double] containing the same
+///    bitwise pattern as the parameter.
+static __inline__ __m128d __DEFAULT_FN_ATTRS
+_mm_castps_pd(__m128 __a)
+{
+  return (__m128d)__a;
+}
+
+/// Casts a 128-bit floating-point vector of [4 x float] into a 128-bit
+///    integer vector.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic has no corresponding instruction.
+///
+/// \param __a
+///    A 128-bit floating-point vector of [4 x float].
+/// \returns A 128-bit integer vector containing the same bitwise pattern as the
+///    parameter.
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_castps_si128(__m128 __a)
+{
+  return (__m128i)__a;
+}
+
+/// Casts a 128-bit integer vector into a 128-bit floating-point vector
+///    of [4 x float].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic has no corresponding instruction.
+///
+/// \param __a
+///    A 128-bit integer vector.
+/// \returns A 128-bit floating-point vector of [4 x float] containing the same
+///    bitwise pattern as the parameter.
+static __inline__ __m128 __DEFAULT_FN_ATTRS
+_mm_castsi128_ps(__m128i __a)
+{
+  return (__m128)__a;
+}
+
+/// Casts a 128-bit integer vector into a 128-bit floating-point vector
+///    of [2 x double].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic has no corresponding instruction.
+///
+/// \param __a
+///    A 128-bit integer vector.
+/// \returns A 128-bit floating-point vector of [2 x double] containing the same
+///    bitwise pattern as the parameter.
+static __inline__ __m128d __DEFAULT_FN_ATTRS
+_mm_castsi128_pd(__m128i __a)
+{
+  return (__m128d)__a;
+}
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+#if defined(__cplusplus)
+} // extern "C"
+#endif
+#undef __DEFAULT_FN_ATTRS
+#undef __DEFAULT_FN_ATTRS_MMX
+
+#ifndef _MM_DENORMALS_ZERO_ON
+#define _MM_DENORMALS_ZERO_ON   (0x0040)
+#endif
+#ifndef _MM_DENORMALS_ZERO_OFF
+#define _MM_DENORMALS_ZERO_OFF  (0x0000)
+#endif
+
+#ifndef _MM_DENORMALS_ZERO_MASK
+#define _MM_DENORMALS_ZERO_MASK (0x0040)
+#endif
+
+#ifndef _MM_GET_DENORMALS_ZERO_MODE
+#define _MM_GET_DENORMALS_ZERO_MODE() (_mm_getcsr() & _MM_DENORMALS_ZERO_MASK)
+#define _MM_SET_DENORMALS_ZERO_MODE(x) (_mm_setcsr((_mm_getcsr() & ~_MM_DENORMALS_ZERO_MASK) | (x)))
+#endif
+
+#endif /* __EMMINTRIN_H */
diff --git a/include/mm_malloc.h b/include/mm_malloc.h
new file mode 100644
index 0000000..305afd3
--- /dev/null
+++ b/include/mm_malloc.h
@@ -0,0 +1,75 @@
+/*===---- mm_malloc.h - Allocating and Freeing Aligned Memory Blocks -------===
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ *===-----------------------------------------------------------------------===
+ */
+
+#ifndef __MM_MALLOC_H
+#define __MM_MALLOC_H
+
+#include <stdlib.h>
+
+#ifdef _WIN32
+#include <malloc.h>
+#else
+#ifndef __cplusplus
+extern int posix_memalign(void **__memptr, size_t __alignment, size_t __size);
+#else
+// Some systems (e.g. those with GNU libc) declare posix_memalign with an
+// exception specifier. Via an "egregious workaround" in
+// Sema::CheckEquivalentExceptionSpec, Clang accepts the following as a valid
+// redeclaration of glibc's declaration.
+extern "C" int posix_memalign(void **__memptr, size_t __alignment, size_t __size);
+#endif
+#endif
+
+#if !(defined(_WIN32) && defined(_mm_malloc))
+static __inline__ void *__attribute__((__always_inline__, __nodebug__,
+                                       __malloc__))
+_mm_malloc(size_t __size, size_t __align)
+{
+  if (__align == 1) {
+    return malloc(__size);
+  }
+
+  if (!(__align & (__align - 1)) && __align < sizeof(void *))
+    __align = sizeof(void *);
+
+  void *__mallocedMemory;
+#if defined(__MINGW32__)
+  __mallocedMemory = __mingw_aligned_malloc(__size, __align);
+#elif defined(_WIN32)
+  __mallocedMemory = _aligned_malloc(__size, __align);
+#else
+  if (posix_memalign(&__mallocedMemory, __align, __size))
+    return 0;
+#endif
+
+  return __mallocedMemory;
+}
+
+static __inline__ void __attribute__((__always_inline__, __nodebug__))
+_mm_free(void *__p)
+{
+  free(__p);
+}
+#endif
+
+#endif /* __MM_MALLOC_H */
diff --git a/include/mmintrin.h b/include/mmintrin.h
new file mode 100644
index 0000000..a5c2829
--- /dev/null
+++ b/include/mmintrin.h
@@ -0,0 +1,1598 @@
+/*===---- mmintrin.h - MMX intrinsics --------------------------------------===
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ *===-----------------------------------------------------------------------===
+ */
+
+#ifndef __MMINTRIN_H
+#define __MMINTRIN_H
+
+#ifdef __GNUC__
+typedef int __m64 __attribute__ ((__vector_size__ (8), __may_alias__));
+#else
+typedef long long __m64 __attribute__((__vector_size__(8)));
+#endif
+typedef int __m64_u __attribute__ ((__vector_size__ (8), __may_alias__, __aligned__ (1)));
+
+typedef long long __v1di __attribute__((__vector_size__(8)));
+typedef int __v2si __attribute__((__vector_size__(8)));
+typedef short __v4hi __attribute__((__vector_size__(8)));
+typedef char __v8qi __attribute__((__vector_size__(8)));
+typedef float __v2sf __attribute__ ((__vector_size__ (8)));
+/* Define the default attributes for the functions in this file. */
+#ifdef __GNUC__
+#define __DEFAULT_FN_ATTRS __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+#else
+#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("mmx"), __min_vector_width__(64)))
+#endif
+
+/// Clears the MMX state by setting the state of the x87 stack registers
+///    to empty.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> EMMS </c> instruction.
+///
+static __inline__ void
+#ifdef __GNUC__
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+#else
+__attribute__((__always_inline__, __nodebug__, __target__("mmx")))
+#endif
+_mm_empty(void)
+{
+    __builtin_ia32_emms();
+}
+
+/// Constructs a 64-bit integer vector, setting the lower 32 bits to the
+///    value of the 32-bit integer parameter and setting the upper 32 bits to 0.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> MOVD </c> instruction.
+///
+/// \param __i
+///    A 32-bit integer value.
+/// \returns A 64-bit integer vector. The lower 32 bits contain the value of the
+///    parameter. The upper 32 bits are set to 0.
+static __inline__ __m64 __DEFAULT_FN_ATTRS
+_mm_cvtsi32_si64(int __i)
+{
+    return (__m64)__builtin_ia32_vec_init_v2si(__i, 0);
+}
+
+/// Returns the lower 32 bits of a 64-bit integer vector as a 32-bit
+///    signed integer.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> MOVD </c> instruction.
+///
+/// \param __m
+///    A 64-bit integer vector.
+/// \returns A 32-bit signed integer value containing the lower 32 bits of the
+///    parameter.
+static __inline__ int __DEFAULT_FN_ATTRS
+_mm_cvtsi64_si32(__m64 __m)
+{
+    return __builtin_ia32_vec_ext_v2si((__v2si)__m, 0);
+}
+
+/// Casts a 64-bit signed integer value into a 64-bit integer vector.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> MOVQ </c> instruction.
+///
+/// \param __i
+///    A 64-bit signed integer.
+/// \returns A 64-bit integer vector containing the same bitwise pattern as the
+///    parameter.
+static __inline__ __m64 __DEFAULT_FN_ATTRS
+_mm_cvtsi64_m64(long long __i)
+{
+    return (__m64)__i;
+}
+
+/// Casts a 64-bit integer vector into a 64-bit signed integer value.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> MOVQ </c> instruction.
+///
+/// \param __m
+///    A 64-bit integer vector.
+/// \returns A 64-bit signed integer containing the same bitwise pattern as the
+///    parameter.
+static __inline__ long long __DEFAULT_FN_ATTRS
+_mm_cvtm64_si64(__m64 __m)
+{
+    return (long long)__m;
+}
+
+/// Converts 16-bit signed integers from both 64-bit integer vector
+///    parameters of [4 x i16] into 8-bit signed integer values, and constructs
+///    a 64-bit integer vector of [8 x i8] as the result. Positive values
+///    greater than 0x7F are saturated to 0x7F. Negative values less than 0x80
+///    are saturated to 0x80.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> PACKSSWB </c> instruction.
+///
+/// \param __m1
+///    A 64-bit integer vector of [4 x i16]. Each 16-bit element is treated as a
+///    16-bit signed integer and is converted to an 8-bit signed integer with
+///    saturation. Positive values greater than 0x7F are saturated to 0x7F.
+///    Negative values less than 0x80 are saturated to 0x80. The converted
+///    [4 x i8] values are written to the lower 32 bits of the result.
+/// \param __m2
+///    A 64-bit integer vector of [4 x i16]. Each 16-bit element is treated as a
+///    16-bit signed integer and is converted to an 8-bit signed integer with
+///    saturation. Positive values greater than 0x7F are saturated to 0x7F.
+///    Negative values less than 0x80 are saturated to 0x80. The converted
+///    [4 x i8] values are written to the upper 32 bits of the result.
+/// \returns A 64-bit integer vector of [8 x i8] containing the converted
+///    values.
+static __inline__ __m64 __DEFAULT_FN_ATTRS
+_mm_packs_pi16(__m64 __m1, __m64 __m2)
+{
+    return (__m64)__builtin_ia32_packsswb((__v4hi)__m1, (__v4hi)__m2);
+}
+
+/// Converts 32-bit signed integers from both 64-bit integer vector
+///    parameters of [2 x i32] into 16-bit signed integer values, and constructs
+///    a 64-bit integer vector of [4 x i16] as the result. Positive values
+///    greater than 0x7FFF are saturated to 0x7FFF. Negative values less than
+///    0x8000 are saturated to 0x8000.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> PACKSSDW </c> instruction.
+///
+/// \param __m1
+///    A 64-bit integer vector of [2 x i32]. Each 32-bit element is treated as a
+///    32-bit signed integer and is converted to a 16-bit signed integer with
+///    saturation. Positive values greater than 0x7FFF are saturated to 0x7FFF.
+///    Negative values less than 0x8000 are saturated to 0x8000. The converted
+///    [2 x i16] values are written to the lower 32 bits of the result.
+/// \param __m2
+///    A 64-bit integer vector of [2 x i32]. Each 32-bit element is treated as a
+///    32-bit signed integer and is converted to a 16-bit signed integer with
+///    saturation. Positive values greater than 0x7FFF are saturated to 0x7FFF.
+///    Negative values less than 0x8000 are saturated to 0x8000. The converted
+///    [2 x i16] values are written to the upper 32 bits of the result.
+/// \returns A 64-bit integer vector of [4 x i16] containing the converted
+///    values.
+static __inline__ __m64 __DEFAULT_FN_ATTRS
+_mm_packs_pi32(__m64 __m1, __m64 __m2)
+{
+    return (__m64)__builtin_ia32_packssdw((__v2si)__m1, (__v2si)__m2);
+}
+
+/// Converts 16-bit signed integers from both 64-bit integer vector
+///    parameters of [4 x i16] into 8-bit unsigned integer values, and
+///    constructs a 64-bit integer vector of [8 x i8] as the result. Values
+///    greater than 0xFF are saturated to 0xFF. Values less than 0 are saturated
+///    to 0.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> PACKUSWB </c> instruction.
+///
+/// \param __m1
+///    A 64-bit integer vector of [4 x i16]. Each 16-bit element is treated as a
+///    16-bit signed integer and is converted to an 8-bit unsigned integer with
+///    saturation. Values greater than 0xFF are saturated to 0xFF. Values less
+///    than 0 are saturated to 0. The converted [4 x i8] values are written to
+///    the lower 32 bits of the result.
+/// \param __m2
+///    A 64-bit integer vector of [4 x i16]. Each 16-bit element is treated as a
+///    16-bit signed integer and is converted to an 8-bit unsigned integer with
+///    saturation. Values greater than 0xFF are saturated to 0xFF. Values less
+///    than 0 are saturated to 0. The converted [4 x i8] values are written to
+///    the upper 32 bits of the result.
+/// \returns A 64-bit integer vector of [8 x i8] containing the converted
+///    values.
+static __inline__ __m64 __DEFAULT_FN_ATTRS
+_mm_packs_pu16(__m64 __m1, __m64 __m2)
+{
+    return (__m64)__builtin_ia32_packuswb((__v4hi)__m1, (__v4hi)__m2);
+}
+
+/// Unpacks the upper 32 bits from two 64-bit integer vectors of [8 x i8]
+///    and interleaves them into a 64-bit integer vector of [8 x i8].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> PUNPCKHBW </c> instruction.
+///
+/// \param __m1
+///    A 64-bit integer vector of [8 x i8]. \n
+///    Bits [39:32] are written to bits [7:0] of the result. \n
+///    Bits [47:40] are written to bits [23:16] of the result. \n
+///    Bits [55:48] are written to bits [39:32] of the result. \n
+///    Bits [63:56] are written to bits [55:48] of the result.
+/// \param __m2
+///    A 64-bit integer vector of [8 x i8].
+///    Bits [39:32] are written to bits [15:8] of the result. \n
+///    Bits [47:40] are written to bits [31:24] of the result. \n
+///    Bits [55:48] are written to bits [47:40] of the result. \n
+///    Bits [63:56] are written to bits [63:56] of the result.
+/// \returns A 64-bit integer vector of [8 x i8] containing the interleaved
+///    values.
+static __inline__ __m64 __DEFAULT_FN_ATTRS
+_mm_unpackhi_pi8(__m64 __m1, __m64 __m2)
+{
+    return (__m64)__builtin_ia32_punpckhbw((__v8qi)__m1, (__v8qi)__m2);
+}
+
+/// Unpacks the upper 32 bits from two 64-bit integer vectors of
+///    [4 x i16] and interleaves them into a 64-bit integer vector of [4 x i16].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> PUNPCKHWD </c> instruction.
+///
+/// \param __m1
+///    A 64-bit integer vector of [4 x i16].
+///    Bits [47:32] are written to bits [15:0] of the result. \n
+///    Bits [63:48] are written to bits [47:32] of the result.
+/// \param __m2
+///    A 64-bit integer vector of [4 x i16].
+///    Bits [47:32] are written to bits [31:16] of the result. \n
+///    Bits [63:48] are written to bits [63:48] of the result.
+/// \returns A 64-bit integer vector of [4 x i16] containing the interleaved
+///    values.
+static __inline__ __m64 __DEFAULT_FN_ATTRS
+_mm_unpackhi_pi16(__m64 __m1, __m64 __m2)
+{
+    return (__m64)__builtin_ia32_punpckhwd((__v4hi)__m1, (__v4hi)__m2);
+}
+
+/// Unpacks the upper 32 bits from two 64-bit integer vectors of
+///    [2 x i32] and interleaves them into a 64-bit integer vector of [2 x i32].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> PUNPCKHDQ </c> instruction.
+///
+/// \param __m1
+///    A 64-bit integer vector of [2 x i32]. The upper 32 bits are written to
+///    the lower 32 bits of the result.
+/// \param __m2
+///    A 64-bit integer vector of [2 x i32]. The upper 32 bits are written to
+///    the upper 32 bits of the result.
+/// \returns A 64-bit integer vector of [2 x i32] containing the interleaved
+///    values.
+static __inline__ __m64 __DEFAULT_FN_ATTRS
+_mm_unpackhi_pi32(__m64 __m1, __m64 __m2)
+{
+    return (__m64)__builtin_ia32_punpckhdq((__v2si)__m1, (__v2si)__m2);
+}
+
+/// Unpacks the lower 32 bits from two 64-bit integer vectors of [8 x i8]
+///    and interleaves them into a 64-bit integer vector of [8 x i8].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> PUNPCKLBW </c> instruction.
+///
+/// \param __m1
+///    A 64-bit integer vector of [8 x i8].
+///    Bits [7:0] are written to bits [7:0] of the result. \n
+///    Bits [15:8] are written to bits [23:16] of the result. \n
+///    Bits [23:16] are written to bits [39:32] of the result. \n
+///    Bits [31:24] are written to bits [55:48] of the result.
+/// \param __m2
+///    A 64-bit integer vector of [8 x i8].
+///    Bits [7:0] are written to bits [15:8] of the result. \n
+///    Bits [15:8] are written to bits [31:24] of the result. \n
+///    Bits [23:16] are written to bits [47:40] of the result. \n
+///    Bits [31:24] are written to bits [63:56] of the result.
+/// \returns A 64-bit integer vector of [8 x i8] containing the interleaved
+///    values.
+static __inline__ __m64 __DEFAULT_FN_ATTRS
+_mm_unpacklo_pi8(__m64 __m1, __m64 __m2)
+{
+    return (__m64)__builtin_ia32_punpcklbw((__v8qi)__m1, (__v8qi)__m2);
+}
+
+/// Unpacks the lower 32 bits from two 64-bit integer vectors of
+///    [4 x i16] and interleaves them into a 64-bit integer vector of [4 x i16].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> PUNPCKLWD </c> instruction.
+///
+/// \param __m1
+///    A 64-bit integer vector of [4 x i16].
+///    Bits [15:0] are written to bits [15:0] of the result. \n
+///    Bits [31:16] are written to bits [47:32] of the result.
+/// \param __m2
+///    A 64-bit integer vector of [4 x i16].
+///    Bits [15:0] are written to bits [31:16] of the result. \n
+///    Bits [31:16] are written to bits [63:48] of the result.
+/// \returns A 64-bit integer vector of [4 x i16] containing the interleaved
+///    values.
+static __inline__ __m64 __DEFAULT_FN_ATTRS
+_mm_unpacklo_pi16(__m64 __m1, __m64 __m2)
+{
+    return (__m64)__builtin_ia32_punpcklwd((__v4hi)__m1, (__v4hi)__m2);
+}
+
+/// Unpacks the lower 32 bits from two 64-bit integer vectors of
+///    [2 x i32] and interleaves them into a 64-bit integer vector of [2 x i32].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> PUNPCKLDQ </c> instruction.
+///
+/// \param __m1
+///    A 64-bit integer vector of [2 x i32]. The lower 32 bits are written to
+///    the lower 32 bits of the result.
+/// \param __m2
+///    A 64-bit integer vector of [2 x i32]. The lower 32 bits are written to
+///    the upper 32 bits of the result.
+/// \returns A 64-bit integer vector of [2 x i32] containing the interleaved
+///    values.
+static __inline__ __m64 __DEFAULT_FN_ATTRS
+_mm_unpacklo_pi32(__m64 __m1, __m64 __m2)
+{
+    return (__m64)__builtin_ia32_punpckldq((__v2si)__m1, (__v2si)__m2);
+}
+
+/// Adds each 8-bit integer element of the first 64-bit integer vector
+///    of [8 x i8] to the corresponding 8-bit integer element of the second
+///    64-bit integer vector of [8 x i8]. The lower 8 bits of the results are
+///    packed into a 64-bit integer vector of [8 x i8].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> PADDB </c> instruction.
+///
+/// \param __m1
+///    A 64-bit integer vector of [8 x i8].
+/// \param __m2
+///    A 64-bit integer vector of [8 x i8].
+/// \returns A 64-bit integer vector of [8 x i8] containing the sums of both
+///    parameters.
+static __inline__ __m64 __DEFAULT_FN_ATTRS
+_mm_add_pi8(__m64 __m1, __m64 __m2)
+{
+    return (__m64)__builtin_ia32_paddb((__v8qi)__m1, (__v8qi)__m2);
+}
+
+/// Adds each 16-bit integer element of the first 64-bit integer vector
+///    of [4 x i16] to the corresponding 16-bit integer element of the second
+///    64-bit integer vector of [4 x i16]. The lower 16 bits of the results are
+///    packed into a 64-bit integer vector of [4 x i16].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> PADDW </c> instruction.
+///
+/// \param __m1
+///    A 64-bit integer vector of [4 x i16].
+/// \param __m2
+///    A 64-bit integer vector of [4 x i16].
+/// \returns A 64-bit integer vector of [4 x i16] containing the sums of both
+///    parameters.
+static __inline__ __m64 __DEFAULT_FN_ATTRS
+_mm_add_pi16(__m64 __m1, __m64 __m2)
+{
+    return (__m64)__builtin_ia32_paddw((__v4hi)__m1, (__v4hi)__m2);
+}
+
+/// Adds each 32-bit integer element of the first 64-bit integer vector
+///    of [2 x i32] to the corresponding 32-bit integer element of the second
+///    64-bit integer vector of [2 x i32]. The lower 32 bits of the results are
+///    packed into a 64-bit integer vector of [2 x i32].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> PADDD </c> instruction.
+///
+/// \param __m1
+///    A 64-bit integer vector of [2 x i32].
+/// \param __m2
+///    A 64-bit integer vector of [2 x i32].
+/// \returns A 64-bit integer vector of [2 x i32] containing the sums of both
+///    parameters.
+static __inline__ __m64 __DEFAULT_FN_ATTRS
+_mm_add_pi32(__m64 __m1, __m64 __m2)
+{
+    return (__m64)__builtin_ia32_paddd((__v2si)__m1, (__v2si)__m2);
+}
+
+/// Adds each 8-bit signed integer element of the first 64-bit integer
+///    vector of [8 x i8] to the corresponding 8-bit signed integer element of
+///    the second 64-bit integer vector of [8 x i8]. Positive sums greater than
+///    0x7F are saturated to 0x7F. Negative sums less than 0x80 are saturated to
+///    0x80. The results are packed into a 64-bit integer vector of [8 x i8].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> PADDSB </c> instruction.
+///
+/// \param __m1
+///    A 64-bit integer vector of [8 x i8].
+/// \param __m2
+///    A 64-bit integer vector of [8 x i8].
+/// \returns A 64-bit integer vector of [8 x i8] containing the saturated sums
+///    of both parameters.
+static __inline__ __m64 __DEFAULT_FN_ATTRS
+_mm_adds_pi8(__m64 __m1, __m64 __m2)
+{
+    return (__m64)__builtin_ia32_paddsb((__v8qi)__m1, (__v8qi)__m2);
+}
+
+/// Adds each 16-bit signed integer element of the first 64-bit integer
+///    vector of [4 x i16] to the corresponding 16-bit signed integer element of
+///    the second 64-bit integer vector of [4 x i16]. Positive sums greater than
+///    0x7FFF are saturated to 0x7FFF. Negative sums less than 0x8000 are
+///    saturated to 0x8000. The results are packed into a 64-bit integer vector
+///    of [4 x i16].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> PADDSW </c> instruction.
+///
+/// \param __m1
+///    A 64-bit integer vector of [4 x i16].
+/// \param __m2
+///    A 64-bit integer vector of [4 x i16].
+/// \returns A 64-bit integer vector of [4 x i16] containing the saturated sums
+///    of both parameters.
+static __inline__ __m64 __DEFAULT_FN_ATTRS
+_mm_adds_pi16(__m64 __m1, __m64 __m2)
+{
+    return (__m64)__builtin_ia32_paddsw((__v4hi)__m1, (__v4hi)__m2);
+}
+
+/// Adds each 8-bit unsigned integer element of the first 64-bit integer
+///    vector of [8 x i8] to the corresponding 8-bit unsigned integer element of
+///    the second 64-bit integer vector of [8 x i8]. Sums greater than 0xFF are
+///    saturated to 0xFF. The results are packed into a 64-bit integer vector of
+///    [8 x i8].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> PADDUSB </c> instruction.
+///
+/// \param __m1
+///    A 64-bit integer vector of [8 x i8].
+/// \param __m2
+///    A 64-bit integer vector of [8 x i8].
+/// \returns A 64-bit integer vector of [8 x i8] containing the saturated
+///    unsigned sums of both parameters.
+static __inline__ __m64 __DEFAULT_FN_ATTRS
+_mm_adds_pu8(__m64 __m1, __m64 __m2)
+{
+    return (__m64)__builtin_ia32_paddusb((__v8qi)__m1, (__v8qi)__m2);
+}
+
+/// Adds each 16-bit unsigned integer element of the first 64-bit integer
+///    vector of [4 x i16] to the corresponding 16-bit unsigned integer element
+///    of the second 64-bit integer vector of [4 x i16]. Sums greater than
+///    0xFFFF are saturated to 0xFFFF. The results are packed into a 64-bit
+///    integer vector of [4 x i16].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> PADDUSW </c> instruction.
+///
+/// \param __m1
+///    A 64-bit integer vector of [4 x i16].
+/// \param __m2
+///    A 64-bit integer vector of [4 x i16].
+/// \returns A 64-bit integer vector of [4 x i16] containing the saturated
+///    unsigned sums of both parameters.
+static __inline__ __m64 __DEFAULT_FN_ATTRS
+_mm_adds_pu16(__m64 __m1, __m64 __m2)
+{
+    return (__m64)__builtin_ia32_paddusw((__v4hi)__m1, (__v4hi)__m2);
+}
+
+/// Subtracts each 8-bit integer element of the second 64-bit integer
+///    vector of [8 x i8] from the corresponding 8-bit integer element of the
+///    first 64-bit integer vector of [8 x i8]. The lower 8 bits of the results
+///    are packed into a 64-bit integer vector of [8 x i8].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> PSUBB </c> instruction.
+///
+/// \param __m1
+///    A 64-bit integer vector of [8 x i8] containing the minuends.
+/// \param __m2
+///    A 64-bit integer vector of [8 x i8] containing the subtrahends.
+/// \returns A 64-bit integer vector of [8 x i8] containing the differences of
+///    both parameters.
+static __inline__ __m64 __DEFAULT_FN_ATTRS
+_mm_sub_pi8(__m64 __m1, __m64 __m2)
+{
+    return (__m64)__builtin_ia32_psubb((__v8qi)__m1, (__v8qi)__m2);
+}
+
+/// Subtracts each 16-bit integer element of the second 64-bit integer
+///    vector of [4 x i16] from the corresponding 16-bit integer element of the
+///    first 64-bit integer vector of [4 x i16]. The lower 16 bits of the
+///    results are packed into a 64-bit integer vector of [4 x i16].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> PSUBW </c> instruction.
+///
+/// \param __m1
+///    A 64-bit integer vector of [4 x i16] containing the minuends.
+/// \param __m2
+///    A 64-bit integer vector of [4 x i16] containing the subtrahends.
+/// \returns A 64-bit integer vector of [4 x i16] containing the differences of
+///    both parameters.
+static __inline__ __m64 __DEFAULT_FN_ATTRS
+_mm_sub_pi16(__m64 __m1, __m64 __m2)
+{
+    return (__m64)__builtin_ia32_psubw((__v4hi)__m1, (__v4hi)__m2);
+}
+
+/// Subtracts each 32-bit integer element of the second 64-bit integer
+///    vector of [2 x i32] from the corresponding 32-bit integer element of the
+///    first 64-bit integer vector of [2 x i32]. The lower 32 bits of the
+///    results are packed into a 64-bit integer vector of [2 x i32].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> PSUBD </c> instruction.
+///
+/// \param __m1
+///    A 64-bit integer vector of [2 x i32] containing the minuends.
+/// \param __m2
+///    A 64-bit integer vector of [2 x i32] containing the subtrahends.
+/// \returns A 64-bit integer vector of [2 x i32] containing the differences of
+///    both parameters.
+static __inline__ __m64 __DEFAULT_FN_ATTRS
+_mm_sub_pi32(__m64 __m1, __m64 __m2)
+{
+    return (__m64)__builtin_ia32_psubd((__v2si)__m1, (__v2si)__m2);
+}
+
+/// Subtracts each 8-bit signed integer element of the second 64-bit
+///    integer vector of [8 x i8] from the corresponding 8-bit signed integer
+///    element of the first 64-bit integer vector of [8 x i8]. Positive results
+///    greater than 0x7F are saturated to 0x7F. Negative results less than 0x80
+///    are saturated to 0x80. The results are packed into a 64-bit integer
+///    vector of [8 x i8].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> PSUBSB </c> instruction.
+///
+/// \param __m1
+///    A 64-bit integer vector of [8 x i8] containing the minuends.
+/// \param __m2
+///    A 64-bit integer vector of [8 x i8] containing the subtrahends.
+/// \returns A 64-bit integer vector of [8 x i8] containing the saturated
+///    differences of both parameters.
+static __inline__ __m64 __DEFAULT_FN_ATTRS
+_mm_subs_pi8(__m64 __m1, __m64 __m2)
+{
+    return (__m64)__builtin_ia32_psubsb((__v8qi)__m1, (__v8qi)__m2);
+}
+
+/// Subtracts each 16-bit signed integer element of the second 64-bit
+///    integer vector of [4 x i16] from the corresponding 16-bit signed integer
+///    element of the first 64-bit integer vector of [4 x i16]. Positive results
+///    greater than 0x7FFF are saturated to 0x7FFF. Negative results less than
+///    0x8000 are saturated to 0x8000. The results are packed into a 64-bit
+///    integer vector of [4 x i16].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> PSUBSW </c> instruction.
+///
+/// \param __m1
+///    A 64-bit integer vector of [4 x i16] containing the minuends.
+/// \param __m2
+///    A 64-bit integer vector of [4 x i16] containing the subtrahends.
+/// \returns A 64-bit integer vector of [4 x i16] containing the saturated
+///    differences of both parameters.
+static __inline__ __m64 __DEFAULT_FN_ATTRS
+_mm_subs_pi16(__m64 __m1, __m64 __m2)
+{
+    return (__m64)__builtin_ia32_psubsw((__v4hi)__m1, (__v4hi)__m2);
+}
+
+/// Subtracts each 8-bit unsigned integer element of the second 64-bit
+///    integer vector of [8 x i8] from the corresponding 8-bit unsigned integer
+///    element of the first 64-bit integer vector of [8 x i8].
+///
+///    If an element of the first vector is less than the corresponding element
+///    of the second vector, the result is saturated to 0. The results are
+///    packed into a 64-bit integer vector of [8 x i8].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> PSUBUSB </c> instruction.
+///
+/// \param __m1
+///    A 64-bit integer vector of [8 x i8] containing the minuends.
+/// \param __m2
+///    A 64-bit integer vector of [8 x i8] containing the subtrahends.
+/// \returns A 64-bit integer vector of [8 x i8] containing the saturated
+///    differences of both parameters.
+static __inline__ __m64 __DEFAULT_FN_ATTRS
+_mm_subs_pu8(__m64 __m1, __m64 __m2)
+{
+    return (__m64)__builtin_ia32_psubusb((__v8qi)__m1, (__v8qi)__m2);
+}
+
+/// Subtracts each 16-bit unsigned integer element of the second 64-bit
+///    integer vector of [4 x i16] from the corresponding 16-bit unsigned
+///    integer element of the first 64-bit integer vector of [4 x i16].
+///
+///    If an element of the first vector is less than the corresponding element
+///    of the second vector, the result is saturated to 0. The results are
+///    packed into a 64-bit integer vector of [4 x i16].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> PSUBUSW </c> instruction.
+///
+/// \param __m1
+///    A 64-bit integer vector of [4 x i16] containing the minuends.
+/// \param __m2
+///    A 64-bit integer vector of [4 x i16] containing the subtrahends.
+/// \returns A 64-bit integer vector of [4 x i16] containing the saturated
+///    differences of both parameters.
+static __inline__ __m64 __DEFAULT_FN_ATTRS
+_mm_subs_pu16(__m64 __m1, __m64 __m2)
+{
+    return (__m64)__builtin_ia32_psubusw((__v4hi)__m1, (__v4hi)__m2);
+}
+
+/// Multiplies each 16-bit signed integer element of the first 64-bit
+///    integer vector of [4 x i16] by the corresponding 16-bit signed integer
+///    element of the second 64-bit integer vector of [4 x i16] and get four
+///    32-bit products. Adds adjacent pairs of products to get two 32-bit sums.
+///    The lower 32 bits of these two sums are packed into a 64-bit integer
+///    vector of [2 x i32].
+///
+///    For example, bits [15:0] of both parameters are multiplied, bits [31:16]
+///    of both parameters are multiplied, and the sum of both results is written
+///    to bits [31:0] of the result.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> PMADDWD </c> instruction.
+///
+/// \param __m1
+///    A 64-bit integer vector of [4 x i16].
+/// \param __m2
+///    A 64-bit integer vector of [4 x i16].
+/// \returns A 64-bit integer vector of [2 x i32] containing the sums of
+///    products of both parameters.
+static __inline__ __m64 __DEFAULT_FN_ATTRS
+_mm_madd_pi16(__m64 __m1, __m64 __m2)
+{
+    return (__m64)__builtin_ia32_pmaddwd((__v4hi)__m1, (__v4hi)__m2);
+}
+
+/// Multiplies each 16-bit signed integer element of the first 64-bit
+///    integer vector of [4 x i16] by the corresponding 16-bit signed integer
+///    element of the second 64-bit integer vector of [4 x i16]. Packs the upper
+///    16 bits of the 32-bit products into a 64-bit integer vector of [4 x i16].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> PMULHW </c> instruction.
+///
+/// \param __m1
+///    A 64-bit integer vector of [4 x i16].
+/// \param __m2
+///    A 64-bit integer vector of [4 x i16].
+/// \returns A 64-bit integer vector of [4 x i16] containing the upper 16 bits
+///    of the products of both parameters.
+static __inline__ __m64 __DEFAULT_FN_ATTRS
+_mm_mulhi_pi16(__m64 __m1, __m64 __m2)
+{
+    return (__m64)__builtin_ia32_pmulhw((__v4hi)__m1, (__v4hi)__m2);
+}
+
+/// Multiplies each 16-bit signed integer element of the first 64-bit
+///    integer vector of [4 x i16] by the corresponding 16-bit signed integer
+///    element of the second 64-bit integer vector of [4 x i16]. Packs the lower
+///    16 bits of the 32-bit products into a 64-bit integer vector of [4 x i16].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> PMULLW </c> instruction.
+///
+/// \param __m1
+///    A 64-bit integer vector of [4 x i16].
+/// \param __m2
+///    A 64-bit integer vector of [4 x i16].
+/// \returns A 64-bit integer vector of [4 x i16] containing the lower 16 bits
+///    of the products of both parameters.
+static __inline__ __m64 __DEFAULT_FN_ATTRS
+_mm_mullo_pi16(__m64 __m1, __m64 __m2)
+{
+    return (__m64)__builtin_ia32_pmullw((__v4hi)__m1, (__v4hi)__m2);
+}
+
+/// Left-shifts each 16-bit signed integer element of the first
+///    parameter, which is a 64-bit integer vector of [4 x i16], by the number
+///    of bits specified by the second parameter, which is a 64-bit integer. The
+///    lower 16 bits of the results are packed into a 64-bit integer vector of
+///    [4 x i16].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> PSLLW </c> instruction.
+///
+/// \param __m
+///    A 64-bit integer vector of [4 x i16].
+/// \param __count
+///    A 64-bit integer vector interpreted as a single 64-bit integer.
+/// \returns A 64-bit integer vector of [4 x i16] containing the left-shifted
+///    values. If \a __count is greater or equal to 16, the result is set to all
+///    0.
+static __inline__ __m64 __DEFAULT_FN_ATTRS
+_mm_sll_pi16(__m64 __m, __m64 __count)
+{
+#ifdef __GNUC__
+    return (__m64) __builtin_ia32_psllw ((__v4hi)__m, (__v4hi)__count);
+#else
+    return (__m64)__builtin_ia32_psllw((__v4hi)__m, __count);
+#endif
+}
+
+/// Left-shifts each 16-bit signed integer element of a 64-bit integer
+///    vector of [4 x i16] by the number of bits specified by a 32-bit integer.
+///    The lower 16 bits of the results are packed into a 64-bit integer vector
+///    of [4 x i16].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> PSLLW </c> instruction.
+///
+/// \param __m
+///    A 64-bit integer vector of [4 x i16].
+/// \param __count
+///    A 32-bit integer value.
+/// \returns A 64-bit integer vector of [4 x i16] containing the left-shifted
+///    values. If \a __count is greater or equal to 16, the result is set to all
+///    0.
+static __inline__ __m64 __DEFAULT_FN_ATTRS
+_mm_slli_pi16(__m64 __m, int __count)
+{
+    return (__m64)__builtin_ia32_psllwi((__v4hi)__m, __count);
+}
+
+/// Left-shifts each 32-bit signed integer element of the first
+///    parameter, which is a 64-bit integer vector of [2 x i32], by the number
+///    of bits specified by the second parameter, which is a 64-bit integer. The
+///    lower 32 bits of the results are packed into a 64-bit integer vector of
+///    [2 x i32].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> PSLLD </c> instruction.
+///
+/// \param __m
+///    A 64-bit integer vector of [2 x i32].
+/// \param __count
+///    A 64-bit integer vector interpreted as a single 64-bit integer.
+/// \returns A 64-bit integer vector of [2 x i32] containing the left-shifted
+///    values. If \a __count is greater or equal to 32, the result is set to all
+///    0.
+static __inline__ __m64 __DEFAULT_FN_ATTRS
+_mm_sll_pi32(__m64 __m, __m64 __count)
+{
+    return (__m64)__builtin_ia32_pslld((__v2si)__m, (__v2si)__count);
+}
+
+/// Left-shifts each 32-bit signed integer element of a 64-bit integer
+///    vector of [2 x i32] by the number of bits specified by a 32-bit integer.
+///    The lower 32 bits of the results are packed into a 64-bit integer vector
+///    of [2 x i32].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> PSLLD </c> instruction.
+///
+/// \param __m
+///    A 64-bit integer vector of [2 x i32].
+/// \param __count
+///    A 32-bit integer value.
+/// \returns A 64-bit integer vector of [2 x i32] containing the left-shifted
+///    values. If \a __count is greater or equal to 32, the result is set to all
+///    0.
+static __inline__ __m64 __DEFAULT_FN_ATTRS
+_mm_slli_pi32(__m64 __m, int __count)
+{
+    return (__m64)__builtin_ia32_pslldi((__v2si)__m, __count);
+}
+
+/// Left-shifts the first 64-bit integer parameter by the number of bits
+///    specified by the second 64-bit integer parameter. The lower 64 bits of
+///    result are returned.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> PSLLQ </c> instruction.
+///
+/// \param __m
+///    A 64-bit integer vector interpreted as a single 64-bit integer.
+/// \param __count
+///    A 64-bit integer vector interpreted as a single 64-bit integer.
+/// \returns A 64-bit integer vector containing the left-shifted value. If
+///     \a __count is greater or equal to 64, the result is set to 0.
+static __inline__ __m64 __DEFAULT_FN_ATTRS
+_mm_sll_si64(__m64 __m, __m64 __count)
+{
+    return (__m64)__builtin_ia32_psllq((__v1di)__m, (__v1di)__count);
+}
+
+/// Left-shifts the first parameter, which is a 64-bit integer, by the
+///    number of bits specified by the second parameter, which is a 32-bit
+///    integer. The lower 64 bits of result are returned.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> PSLLQ </c> instruction.
+///
+/// \param __m
+///    A 64-bit integer vector interpreted as a single 64-bit integer.
+/// \param __count
+///    A 32-bit integer value.
+/// \returns A 64-bit integer vector containing the left-shifted value. If
+///     \a __count is greater or equal to 64, the result is set to 0.
+static __inline__ __m64 __DEFAULT_FN_ATTRS
+_mm_slli_si64(__m64 __m, int __count)
+{
+    return (__m64)__builtin_ia32_psllqi((__v1di)__m, __count);
+}
+
+/// Right-shifts each 16-bit integer element of the first parameter,
+///    which is a 64-bit integer vector of [4 x i16], by the number of bits
+///    specified by the second parameter, which is a 64-bit integer.
+///
+///    High-order bits are filled with the sign bit of the initial value of each
+///    16-bit element. The 16-bit results are packed into a 64-bit integer
+///    vector of [4 x i16].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> PSRAW </c> instruction.
+///
+/// \param __m
+///    A 64-bit integer vector of [4 x i16].
+/// \param __count
+///    A 64-bit integer vector interpreted as a single 64-bit integer.
+/// \returns A 64-bit integer vector of [4 x i16] containing the right-shifted
+///    values.
+static __inline__ __m64 __DEFAULT_FN_ATTRS
+_mm_sra_pi16(__m64 __m, __m64 __count)
+{
+    return (__m64)__builtin_ia32_psraw((__v4hi)__m, (__v4hi)__count);
+}
+
+/// Right-shifts each 16-bit integer element of a 64-bit integer vector
+///    of [4 x i16] by the number of bits specified by a 32-bit integer.
+///
+///    High-order bits are filled with the sign bit of the initial value of each
+///    16-bit element. The 16-bit results are packed into a 64-bit integer
+///    vector of [4 x i16].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> PSRAW </c> instruction.
+///
+/// \param __m
+///    A 64-bit integer vector of [4 x i16].
+/// \param __count
+///    A 32-bit integer value.
+/// \returns A 64-bit integer vector of [4 x i16] containing the right-shifted
+///    values.
+static __inline__ __m64 __DEFAULT_FN_ATTRS
+_mm_srai_pi16(__m64 __m, int __count)
+{
+    return (__m64)__builtin_ia32_psrawi((__v4hi)__m, __count);
+}
+
+/// Right-shifts each 32-bit integer element of the first parameter,
+///    which is a 64-bit integer vector of [2 x i32], by the number of bits
+///    specified by the second parameter, which is a 64-bit integer.
+///
+///    High-order bits are filled with the sign bit of the initial value of each
+///    32-bit element. The 32-bit results are packed into a 64-bit integer
+///    vector of [2 x i32].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> PSRAD </c> instruction.
+///
+/// \param __m
+///    A 64-bit integer vector of [2 x i32].
+/// \param __count
+///    A 64-bit integer vector interpreted as a single 64-bit integer.
+/// \returns A 64-bit integer vector of [2 x i32] containing the right-shifted
+///    values.
+static __inline__ __m64 __DEFAULT_FN_ATTRS
+_mm_sra_pi32(__m64 __m, __m64 __count)
+{
+    return (__m64)__builtin_ia32_psrad((__v2si)__m, (__v2si)__count);
+}
+
+/// Right-shifts each 32-bit integer element of a 64-bit integer vector
+///    of [2 x i32] by the number of bits specified by a 32-bit integer.
+///
+///    High-order bits are filled with the sign bit of the initial value of each
+///    32-bit element. The 32-bit results are packed into a 64-bit integer
+///    vector of [2 x i32].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> PSRAD </c> instruction.
+///
+/// \param __m
+///    A 64-bit integer vector of [2 x i32].
+/// \param __count
+///    A 32-bit integer value.
+/// \returns A 64-bit integer vector of [2 x i32] containing the right-shifted
+///    values.
+static __inline__ __m64 __DEFAULT_FN_ATTRS
+_mm_srai_pi32(__m64 __m, int __count)
+{
+    return (__m64)__builtin_ia32_psradi((__v2si)__m, __count);
+}
+
+/// Right-shifts each 16-bit integer element of the first parameter,
+///    which is a 64-bit integer vector of [4 x i16], by the number of bits
+///    specified by the second parameter, which is a 64-bit integer.
+///
+///    High-order bits are cleared. The 16-bit results are packed into a 64-bit
+///    integer vector of [4 x i16].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> PSRLW </c> instruction.
+///
+/// \param __m
+///    A 64-bit integer vector of [4 x i16].
+/// \param __count
+///    A 64-bit integer vector interpreted as a single 64-bit integer.
+/// \returns A 64-bit integer vector of [4 x i16] containing the right-shifted
+///    values.
+static __inline__ __m64 __DEFAULT_FN_ATTRS
+_mm_srl_pi16(__m64 __m, __m64 __count)
+{
+    return (__m64)__builtin_ia32_psrlw((__v4hi)__m, (__v4hi)__count);
+}
+
+/// Right-shifts each 16-bit integer element of a 64-bit integer vector
+///    of [4 x i16] by the number of bits specified by a 32-bit integer.
+///
+///    High-order bits are cleared. The 16-bit results are packed into a 64-bit
+///    integer vector of [4 x i16].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> PSRLW </c> instruction.
+///
+/// \param __m
+///    A 64-bit integer vector of [4 x i16].
+/// \param __count
+///    A 32-bit integer value.
+/// \returns A 64-bit integer vector of [4 x i16] containing the right-shifted
+///    values.
+static __inline__ __m64 __DEFAULT_FN_ATTRS
+_mm_srli_pi16(__m64 __m, int __count)
+{
+    return (__m64)__builtin_ia32_psrlwi((__v4hi)__m, __count);
+}
+
+/// Right-shifts each 32-bit integer element of the first parameter,
+///    which is a 64-bit integer vector of [2 x i32], by the number of bits
+///    specified by the second parameter, which is a 64-bit integer.
+///
+///    High-order bits are cleared. The 32-bit results are packed into a 64-bit
+///    integer vector of [2 x i32].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> PSRLD </c> instruction.
+///
+/// \param __m
+///    A 64-bit integer vector of [2 x i32].
+/// \param __count
+///    A 64-bit integer vector interpreted as a single 64-bit integer.
+/// \returns A 64-bit integer vector of [2 x i32] containing the right-shifted
+///    values.
+static __inline__ __m64 __DEFAULT_FN_ATTRS
+_mm_srl_pi32(__m64 __m, __m64 __count)
+{
+    return (__m64)__builtin_ia32_psrld((__v2si)__m, (__v2si)__count);
+}
+
+/// Right-shifts each 32-bit integer element of a 64-bit integer vector
+///    of [2 x i32] by the number of bits specified by a 32-bit integer.
+///
+///    High-order bits are cleared. The 32-bit results are packed into a 64-bit
+///    integer vector of [2 x i32].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> PSRLD </c> instruction.
+///
+/// \param __m
+///    A 64-bit integer vector of [2 x i32].
+/// \param __count
+///    A 32-bit integer value.
+/// \returns A 64-bit integer vector of [2 x i32] containing the right-shifted
+///    values.
+static __inline__ __m64 __DEFAULT_FN_ATTRS
+_mm_srli_pi32(__m64 __m, int __count)
+{
+    return (__m64)__builtin_ia32_psrldi((__v2si)__m, __count);
+}
+
+/// Right-shifts the first 64-bit integer parameter by the number of bits
+///    specified by the second 64-bit integer parameter.
+///
+///    High-order bits are cleared.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> PSRLQ </c> instruction.
+///
+/// \param __m
+///    A 64-bit integer vector interpreted as a single 64-bit integer.
+/// \param __count
+///    A 64-bit integer vector interpreted as a single 64-bit integer.
+/// \returns A 64-bit integer vector containing the right-shifted value.
+static __inline__ __m64 __DEFAULT_FN_ATTRS
+_mm_srl_si64(__m64 __m, __m64 __count)
+{
+    return (__m64)__builtin_ia32_psrlq((__v1di)__m, (__v1di)__count);
+}
+
+/// Right-shifts the first parameter, which is a 64-bit integer, by the
+///    number of bits specified by the second parameter, which is a 32-bit
+///    integer.
+///
+///    High-order bits are cleared.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> PSRLQ </c> instruction.
+///
+/// \param __m
+///    A 64-bit integer vector interpreted as a single 64-bit integer.
+/// \param __count
+///    A 32-bit integer value.
+/// \returns A 64-bit integer vector containing the right-shifted value.
+static __inline__ __m64 __DEFAULT_FN_ATTRS
+_mm_srli_si64(__m64 __m, int __count)
+{
+    return (__m64)__builtin_ia32_psrlqi((__v1di)__m, __count);
+}
+
+/// Performs a bitwise AND of two 64-bit integer vectors.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> PAND </c> instruction.
+///
+/// \param __m1
+///    A 64-bit integer vector.
+/// \param __m2
+///    A 64-bit integer vector.
+/// \returns A 64-bit integer vector containing the bitwise AND of both
+///    parameters.
+static __inline__ __m64 __DEFAULT_FN_ATTRS
+_mm_and_si64(__m64 __m1, __m64 __m2)
+{
+    return __builtin_ia32_pand(__m1, __m2);
+}
+
+/// Performs a bitwise NOT of the first 64-bit integer vector, and then
+///    performs a bitwise AND of the intermediate result and the second 64-bit
+///    integer vector.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> PANDN </c> instruction.
+///
+/// \param __m1
+///    A 64-bit integer vector. The one's complement of this parameter is used
+///    in the bitwise AND.
+/// \param __m2
+///    A 64-bit integer vector.
+/// \returns A 64-bit integer vector containing the bitwise AND of the second
+///    parameter and the one's complement of the first parameter.
+static __inline__ __m64 __DEFAULT_FN_ATTRS
+_mm_andnot_si64(__m64 __m1, __m64 __m2)
+{
+#ifdef __GNUC__
+    return __builtin_ia32_pandn (__m1, __m2);
+#else
+    return __builtin_ia32_pandn((__v1di)__m1, (__v1di)__m2);
+#endif
+}
+
+/// Performs a bitwise OR of two 64-bit integer vectors.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> POR </c> instruction.
+///
+/// \param __m1
+///    A 64-bit integer vector.
+/// \param __m2
+///    A 64-bit integer vector.
+/// \returns A 64-bit integer vector containing the bitwise OR of both
+///    parameters.
+static __inline__ __m64 __DEFAULT_FN_ATTRS
+_mm_or_si64(__m64 __m1, __m64 __m2)
+{
+#ifdef __GNUC__
+    return __builtin_ia32_por(__m1, __m2);
+#else
+    return __builtin_ia32_por((__v1di)__m1, (__v1di)__m2);
+#endif
+}
+
+/// Performs a bitwise exclusive OR of two 64-bit integer vectors.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> PXOR </c> instruction.
+///
+/// \param __m1
+///    A 64-bit integer vector.
+/// \param __m2
+///    A 64-bit integer vector.
+/// \returns A 64-bit integer vector containing the bitwise exclusive OR of both
+///    parameters.
+static __inline__ __m64 __DEFAULT_FN_ATTRS
+_mm_xor_si64(__m64 __m1, __m64 __m2)
+{
+    return __builtin_ia32_pxor (__m1, __m2);
+}
+
+/// Compares the 8-bit integer elements of two 64-bit integer vectors of
+///    [8 x i8] to determine if the element of the first vector is equal to the
+///    corresponding element of the second vector.
+///
+///    The comparison yields 0 for false, 0xFF for true.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> PCMPEQB </c> instruction.
+///
+/// \param __m1
+///    A 64-bit integer vector of [8 x i8].
+/// \param __m2
+///    A 64-bit integer vector of [8 x i8].
+/// \returns A 64-bit integer vector of [8 x i8] containing the comparison
+///    results.
+static __inline__ __m64 __DEFAULT_FN_ATTRS
+_mm_cmpeq_pi8(__m64 __m1, __m64 __m2)
+{
+    return (__m64)__builtin_ia32_pcmpeqb((__v8qi)__m1, (__v8qi)__m2);
+}
+
+/// Compares the 16-bit integer elements of two 64-bit integer vectors of
+///    [4 x i16] to determine if the element of the first vector is equal to the
+///    corresponding element of the second vector.
+///
+///    The comparison yields 0 for false, 0xFFFF for true.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> PCMPEQW </c> instruction.
+///
+/// \param __m1
+///    A 64-bit integer vector of [4 x i16].
+/// \param __m2
+///    A 64-bit integer vector of [4 x i16].
+/// \returns A 64-bit integer vector of [4 x i16] containing the comparison
+///    results.
+static __inline__ __m64 __DEFAULT_FN_ATTRS
+_mm_cmpeq_pi16(__m64 __m1, __m64 __m2)
+{
+    return (__m64)__builtin_ia32_pcmpeqw((__v4hi)__m1, (__v4hi)__m2);
+}
+
+/// Compares the 32-bit integer elements of two 64-bit integer vectors of
+///    [2 x i32] to determine if the element of the first vector is equal to the
+///    corresponding element of the second vector.
+///
+///    The comparison yields 0 for false, 0xFFFFFFFF for true.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> PCMPEQD </c> instruction.
+///
+/// \param __m1
+///    A 64-bit integer vector of [2 x i32].
+/// \param __m2
+///    A 64-bit integer vector of [2 x i32].
+/// \returns A 64-bit integer vector of [2 x i32] containing the comparison
+///    results.
+static __inline__ __m64 __DEFAULT_FN_ATTRS
+_mm_cmpeq_pi32(__m64 __m1, __m64 __m2)
+{
+    return (__m64)__builtin_ia32_pcmpeqd((__v2si)__m1, (__v2si)__m2);
+}
+
+/// Compares the 8-bit integer elements of two 64-bit integer vectors of
+///    [8 x i8] to determine if the element of the first vector is greater than
+///    the corresponding element of the second vector.
+///
+///    The comparison yields 0 for false, 0xFF for true.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> PCMPGTB </c> instruction.
+///
+/// \param __m1
+///    A 64-bit integer vector of [8 x i8].
+/// \param __m2
+///    A 64-bit integer vector of [8 x i8].
+/// \returns A 64-bit integer vector of [8 x i8] containing the comparison
+///    results.
+static __inline__ __m64 __DEFAULT_FN_ATTRS
+_mm_cmpgt_pi8(__m64 __m1, __m64 __m2)
+{
+    return (__m64)__builtin_ia32_pcmpgtb((__v8qi)__m1, (__v8qi)__m2);
+}
+
+/// Compares the 16-bit integer elements of two 64-bit integer vectors of
+///    [4 x i16] to determine if the element of the first vector is greater than
+///    the corresponding element of the second vector.
+///
+///    The comparison yields 0 for false, 0xFFFF for true.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> PCMPGTW </c> instruction.
+///
+/// \param __m1
+///    A 64-bit integer vector of [4 x i16].
+/// \param __m2
+///    A 64-bit integer vector of [4 x i16].
+/// \returns A 64-bit integer vector of [4 x i16] containing the comparison
+///    results.
+static __inline__ __m64 __DEFAULT_FN_ATTRS
+_mm_cmpgt_pi16(__m64 __m1, __m64 __m2)
+{
+    return (__m64)__builtin_ia32_pcmpgtw((__v4hi)__m1, (__v4hi)__m2);
+}
+
+/// Compares the 32-bit integer elements of two 64-bit integer vectors of
+///    [2 x i32] to determine if the element of the first vector is greater than
+///    the corresponding element of the second vector.
+///
+///    The comparison yields 0 for false, 0xFFFFFFFF for true.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> PCMPGTD </c> instruction.
+///
+/// \param __m1
+///    A 64-bit integer vector of [2 x i32].
+/// \param __m2
+///    A 64-bit integer vector of [2 x i32].
+/// \returns A 64-bit integer vector of [2 x i32] containing the comparison
+///    results.
+static __inline__ __m64 __DEFAULT_FN_ATTRS
+_mm_cmpgt_pi32(__m64 __m1, __m64 __m2)
+{
+    return (__m64)__builtin_ia32_pcmpgtd((__v2si)__m1, (__v2si)__m2);
+}
+
+/// Constructs a 64-bit integer vector initialized to zero.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> PXOR </c> instruction.
+///
+/// \returns An initialized 64-bit integer vector with all elements set to zero.
+static __inline__ __m64 __DEFAULT_FN_ATTRS
+_mm_setzero_si64(void)
+{
+    return __extension__ (__m64){ 0LL };
+}
+
+/// Constructs a 64-bit integer vector initialized with the specified
+///    32-bit integer values.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic is a utility function and does not correspond to a specific
+///    instruction.
+///
+/// \param __i1
+///    A 32-bit integer value used to initialize the upper 32 bits of the
+///    result.
+/// \param __i0
+///    A 32-bit integer value used to initialize the lower 32 bits of the
+///    result.
+/// \returns An initialized 64-bit integer vector.
+static __inline__ __m64 __DEFAULT_FN_ATTRS
+_mm_set_pi32(int __i1, int __i0)
+{
+    return (__m64)__builtin_ia32_vec_init_v2si(__i0, __i1);
+}
+
+/// Constructs a 64-bit integer vector initialized with the specified
+///    16-bit integer values.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic is a utility function and does not correspond to a specific
+///    instruction.
+///
+/// \param __s3
+///    A 16-bit integer value used to initialize bits [63:48] of the result.
+/// \param __s2
+///    A 16-bit integer value used to initialize bits [47:32] of the result.
+/// \param __s1
+///    A 16-bit integer value used to initialize bits [31:16] of the result.
+/// \param __s0
+///    A 16-bit integer value used to initialize bits [15:0] of the result.
+/// \returns An initialized 64-bit integer vector.
+static __inline__ __m64 __DEFAULT_FN_ATTRS
+_mm_set_pi16(short __s3, short __s2, short __s1, short __s0)
+{
+    return (__m64)__builtin_ia32_vec_init_v4hi(__s0, __s1, __s2, __s3);
+}
+
+/// Constructs a 64-bit integer vector initialized with the specified
+///    8-bit integer values.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic is a utility function and does not correspond to a specific
+///    instruction.
+///
+/// \param __b7
+///    An 8-bit integer value used to initialize bits [63:56] of the result.
+/// \param __b6
+///    An 8-bit integer value used to initialize bits [55:48] of the result.
+/// \param __b5
+///    An 8-bit integer value used to initialize bits [47:40] of the result.
+/// \param __b4
+///    An 8-bit integer value used to initialize bits [39:32] of the result.
+/// \param __b3
+///    An 8-bit integer value used to initialize bits [31:24] of the result.
+/// \param __b2
+///    An 8-bit integer value used to initialize bits [23:16] of the result.
+/// \param __b1
+///    An 8-bit integer value used to initialize bits [15:8] of the result.
+/// \param __b0
+///    An 8-bit integer value used to initialize bits [7:0] of the result.
+/// \returns An initialized 64-bit integer vector.
+static __inline__ __m64 __DEFAULT_FN_ATTRS
+_mm_set_pi8(char __b7, char __b6, char __b5, char __b4, char __b3, char __b2,
+            char __b1, char __b0)
+{
+    return (__m64)__builtin_ia32_vec_init_v8qi(__b0, __b1, __b2, __b3,
+                                               __b4, __b5, __b6, __b7);
+}
+
+/// Constructs a 64-bit integer vector of [2 x i32], with each of the
+///    32-bit integer vector elements set to the specified 32-bit integer
+///    value.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic is a utility function and does not correspond to a specific
+///    instruction.
+///
+/// \param __i
+///    A 32-bit integer value used to initialize each vector element of the
+///    result.
+/// \returns An initialized 64-bit integer vector of [2 x i32].
+static __inline__ __m64 __DEFAULT_FN_ATTRS
+_mm_set1_pi32(int __i)
+{
+    return _mm_set_pi32(__i, __i);
+}
+
+/// Constructs a 64-bit integer vector of [4 x i16], with each of the
+///    16-bit integer vector elements set to the specified 16-bit integer
+///    value.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic is a utility function and does not correspond to a specific
+///    instruction.
+///
+/// \param __w
+///    A 16-bit integer value used to initialize each vector element of the
+///    result.
+/// \returns An initialized 64-bit integer vector of [4 x i16].
+static __inline__ __m64 __DEFAULT_FN_ATTRS
+_mm_set1_pi16(short __w)
+{
+    return _mm_set_pi16(__w, __w, __w, __w);
+}
+
+/// Constructs a 64-bit integer vector of [8 x i8], with each of the
+///    8-bit integer vector elements set to the specified 8-bit integer value.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic is a utility function and does not correspond to a specific
+///    instruction.
+///
+/// \param __b
+///    An 8-bit integer value used to initialize each vector element of the
+///    result.
+/// \returns An initialized 64-bit integer vector of [8 x i8].
+static __inline__ __m64 __DEFAULT_FN_ATTRS
+_mm_set1_pi8(char __b)
+{
+    return _mm_set_pi8(__b, __b, __b, __b, __b, __b, __b, __b);
+}
+
+/// Constructs a 64-bit integer vector, initialized in reverse order with
+///    the specified 32-bit integer values.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic is a utility function and does not correspond to a specific
+///    instruction.
+///
+/// \param __i0
+///    A 32-bit integer value used to initialize the lower 32 bits of the
+///    result.
+/// \param __i1
+///    A 32-bit integer value used to initialize the upper 32 bits of the
+///    result.
+/// \returns An initialized 64-bit integer vector.
+static __inline__ __m64 __DEFAULT_FN_ATTRS
+_mm_setr_pi32(int __i0, int __i1)
+{
+    return _mm_set_pi32(__i1, __i0);
+}
+
+/// Constructs a 64-bit integer vector, initialized in reverse order with
+///    the specified 16-bit integer values.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic is a utility function and does not correspond to a specific
+///    instruction.
+///
+/// \param __w0
+///    A 16-bit integer value used to initialize bits [15:0] of the result.
+/// \param __w1
+///    A 16-bit integer value used to initialize bits [31:16] of the result.
+/// \param __w2
+///    A 16-bit integer value used to initialize bits [47:32] of the result.
+/// \param __w3
+///    A 16-bit integer value used to initialize bits [63:48] of the result.
+/// \returns An initialized 64-bit integer vector.
+static __inline__ __m64 __DEFAULT_FN_ATTRS
+_mm_setr_pi16(short __w0, short __w1, short __w2, short __w3)
+{
+    return _mm_set_pi16(__w3, __w2, __w1, __w0);
+}
+
+/// Constructs a 64-bit integer vector, initialized in reverse order with
+///    the specified 8-bit integer values.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic is a utility function and does not correspond to a specific
+///    instruction.
+///
+/// \param __b0
+///    An 8-bit integer value used to initialize bits [7:0] of the result.
+/// \param __b1
+///    An 8-bit integer value used to initialize bits [15:8] of the result.
+/// \param __b2
+///    An 8-bit integer value used to initialize bits [23:16] of the result.
+/// \param __b3
+///    An 8-bit integer value used to initialize bits [31:24] of the result.
+/// \param __b4
+///    An 8-bit integer value used to initialize bits [39:32] of the result.
+/// \param __b5
+///    An 8-bit integer value used to initialize bits [47:40] of the result.
+/// \param __b6
+///    An 8-bit integer value used to initialize bits [55:48] of the result.
+/// \param __b7
+///    An 8-bit integer value used to initialize bits [63:56] of the result.
+/// \returns An initialized 64-bit integer vector.
+static __inline__ __m64 __DEFAULT_FN_ATTRS
+_mm_setr_pi8(char __b0, char __b1, char __b2, char __b3, char __b4, char __b5,
+             char __b6, char __b7)
+{
+    return _mm_set_pi8(__b7, __b6, __b5, __b4, __b3, __b2, __b1, __b0);
+}
+
+#undef __DEFAULT_FN_ATTRS
+
+/* Aliases for compatibility. */
+#define _m_empty _mm_empty
+#define _m_from_int _mm_cvtsi32_si64
+#define _m_from_int64 _mm_cvtsi64_m64
+#define _m_to_int _mm_cvtsi64_si32
+#define _m_to_int64 _mm_cvtm64_si64
+#define _m_packsswb _mm_packs_pi16
+#define _m_packssdw _mm_packs_pi32
+#define _m_packuswb _mm_packs_pu16
+#define _m_punpckhbw _mm_unpackhi_pi8
+#define _m_punpckhwd _mm_unpackhi_pi16
+#define _m_punpckhdq _mm_unpackhi_pi32
+#define _m_punpcklbw _mm_unpacklo_pi8
+#define _m_punpcklwd _mm_unpacklo_pi16
+#define _m_punpckldq _mm_unpacklo_pi32
+#define _m_paddb _mm_add_pi8
+#define _m_paddw _mm_add_pi16
+#define _m_paddd _mm_add_pi32
+#define _m_paddsb _mm_adds_pi8
+#define _m_paddsw _mm_adds_pi16
+#define _m_paddusb _mm_adds_pu8
+#define _m_paddusw _mm_adds_pu16
+#define _m_psubb _mm_sub_pi8
+#define _m_psubw _mm_sub_pi16
+#define _m_psubd _mm_sub_pi32
+#define _m_psubsb _mm_subs_pi8
+#define _m_psubsw _mm_subs_pi16
+#define _m_psubusb _mm_subs_pu8
+#define _m_psubusw _mm_subs_pu16
+#define _m_pmaddwd _mm_madd_pi16
+#define _m_pmulhw _mm_mulhi_pi16
+#define _m_pmullw _mm_mullo_pi16
+#define _m_psllw _mm_sll_pi16
+#define _m_psllwi _mm_slli_pi16
+#define _m_pslld _mm_sll_pi32
+#define _m_pslldi _mm_slli_pi32
+#define _m_psllq _mm_sll_si64
+#define _m_psllqi _mm_slli_si64
+#define _m_psraw _mm_sra_pi16
+#define _m_psrawi _mm_srai_pi16
+#define _m_psrad _mm_sra_pi32
+#define _m_psradi _mm_srai_pi32
+#define _m_psrlw _mm_srl_pi16
+#define _m_psrlwi _mm_srli_pi16
+#define _m_psrld _mm_srl_pi32
+#define _m_psrldi _mm_srli_pi32
+#define _m_psrlq _mm_srl_si64
+#define _m_psrlqi _mm_srli_si64
+#define _m_pand _mm_and_si64
+#define _m_pandn _mm_andnot_si64
+#define _m_por _mm_or_si64
+#define _m_pxor _mm_xor_si64
+#define _m_pcmpeqb _mm_cmpeq_pi8
+#define _m_pcmpeqw _mm_cmpeq_pi16
+#define _m_pcmpeqd _mm_cmpeq_pi32
+#define _m_pcmpgtb _mm_cmpgt_pi8
+#define _m_pcmpgtw _mm_cmpgt_pi16
+#define _m_pcmpgtd _mm_cmpgt_pi32
+
+#endif /* __MMINTRIN_H */
+
diff --git a/include/xmmintrin.h b/include/xmmintrin.h
new file mode 100644
index 0000000..a630e48
--- /dev/null
+++ b/include/xmmintrin.h
@@ -0,0 +1,3127 @@
+/*===---- xmmintrin.h - SSE intrinsics -------------------------------------===
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ *===-----------------------------------------------------------------------===
+ */
+
+#ifndef __XMMINTRIN_H
+#define __XMMINTRIN_H
+
+#include <mmintrin.h>
+/* Define the default attributes for the functions in this file. */
+#ifdef  __GNUC__
+#define __DEFAULT_FN_ATTRS __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+#define __DEFAULT_FN_ATTRS_MMX __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+#else
+#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("sse2"), __min_vector_width__(128)))
+#define __DEFAULT_FN_ATTRS_MMX __attribute__((__always_inline__, __nodebug__, __target__("mmx,sse2"), __min_vector_width__(64)))
+#endif
+
+
+typedef int __v4si __attribute__((__vector_size__(16)));
+typedef float __v4sf __attribute__((__vector_size__(16)));
+typedef float __m128 __attribute__((__vector_size__(16)));
+
+/* Unsigned types */
+typedef unsigned int __v4su __attribute__((__vector_size__(16)));
+
+/* This header should only be included in a hosted environment as it depends on
+ * a standard library to provide allocation routines. */
+#if __STDC_HOSTED__
+#include <mm_malloc.h>
+#endif
+
+#define _MM_SHUFFLE(z, y, x, w) (((z) << 6) | ((y) << 4) | ((x) << 2) | (w))
+
+
+/// Adds the 32-bit float values in the low-order bits of the operands.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VADDSS / ADDSS </c> instructions.
+///
+/// \param __a
+///    A 128-bit vector of [4 x float] containing one of the source operands.
+///    The lower 32 bits of this operand are used in the calculation.
+/// \param __b
+///    A 128-bit vector of [4 x float] containing one of the source operands.
+///    The lower 32 bits of this operand are used in the calculation.
+/// \returns A 128-bit vector of [4 x float] whose lower 32 bits contain the sum
+///    of the lower 32 bits of both operands. The upper 96 bits are copied from
+///    the upper 96 bits of the first source operand.
+static __inline__ __m128 __DEFAULT_FN_ATTRS
+_mm_add_ss(__m128 __a, __m128 __b)
+{
+  __a[0] += __b[0];
+  return __a;
+}
+
+/// Adds two 128-bit vectors of [4 x float], and returns the results of
+///    the addition.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VADDPS / ADDPS </c> instructions.
+///
+/// \param __a
+///    A 128-bit vector of [4 x float] containing one of the source operands.
+/// \param __b
+///    A 128-bit vector of [4 x float] containing one of the source operands.
+/// \returns A 128-bit vector of [4 x float] containing the sums of both
+///    operands.
+static __inline__ __m128 __DEFAULT_FN_ATTRS
+_mm_add_ps(__m128 __a, __m128 __b)
+{
+  return (__m128)((__v4sf)__a + (__v4sf)__b);
+}
+
+/// Subtracts the 32-bit float value in the low-order bits of the second
+///    operand from the corresponding value in the first operand.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VSUBSS / SUBSS </c> instructions.
+///
+/// \param __a
+///    A 128-bit vector of [4 x float] containing the minuend. The lower 32 bits
+///    of this operand are used in the calculation.
+/// \param __b
+///    A 128-bit vector of [4 x float] containing the subtrahend. The lower 32
+///    bits of this operand are used in the calculation.
+/// \returns A 128-bit vector of [4 x float] whose lower 32 bits contain the
+///    difference of the lower 32 bits of both operands. The upper 96 bits are
+///    copied from the upper 96 bits of the first source operand.
+static __inline__ __m128 __DEFAULT_FN_ATTRS
+_mm_sub_ss(__m128 __a, __m128 __b)
+{
+  __a[0] -= __b[0];
+  return __a;
+}
+
+/// Subtracts each of the values of the second operand from the first
+///    operand, both of which are 128-bit vectors of [4 x float] and returns
+///    the results of the subtraction.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VSUBPS / SUBPS </c> instructions.
+///
+/// \param __a
+///    A 128-bit vector of [4 x float] containing the minuend.
+/// \param __b
+///    A 128-bit vector of [4 x float] containing the subtrahend.
+/// \returns A 128-bit vector of [4 x float] containing the differences between
+///    both operands.
+static __inline__ __m128 __DEFAULT_FN_ATTRS
+_mm_sub_ps(__m128 __a, __m128 __b)
+{
+  return (__m128)((__v4sf)__a - (__v4sf)__b);
+}
+
+/// Multiplies two 32-bit float values in the low-order bits of the
+///    operands.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VMULSS / MULSS </c> instructions.
+///
+/// \param __a
+///    A 128-bit vector of [4 x float] containing one of the source operands.
+///    The lower 32 bits of this operand are used in the calculation.
+/// \param __b
+///    A 128-bit vector of [4 x float] containing one of the source operands.
+///    The lower 32 bits of this operand are used in the calculation.
+/// \returns A 128-bit vector of [4 x float] containing the product of the lower
+///    32 bits of both operands. The upper 96 bits are copied from the upper 96
+///    bits of the first source operand.
+static __inline__ __m128 __DEFAULT_FN_ATTRS
+_mm_mul_ss(__m128 __a, __m128 __b)
+{
+  __a[0] *= __b[0];
+  return __a;
+}
+
+/// Multiplies two 128-bit vectors of [4 x float] and returns the
+///    results of the multiplication.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VMULPS / MULPS </c> instructions.
+///
+/// \param __a
+///    A 128-bit vector of [4 x float] containing one of the source operands.
+/// \param __b
+///    A 128-bit vector of [4 x float] containing one of the source operands.
+/// \returns A 128-bit vector of [4 x float] containing the products of both
+///    operands.
+static __inline__ __m128 __DEFAULT_FN_ATTRS
+_mm_mul_ps(__m128 __a, __m128 __b)
+{
+  return (__m128)((__v4sf)__a * (__v4sf)__b);
+}
+
+/// Divides the value in the low-order 32 bits of the first operand by
+///    the corresponding value in the second operand.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VDIVSS / DIVSS </c> instructions.
+///
+/// \param __a
+///    A 128-bit vector of [4 x float] containing the dividend. The lower 32
+///    bits of this operand are used in the calculation.
+/// \param __b
+///    A 128-bit vector of [4 x float] containing the divisor. The lower 32 bits
+///    of this operand are used in the calculation.
+/// \returns A 128-bit vector of [4 x float] containing the quotients of the
+///    lower 32 bits of both operands. The upper 96 bits are copied from the
+///    upper 96 bits of the first source operand.
+static __inline__ __m128 __DEFAULT_FN_ATTRS
+_mm_div_ss(__m128 __a, __m128 __b)
+{
+  __a[0] /= __b[0];
+  return __a;
+}
+
+/// Divides two 128-bit vectors of [4 x float].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VDIVPS / DIVPS </c> instructions.
+///
+/// \param __a
+///    A 128-bit vector of [4 x float] containing the dividend.
+/// \param __b
+///    A 128-bit vector of [4 x float] containing the divisor.
+/// \returns A 128-bit vector of [4 x float] containing the quotients of both
+///    operands.
+static __inline__ __m128 __DEFAULT_FN_ATTRS
+_mm_div_ps(__m128 __a, __m128 __b)
+{
+  return (__m128)((__v4sf)__a / (__v4sf)__b);
+}
+
+/// Calculates the square root of the value stored in the low-order bits
+///    of a 128-bit vector of [4 x float].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VSQRTSS / SQRTSS </c> instructions.
+///
+/// \param __a
+///    A 128-bit vector of [4 x float]. The lower 32 bits of this operand are
+///    used in the calculation.
+/// \returns A 128-bit vector of [4 x float] containing the square root of the
+///    value in the low-order bits of the operand.
+static __inline__ __m128 __DEFAULT_FN_ATTRS
+_mm_sqrt_ss(__m128 __a)
+{
+  return (__m128)__builtin_ia32_sqrtss((__v4sf)__a);
+}
+
+/// Calculates the square roots of the values stored in a 128-bit vector
+///    of [4 x float].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VSQRTPS / SQRTPS </c> instructions.
+///
+/// \param __a
+///    A 128-bit vector of [4 x float].
+/// \returns A 128-bit vector of [4 x float] containing the square roots of the
+///    values in the operand.
+static __inline__ __m128 __DEFAULT_FN_ATTRS
+_mm_sqrt_ps(__m128 __a)
+{
+  return __builtin_ia32_sqrtps((__v4sf)__a);
+}
+
+/// Calculates the approximate reciprocal of the value stored in the
+///    low-order bits of a 128-bit vector of [4 x float].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VRCPSS / RCPSS </c> instructions.
+///
+/// \param __a
+///    A 128-bit vector of [4 x float]. The lower 32 bits of this operand are
+///    used in the calculation.
+/// \returns A 128-bit vector of [4 x float] containing the approximate
+///    reciprocal of the value in the low-order bits of the operand.
+static __inline__ __m128 __DEFAULT_FN_ATTRS
+_mm_rcp_ss(__m128 __a)
+{
+  return (__m128)__builtin_ia32_rcpss((__v4sf)__a);
+}
+
+/// Calculates the approximate reciprocals of the values stored in a
+///    128-bit vector of [4 x float].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VRCPPS / RCPPS </c> instructions.
+///
+/// \param __a
+///    A 128-bit vector of [4 x float].
+/// \returns A 128-bit vector of [4 x float] containing the approximate
+///    reciprocals of the values in the operand.
+static __inline__ __m128 __DEFAULT_FN_ATTRS
+_mm_rcp_ps(__m128 __a)
+{
+  return (__m128)__builtin_ia32_rcpps((__v4sf)__a);
+}
+
+/// Calculates the approximate reciprocal of the square root of the value
+///    stored in the low-order bits of a 128-bit vector of [4 x float].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VRSQRTSS / RSQRTSS </c> instructions.
+///
+/// \param __a
+///    A 128-bit vector of [4 x float]. The lower 32 bits of this operand are
+///    used in the calculation.
+/// \returns A 128-bit vector of [4 x float] containing the approximate
+///    reciprocal of the square root of the value in the low-order bits of the
+///    operand.
+static __inline__ __m128 __DEFAULT_FN_ATTRS
+_mm_rsqrt_ss(__m128 __a)
+{
+  return __builtin_ia32_rsqrtss((__v4sf)__a);
+}
+
+/// Calculates the approximate reciprocals of the square roots of the
+///    values stored in a 128-bit vector of [4 x float].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VRSQRTPS / RSQRTPS </c> instructions.
+///
+/// \param __a
+///    A 128-bit vector of [4 x float].
+/// \returns A 128-bit vector of [4 x float] containing the approximate
+///    reciprocals of the square roots of the values in the operand.
+static __inline__ __m128 __DEFAULT_FN_ATTRS
+_mm_rsqrt_ps(__m128 __a)
+{
+  return __builtin_ia32_rsqrtps((__v4sf)__a);
+}
+
+/// Compares two 32-bit float values in the low-order bits of both
+///    operands and returns the lesser value in the low-order bits of the
+///    vector of [4 x float].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VMINSS / MINSS </c> instructions.
+///
+/// \param __a
+///    A 128-bit vector of [4 x float] containing one of the operands. The lower
+///    32 bits of this operand are used in the comparison.
+/// \param __b
+///    A 128-bit vector of [4 x float] containing one of the operands. The lower
+///    32 bits of this operand are used in the comparison.
+/// \returns A 128-bit vector of [4 x float] whose lower 32 bits contain the
+///    minimum value between both operands. The upper 96 bits are copied from
+///    the upper 96 bits of the first source operand.
+static __inline__ __m128 __DEFAULT_FN_ATTRS
+_mm_min_ss(__m128 __a, __m128 __b)
+{
+  return __builtin_ia32_minss((__v4sf)__a, (__v4sf)__b);
+}
+
+/// Compares two 128-bit vectors of [4 x float] and returns the lesser
+///    of each pair of values.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VMINPS / MINPS </c> instructions.
+///
+/// \param __a
+///    A 128-bit vector of [4 x float] containing one of the operands.
+/// \param __b
+///    A 128-bit vector of [4 x float] containing one of the operands.
+/// \returns A 128-bit vector of [4 x float] containing the minimum values
+///    between both operands.
+static __inline__ __m128 __DEFAULT_FN_ATTRS
+_mm_min_ps(__m128 __a, __m128 __b)
+{
+  return __builtin_ia32_minps((__v4sf)__a, (__v4sf)__b);
+}
+
+/// Compares two 32-bit float values in the low-order bits of both
+///    operands and returns the greater value in the low-order bits of a 128-bit
+///    vector of [4 x float].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VMAXSS / MAXSS </c> instructions.
+///
+/// \param __a
+///    A 128-bit vector of [4 x float] containing one of the operands. The lower
+///    32 bits of this operand are used in the comparison.
+/// \param __b
+///    A 128-bit vector of [4 x float] containing one of the operands. The lower
+///    32 bits of this operand are used in the comparison.
+/// \returns A 128-bit vector of [4 x float] whose lower 32 bits contain the
+///    maximum value between both operands. The upper 96 bits are copied from
+///    the upper 96 bits of the first source operand.
+static __inline__ __m128 __DEFAULT_FN_ATTRS
+_mm_max_ss(__m128 __a, __m128 __b)
+{
+  return __builtin_ia32_maxss((__v4sf)__a, (__v4sf)__b);
+}
+
+/// Compares two 128-bit vectors of [4 x float] and returns the greater
+///    of each pair of values.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VMAXPS / MAXPS </c> instructions.
+///
+/// \param __a
+///    A 128-bit vector of [4 x float] containing one of the operands.
+/// \param __b
+///    A 128-bit vector of [4 x float] containing one of the operands.
+/// \returns A 128-bit vector of [4 x float] containing the maximum values
+///    between both operands.
+static __inline__ __m128 __DEFAULT_FN_ATTRS
+_mm_max_ps(__m128 __a, __m128 __b)
+{
+  return __builtin_ia32_maxps((__v4sf)__a, (__v4sf)__b);
+}
+
+/// Performs a bitwise AND of two 128-bit vectors of [4 x float].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VANDPS / ANDPS </c> instructions.
+///
+/// \param __a
+///    A 128-bit vector containing one of the source operands.
+/// \param __b
+///    A 128-bit vector containing one of the source operands.
+/// \returns A 128-bit vector of [4 x float] containing the bitwise AND of the
+///    values between both operands.
+static __inline__ __m128 __DEFAULT_FN_ATTRS
+_mm_and_ps(__m128 __a, __m128 __b)
+{
+  return (__m128)((__v4su)__a & (__v4su)__b);
+}
+
+/// Performs a bitwise AND of two 128-bit vectors of [4 x float], using
+///    the one's complement of the values contained in the first source
+///    operand.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VANDNPS / ANDNPS </c> instructions.
+///
+/// \param __a
+///    A 128-bit vector of [4 x float] containing the first source operand. The
+///    one's complement of this value is used in the bitwise AND.
+/// \param __b
+///    A 128-bit vector of [4 x float] containing the second source operand.
+/// \returns A 128-bit vector of [4 x float] containing the bitwise AND of the
+///    one's complement of the first operand and the values in the second
+///    operand.
+static __inline__ __m128 __DEFAULT_FN_ATTRS
+_mm_andnot_ps(__m128 __a, __m128 __b)
+{
+  return (__m128)(~(__v4su)__a & (__v4su)__b);
+}
+
+/// Performs a bitwise OR of two 128-bit vectors of [4 x float].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VORPS / ORPS </c> instructions.
+///
+/// \param __a
+///    A 128-bit vector of [4 x float] containing one of the source operands.
+/// \param __b
+///    A 128-bit vector of [4 x float] containing one of the source operands.
+/// \returns A 128-bit vector of [4 x float] containing the bitwise OR of the
+///    values between both operands.
+static __inline__ __m128 __DEFAULT_FN_ATTRS
+_mm_or_ps(__m128 __a, __m128 __b)
+{
+  return (__m128)((__v4su)__a | (__v4su)__b);
+}
+
+/// Performs a bitwise exclusive OR of two 128-bit vectors of
+///    [4 x float].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VXORPS / XORPS </c> instructions.
+///
+/// \param __a
+///    A 128-bit vector of [4 x float] containing one of the source operands.
+/// \param __b
+///    A 128-bit vector of [4 x float] containing one of the source operands.
+/// \returns A 128-bit vector of [4 x float] containing the bitwise exclusive OR
+///    of the values between both operands.
+static __inline__ __m128 __DEFAULT_FN_ATTRS
+_mm_xor_ps(__m128 __a, __m128 __b)
+{
+  return (__m128)((__v4su)__a ^ (__v4su)__b);
+}
+
+/// Compares two 32-bit float values in the low-order bits of both
+///    operands for equality and returns the result of the comparison in the
+///    low-order bits of a vector [4 x float].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCMPEQSS / CMPEQSS </c> instructions.
+///
+/// \param __a
+///    A 128-bit vector of [4 x float] containing one of the operands. The lower
+///    32 bits of this operand are used in the comparison.
+/// \param __b
+///    A 128-bit vector of [4 x float] containing one of the operands. The lower
+///    32 bits of this operand are used in the comparison.
+/// \returns A 128-bit vector of [4 x float] containing the comparison results
+///    in the low-order bits.
+static __inline__ __m128 __DEFAULT_FN_ATTRS
+_mm_cmpeq_ss(__m128 __a, __m128 __b)
+{
+  return (__m128)__builtin_ia32_cmpeqss((__v4sf)__a, (__v4sf)__b);
+}
+
+/// Compares each of the corresponding 32-bit float values of the
+///    128-bit vectors of [4 x float] for equality.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCMPEQPS / CMPEQPS </c> instructions.
+///
+/// \param __a
+///    A 128-bit vector of [4 x float].
+/// \param __b
+///    A 128-bit vector of [4 x float].
+/// \returns A 128-bit vector of [4 x float] containing the comparison results.
+static __inline__ __m128 __DEFAULT_FN_ATTRS
+_mm_cmpeq_ps(__m128 __a, __m128 __b)
+{
+  return (__m128)__builtin_ia32_cmpeqps((__v4sf)__a, (__v4sf)__b);
+}
+
+/// Compares two 32-bit float values in the low-order bits of both
+///    operands to determine if the value in the first operand is less than the
+///    corresponding value in the second operand and returns the result of the
+///    comparison in the low-order bits of a vector of [4 x float].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCMPLTSS / CMPLTSS </c> instructions.
+///
+/// \param __a
+///    A 128-bit vector of [4 x float] containing one of the operands. The lower
+///    32 bits of this operand are used in the comparison.
+/// \param __b
+///    A 128-bit vector of [4 x float] containing one of the operands. The lower
+///    32 bits of this operand are used in the comparison.
+/// \returns A 128-bit vector of [4 x float] containing the comparison results
+///    in the low-order bits.
+static __inline__ __m128 __DEFAULT_FN_ATTRS
+_mm_cmplt_ss(__m128 __a, __m128 __b)
+{
+  return (__m128)__builtin_ia32_cmpltss((__v4sf)__a, (__v4sf)__b);
+}
+
+/// Compares each of the corresponding 32-bit float values of the
+///    128-bit vectors of [4 x float] to determine if the values in the first
+///    operand are less than those in the second operand.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCMPLTPS / CMPLTPS </c> instructions.
+///
+/// \param __a
+///    A 128-bit vector of [4 x float].
+/// \param __b
+///    A 128-bit vector of [4 x float].
+/// \returns A 128-bit vector of [4 x float] containing the comparison results.
+static __inline__ __m128 __DEFAULT_FN_ATTRS
+_mm_cmplt_ps(__m128 __a, __m128 __b)
+{
+  return (__m128)__builtin_ia32_cmpltps((__v4sf)__a, (__v4sf)__b);
+}
+
+/// Compares two 32-bit float values in the low-order bits of both
+///    operands to determine if the value in the first operand is less than or
+///    equal to the corresponding value in the second operand and returns the
+///    result of the comparison in the low-order bits of a vector of
+///    [4 x float].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCMPLESS / CMPLESS </c> instructions.
+///
+/// \param __a
+///    A 128-bit vector of [4 x float] containing one of the operands. The lower
+///    32 bits of this operand are used in the comparison.
+/// \param __b
+///    A 128-bit vector of [4 x float] containing one of the operands. The lower
+///    32 bits of this operand are used in the comparison.
+/// \returns A 128-bit vector of [4 x float] containing the comparison results
+///    in the low-order bits.
+static __inline__ __m128 __DEFAULT_FN_ATTRS
+_mm_cmple_ss(__m128 __a, __m128 __b)
+{
+  return (__m128)__builtin_ia32_cmpless((__v4sf)__a, (__v4sf)__b);
+}
+
+/// Compares each of the corresponding 32-bit float values of the
+///    128-bit vectors of [4 x float] to determine if the values in the first
+///    operand are less than or equal to those in the second operand.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCMPLEPS / CMPLEPS </c> instructions.
+///
+/// \param __a
+///    A 128-bit vector of [4 x float].
+/// \param __b
+///    A 128-bit vector of [4 x float].
+/// \returns A 128-bit vector of [4 x float] containing the comparison results.
+static __inline__ __m128 __DEFAULT_FN_ATTRS
+_mm_cmple_ps(__m128 __a, __m128 __b)
+{
+  return (__m128)__builtin_ia32_cmpleps((__v4sf)__a, (__v4sf)__b);
+}
+
+/// Compares two 32-bit float values in the low-order bits of both
+///    operands to determine if the value in the first operand is greater than
+///    the corresponding value in the second operand and returns the result of
+///    the comparison in the low-order bits of a vector of [4 x float].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCMPLTSS / CMPLTSS </c> instructions.
+///
+/// \param __a
+///    A 128-bit vector of [4 x float] containing one of the operands. The lower
+///    32 bits of this operand are used in the comparison.
+/// \param __b
+///    A 128-bit vector of [4 x float] containing one of the operands. The lower
+///    32 bits of this operand are used in the comparison.
+/// \returns A 128-bit vector of [4 x float] containing the comparison results
+///    in the low-order bits.
+static __inline__ __m128 __DEFAULT_FN_ATTRS
+_mm_cmpgt_ss(__m128 __a, __m128 __b)
+{
+#ifdef __GNUC__
+  return (__m128) __builtin_ia32_movss ((__v4sf) __a, (__v4sf)
+		__builtin_ia32_cmpltss ((__v4sf) __b, (__v4sf) __a));
+#else
+  return (__m128)__builtin_shufflevector((__v4sf)__a,
+                                         (__v4sf)__builtin_ia32_cmpltss((__v4sf)__b, (__v4sf)__a),
+                                         4, 1, 2, 3);
+#endif
+}
+
+/// Compares each of the corresponding 32-bit float values of the
+///    128-bit vectors of [4 x float] to determine if the values in the first
+///    operand are greater than those in the second operand.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCMPLTPS / CMPLTPS </c> instructions.
+///
+/// \param __a
+///    A 128-bit vector of [4 x float].
+/// \param __b
+///    A 128-bit vector of [4 x float].
+/// \returns A 128-bit vector of [4 x float] containing the comparison results.
+static __inline__ __m128 __DEFAULT_FN_ATTRS
+_mm_cmpgt_ps(__m128 __a, __m128 __b)
+{
+  return (__m128)__builtin_ia32_cmpltps((__v4sf)__b, (__v4sf)__a);
+}
+
+/// Compares two 32-bit float values in the low-order bits of both
+///    operands to determine if the value in the first operand is greater than
+///    or equal to the corresponding value in the second operand and returns
+///    the result of the comparison in the low-order bits of a vector of
+///    [4 x float].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCMPLESS / CMPLESS </c> instructions.
+///
+/// \param __a
+///    A 128-bit vector of [4 x float] containing one of the operands. The lower
+///    32 bits of this operand are used in the comparison.
+/// \param __b
+///    A 128-bit vector of [4 x float] containing one of the operands. The lower
+///    32 bits of this operand are used in the comparison.
+/// \returns A 128-bit vector of [4 x float] containing the comparison results
+///    in the low-order bits.
+static __inline__ __m128 __DEFAULT_FN_ATTRS
+_mm_cmpge_ss(__m128 __a, __m128 __b)
+{
+#ifdef __GNUC__
+  return (__m128) __builtin_ia32_movss ((__v4sf) __a, (__v4sf)
+		__builtin_ia32_cmpless ((__v4sf) __b, (__v4sf) __a));
+#else
+  return (__m128)__builtin_shufflevector((__v4sf)__a,
+                                         (__v4sf)__builtin_ia32_cmpless((__v4sf)__b, (__v4sf)__a),
+                                         4, 1, 2, 3);
+#endif
+}
+
+/// Compares each of the corresponding 32-bit float values of the
+///    128-bit vectors of [4 x float] to determine if the values in the first
+///    operand are greater than or equal to those in the second operand.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCMPLEPS / CMPLEPS </c> instructions.
+///
+/// \param __a
+///    A 128-bit vector of [4 x float].
+/// \param __b
+///    A 128-bit vector of [4 x float].
+/// \returns A 128-bit vector of [4 x float] containing the comparison results.
+static __inline__ __m128 __DEFAULT_FN_ATTRS
+_mm_cmpge_ps(__m128 __a, __m128 __b)
+{
+  return (__m128)__builtin_ia32_cmpleps((__v4sf)__b, (__v4sf)__a);
+}
+
+/// Compares two 32-bit float values in the low-order bits of both
+///    operands for inequality and returns the result of the comparison in the
+///    low-order bits of a vector of [4 x float].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCMPNEQSS / CMPNEQSS </c>
+///   instructions.
+///
+/// \param __a
+///    A 128-bit vector of [4 x float] containing one of the operands. The lower
+///    32 bits of this operand are used in the comparison.
+/// \param __b
+///    A 128-bit vector of [4 x float] containing one of the operands. The lower
+///    32 bits of this operand are used in the comparison.
+/// \returns A 128-bit vector of [4 x float] containing the comparison results
+///    in the low-order bits.
+static __inline__ __m128 __DEFAULT_FN_ATTRS
+_mm_cmpneq_ss(__m128 __a, __m128 __b)
+{
+  return (__m128)__builtin_ia32_cmpneqss((__v4sf)__a, (__v4sf)__b);
+}
+
+/// Compares each of the corresponding 32-bit float values of the
+///    128-bit vectors of [4 x float] for inequality.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCMPNEQPS / CMPNEQPS </c>
+///   instructions.
+///
+/// \param __a
+///    A 128-bit vector of [4 x float].
+/// \param __b
+///    A 128-bit vector of [4 x float].
+/// \returns A 128-bit vector of [4 x float] containing the comparison results.
+static __inline__ __m128 __DEFAULT_FN_ATTRS
+_mm_cmpneq_ps(__m128 __a, __m128 __b)
+{
+  return (__m128)__builtin_ia32_cmpneqps((__v4sf)__a, (__v4sf)__b);
+}
+
+/// Compares two 32-bit float values in the low-order bits of both
+///    operands to determine if the value in the first operand is not less than
+///    the corresponding value in the second operand and returns the result of
+///    the comparison in the low-order bits of a vector of [4 x float].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCMPNLTSS / CMPNLTSS </c>
+///   instructions.
+///
+/// \param __a
+///    A 128-bit vector of [4 x float] containing one of the operands. The lower
+///    32 bits of this operand are used in the comparison.
+/// \param __b
+///    A 128-bit vector of [4 x float] containing one of the operands. The lower
+///    32 bits of this operand are used in the comparison.
+/// \returns A 128-bit vector of [4 x float] containing the comparison results
+///    in the low-order bits.
+static __inline__ __m128 __DEFAULT_FN_ATTRS
+_mm_cmpnlt_ss(__m128 __a, __m128 __b)
+{
+  return (__m128)__builtin_ia32_cmpnltss((__v4sf)__a, (__v4sf)__b);
+}
+
+/// Compares each of the corresponding 32-bit float values of the
+///    128-bit vectors of [4 x float] to determine if the values in the first
+///    operand are not less than those in the second operand.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCMPNLTPS / CMPNLTPS </c>
+///   instructions.
+///
+/// \param __a
+///    A 128-bit vector of [4 x float].
+/// \param __b
+///    A 128-bit vector of [4 x float].
+/// \returns A 128-bit vector of [4 x float] containing the comparison results.
+static __inline__ __m128 __DEFAULT_FN_ATTRS
+_mm_cmpnlt_ps(__m128 __a, __m128 __b)
+{
+  return (__m128)__builtin_ia32_cmpnltps((__v4sf)__a, (__v4sf)__b);
+}
+
+/// Compares two 32-bit float values in the low-order bits of both
+///    operands to determine if the value in the first operand is not less than
+///    or equal to the corresponding value in the second operand and returns
+///    the result of the comparison in the low-order bits of a vector of
+///    [4 x float].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCMPNLESS / CMPNLESS </c>
+///   instructions.
+///
+/// \param __a
+///    A 128-bit vector of [4 x float] containing one of the operands. The lower
+///    32 bits of this operand are used in the comparison.
+/// \param __b
+///    A 128-bit vector of [4 x float] containing one of the operands. The lower
+///    32 bits of this operand are used in the comparison.
+/// \returns A 128-bit vector of [4 x float] containing the comparison results
+///    in the low-order bits.
+static __inline__ __m128 __DEFAULT_FN_ATTRS
+_mm_cmpnle_ss(__m128 __a, __m128 __b)
+{
+  return (__m128)__builtin_ia32_cmpnless((__v4sf)__a, (__v4sf)__b);
+}
+
+/// Compares each of the corresponding 32-bit float values of the
+///    128-bit vectors of [4 x float] to determine if the values in the first
+///    operand are not less than or equal to those in the second operand.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCMPNLEPS / CMPNLEPS </c>
+///   instructions.
+///
+/// \param __a
+///    A 128-bit vector of [4 x float].
+/// \param __b
+///    A 128-bit vector of [4 x float].
+/// \returns A 128-bit vector of [4 x float] containing the comparison results.
+static __inline__ __m128 __DEFAULT_FN_ATTRS
+_mm_cmpnle_ps(__m128 __a, __m128 __b)
+{
+  return (__m128)__builtin_ia32_cmpnleps((__v4sf)__a, (__v4sf)__b);
+}
+
+/// Compares two 32-bit float values in the low-order bits of both
+///    operands to determine if the value in the first operand is not greater
+///    than the corresponding value in the second operand and returns the
+///    result of the comparison in the low-order bits of a vector of
+///    [4 x float].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCMPNLTSS / CMPNLTSS </c>
+///   instructions.
+///
+/// \param __a
+///    A 128-bit vector of [4 x float] containing one of the operands. The lower
+///    32 bits of this operand are used in the comparison.
+/// \param __b
+///    A 128-bit vector of [4 x float] containing one of the operands. The lower
+///    32 bits of this operand are used in the comparison.
+/// \returns A 128-bit vector of [4 x float] containing the comparison results
+///    in the low-order bits.
+static __inline__ __m128 __DEFAULT_FN_ATTRS
+_mm_cmpngt_ss(__m128 __a, __m128 __b)
+{
+
+#ifdef __GNUC__
+  return (__m128) __builtin_ia32_movss ((__v4sf) __a, (__v4sf)
+		__builtin_ia32_cmpnltss ((__v4sf) __b, (__v4sf) __a));
+#else
+  return (__m128)__builtin_shufflevector((__v4sf)__a,
+                                         (__v4sf)__builtin_ia32_cmpnltss((__v4sf)__b, (__v4sf)__a),
+                                         4, 1, 2, 3);
+#endif
+}
+
+/// Compares each of the corresponding 32-bit float values of the
+///    128-bit vectors of [4 x float] to determine if the values in the first
+///    operand are not greater than those in the second operand.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCMPNLTPS / CMPNLTPS </c>
+///   instructions.
+///
+/// \param __a
+///    A 128-bit vector of [4 x float].
+/// \param __b
+///    A 128-bit vector of [4 x float].
+/// \returns A 128-bit vector of [4 x float] containing the comparison results.
+static __inline__ __m128 __DEFAULT_FN_ATTRS
+_mm_cmpngt_ps(__m128 __a, __m128 __b)
+{
+  return (__m128)__builtin_ia32_cmpnltps((__v4sf)__b, (__v4sf)__a);
+}
+
+/// Compares two 32-bit float values in the low-order bits of both
+///    operands to determine if the value in the first operand is not greater
+///    than or equal to the corresponding value in the second operand and
+///    returns the result of the comparison in the low-order bits of a vector
+///    of [4 x float].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCMPNLESS / CMPNLESS </c>
+///   instructions.
+///
+/// \param __a
+///    A 128-bit vector of [4 x float] containing one of the operands. The lower
+///    32 bits of this operand are used in the comparison.
+/// \param __b
+///    A 128-bit vector of [4 x float] containing one of the operands. The lower
+///    32 bits of this operand are used in the comparison.
+/// \returns A 128-bit vector of [4 x float] containing the comparison results
+///    in the low-order bits.
+static __inline__ __m128 __DEFAULT_FN_ATTRS
+_mm_cmpnge_ss(__m128 __a, __m128 __b)
+{
+#ifdef __GNUC__
+  return (__m128) __builtin_ia32_movss ((__v4sf) __a, (__v4sf)
+		__builtin_ia32_cmpnless ((__v4sf) __b, (__v4sf) __a));
+#else
+  return (__m128)__builtin_shufflevector((__v4sf)__a,
+                                         (__v4sf)__builtin_ia32_cmpnless((__v4sf)__b, (__v4sf)__a),
+                                         4, 1, 2, 3);
+#endif
+}
+
+/// Compares each of the corresponding 32-bit float values of the
+///    128-bit vectors of [4 x float] to determine if the values in the first
+///    operand are not greater than or equal to those in the second operand.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCMPNLEPS / CMPNLEPS </c>
+///   instructions.
+///
+/// \param __a
+///    A 128-bit vector of [4 x float].
+/// \param __b
+///    A 128-bit vector of [4 x float].
+/// \returns A 128-bit vector of [4 x float] containing the comparison results.
+static __inline__ __m128 __DEFAULT_FN_ATTRS
+_mm_cmpnge_ps(__m128 __a, __m128 __b)
+{
+  return (__m128)__builtin_ia32_cmpnleps((__v4sf)__b, (__v4sf)__a);
+}
+
+/// Compares two 32-bit float values in the low-order bits of both
+///    operands to determine if the value in the first operand is ordered with
+///    respect to the corresponding value in the second operand and returns the
+///    result of the comparison in the low-order bits of a vector of
+///    [4 x float].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCMPORDSS / CMPORDSS </c>
+///   instructions.
+///
+/// \param __a
+///    A 128-bit vector of [4 x float] containing one of the operands. The lower
+///    32 bits of this operand are used in the comparison.
+/// \param __b
+///    A 128-bit vector of [4 x float] containing one of the operands. The lower
+///    32 bits of this operand are used in the comparison.
+/// \returns A 128-bit vector of [4 x float] containing the comparison results
+///    in the low-order bits.
+static __inline__ __m128 __DEFAULT_FN_ATTRS
+_mm_cmpord_ss(__m128 __a, __m128 __b)
+{
+  return (__m128)__builtin_ia32_cmpordss((__v4sf)__a, (__v4sf)__b);
+}
+
+/// Compares each of the corresponding 32-bit float values of the
+///    128-bit vectors of [4 x float] to determine if the values in the first
+///    operand are ordered with respect to those in the second operand.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCMPORDPS / CMPORDPS </c>
+///   instructions.
+///
+/// \param __a
+///    A 128-bit vector of [4 x float].
+/// \param __b
+///    A 128-bit vector of [4 x float].
+/// \returns A 128-bit vector of [4 x float] containing the comparison results.
+static __inline__ __m128 __DEFAULT_FN_ATTRS
+_mm_cmpord_ps(__m128 __a, __m128 __b)
+{
+  return (__m128)__builtin_ia32_cmpordps((__v4sf)__a, (__v4sf)__b);
+}
+
+/// Compares two 32-bit float values in the low-order bits of both
+///    operands to determine if the value in the first operand is unordered
+///    with respect to the corresponding value in the second operand and
+///    returns the result of the comparison in the low-order bits of a vector
+///    of [4 x float].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCMPUNORDSS / CMPUNORDSS </c>
+///   instructions.
+///
+/// \param __a
+///    A 128-bit vector of [4 x float] containing one of the operands. The lower
+///    32 bits of this operand are used in the comparison.
+/// \param __b
+///    A 128-bit vector of [4 x float] containing one of the operands. The lower
+///    32 bits of this operand are used in the comparison.
+/// \returns A 128-bit vector of [4 x float] containing the comparison results
+///    in the low-order bits.
+static __inline__ __m128 __DEFAULT_FN_ATTRS
+_mm_cmpunord_ss(__m128 __a, __m128 __b)
+{
+  return (__m128)__builtin_ia32_cmpunordss((__v4sf)__a, (__v4sf)__b);
+}
+
+/// Compares each of the corresponding 32-bit float values of the
+///    128-bit vectors of [4 x float] to determine if the values in the first
+///    operand are unordered with respect to those in the second operand.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCMPUNORDPS / CMPUNORDPS </c>
+///   instructions.
+///
+/// \param __a
+///    A 128-bit vector of [4 x float].
+/// \param __b
+///    A 128-bit vector of [4 x float].
+/// \returns A 128-bit vector of [4 x float] containing the comparison results.
+static __inline__ __m128 __DEFAULT_FN_ATTRS
+_mm_cmpunord_ps(__m128 __a, __m128 __b)
+{
+  return (__m128)__builtin_ia32_cmpunordps((__v4sf)__a, (__v4sf)__b);
+}
+
+/// Compares two 32-bit float values in the low-order bits of both
+///    operands for equality and returns the result of the comparison.
+///
+///    If either of the two lower 32-bit values is NaN, 0 is returned.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCOMISS / COMISS </c>
+///   instructions.
+///
+/// \param __a
+///    A 128-bit vector of [4 x float]. The lower 32 bits of this operand are
+///    used in the comparison.
+/// \param __b
+///    A 128-bit vector of [4 x float]. The lower 32 bits of this operand are
+///    used in the comparison.
+/// \returns An integer containing the comparison results. If either of the
+///    two lower 32-bit values is NaN, 0 is returned.
+static __inline__ int __DEFAULT_FN_ATTRS
+_mm_comieq_ss(__m128 __a, __m128 __b)
+{
+  return __builtin_ia32_comieq((__v4sf)__a, (__v4sf)__b);
+}
+
+/// Compares two 32-bit float values in the low-order bits of both
+///    operands to determine if the first operand is less than the second
+///    operand and returns the result of the comparison.
+///
+///    If either of the two lower 32-bit values is NaN, 0 is returned.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCOMISS / COMISS </c>
+///   instructions.
+///
+/// \param __a
+///    A 128-bit vector of [4 x float]. The lower 32 bits of this operand are
+///    used in the comparison.
+/// \param __b
+///    A 128-bit vector of [4 x float]. The lower 32 bits of this operand are
+///    used in the comparison.
+/// \returns An integer containing the comparison results. If either of the two
+///     lower 32-bit values is NaN, 0 is returned.
+static __inline__ int __DEFAULT_FN_ATTRS
+_mm_comilt_ss(__m128 __a, __m128 __b)
+{
+  return __builtin_ia32_comilt((__v4sf)__a, (__v4sf)__b);
+}
+
+/// Compares two 32-bit float values in the low-order bits of both
+///    operands to determine if the first operand is less than or equal to the
+///    second operand and returns the result of the comparison.
+///
+///    If either of the two lower 32-bit values is NaN, 0 is returned.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCOMISS / COMISS </c> instructions.
+///
+/// \param __a
+///    A 128-bit vector of [4 x float]. The lower 32 bits of this operand are
+///    used in the comparison.
+/// \param __b
+///    A 128-bit vector of [4 x float]. The lower 32 bits of this operand are
+///    used in the comparison.
+/// \returns An integer containing the comparison results. If either of the two
+///     lower 32-bit values is NaN, 0 is returned.
+static __inline__ int __DEFAULT_FN_ATTRS
+_mm_comile_ss(__m128 __a, __m128 __b)
+{
+  return __builtin_ia32_comile((__v4sf)__a, (__v4sf)__b);
+}
+
+/// Compares two 32-bit float values in the low-order bits of both
+///    operands to determine if the first operand is greater than the second
+///    operand and returns the result of the comparison.
+///
+///    If either of the two lower 32-bit values is NaN, 0 is returned.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCOMISS / COMISS </c> instructions.
+///
+/// \param __a
+///    A 128-bit vector of [4 x float]. The lower 32 bits of this operand are
+///    used in the comparison.
+/// \param __b
+///    A 128-bit vector of [4 x float]. The lower 32 bits of this operand are
+///    used in the comparison.
+/// \returns An integer containing the comparison results. If either of the
+///     two lower 32-bit values is NaN, 0 is returned.
+static __inline__ int __DEFAULT_FN_ATTRS
+_mm_comigt_ss(__m128 __a, __m128 __b)
+{
+  return __builtin_ia32_comigt((__v4sf)__a, (__v4sf)__b);
+}
+
+/// Compares two 32-bit float values in the low-order bits of both
+///    operands to determine if the first operand is greater than or equal to
+///    the second operand and returns the result of the comparison.
+///
+///    If either of the two lower 32-bit values is NaN, 0 is returned.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCOMISS / COMISS </c> instructions.
+///
+/// \param __a
+///    A 128-bit vector of [4 x float]. The lower 32 bits of this operand are
+///    used in the comparison.
+/// \param __b
+///    A 128-bit vector of [4 x float]. The lower 32 bits of this operand are
+///    used in the comparison.
+/// \returns An integer containing the comparison results. If either of the two
+///    lower 32-bit values is NaN, 0 is returned.
+static __inline__ int __DEFAULT_FN_ATTRS
+_mm_comige_ss(__m128 __a, __m128 __b)
+{
+  return __builtin_ia32_comige((__v4sf)__a, (__v4sf)__b);
+}
+
+/// Compares two 32-bit float values in the low-order bits of both
+///    operands to determine if the first operand is not equal to the second
+///    operand and returns the result of the comparison.
+///
+///    If either of the two lower 32-bit values is NaN, 1 is returned.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCOMISS / COMISS </c> instructions.
+///
+/// \param __a
+///    A 128-bit vector of [4 x float]. The lower 32 bits of this operand are
+///    used in the comparison.
+/// \param __b
+///    A 128-bit vector of [4 x float]. The lower 32 bits of this operand are
+///    used in the comparison.
+/// \returns An integer containing the comparison results. If either of the
+///     two lower 32-bit values is NaN, 1 is returned.
+static __inline__ int __DEFAULT_FN_ATTRS
+_mm_comineq_ss(__m128 __a, __m128 __b)
+{
+  return __builtin_ia32_comineq((__v4sf)__a, (__v4sf)__b);
+}
+
+/// Performs an unordered comparison of two 32-bit float values using
+///    the low-order bits of both operands to determine equality and returns
+///    the result of the comparison.
+///
+///    If either of the two lower 32-bit values is NaN, 0 is returned.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VUCOMISS / UCOMISS </c> instructions.
+///
+/// \param __a
+///    A 128-bit vector of [4 x float]. The lower 32 bits of this operand are
+///    used in the comparison.
+/// \param __b
+///    A 128-bit vector of [4 x float]. The lower 32 bits of this operand are
+///    used in the comparison.
+/// \returns An integer containing the comparison results. If either of the two
+///     lower 32-bit values is NaN, 0 is returned.
+static __inline__ int __DEFAULT_FN_ATTRS
+_mm_ucomieq_ss(__m128 __a, __m128 __b)
+{
+  return __builtin_ia32_ucomieq((__v4sf)__a, (__v4sf)__b);
+}
+
+/// Performs an unordered comparison of two 32-bit float values using
+///    the low-order bits of both operands to determine if the first operand is
+///    less than the second operand and returns the result of the comparison.
+///
+///    If either of the two lower 32-bit values is NaN, 0 is returned.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VUCOMISS / UCOMISS </c> instructions.
+///
+/// \param __a
+///    A 128-bit vector of [4 x float]. The lower 32 bits of this operand are
+///    used in the comparison.
+/// \param __b
+///    A 128-bit vector of [4 x float]. The lower 32 bits of this operand are
+///    used in the comparison.
+/// \returns An integer containing the comparison results. If either of the two
+///    lower 32-bit values is NaN, 0 is returned.
+static __inline__ int __DEFAULT_FN_ATTRS
+_mm_ucomilt_ss(__m128 __a, __m128 __b)
+{
+  return __builtin_ia32_ucomilt((__v4sf)__a, (__v4sf)__b);
+}
+
+/// Performs an unordered comparison of two 32-bit float values using
+///    the low-order bits of both operands to determine if the first operand is
+///    less than or equal to the second operand and returns the result of the
+///    comparison.
+///
+///    If either of the two lower 32-bit values is NaN, 0 is returned.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VUCOMISS / UCOMISS </c> instructions.
+///
+/// \param __a
+///    A 128-bit vector of [4 x float]. The lower 32 bits of this operand are
+///    used in the comparison.
+/// \param __b
+///    A 128-bit vector of [4 x float]. The lower 32 bits of this operand are
+///    used in the comparison.
+/// \returns An integer containing the comparison results. If either of the two
+///     lower 32-bit values is NaN, 0 is returned.
+static __inline__ int __DEFAULT_FN_ATTRS
+_mm_ucomile_ss(__m128 __a, __m128 __b)
+{
+  return __builtin_ia32_ucomile((__v4sf)__a, (__v4sf)__b);
+}
+
+/// Performs an unordered comparison of two 32-bit float values using
+///    the low-order bits of both operands to determine if the first operand is
+///    greater than the second operand and returns the result of the
+///    comparison.
+///
+///    If either of the two lower 32-bit values is NaN, 0 is returned.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VUCOMISS / UCOMISS </c> instructions.
+///
+/// \param __a
+///    A 128-bit vector of [4 x float]. The lower 32 bits of this operand are
+///    used in the comparison.
+/// \param __b
+///    A 128-bit vector of [4 x float]. The lower 32 bits of this operand are
+///    used in the comparison.
+/// \returns An integer containing the comparison results. If either of the two
+///     lower 32-bit values is NaN, 0 is returned.
+static __inline__ int __DEFAULT_FN_ATTRS
+_mm_ucomigt_ss(__m128 __a, __m128 __b)
+{
+  return __builtin_ia32_ucomigt((__v4sf)__a, (__v4sf)__b);
+}
+
+/// Performs an unordered comparison of two 32-bit float values using
+///    the low-order bits of both operands to determine if the first operand is
+///    greater than or equal to the second operand and returns the result of
+///    the comparison.
+///
+///    If either of the two lower 32-bit values is NaN, 0 is returned.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VUCOMISS / UCOMISS </c> instructions.
+///
+/// \param __a
+///    A 128-bit vector of [4 x float]. The lower 32 bits of this operand are
+///    used in the comparison.
+/// \param __b
+///    A 128-bit vector of [4 x float]. The lower 32 bits of this operand are
+///    used in the comparison.
+/// \returns An integer containing the comparison results. If either of the two
+///     lower 32-bit values is NaN, 0 is returned.
+static __inline__ int __DEFAULT_FN_ATTRS
+_mm_ucomige_ss(__m128 __a, __m128 __b)
+{
+  return __builtin_ia32_ucomige((__v4sf)__a, (__v4sf)__b);
+}
+
+/// Performs an unordered comparison of two 32-bit float values using
+///    the low-order bits of both operands to determine inequality and returns
+///    the result of the comparison.
+///
+///    If either of the two lower 32-bit values is NaN, 1 is returned.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VUCOMISS / UCOMISS </c> instructions.
+///
+/// \param __a
+///    A 128-bit vector of [4 x float]. The lower 32 bits of this operand are
+///    used in the comparison.
+/// \param __b
+///    A 128-bit vector of [4 x float]. The lower 32 bits of this operand are
+///    used in the comparison.
+/// \returns An integer containing the comparison results. If either of the two
+///    lower 32-bit values is NaN, 1 is returned.
+static __inline__ int __DEFAULT_FN_ATTRS
+_mm_ucomineq_ss(__m128 __a, __m128 __b)
+{
+  return __builtin_ia32_ucomineq((__v4sf)__a, (__v4sf)__b);
+}
+
+/// Converts a float value contained in the lower 32 bits of a vector of
+///    [4 x float] into a 32-bit integer.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCVTSS2SI / CVTSS2SI </c>
+///   instructions.
+///
+/// \param __a
+///    A 128-bit vector of [4 x float]. The lower 32 bits of this operand are
+///    used in the conversion.
+/// \returns A 32-bit integer containing the converted value.
+static __inline__ int __DEFAULT_FN_ATTRS
+_mm_cvtss_si32(__m128 __a)
+{
+  return __builtin_ia32_cvtss2si((__v4sf)__a);
+}
+
+/// Converts a float value contained in the lower 32 bits of a vector of
+///    [4 x float] into a 32-bit integer.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCVTSS2SI / CVTSS2SI </c>
+///   instructions.
+///
+/// \param __a
+///    A 128-bit vector of [4 x float]. The lower 32 bits of this operand are
+///    used in the conversion.
+/// \returns A 32-bit integer containing the converted value.
+static __inline__ int __DEFAULT_FN_ATTRS
+_mm_cvt_ss2si(__m128 __a)
+{
+  return _mm_cvtss_si32(__a);
+}
+
+#ifdef __x86_64__
+
+/// Converts a float value contained in the lower 32 bits of a vector of
+///    [4 x float] into a 64-bit integer.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCVTSS2SI / CVTSS2SI </c>
+///   instructions.
+///
+/// \param __a
+///    A 128-bit vector of [4 x float]. The lower 32 bits of this operand are
+///    used in the conversion.
+/// \returns A 64-bit integer containing the converted value.
+static __inline__ long long __DEFAULT_FN_ATTRS
+_mm_cvtss_si64(__m128 __a)
+{
+  return __builtin_ia32_cvtss2si64((__v4sf)__a);
+}
+
+#endif
+
+/// Converts two low-order float values in a 128-bit vector of
+///    [4 x float] into a 64-bit vector of [2 x i32].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> CVTPS2PI </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [4 x float].
+/// \returns A 64-bit integer vector containing the converted values.
+static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX
+_mm_cvtps_pi32(__m128 __a)
+{
+  return (__m64)__builtin_ia32_cvtps2pi((__v4sf)__a);
+}
+
+/// Converts two low-order float values in a 128-bit vector of
+///    [4 x float] into a 64-bit vector of [2 x i32].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> CVTPS2PI </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [4 x float].
+/// \returns A 64-bit integer vector containing the converted values.
+static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX
+_mm_cvt_ps2pi(__m128 __a)
+{
+  return _mm_cvtps_pi32(__a);
+}
+
+/// Converts a float value contained in the lower 32 bits of a vector of
+///    [4 x float] into a 32-bit integer, truncating the result when it is
+///    inexact.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCVTTSS2SI / CVTTSS2SI </c>
+///   instructions.
+///
+/// \param __a
+///    A 128-bit vector of [4 x float]. The lower 32 bits of this operand are
+///    used in the conversion.
+/// \returns A 32-bit integer containing the converted value.
+static __inline__ int __DEFAULT_FN_ATTRS
+_mm_cvttss_si32(__m128 __a)
+{
+  return __builtin_ia32_cvttss2si((__v4sf)__a);
+}
+
+/// Converts a float value contained in the lower 32 bits of a vector of
+///    [4 x float] into a 32-bit integer, truncating the result when it is
+///    inexact.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCVTTSS2SI / CVTTSS2SI </c>
+///   instructions.
+///
+/// \param __a
+///    A 128-bit vector of [4 x float]. The lower 32 bits of this operand are
+///    used in the conversion.
+/// \returns A 32-bit integer containing the converted value.
+static __inline__ int __DEFAULT_FN_ATTRS
+_mm_cvtt_ss2si(__m128 __a)
+{
+  return _mm_cvttss_si32(__a);
+}
+
+#ifdef __x86_64__
+/// Converts a float value contained in the lower 32 bits of a vector of
+///    [4 x float] into a 64-bit integer, truncating the result when it is
+///    inexact.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCVTTSS2SI / CVTTSS2SI </c>
+///   instructions.
+///
+/// \param __a
+///    A 128-bit vector of [4 x float]. The lower 32 bits of this operand are
+///    used in the conversion.
+/// \returns A 64-bit integer containing the converted value.
+static __inline__ long long __DEFAULT_FN_ATTRS
+_mm_cvttss_si64(__m128 __a)
+{
+  return __builtin_ia32_cvttss2si64((__v4sf)__a);
+}
+#endif
+
+/// Converts two low-order float values in a 128-bit vector of
+///    [4 x float] into a 64-bit vector of [2 x i32], truncating the result
+///    when it is inexact.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> CVTTPS2PI / VTTPS2PI </c>
+///   instructions.
+///
+/// \param __a
+///    A 128-bit vector of [4 x float].
+/// \returns A 64-bit integer vector containing the converted values.
+static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX
+_mm_cvttps_pi32(__m128 __a)
+{
+  return (__m64)__builtin_ia32_cvttps2pi((__v4sf)__a);
+}
+
+/// Converts two low-order float values in a 128-bit vector of [4 x
+///    float] into a 64-bit vector of [2 x i32], truncating the result when it
+///    is inexact.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> CVTTPS2PI </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [4 x float].
+/// \returns A 64-bit integer vector containing the converted values.
+static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX
+_mm_cvtt_ps2pi(__m128 __a)
+{
+  return _mm_cvttps_pi32(__a);
+}
+
+/// Converts a 32-bit signed integer value into a floating point value
+///    and writes it to the lower 32 bits of the destination. The remaining
+///    higher order elements of the destination vector are copied from the
+///    corresponding elements in the first operand.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCVTSI2SS / CVTSI2SS </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [4 x float].
+/// \param __b
+///    A 32-bit signed integer operand containing the value to be converted.
+/// \returns A 128-bit vector of [4 x float] whose lower 32 bits contain the
+///    converted value of the second operand. The upper 96 bits are copied from
+///    the upper 96 bits of the first operand.
+static __inline__ __m128 __DEFAULT_FN_ATTRS
+_mm_cvtsi32_ss(__m128 __a, int __b)
+{
+  __a[0] = __b;
+  return __a;
+}
+
+/// Converts a 32-bit signed integer value into a floating point value
+///    and writes it to the lower 32 bits of the destination. The remaining
+///    higher order elements of the destination are copied from the
+///    corresponding elements in the first operand.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCVTSI2SS / CVTSI2SS </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [4 x float].
+/// \param __b
+///    A 32-bit signed integer operand containing the value to be converted.
+/// \returns A 128-bit vector of [4 x float] whose lower 32 bits contain the
+///    converted value of the second operand. The upper 96 bits are copied from
+///    the upper 96 bits of the first operand.
+static __inline__ __m128 __DEFAULT_FN_ATTRS
+_mm_cvt_si2ss(__m128 __a, int __b)
+{
+  return _mm_cvtsi32_ss(__a, __b);
+}
+
+#ifdef __x86_64__
+
+/// Converts a 64-bit signed integer value into a floating point value
+///    and writes it to the lower 32 bits of the destination. The remaining
+///    higher order elements of the destination are copied from the
+///    corresponding elements in the first operand.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VCVTSI2SS / CVTSI2SS </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [4 x float].
+/// \param __b
+///    A 64-bit signed integer operand containing the value to be converted.
+/// \returns A 128-bit vector of [4 x float] whose lower 32 bits contain the
+///    converted value of the second operand. The upper 96 bits are copied from
+///    the upper 96 bits of the first operand.
+static __inline__ __m128 __DEFAULT_FN_ATTRS
+_mm_cvtsi64_ss(__m128 __a, long long __b)
+{
+  __a[0] = __b;
+  return __a;
+}
+
+#endif
+
+/// Converts two elements of a 64-bit vector of [2 x i32] into two
+///    floating point values and writes them to the lower 64-bits of the
+///    destination. The remaining higher order elements of the destination are
+///    copied from the corresponding elements in the first operand.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> CVTPI2PS </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [4 x float].
+/// \param __b
+///    A 64-bit vector of [2 x i32]. The elements in this vector are converted
+///    and written to the corresponding low-order elements in the destination.
+/// \returns A 128-bit vector of [4 x float] whose lower 64 bits contain the
+///    converted value of the second operand. The upper 64 bits are copied from
+///    the upper 64 bits of the first operand.
+static __inline__ __m128 __DEFAULT_FN_ATTRS_MMX
+_mm_cvtpi32_ps(__m128 __a, __m64 __b)
+{
+  return __builtin_ia32_cvtpi2ps((__v4sf)__a, (__v2si)__b);
+}
+
+/// Converts two elements of a 64-bit vector of [2 x i32] into two
+///    floating point values and writes them to the lower 64-bits of the
+///    destination. The remaining higher order elements of the destination are
+///    copied from the corresponding elements in the first operand.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> CVTPI2PS </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [4 x float].
+/// \param __b
+///    A 64-bit vector of [2 x i32]. The elements in this vector are converted
+///    and written to the corresponding low-order elements in the destination.
+/// \returns A 128-bit vector of [4 x float] whose lower 64 bits contain the
+///    converted value from the second operand. The upper 64 bits are copied
+///    from the upper 64 bits of the first operand.
+static __inline__ __m128 __DEFAULT_FN_ATTRS_MMX
+_mm_cvt_pi2ps(__m128 __a, __m64 __b)
+{
+  return _mm_cvtpi32_ps(__a, __b);
+}
+
+/// Extracts a float value contained in the lower 32 bits of a vector of
+///    [4 x float].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic has no corresponding instruction.
+///
+/// \param __a
+///    A 128-bit vector of [4 x float]. The lower 32 bits of this operand are
+///    used in the extraction.
+/// \returns A 32-bit float containing the extracted value.
+static __inline__ float __DEFAULT_FN_ATTRS
+_mm_cvtss_f32(__m128 __a)
+{
+  return __a[0];
+}
+
+/// Loads two packed float values from the address \a __p into the
+///     high-order bits of a 128-bit vector of [4 x float]. The low-order bits
+///     are copied from the low-order bits of the first operand.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VMOVHPD / MOVHPD </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [4 x float]. Bits [63:0] are written to bits [63:0]
+///    of the destination.
+/// \param __p
+///    A pointer to two packed float values. Bits [63:0] are written to bits
+///    [127:64] of the destination.
+/// \returns A 128-bit vector of [4 x float] containing the moved values.
+static __inline__ __m128 __DEFAULT_FN_ATTRS
+_mm_loadh_pi(__m128 __a, const __m64 *__p)
+{
+#ifdef __GNUC__
+  return (__m128) __builtin_ia32_loadhps ((__v4sf)__a, (const __v2sf *)__p);
+#else
+  typedef float __mm_loadh_pi_v2f32 __attribute__((__vector_size__(8)));
+  struct __mm_loadh_pi_struct {
+    __mm_loadh_pi_v2f32 __u;
+  } __attribute__((__packed__, __may_alias__));
+  __mm_loadh_pi_v2f32 __b = ((struct __mm_loadh_pi_struct*)__p)->__u;
+  __m128 __bb = __builtin_shufflevector(__b, __b, 0, 1, 0, 1);
+  return __builtin_shufflevector(__a, __bb, 0, 1, 4, 5);
+#endif
+}
+
+/// Loads two packed float values from the address \a __p into the
+///    low-order bits of a 128-bit vector of [4 x float]. The high-order bits
+///    are copied from the high-order bits of the first operand.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VMOVLPD / MOVLPD </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [4 x float]. Bits [127:64] are written to bits
+///    [127:64] of the destination.
+/// \param __p
+///    A pointer to two packed float values. Bits [63:0] are written to bits
+///    [63:0] of the destination.
+/// \returns A 128-bit vector of [4 x float] containing the moved values.
+static __inline__ __m128 __DEFAULT_FN_ATTRS
+_mm_loadl_pi(__m128 __a, const __m64 *__p)
+{
+#ifdef __GNUC__
+  return (__m128) __builtin_ia32_loadlps ((__v4sf)__a, (const __v2sf *)__p);
+#else
+  typedef float __mm_loadl_pi_v2f32 __attribute__((__vector_size__(8)));
+  struct __mm_loadl_pi_struct {
+    __mm_loadl_pi_v2f32 __u;
+  } __attribute__((__packed__, __may_alias__));
+  __mm_loadl_pi_v2f32 __b = ((struct __mm_loadl_pi_struct*)__p)->__u;
+  __m128 __bb = __builtin_shufflevector(__b, __b, 0, 1, 0, 1);
+  return __builtin_shufflevector(__a, __bb, 4, 5, 2, 3);
+#endif
+}
+
+/// Constructs a 128-bit floating-point vector of [4 x float]. The lower
+///    32 bits of the vector are initialized with the single-precision
+///    floating-point value loaded from a specified memory location. The upper
+///    96 bits are set to zero.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VMOVSS / MOVSS </c> instruction.
+///
+/// \param __p
+///    A pointer to a 32-bit memory location containing a single-precision
+///    floating-point value.
+/// \returns An initialized 128-bit floating-point vector of [4 x float]. The
+///    lower 32 bits contain the value loaded from the memory location. The
+///    upper 96 bits are set to zero.
+static __inline__ __m128 __DEFAULT_FN_ATTRS
+_mm_load_ss(const float *__p)
+{
+  struct __mm_load_ss_struct {
+    float __u;
+  } __attribute__((__packed__, __may_alias__));
+  float __u = ((struct __mm_load_ss_struct*)__p)->__u;
+  return __extension__ (__m128){ __u, 0, 0, 0 };
+}
+
+/// Loads a 32-bit float value and duplicates it to all four vector
+///    elements of a 128-bit vector of [4 x float].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VBROADCASTSS / MOVSS + shuffling </c>
+///    instruction.
+///
+/// \param __p
+///    A pointer to a float value to be loaded and duplicated.
+/// \returns A 128-bit vector of [4 x float] containing the loaded and
+///    duplicated values.
+static __inline__ __m128 __DEFAULT_FN_ATTRS
+_mm_load1_ps(const float *__p)
+{
+  struct __mm_load1_ps_struct {
+    float __u;
+  } __attribute__((__packed__, __may_alias__));
+  float __u = ((struct __mm_load1_ps_struct*)__p)->__u;
+  return __extension__ (__m128){ __u, __u, __u, __u };
+}
+
+#define        _mm_load_ps1(p) _mm_load1_ps(p)
+
+/// Loads a 128-bit floating-point vector of [4 x float] from an aligned
+///    memory location.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VMOVAPS / MOVAPS </c> instruction.
+///
+/// \param __p
+///    A pointer to a 128-bit memory location. The address of the memory
+///    location has to be 128-bit aligned.
+/// \returns A 128-bit vector of [4 x float] containing the loaded values.
+static __inline__ __m128 __DEFAULT_FN_ATTRS
+_mm_load_ps(const float *__p)
+{
+  return *(__m128*)__p;
+}
+
+/// Loads a 128-bit floating-point vector of [4 x float] from an
+///    unaligned memory location.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VMOVUPS / MOVUPS </c> instruction.
+///
+/// \param __p
+///    A pointer to a 128-bit memory location. The address of the memory
+///    location does not have to be aligned.
+/// \returns A 128-bit vector of [4 x float] containing the loaded values.
+static __inline__ __m128 __DEFAULT_FN_ATTRS
+_mm_loadu_ps(const float *__p)
+{
+  struct __loadu_ps {
+    __m128 __v;
+  } __attribute__((__packed__, __may_alias__));
+  return ((struct __loadu_ps*)__p)->__v;
+}
+
+/// Loads four packed float values, in reverse order, from an aligned
+///    memory location to 32-bit elements in a 128-bit vector of [4 x float].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VMOVAPS / MOVAPS + shuffling </c>
+///    instruction.
+///
+/// \param __p
+///    A pointer to a 128-bit memory location. The address of the memory
+///    location has to be 128-bit aligned.
+/// \returns A 128-bit vector of [4 x float] containing the moved values, loaded
+///    in reverse order.
+static __inline__ __m128 __DEFAULT_FN_ATTRS
+_mm_loadr_ps(const float *__p)
+{
+#ifdef __GNUC__
+  return (__m128) __builtin_ia32_shufps (*(__v4sf *)__p, *(__v4sf *)__p, _MM_SHUFFLE (0,1,2,3));
+#else
+  __m128 __a = _mm_load_ps(__p);
+  return __builtin_shufflevector((__v4sf)__a, (__v4sf)__a, 3, 2, 1, 0);
+#endif
+}
+
+/// Create a 128-bit vector of [4 x float] with undefined values.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic has no corresponding instruction.
+///
+/// \returns A 128-bit vector of [4 x float] containing undefined values.
+static __inline__ __m128 __DEFAULT_FN_ATTRS
+_mm_undefined_ps(void)
+{
+#ifdef __GNUC__
+  __m128 __X = __X;
+  return __X;
+#else
+  return (__m128)__builtin_ia32_undef128();
+#endif
+}
+
+/// Constructs a 128-bit floating-point vector of [4 x float]. The lower
+///    32 bits of the vector are initialized with the specified single-precision
+///    floating-point value. The upper 96 bits are set to zero.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VMOVSS / MOVSS </c> instruction.
+///
+/// \param __w
+///    A single-precision floating-point value used to initialize the lower 32
+///    bits of the result.
+/// \returns An initialized 128-bit floating-point vector of [4 x float]. The
+///    lower 32 bits contain the value provided in the source operand. The
+///    upper 96 bits are set to zero.
+static __inline__ __m128 __DEFAULT_FN_ATTRS
+_mm_set_ss(float __w)
+{
+  return __extension__ (__m128){ __w, 0, 0, 0 };
+}
+
+/// Constructs a 128-bit floating-point vector of [4 x float], with each
+///    of the four single-precision floating-point vector elements set to the
+///    specified single-precision floating-point value.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VPERMILPS / PERMILPS </c> instruction.
+///
+/// \param __w
+///    A single-precision floating-point value used to initialize each vector
+///    element of the result.
+/// \returns An initialized 128-bit floating-point vector of [4 x float].
+static __inline__ __m128 __DEFAULT_FN_ATTRS
+_mm_set1_ps(float __w)
+{
+  return __extension__ (__m128){ __w, __w, __w, __w };
+}
+
+/* Microsoft specific. */
+/// Constructs a 128-bit floating-point vector of [4 x float], with each
+///    of the four single-precision floating-point vector elements set to the
+///    specified single-precision floating-point value.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VPERMILPS / PERMILPS </c> instruction.
+///
+/// \param __w
+///    A single-precision floating-point value used to initialize each vector
+///    element of the result.
+/// \returns An initialized 128-bit floating-point vector of [4 x float].
+static __inline__ __m128 __DEFAULT_FN_ATTRS
+_mm_set_ps1(float __w)
+{
+    return _mm_set1_ps(__w);
+}
+
+/// Constructs a 128-bit floating-point vector of [4 x float]
+///    initialized with the specified single-precision floating-point values.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic is a utility function and does not correspond to a specific
+///    instruction.
+///
+/// \param __z
+///    A single-precision floating-point value used to initialize bits [127:96]
+///    of the result.
+/// \param __y
+///    A single-precision floating-point value used to initialize bits [95:64]
+///    of the result.
+/// \param __x
+///    A single-precision floating-point value used to initialize bits [63:32]
+///    of the result.
+/// \param __w
+///    A single-precision floating-point value used to initialize bits [31:0]
+///    of the result.
+/// \returns An initialized 128-bit floating-point vector of [4 x float].
+static __inline__ __m128 __DEFAULT_FN_ATTRS
+_mm_set_ps(float __z, float __y, float __x, float __w)
+{
+  return __extension__ (__m128){ __w, __x, __y, __z };
+}
+
+/// Constructs a 128-bit floating-point vector of [4 x float],
+///    initialized in reverse order with the specified 32-bit single-precision
+///    float-point values.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic is a utility function and does not correspond to a specific
+///    instruction.
+///
+/// \param __z
+///    A single-precision floating-point value used to initialize bits [31:0]
+///    of the result.
+/// \param __y
+///    A single-precision floating-point value used to initialize bits [63:32]
+///    of the result.
+/// \param __x
+///    A single-precision floating-point value used to initialize bits [95:64]
+///    of the result.
+/// \param __w
+///    A single-precision floating-point value used to initialize bits [127:96]
+///    of the result.
+/// \returns An initialized 128-bit floating-point vector of [4 x float].
+static __inline__ __m128 __DEFAULT_FN_ATTRS
+_mm_setr_ps(float __z, float __y, float __x, float __w)
+{
+  return __extension__ (__m128){ __z, __y, __x, __w };
+}
+
+/// Constructs a 128-bit floating-point vector of [4 x float] initialized
+///    to zero.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VXORPS / XORPS </c> instruction.
+///
+/// \returns An initialized 128-bit floating-point vector of [4 x float] with
+///    all elements set to zero.
+static __inline__ __m128 __DEFAULT_FN_ATTRS
+_mm_setzero_ps(void)
+{
+  return __extension__ (__m128){ 0, 0, 0, 0 };
+}
+
+/// Stores the upper 64 bits of a 128-bit vector of [4 x float] to a
+///    memory location.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VPEXTRQ / PEXTRQ </c> instruction.
+///
+/// \param __p
+///    A pointer to a 64-bit memory location.
+/// \param __a
+///    A 128-bit vector of [4 x float] containing the values to be stored.
+static __inline__ void __DEFAULT_FN_ATTRS
+_mm_storeh_pi(__m64 *__p, __m128 __a)
+{
+#ifdef __GNUC__
+  __builtin_ia32_storehps((__v2sf *)__p, (__v4sf)__a);
+#else
+  __builtin_ia32_storehps((__v2si *)__p, (__v4sf)__a);
+#endif
+}
+
+/// Stores the lower 64 bits of a 128-bit vector of [4 x float] to a
+///     memory location.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VMOVLPS / MOVLPS </c> instruction.
+///
+/// \param __p
+///    A pointer to a memory location that will receive the float values.
+/// \param __a
+///    A 128-bit vector of [4 x float] containing the values to be stored.
+static __inline__ void __DEFAULT_FN_ATTRS
+_mm_storel_pi(__m64 *__p, __m128 __a)
+{
+#ifdef __GNUC__
+  __builtin_ia32_storelps ((__v2sf *)__p, (__v4sf)__a);
+#else
+  __builtin_ia32_storelps((__v2si *)__p, (__v4sf)__a);
+#endif
+}
+
+/// Stores the lower 32 bits of a 128-bit vector of [4 x float] to a
+///     memory location.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VMOVSS / MOVSS </c> instruction.
+///
+/// \param __p
+///    A pointer to a 32-bit memory location.
+/// \param __a
+///    A 128-bit vector of [4 x float] containing the value to be stored.
+static __inline__ void __DEFAULT_FN_ATTRS
+_mm_store_ss(float *__p, __m128 __a)
+{
+  struct __mm_store_ss_struct {
+    float __u;
+  } __attribute__((__packed__, __may_alias__));
+  ((struct __mm_store_ss_struct*)__p)->__u = __a[0];
+}
+
+/// Stores a 128-bit vector of [4 x float] to an unaligned memory
+///    location.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VMOVUPS / MOVUPS </c> instruction.
+///
+/// \param __p
+///    A pointer to a 128-bit memory location. The address of the memory
+///    location does not have to be aligned.
+/// \param __a
+///    A 128-bit vector of [4 x float] containing the values to be stored.
+static __inline__ void __DEFAULT_FN_ATTRS
+_mm_storeu_ps(float *__p, __m128 __a)
+{
+  struct __storeu_ps {
+    __m128 __v;
+  } __attribute__((__packed__, __may_alias__));
+  ((struct __storeu_ps*)__p)->__v = __a;
+}
+
+/// Stores a 128-bit vector of [4 x float] into an aligned memory
+///    location.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VMOVAPS / MOVAPS </c> instruction.
+///
+/// \param __p
+///    A pointer to a 128-bit memory location. The address of the memory
+///    location has to be 16-byte aligned.
+/// \param __a
+///    A 128-bit vector of [4 x float] containing the values to be stored.
+static __inline__ void __DEFAULT_FN_ATTRS
+_mm_store_ps(float *__p, __m128 __a)
+{
+  *(__m128*)__p = __a;
+}
+
+/// Stores the lower 32 bits of a 128-bit vector of [4 x float] into
+///    four contiguous elements in an aligned memory location.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to <c> VMOVAPS / MOVAPS + shuffling </c>
+///    instruction.
+///
+/// \param __p
+///    A pointer to a 128-bit memory location.
+/// \param __a
+///    A 128-bit vector of [4 x float] whose lower 32 bits are stored to each
+///    of the four contiguous elements pointed by \a __p.
+static __inline__ void __DEFAULT_FN_ATTRS
+_mm_store1_ps(float *__p, __m128 __a)
+{
+#ifdef __GNUC__
+  __a = (__m128)__builtin_ia32_shufps((__v4sf)__a, (__v4sf)__a, _MM_SHUFFLE (0,0,0,0));
+#else
+  __a = (__m128)__builtin_shufflevector((__v4sf)__a, (__v4sf)__a, 0, 0, 0, 0);
+#endif
+  _mm_store_ps(__p, __a);
+}
+
+/// Stores the lower 32 bits of a 128-bit vector of [4 x float] into
+///    four contiguous elements in an aligned memory location.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to <c> VMOVAPS / MOVAPS + shuffling </c>
+///    instruction.
+///
+/// \param __p
+///    A pointer to a 128-bit memory location.
+/// \param __a
+///    A 128-bit vector of [4 x float] whose lower 32 bits are stored to each
+///    of the four contiguous elements pointed by \a __p.
+static __inline__ void __DEFAULT_FN_ATTRS
+_mm_store_ps1(float *__p, __m128 __a)
+{
+  _mm_store1_ps(__p, __a);
+}
+
+/// Stores float values from a 128-bit vector of [4 x float] to an
+///    aligned memory location in reverse order.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VMOVAPS / MOVAPS + shuffling </c>
+///    instruction.
+///
+/// \param __p
+///    A pointer to a 128-bit memory location. The address of the memory
+///    location has to be 128-bit aligned.
+/// \param __a
+///    A 128-bit vector of [4 x float] containing the values to be stored.
+static __inline__ void __DEFAULT_FN_ATTRS
+_mm_storer_ps(float *__p, __m128 __a)
+{
+#ifdef __GNUC__
+  __a = __builtin_ia32_shufps ((__v4sf)__a, (__v4sf)__a, _MM_SHUFFLE (0,1,2,3));
+#else
+  __a = __builtin_shufflevector((__v4sf)__a, (__v4sf)__a, 3, 2, 1, 0);
+#endif
+  _mm_store_ps(__p, __a);
+}
+
+#define _MM_HINT_ET0 7
+#define _MM_HINT_ET1 6
+#define _MM_HINT_T0  3
+#define _MM_HINT_T1  2
+#define _MM_HINT_T2  1
+#define _MM_HINT_NTA 0
+
+#ifndef _MSC_VER
+/* FIXME: We have to #define this because "sel" must be a constant integer, and
+   Sema doesn't do any form of constant propagation yet. */
+
+/// Loads one cache line of data from the specified address to a location
+///    closer to the processor.
+///
+/// \headerfile <x86intrin.h>
+///
+/// \code
+/// void _mm_prefetch(const void * a, const int sel);
+/// \endcode
+///
+/// This intrinsic corresponds to the <c> PREFETCHNTA </c> instruction.
+///
+/// \param a
+///    A pointer to a memory location containing a cache line of data.
+/// \param sel
+///    A predefined integer constant specifying the type of prefetch
+///    operation: \n
+///    _MM_HINT_NTA: Move data using the non-temporal access (NTA) hint. The
+///    PREFETCHNTA instruction will be generated. \n
+///    _MM_HINT_T0: Move data using the T0 hint. The PREFETCHT0 instruction will
+///    be generated. \n
+///    _MM_HINT_T1: Move data using the T1 hint. The PREFETCHT1 instruction will
+///    be generated. \n
+///    _MM_HINT_T2: Move data using the T2 hint. The PREFETCHT2 instruction will
+///    be generated.
+#define _mm_prefetch(a, sel) (__builtin_prefetch((void *)(a), \
+                                                 ((sel) >> 2) & 1, (sel) & 0x3))
+#endif
+
+/// Stores a 64-bit integer in the specified aligned memory location. To
+///    minimize caching, the data is flagged as non-temporal (unlikely to be
+///    used again soon).
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> MOVNTQ </c> instruction.
+///
+/// \param __p
+///    A pointer to an aligned memory location used to store the register value.
+/// \param __a
+///    A 64-bit integer containing the value to be stored.
+static __inline__ void __DEFAULT_FN_ATTRS_MMX
+_mm_stream_pi(__m64 *__p, __m64 __a)
+{
+#ifdef __GNUC__
+  __builtin_ia32_movntq ((unsigned long long *)__p, (unsigned long long)__a);
+#else
+  __builtin_ia32_movntq(__p, __a);
+#endif
+}
+
+/// Moves packed float values from a 128-bit vector of [4 x float] to a
+///    128-bit aligned memory location. To minimize caching, the data is flagged
+///    as non-temporal (unlikely to be used again soon).
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VMOVNTPS / MOVNTPS </c> instruction.
+///
+/// \param __p
+///    A pointer to a 128-bit aligned memory location that will receive the
+///    single-precision floating-point values.
+/// \param __a
+///    A 128-bit vector of [4 x float] containing the values to be moved.
+static __inline__ void __DEFAULT_FN_ATTRS
+_mm_stream_ps(float *__p, __m128 __a)
+{
+#ifdef __GNUC__
+  __builtin_ia32_movntps (__p, (__v4sf)__a);
+#else
+  __builtin_nontemporal_store((__v4sf)__a, (__v4sf*)__p);
+#endif
+}
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+/// Forces strong memory ordering (serialization) between store
+///    instructions preceding this instruction and store instructions following
+///    this instruction, ensuring the system completes all previous stores
+///    before executing subsequent stores.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> SFENCE </c> instruction.
+///
+void _mm_sfence(void);
+
+#if defined(__cplusplus)
+} // extern "C"
+#endif
+
+/// Extracts 16-bit element from a 64-bit vector of [4 x i16] and
+///    returns it, as specified by the immediate integer operand.
+///
+/// \headerfile <x86intrin.h>
+///
+/// \code
+/// int _mm_extract_pi16(__m64 a, int n);
+/// \endcode
+///
+/// This intrinsic corresponds to the <c> VPEXTRW / PEXTRW </c> instruction.
+///
+/// \param a
+///    A 64-bit vector of [4 x i16].
+/// \param n
+///    An immediate integer operand that determines which bits are extracted: \n
+///    0: Bits [15:0] are copied to the destination. \n
+///    1: Bits [31:16] are copied to the destination. \n
+///    2: Bits [47:32] are copied to the destination. \n
+///    3: Bits [63:48] are copied to the destination.
+/// \returns A 16-bit integer containing the extracted 16 bits of packed data.
+#define _mm_extract_pi16(a, n) \
+  (int)__builtin_ia32_vec_ext_v4hi((__m64)a, (int)n)
+
+/// Copies data from the 64-bit vector of [4 x i16] to the destination,
+///    and inserts the lower 16-bits of an integer operand at the 16-bit offset
+///    specified by the immediate operand \a n.
+///
+/// \headerfile <x86intrin.h>
+///
+/// \code
+/// __m64 _mm_insert_pi16(__m64 a, int d, int n);
+/// \endcode
+///
+/// This intrinsic corresponds to the <c> PINSRW </c> instruction.
+///
+/// \param a
+///    A 64-bit vector of [4 x i16].
+/// \param d
+///    An integer. The lower 16-bit value from this operand is written to the
+///    destination at the offset specified by operand \a n.
+/// \param n
+///    An immediate integer operant that determines which the bits to be used
+///    in the destination. \n
+///    0: Bits [15:0] are copied to the destination. \n
+///    1: Bits [31:16] are copied to the destination. \n
+///    2: Bits [47:32] are copied to the destination. \n
+///    3: Bits [63:48] are copied to the destination.  \n
+///    The remaining bits in the destination are copied from the corresponding
+///    bits in operand \a a.
+/// \returns A 64-bit integer vector containing the copied packed data from the
+///    operands.
+#define _mm_insert_pi16(a, d, n) \
+  (__m64)__builtin_ia32_vec_set_v4hi((__m64)a, (int)d, (int)n)
+
+/// Compares each of the corresponding packed 16-bit integer values of
+///    the 64-bit integer vectors, and writes the greater value to the
+///    corresponding bits in the destination.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> PMAXSW </c> instruction.
+///
+/// \param __a
+///    A 64-bit integer vector containing one of the source operands.
+/// \param __b
+///    A 64-bit integer vector containing one of the source operands.
+/// \returns A 64-bit integer vector containing the comparison results.
+static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX
+_mm_max_pi16(__m64 __a, __m64 __b)
+{
+  return (__m64)__builtin_ia32_pmaxsw((__v4hi)__a, (__v4hi)__b);
+}
+
+/// Compares each of the corresponding packed 8-bit unsigned integer
+///    values of the 64-bit integer vectors, and writes the greater value to the
+///    corresponding bits in the destination.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> PMAXUB </c> instruction.
+///
+/// \param __a
+///    A 64-bit integer vector containing one of the source operands.
+/// \param __b
+///    A 64-bit integer vector containing one of the source operands.
+/// \returns A 64-bit integer vector containing the comparison results.
+static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX
+_mm_max_pu8(__m64 __a, __m64 __b)
+{
+  return (__m64)__builtin_ia32_pmaxub((__v8qi)__a, (__v8qi)__b);
+}
+
+/// Compares each of the corresponding packed 16-bit integer values of
+///    the 64-bit integer vectors, and writes the lesser value to the
+///    corresponding bits in the destination.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> PMINSW </c> instruction.
+///
+/// \param __a
+///    A 64-bit integer vector containing one of the source operands.
+/// \param __b
+///    A 64-bit integer vector containing one of the source operands.
+/// \returns A 64-bit integer vector containing the comparison results.
+static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX
+_mm_min_pi16(__m64 __a, __m64 __b)
+{
+  return (__m64)__builtin_ia32_pminsw((__v4hi)__a, (__v4hi)__b);
+}
+
+/// Compares each of the corresponding packed 8-bit unsigned integer
+///    values of the 64-bit integer vectors, and writes the lesser value to the
+///    corresponding bits in the destination.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> PMINUB </c> instruction.
+///
+/// \param __a
+///    A 64-bit integer vector containing one of the source operands.
+/// \param __b
+///    A 64-bit integer vector containing one of the source operands.
+/// \returns A 64-bit integer vector containing the comparison results.
+static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX
+_mm_min_pu8(__m64 __a, __m64 __b)
+{
+  return (__m64)__builtin_ia32_pminub((__v8qi)__a, (__v8qi)__b);
+}
+
+/// Takes the most significant bit from each 8-bit element in a 64-bit
+///    integer vector to create an 8-bit mask value. Zero-extends the value to
+///    32-bit integer and writes it to the destination.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> PMOVMSKB </c> instruction.
+///
+/// \param __a
+///    A 64-bit integer vector containing the values with bits to be extracted.
+/// \returns The most significant bit from each 8-bit element in \a __a,
+///    written to bits [7:0].
+static __inline__ int __DEFAULT_FN_ATTRS_MMX
+_mm_movemask_pi8(__m64 __a)
+{
+  return __builtin_ia32_pmovmskb((__v8qi)__a);
+}
+
+/// Multiplies packed 16-bit unsigned integer values and writes the
+///    high-order 16 bits of each 32-bit product to the corresponding bits in
+///    the destination.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> PMULHUW </c> instruction.
+///
+/// \param __a
+///    A 64-bit integer vector containing one of the source operands.
+/// \param __b
+///    A 64-bit integer vector containing one of the source operands.
+/// \returns A 64-bit integer vector containing the products of both operands.
+static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX
+_mm_mulhi_pu16(__m64 __a, __m64 __b)
+{
+  return (__m64)__builtin_ia32_pmulhuw((__v4hi)__a, (__v4hi)__b);
+}
+
+/// Shuffles the 4 16-bit integers from a 64-bit integer vector to the
+///    destination, as specified by the immediate value operand.
+///
+/// \headerfile <x86intrin.h>
+///
+/// \code
+/// __m64 _mm_shuffle_pi16(__m64 a, const int n);
+/// \endcode
+///
+/// This intrinsic corresponds to the <c> PSHUFW </c> instruction.
+///
+/// \param a
+///    A 64-bit integer vector containing the values to be shuffled.
+/// \param n
+///    An immediate value containing an 8-bit value specifying which elements to
+///    copy from \a a. The destinations within the 64-bit destination are
+///    assigned values as follows: \n
+///    Bits [1:0] are used to assign values to bits [15:0] in the
+///    destination. \n
+///    Bits [3:2] are used to assign values to bits [31:16] in the
+///    destination. \n
+///    Bits [5:4] are used to assign values to bits [47:32] in the
+///    destination. \n
+///    Bits [7:6] are used to assign values to bits [63:48] in the
+///    destination. \n
+///    Bit value assignments: \n
+///    00: assigned from bits [15:0] of \a a. \n
+///    01: assigned from bits [31:16] of \a a. \n
+///    10: assigned from bits [47:32] of \a a. \n
+///    11: assigned from bits [63:48] of \a a.
+/// \returns A 64-bit integer vector containing the shuffled values.
+#define _mm_shuffle_pi16(a, n) \
+  (__m64)__builtin_ia32_pshufw((__v4hi)(__m64)(a), (n))
+
+/// Conditionally copies the values from each 8-bit element in the first
+///    64-bit integer vector operand to the specified memory location, as
+///    specified by the most significant bit in the corresponding element in the
+///    second 64-bit integer vector operand.
+///
+///    To minimize caching, the data is flagged as non-temporal
+///    (unlikely to be used again soon).
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> MASKMOVQ </c> instruction.
+///
+/// \param __d
+///    A 64-bit integer vector containing the values with elements to be copied.
+/// \param __n
+///    A 64-bit integer vector operand. The most significant bit from each 8-bit
+///    element determines whether the corresponding element in operand \a __d
+///    is copied. If the most significant bit of a given element is 1, the
+///    corresponding element in operand \a __d is copied.
+/// \param __p
+///    A pointer to a 64-bit memory location that will receive the conditionally
+///    copied integer values. The address of the memory location does not have
+///    to be aligned.
+static __inline__ void __DEFAULT_FN_ATTRS_MMX
+_mm_maskmove_si64(__m64 __d, __m64 __n, char *__p)
+{
+  __builtin_ia32_maskmovq((__v8qi)__d, (__v8qi)__n, __p);
+}
+
+/// Computes the rounded averages of the packed unsigned 8-bit integer
+///    values and writes the averages to the corresponding bits in the
+///    destination.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> PAVGB </c> instruction.
+///
+/// \param __a
+///    A 64-bit integer vector containing one of the source operands.
+/// \param __b
+///    A 64-bit integer vector containing one of the source operands.
+/// \returns A 64-bit integer vector containing the averages of both operands.
+static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX
+_mm_avg_pu8(__m64 __a, __m64 __b)
+{
+  return (__m64)__builtin_ia32_pavgb((__v8qi)__a, (__v8qi)__b);
+}
+
+/// Computes the rounded averages of the packed unsigned 16-bit integer
+///    values and writes the averages to the corresponding bits in the
+///    destination.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> PAVGW </c> instruction.
+///
+/// \param __a
+///    A 64-bit integer vector containing one of the source operands.
+/// \param __b
+///    A 64-bit integer vector containing one of the source operands.
+/// \returns A 64-bit integer vector containing the averages of both operands.
+static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX
+_mm_avg_pu16(__m64 __a, __m64 __b)
+{
+  return (__m64)__builtin_ia32_pavgw((__v4hi)__a, (__v4hi)__b);
+}
+
+/// Subtracts the corresponding 8-bit unsigned integer values of the two
+///    64-bit vector operands and computes the absolute value for each of the
+///    difference. Then sum of the 8 absolute differences is written to the
+///    bits [15:0] of the destination; the remaining bits [63:16] are cleared.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> PSADBW </c> instruction.
+///
+/// \param __a
+///    A 64-bit integer vector containing one of the source operands.
+/// \param __b
+///    A 64-bit integer vector containing one of the source operands.
+/// \returns A 64-bit integer vector whose lower 16 bits contain the sums of the
+///    sets of absolute differences between both operands. The upper bits are
+///    cleared.
+static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX
+_mm_sad_pu8(__m64 __a, __m64 __b)
+{
+  return (__m64)__builtin_ia32_psadbw((__v8qi)__a, (__v8qi)__b);
+}
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+/// Returns the contents of the MXCSR register as a 32-bit unsigned
+///    integer value.
+///
+///    There are several groups of macros associated with this
+///    intrinsic, including:
+///    <ul>
+///    <li>
+///      For checking exception states: _MM_EXCEPT_INVALID, _MM_EXCEPT_DIV_ZERO,
+///      _MM_EXCEPT_DENORM, _MM_EXCEPT_OVERFLOW, _MM_EXCEPT_UNDERFLOW,
+///      _MM_EXCEPT_INEXACT. There is a convenience wrapper
+///      _MM_GET_EXCEPTION_STATE().
+///    </li>
+///    <li>
+///      For checking exception masks: _MM_MASK_UNDERFLOW, _MM_MASK_OVERFLOW,
+///      _MM_MASK_INVALID, _MM_MASK_DENORM, _MM_MASK_DIV_ZERO, _MM_MASK_INEXACT.
+///      There is a convenience wrapper _MM_GET_EXCEPTION_MASK().
+///    </li>
+///    <li>
+///      For checking rounding modes: _MM_ROUND_NEAREST, _MM_ROUND_DOWN,
+///      _MM_ROUND_UP, _MM_ROUND_TOWARD_ZERO. There is a convenience wrapper
+///      _MM_GET_ROUNDING_MODE().
+///    </li>
+///    <li>
+///      For checking flush-to-zero mode: _MM_FLUSH_ZERO_ON, _MM_FLUSH_ZERO_OFF.
+///      There is a convenience wrapper _MM_GET_FLUSH_ZERO_MODE().
+///    </li>
+///    <li>
+///      For checking denormals-are-zero mode: _MM_DENORMALS_ZERO_ON,
+///      _MM_DENORMALS_ZERO_OFF. There is a convenience wrapper
+///      _MM_GET_DENORMALS_ZERO_MODE().
+///    </li>
+///    </ul>
+///
+///    For example, the following expression checks if an overflow exception has
+///    occurred:
+///    \code
+///      ( _mm_getcsr() & _MM_EXCEPT_OVERFLOW )
+///    \endcode
+///
+///    The following expression gets the current rounding mode:
+///    \code
+///      _MM_GET_ROUNDING_MODE()
+///    \endcode
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VSTMXCSR / STMXCSR </c> instruction.
+///
+/// \returns A 32-bit unsigned integer containing the contents of the MXCSR
+///    register.
+unsigned int _mm_getcsr(void);
+
+/// Sets the MXCSR register with the 32-bit unsigned integer value.
+///
+///    There are several groups of macros associated with this intrinsic,
+///    including:
+///    <ul>
+///    <li>
+///      For setting exception states: _MM_EXCEPT_INVALID, _MM_EXCEPT_DIV_ZERO,
+///      _MM_EXCEPT_DENORM, _MM_EXCEPT_OVERFLOW, _MM_EXCEPT_UNDERFLOW,
+///      _MM_EXCEPT_INEXACT. There is a convenience wrapper
+///      _MM_SET_EXCEPTION_STATE(x) where x is one of these macros.
+///    </li>
+///    <li>
+///      For setting exception masks: _MM_MASK_UNDERFLOW, _MM_MASK_OVERFLOW,
+///      _MM_MASK_INVALID, _MM_MASK_DENORM, _MM_MASK_DIV_ZERO, _MM_MASK_INEXACT.
+///      There is a convenience wrapper _MM_SET_EXCEPTION_MASK(x) where x is one
+///      of these macros.
+///    </li>
+///    <li>
+///      For setting rounding modes: _MM_ROUND_NEAREST, _MM_ROUND_DOWN,
+///      _MM_ROUND_UP, _MM_ROUND_TOWARD_ZERO. There is a convenience wrapper
+///      _MM_SET_ROUNDING_MODE(x) where x is one of these macros.
+///    </li>
+///    <li>
+///      For setting flush-to-zero mode: _MM_FLUSH_ZERO_ON, _MM_FLUSH_ZERO_OFF.
+///      There is a convenience wrapper _MM_SET_FLUSH_ZERO_MODE(x) where x is
+///      one of these macros.
+///    </li>
+///    <li>
+///      For setting denormals-are-zero mode: _MM_DENORMALS_ZERO_ON,
+///      _MM_DENORMALS_ZERO_OFF. There is a convenience wrapper
+///      _MM_SET_DENORMALS_ZERO_MODE(x) where x is one of these macros.
+///    </li>
+///    </ul>
+///
+///    For example, the following expression causes subsequent floating-point
+///    operations to round up:
+///      _mm_setcsr(_mm_getcsr() | _MM_ROUND_UP)
+///
+///    The following example sets the DAZ and FTZ flags:
+///    \code
+///    void setFlags() {
+///      _MM_SET_FLUSH_ZERO_MODE(_MM_FLUSH_ZERO_ON);
+///      _MM_SET_DENORMALS_ZERO_MODE(_MM_DENORMALS_ZERO_ON);
+///    }
+///    \endcode
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VLDMXCSR / LDMXCSR </c> instruction.
+///
+/// \param __i
+///    A 32-bit unsigned integer value to be written to the MXCSR register.
+void _mm_setcsr(unsigned int __i);
+
+#if defined(__cplusplus)
+} // extern "C"
+#endif
+
+/// Selects 4 float values from the 128-bit operands of [4 x float], as
+///    specified by the immediate value operand.
+///
+/// \headerfile <x86intrin.h>
+///
+/// \code
+/// __m128 _mm_shuffle_ps(__m128 a, __m128 b, const int mask);
+/// \endcode
+///
+/// This intrinsic corresponds to the <c> VSHUFPS / SHUFPS </c> instruction.
+///
+/// \param a
+///    A 128-bit vector of [4 x float].
+/// \param b
+///    A 128-bit vector of [4 x float].
+/// \param mask
+///    An immediate value containing an 8-bit value specifying which elements to
+///    copy from \a a and \a b. \n
+///    Bits [3:0] specify the values copied from operand \a a. \n
+///    Bits [7:4] specify the values copied from operand \a b. \n
+///    The destinations within the 128-bit destination are assigned values as
+///    follows: \n
+///    Bits [1:0] are used to assign values to bits [31:0] in the
+///    destination. \n
+///    Bits [3:2] are used to assign values to bits [63:32] in the
+///    destination. \n
+///    Bits [5:4] are used to assign values to bits [95:64] in the
+///    destination. \n
+///    Bits [7:6] are used to assign values to bits [127:96] in the
+///    destination. \n
+///    Bit value assignments: \n
+///    00: Bits [31:0] copied from the specified operand. \n
+///    01: Bits [63:32] copied from the specified operand. \n
+///    10: Bits [95:64] copied from the specified operand. \n
+///    11: Bits [127:96] copied from the specified operand.
+/// \returns A 128-bit vector of [4 x float] containing the shuffled values.
+#define _mm_shuffle_ps(a, b, mask) \
+  (__m128)__builtin_ia32_shufps((__v4sf)(__m128)(a), (__v4sf)(__m128)(b), \
+                                (int)(mask))
+
+/// Unpacks the high-order (index 2,3) values from two 128-bit vectors of
+///    [4 x float] and interleaves them into a 128-bit vector of [4 x float].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VUNPCKHPS / UNPCKHPS </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [4 x float]. \n
+///    Bits [95:64] are written to bits [31:0] of the destination. \n
+///    Bits [127:96] are written to bits [95:64] of the destination.
+/// \param __b
+///    A 128-bit vector of [4 x float].
+///    Bits [95:64] are written to bits [63:32] of the destination. \n
+///    Bits [127:96] are written to bits [127:96] of the destination.
+/// \returns A 128-bit vector of [4 x float] containing the interleaved values.
+static __inline__ __m128 __DEFAULT_FN_ATTRS
+_mm_unpackhi_ps(__m128 __a, __m128 __b)
+{
+#ifdef __GNUC__
+  return (__m128) __builtin_ia32_unpckhps ((__v4sf)__a, (__v4sf)__b);
+#else
+  return __builtin_shufflevector((__v4sf)__a, (__v4sf)__b, 2, 6, 3, 7);
+#endif
+}
+
+/// Unpacks the low-order (index 0,1) values from two 128-bit vectors of
+///    [4 x float] and interleaves them into a 128-bit vector of [4 x float].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VUNPCKLPS / UNPCKLPS </c> instruction.
+///
+/// \param __a
+///    A 128-bit vector of [4 x float]. \n
+///    Bits [31:0] are written to bits [31:0] of the destination.  \n
+///    Bits [63:32] are written to bits [95:64] of the destination.
+/// \param __b
+///    A 128-bit vector of [4 x float]. \n
+///    Bits [31:0] are written to bits [63:32] of the destination. \n
+///    Bits [63:32] are written to bits [127:96] of the destination.
+/// \returns A 128-bit vector of [4 x float] containing the interleaved values.
+static __inline__ __m128 __DEFAULT_FN_ATTRS
+_mm_unpacklo_ps(__m128 __a, __m128 __b)
+{
+#ifdef __GNUC__
+  return (__m128) __builtin_ia32_unpcklps ((__v4sf)__a, (__v4sf)__b);
+#else
+  return __builtin_shufflevector((__v4sf)__a, (__v4sf)__b, 0, 4, 1, 5);
+#endif
+}
+
+/// Constructs a 128-bit floating-point vector of [4 x float]. The lower
+///    32 bits are set to the lower 32 bits of the second parameter. The upper
+///    96 bits are set to the upper 96 bits of the first parameter.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VBLENDPS / BLENDPS / MOVSS </c>
+///    instruction.
+///
+/// \param __a
+///    A 128-bit floating-point vector of [4 x float]. The upper 96 bits are
+///    written to the upper 96 bits of the result.
+/// \param __b
+///    A 128-bit floating-point vector of [4 x float]. The lower 32 bits are
+///    written to the lower 32 bits of the result.
+/// \returns A 128-bit floating-point vector of [4 x float].
+static __inline__ __m128 __DEFAULT_FN_ATTRS
+_mm_move_ss(__m128 __a, __m128 __b)
+{
+  __a[0] = __b[0];
+  return __a;
+}
+
+/// Constructs a 128-bit floating-point vector of [4 x float]. The lower
+///    64 bits are set to the upper 64 bits of the second parameter. The upper
+///    64 bits are set to the upper 64 bits of the first parameter.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VUNPCKHPD / UNPCKHPD </c> instruction.
+///
+/// \param __a
+///    A 128-bit floating-point vector of [4 x float]. The upper 64 bits are
+///    written to the upper 64 bits of the result.
+/// \param __b
+///    A 128-bit floating-point vector of [4 x float]. The upper 64 bits are
+///    written to the lower 64 bits of the result.
+/// \returns A 128-bit floating-point vector of [4 x float].
+static __inline__ __m128 __DEFAULT_FN_ATTRS
+_mm_movehl_ps(__m128 __a, __m128 __b)
+{
+#ifdef __GNUC__
+  return (__m128) __builtin_ia32_movhlps ((__v4sf)__a, (__v4sf)__b);
+#else
+  return __builtin_shufflevector((__v4sf)__a, (__v4sf)__b, 6, 7, 2, 3);
+#endif
+}
+
+/// Constructs a 128-bit floating-point vector of [4 x float]. The lower
+///    64 bits are set to the lower 64 bits of the first parameter. The upper
+///    64 bits are set to the lower 64 bits of the second parameter.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VUNPCKLPD / UNPCKLPD </c> instruction.
+///
+/// \param __a
+///    A 128-bit floating-point vector of [4 x float]. The lower 64 bits are
+///    written to the lower 64 bits of the result.
+/// \param __b
+///    A 128-bit floating-point vector of [4 x float]. The lower 64 bits are
+///    written to the upper 64 bits of the result.
+/// \returns A 128-bit floating-point vector of [4 x float].
+static __inline__ __m128 __DEFAULT_FN_ATTRS
+_mm_movelh_ps(__m128 __a, __m128 __b)
+{
+#ifdef __GNUC__
+  return (__m128) __builtin_ia32_movlhps ((__v4sf)__a, (__v4sf)__b);
+#else
+  return __builtin_shufflevector((__v4sf)__a, (__v4sf)__b, 0, 1, 4, 5);
+#endif
+}
+
+/// Converts a 64-bit vector of [4 x i16] into a 128-bit vector of [4 x
+///    float].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> CVTPI2PS + COMPOSITE </c> instruction.
+///
+/// \param __a
+///    A 64-bit vector of [4 x i16]. The elements of the destination are copied
+///    from the corresponding elements in this operand.
+/// \returns A 128-bit vector of [4 x float] containing the copied and converted
+///    values from the operand.
+static __inline__ __m128 __DEFAULT_FN_ATTRS_MMX
+_mm_cvtpi16_ps(__m64 __a)
+{
+  __m64 __b, __c;
+  __m128 __r;
+
+  __b = _mm_setzero_si64();
+  __b = _mm_cmpgt_pi16(__b, __a);
+  __c = _mm_unpackhi_pi16(__a, __b);
+  __r = _mm_setzero_ps();
+  __r = _mm_cvtpi32_ps(__r, __c);
+  __r = _mm_movelh_ps(__r, __r);
+  __c = _mm_unpacklo_pi16(__a, __b);
+  __r = _mm_cvtpi32_ps(__r, __c);
+
+  return __r;
+}
+
+/// Converts a 64-bit vector of 16-bit unsigned integer values into a
+///    128-bit vector of [4 x float].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> CVTPI2PS + COMPOSITE </c> instruction.
+///
+/// \param __a
+///    A 64-bit vector of 16-bit unsigned integer values. The elements of the
+///    destination are copied from the corresponding elements in this operand.
+/// \returns A 128-bit vector of [4 x float] containing the copied and converted
+///    values from the operand.
+static __inline__ __m128 __DEFAULT_FN_ATTRS_MMX
+_mm_cvtpu16_ps(__m64 __a)
+{
+  __m64 __b, __c;
+  __m128 __r;
+
+  __b = _mm_setzero_si64();
+  __c = _mm_unpackhi_pi16(__a, __b);
+  __r = _mm_setzero_ps();
+  __r = _mm_cvtpi32_ps(__r, __c);
+  __r = _mm_movelh_ps(__r, __r);
+  __c = _mm_unpacklo_pi16(__a, __b);
+  __r = _mm_cvtpi32_ps(__r, __c);
+
+  return __r;
+}
+
+/// Converts the lower four 8-bit values from a 64-bit vector of [8 x i8]
+///    into a 128-bit vector of [4 x float].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> CVTPI2PS + COMPOSITE </c> instruction.
+///
+/// \param __a
+///    A 64-bit vector of [8 x i8]. The elements of the destination are copied
+///    from the corresponding lower 4 elements in this operand.
+/// \returns A 128-bit vector of [4 x float] containing the copied and converted
+///    values from the operand.
+static __inline__ __m128 __DEFAULT_FN_ATTRS_MMX
+_mm_cvtpi8_ps(__m64 __a)
+{
+  __m64 __b;
+
+  __b = _mm_setzero_si64();
+  __b = _mm_cmpgt_pi8(__b, __a);
+  __b = _mm_unpacklo_pi8(__a, __b);
+
+  return _mm_cvtpi16_ps(__b);
+}
+
+/// Converts the lower four unsigned 8-bit integer values from a 64-bit
+///    vector of [8 x u8] into a 128-bit vector of [4 x float].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> CVTPI2PS + COMPOSITE </c> instruction.
+///
+/// \param __a
+///    A 64-bit vector of unsigned 8-bit integer values. The elements of the
+///    destination are copied from the corresponding lower 4 elements in this
+///    operand.
+/// \returns A 128-bit vector of [4 x float] containing the copied and converted
+///    values from the source operand.
+static __inline__ __m128 __DEFAULT_FN_ATTRS_MMX
+_mm_cvtpu8_ps(__m64 __a)
+{
+  __m64 __b;
+
+  __b = _mm_setzero_si64();
+  __b = _mm_unpacklo_pi8(__a, __b);
+
+  return _mm_cvtpi16_ps(__b);
+}
+
+/// Converts the two 32-bit signed integer values from each 64-bit vector
+///    operand of [2 x i32] into a 128-bit vector of [4 x float].
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> CVTPI2PS + COMPOSITE </c> instruction.
+///
+/// \param __a
+///    A 64-bit vector of [2 x i32]. The lower elements of the destination are
+///    copied from the elements in this operand.
+/// \param __b
+///    A 64-bit vector of [2 x i32]. The upper elements of the destination are
+///    copied from the elements in this operand.
+/// \returns A 128-bit vector of [4 x float] whose lower 64 bits contain the
+///    copied and converted values from the first operand. The upper 64 bits
+///    contain the copied and converted values from the second operand.
+static __inline__ __m128 __DEFAULT_FN_ATTRS_MMX
+_mm_cvtpi32x2_ps(__m64 __a, __m64 __b)
+{
+  __m128 __c;
+
+  __c = _mm_setzero_ps();
+  __c = _mm_cvtpi32_ps(__c, __b);
+  __c = _mm_movelh_ps(__c, __c);
+
+  return _mm_cvtpi32_ps(__c, __a);
+}
+
+/// Converts each single-precision floating-point element of a 128-bit
+///    floating-point vector of [4 x float] into a 16-bit signed integer, and
+///    packs the results into a 64-bit integer vector of [4 x i16].
+///
+///    If the floating-point element is NaN or infinity, or if the
+///    floating-point element is greater than 0x7FFFFFFF or less than -0x8000,
+///    it is converted to 0x8000. Otherwise if the floating-point element is
+///    greater than 0x7FFF, it is converted to 0x7FFF.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> CVTPS2PI + COMPOSITE </c> instruction.
+///
+/// \param __a
+///    A 128-bit floating-point vector of [4 x float].
+/// \returns A 64-bit integer vector of [4 x i16] containing the converted
+///    values.
+static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX
+_mm_cvtps_pi16(__m128 __a)
+{
+  __m64 __b, __c;
+
+  __b = _mm_cvtps_pi32(__a);
+  __a = _mm_movehl_ps(__a, __a);
+  __c = _mm_cvtps_pi32(__a);
+
+  return _mm_packs_pi32(__b, __c);
+}
+
+/// Converts each single-precision floating-point element of a 128-bit
+///    floating-point vector of [4 x float] into an 8-bit signed integer, and
+///    packs the results into the lower 32 bits of a 64-bit integer vector of
+///    [8 x i8]. The upper 32 bits of the vector are set to 0.
+///
+///    If the floating-point element is NaN or infinity, or if the
+///    floating-point element is greater than 0x7FFFFFFF or less than -0x80, it
+///    is converted to 0x80. Otherwise if the floating-point element is greater
+///    than 0x7F, it is converted to 0x7F.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> CVTPS2PI + COMPOSITE </c> instruction.
+///
+/// \param __a
+///    128-bit floating-point vector of [4 x float].
+/// \returns A 64-bit integer vector of [8 x i8]. The lower 32 bits contain the
+///    converted values and the uppper 32 bits are set to zero.
+static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX
+_mm_cvtps_pi8(__m128 __a)
+{
+  __m64 __b, __c;
+
+  __b = _mm_cvtps_pi16(__a);
+  __c = _mm_setzero_si64();
+
+  return _mm_packs_pi16(__b, __c);
+}
+
+/// Extracts the sign bits from each single-precision floating-point
+///    element of a 128-bit floating-point vector of [4 x float] and returns the
+///    sign bits in bits [0:3] of the result. Bits [31:4] of the result are set
+///    to zero.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> VMOVMSKPS / MOVMSKPS </c> instruction.
+///
+/// \param __a
+///    A 128-bit floating-point vector of [4 x float].
+/// \returns A 32-bit integer value. Bits [3:0] contain the sign bits from each
+///    single-precision floating-point element of the parameter. Bits [31:4] are
+///    set to zero.
+static __inline__ int __DEFAULT_FN_ATTRS
+_mm_movemask_ps(__m128 __a)
+{
+  return __builtin_ia32_movmskps((__v4sf)__a);
+}
+
+
+#define _MM_ALIGN16 __attribute__((aligned(16)))
+
+
+#define _MM_EXCEPT_INVALID    (0x0001)
+#define _MM_EXCEPT_DENORM     (0x0002)
+#define _MM_EXCEPT_DIV_ZERO   (0x0004)
+#define _MM_EXCEPT_OVERFLOW   (0x0008)
+#define _MM_EXCEPT_UNDERFLOW  (0x0010)
+#define _MM_EXCEPT_INEXACT    (0x0020)
+#define _MM_EXCEPT_MASK       (0x003f)
+
+#define _MM_MASK_INVALID      (0x0080)
+#define _MM_MASK_DENORM       (0x0100)
+#define _MM_MASK_DIV_ZERO     (0x0200)
+#define _MM_MASK_OVERFLOW     (0x0400)
+#define _MM_MASK_UNDERFLOW    (0x0800)
+#define _MM_MASK_INEXACT      (0x1000)
+#define _MM_MASK_MASK         (0x1f80)
+
+#define _MM_ROUND_NEAREST     (0x0000)
+#define _MM_ROUND_DOWN        (0x2000)
+#define _MM_ROUND_UP          (0x4000)
+#define _MM_ROUND_TOWARD_ZERO (0x6000)
+#define _MM_ROUND_MASK        (0x6000)
+
+#define _MM_FLUSH_ZERO_MASK   (0x8000)
+#define _MM_FLUSH_ZERO_ON     (0x8000)
+#define _MM_FLUSH_ZERO_OFF    (0x0000)
+
+#define _MM_GET_EXCEPTION_MASK() (_mm_getcsr() & _MM_MASK_MASK)
+#define _MM_GET_EXCEPTION_STATE() (_mm_getcsr() & _MM_EXCEPT_MASK)
+#define _MM_GET_FLUSH_ZERO_MODE() (_mm_getcsr() & _MM_FLUSH_ZERO_MASK)
+#define _MM_GET_ROUNDING_MODE() (_mm_getcsr() & _MM_ROUND_MASK)
+
+#define _MM_SET_EXCEPTION_MASK(x) (_mm_setcsr((_mm_getcsr() & ~_MM_MASK_MASK) | (x)))
+#define _MM_SET_EXCEPTION_STATE(x) (_mm_setcsr((_mm_getcsr() & ~_MM_EXCEPT_MASK) | (x)))
+#define _MM_SET_FLUSH_ZERO_MODE(x) (_mm_setcsr((_mm_getcsr() & ~_MM_FLUSH_ZERO_MASK) | (x)))
+#define _MM_SET_ROUNDING_MODE(x) (_mm_setcsr((_mm_getcsr() & ~_MM_ROUND_MASK) | (x)))
+
+#define _MM_TRANSPOSE4_PS(row0, row1, row2, row3) \
+do { \
+  __m128 tmp3, tmp2, tmp1, tmp0; \
+  tmp0 = _mm_unpacklo_ps((row0), (row1)); \
+  tmp2 = _mm_unpacklo_ps((row2), (row3)); \
+  tmp1 = _mm_unpackhi_ps((row0), (row1)); \
+  tmp3 = _mm_unpackhi_ps((row2), (row3)); \
+  (row0) = _mm_movelh_ps(tmp0, tmp2); \
+  (row1) = _mm_movehl_ps(tmp2, tmp0); \
+  (row2) = _mm_movelh_ps(tmp1, tmp3); \
+  (row3) = _mm_movehl_ps(tmp3, tmp1); \
+} while (0)
+
+/* Aliases for compatibility. */
+#define _m_pextrw _mm_extract_pi16
+#define _m_pinsrw _mm_insert_pi16
+#define _m_pmaxsw _mm_max_pi16
+#define _m_pmaxub _mm_max_pu8
+#define _m_pminsw _mm_min_pi16
+#define _m_pminub _mm_min_pu8
+#define _m_pmovmskb _mm_movemask_pi8
+#define _m_pmulhuw _mm_mulhi_pu16
+#define _m_pshufw _mm_shuffle_pi16
+#define _m_maskmovq _mm_maskmove_si64
+#define _m_pavgb _mm_avg_pu8
+#define _m_pavgw _mm_avg_pu16
+#define _m_psadbw _mm_sad_pu8
+#define _m_ _mm_
+#define _m_ _mm_
+
+/// Indicates that a spin loop is being executed for the purposes of
+///    optimizing power consumption during the loop.
+///
+/// \headerfile <x86intrin.h>
+///
+/// This intrinsic corresponds to the <c> PAUSE </c> instruction.
+///
+static inline void __DEFAULT_FN_ATTRS _mm_pause(void)
+{
+	__builtin_ia32_pause();
+}
+
+#undef __DEFAULT_FN_ATTRS
+#undef __DEFAULT_FN_ATTRS_MMX
+
+/* Set the control register to I.  */
+extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_setcsr (unsigned int __I)
+{
+  __builtin_ia32_ldmxcsr (__I);
+}
+
+/* Return the contents of the control register.  */
+extern __inline unsigned int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_getcsr (void)
+{
+  return __builtin_ia32_stmxcsr ();
+}
+
+/* Ugly hack for backwards-compatibility (compatible with gcc) */
+#ifdef __GNUC__
+#include <emmintrin.h>
+#else
+#if defined(__SSE2__) && !__building_module(_Builtin_intrinsics)
+#include <emmintrin.h>
+#endif
+#endif
+
+#endif /* __XMMINTRIN_H */
-- 
2.17.1



From minios-devel-bounces@lists.xenproject.org Mon Apr 20 13:53:56 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 20 Apr 2020 13:53: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 1jQWry-0002sQ-RH; Mon, 20 Apr 2020 13:53:54 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=DtxG=6E=gmail.com=radunicolau102@srs-us1.protection.inumbo.net>)
 id 1jQWrx-0002sH-IN
 for minios-devel@lists.xen.org; Mon, 20 Apr 2020 13:53:53 +0000
X-Inumbo-ID: 5e85b5f2-830e-11ea-b58d-bc764e2007e4
Received: from mail-ot1-x344.google.com (unknown [2607:f8b0:4864:20::344])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 5e85b5f2-830e-11ea-b58d-bc764e2007e4;
 Mon, 20 Apr 2020 13:53:52 +0000 (UTC)
Received: by mail-ot1-x344.google.com with SMTP id z25so4657349otq.13
 for <minios-devel@lists.xen.org>; Mon, 20 Apr 2020 06:53:52 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=mime-version:references:in-reply-to:from:date:message-id:subject:to
 :cc; bh=kqWiQYpCbSELJxmY+Jpd1bnDYHMTumvutkC2QWywYb4=;
 b=aC1SmfUhiUborRQKNc4Xww+VqGBnE4LKNkhKEKzK0L8icx3qGe6FNbKPnkePO+GlrQ
 T+uRIlrVPXyRZu2JEH3RVqsrCdq9FJS/llpnl95fpMITxzPopwGkbj0F73IpOwa77hBX
 S5WzYfdgwr+0AL/vpTZMKMf48biNtvBn5KJ6PKAiktS7eZxCJxB5X+Jn4WTInuqSAn8M
 Bkk1nUxwxhZvIsMqIpdh1j6Q8/R98gPfETUAN2Z5ly4nTvGj66kiF3lsItG2pGyfWTKW
 VffqNRTWaXxqB1amdbx/rWLYKKjMpmAqhgmIrq7HoTB+JMGVY0uBmNMFCp9K3TqxKNnq
 Z8iw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:mime-version:references:in-reply-to:from:date
 :message-id:subject:to:cc;
 bh=kqWiQYpCbSELJxmY+Jpd1bnDYHMTumvutkC2QWywYb4=;
 b=HklbkVf/jhWm047VzbfDkaqmxOE6+a0ptTLdSmheMR3D1Y7nXkf49lfgpPUdstP3sl
 Se3Yg7dIqBBcow9yE6ClIRotBZWVH2RANBBpyehaW3vDiZYwXF7YXdfGHetQtsWfRW+U
 FL8Jm+tLaPBJfe295I/gbzzC48d1ABFsZMg6NRzj2w73Iq6zLiz49/l21kSDBuadu0nN
 ZrvGC/jK3lg0ls2rsfxW7/1gpDiTRleJrifXZ2miebDk3lElDAT1GubRmhwu4CPPQgL2
 Buh7B/8gaQRDFLjGI+2wZq/qxdh01P3lcNvky07yLMBDcvKoahAU9s5EQQN7OzfvOQuf
 Girg==
X-Gm-Message-State: AGi0PuZrWnZ7O3uftrjbZTozpa7FxS5dwCxqkquR1c5ySvbEwfCtQ9ol
 M7QRyxeDOKhRZ+eV6P1n6SkVNf0wi54//AgneQGwC9U5
X-Google-Smtp-Source: APiQypLZh8ddFqKvaHHK3wrmaKFwYiRmPXjjk9h0tYqFRb14u/2mcValUibqWsmIoM5g9tm063Sn+2x6yZCsXi44b5Y=
X-Received: by 2002:a9d:2d89:: with SMTP id g9mr9258365otb.367.1587390832327; 
 Mon, 20 Apr 2020 06:53:52 -0700 (PDT)
MIME-Version: 1.0
References: <1587288479-15004-1-git-send-email-radunicolau102@gmail.com>
 <1587288479-15004-3-git-send-email-radunicolau102@gmail.com>
 <e4f0557d-2251-8843-100f-3fb9185de9f0@cs.pub.ro>
In-Reply-To: <e4f0557d-2251-8843-100f-3fb9185de9f0@cs.pub.ro>
From: Radu Nicolau <radunicolau102@gmail.com>
Date: Mon, 20 Apr 2020 16:53:41 +0300
Message-ID: <CAPGq5zaD6gUxNrb=DxitdYTL0cUeiTyimwpr=zOe-J0239sA+w@mail.gmail.com>
Subject: Re: [UNIKRAFT PATCH] mm.c: Rename function call to _arch_rebuild_p2m
To: Costin Lupu <costin.lupu@cs.pub.ro>
Content-Type: multipart/alternative; boundary="000000000000ae3fda05a3b93afa"
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

--000000000000ae3fda05a3b93afa
Content-Type: text/plain; charset="UTF-8"

Hello Costin,

The function definition is already named _arch_rebuild_p2m so this patch
only renames the use to match the definition.
The reason it is named differently is an oversight by me when I introduced
the function.

Cheers,
Radu


On Mon, Apr 20, 2020 at 3:37 PM Costin Lupu <costin.lupu@cs.pub.ro> wrote:

> Hi Radu,
>
> Shouldn't you also rename the function definition?
>
> Cheers,
> Costin
>
> On 4/19/20 12:27 PM, Radu Nicolau wrote:
> > Signed-off-by: Radu Nicolau <radunicolau102@gmail.com>
> > ---
> >  plat/xen/x86/mm.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/plat/xen/x86/mm.c b/plat/xen/x86/mm.c
> > index 249b792..e006ab7 100644
> > --- a/plat/xen/x86/mm.c
> > +++ b/plat/xen/x86/mm.c
> > @@ -743,7 +743,7 @@ void arch_mm_pre_suspend(void)
> >  void arch_mm_post_suspend(int canceled)
> >  {
> >       if (!canceled)
> > -             arch_rebuild_p2m();
> > +             _arch_rebuild_p2m();
> >  }
> >  #endif
> >  #endif /* CONFIG_XEN_PV_BUILD_P2M */
> >
>

--000000000000ae3fda05a3b93afa
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div>Hello Costin,</div><div><br></div><div>The function d=
efinition is already named _arch_rebuild_p2m so this patch only renames the=
 use to match the definition.</div><div>The reason it is named differently =
is an oversight by me when I introduced the function.</div><div><br></div><=
div>Cheers,</div><div>Radu</div><div><br></div></div><br><div class=3D"gmai=
l_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Mon, Apr 20, 2020 at 3:37=
 PM Costin Lupu &lt;<a href=3D"mailto:costin.lupu@cs.pub.ro">costin.lupu@cs=
.pub.ro</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"=
margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-lef=
t:1ex">Hi Radu,<br>
<br>
Shouldn&#39;t you also rename the function definition?<br>
<br>
Cheers,<br>
Costin<br>
<br>
On 4/19/20 12:27 PM, Radu Nicolau wrote:<br>
&gt; Signed-off-by: Radu Nicolau &lt;<a href=3D"mailto:radunicolau102@gmail=
.com" target=3D"_blank">radunicolau102@gmail.com</a>&gt;<br>
&gt; ---<br>
&gt;=C2=A0 plat/xen/x86/mm.c | 2 +-<br>
&gt;=C2=A0 1 file changed, 1 insertion(+), 1 deletion(-)<br>
&gt; <br>
&gt; diff --git a/plat/xen/x86/mm.c b/plat/xen/x86/mm.c<br>
&gt; index 249b792..e006ab7 100644<br>
&gt; --- a/plat/xen/x86/mm.c<br>
&gt; +++ b/plat/xen/x86/mm.c<br>
&gt; @@ -743,7 +743,7 @@ void arch_mm_pre_suspend(void)<br>
&gt;=C2=A0 void arch_mm_post_suspend(int canceled)<br>
&gt;=C2=A0 {<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0if (!canceled)<br>
&gt; -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0arch_rebuild_p2m();<b=
r>
&gt; +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0_arch_rebuild_p2m();<=
br>
&gt;=C2=A0 }<br>
&gt;=C2=A0 #endif<br>
&gt;=C2=A0 #endif /* CONFIG_XEN_PV_BUILD_P2M */<br>
&gt; <br>
</blockquote></div>

--000000000000ae3fda05a3b93afa--


From minios-devel-bounces@lists.xenproject.org Mon Apr 20 14:35:28 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 20 Apr 2020 14:35: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 1jQXWB-0007H9-6s; Mon, 20 Apr 2020 14:35:27 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=PeXr=6E=cs.pub.ro=costin.lupu@srs-us1.protection.inumbo.net>)
 id 1jQXWA-0007H4-8e
 for minios-devel@lists.xen.org; Mon, 20 Apr 2020 14:35:26 +0000
X-Inumbo-ID: 2b28ec3c-8314-11ea-b58d-bc764e2007e4
Received: from mx.upb.ro (unknown [141.85.13.5])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 2b28ec3c-8314-11ea-b58d-bc764e2007e4;
 Mon, 20 Apr 2020 14:35:24 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id 18403B5621A5;
 Mon, 20 Apr 2020 17:35:23 +0300 (EEST)
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10032)
 with ESMTP id N-EZslQvkibE; Mon, 20 Apr 2020 17:35:19 +0300 (EEST)
Received: from localhost (localhost [127.0.0.1])
 by mx.upb.ro (Postfix) with ESMTP id CDFE5B5621B5;
 Mon, 20 Apr 2020 17:35:19 +0300 (EEST)
X-Virus-Scanned: amavisd-new at upb.ro
Received: from mx.upb.ro ([127.0.0.1])
 by localhost (mx.upb.ro [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id G-f9HwKotRnz; Mon, 20 Apr 2020 17:35:19 +0300 (EEST)
Received: from [192.168.1.35] (unknown [86.121.66.46])
 by mx.upb.ro (Postfix) with ESMTPSA id 9F3C6B5621A0;
 Mon, 20 Apr 2020 17:35:19 +0300 (EEST)
Subject: Re: [UNIKRAFT PATCH] mm.c: Rename function call to _arch_rebuild_p2m
To: Radu Nicolau <radunicolau102@gmail.com>
References: <1587288479-15004-1-git-send-email-radunicolau102@gmail.com>
 <1587288479-15004-3-git-send-email-radunicolau102@gmail.com>
 <e4f0557d-2251-8843-100f-3fb9185de9f0@cs.pub.ro>
 <CAPGq5zaD6gUxNrb=DxitdYTL0cUeiTyimwpr=zOe-J0239sA+w@mail.gmail.com>
From: Costin Lupu <costin.lupu@cs.pub.ro>
Message-ID: <9bfd00a8-c491-77d5-6b61-da40157ecd09@cs.pub.ro>
Date: Mon, 20 Apr 2020 17:35:19 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101
 Thunderbird/68.7.0
MIME-Version: 1.0
In-Reply-To: <CAPGq5zaD6gUxNrb=DxitdYTL0cUeiTyimwpr=zOe-J0239sA+w@mail.gmail.com>
Content-Type: text/plain; charset=utf-8
Content-Language: en-US
Content-Transfer-Encoding: 7bit
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

On 4/20/20 4:53 PM, Radu Nicolau wrote:
> Hello Costin,
> 
> The function definition is already named _arch_rebuild_p2m so this patch
> only renames the use to match the definition.
> The reason it is named differently is an oversight by me when I
> introduced the function.

I see. Well, I'll change the commit subject a bit in order to reflect
this - that it is actually a fix.

Reviewed-by: Costin Lupu <costin.lupu@cs.pub.ro>


From minios-devel-bounces@lists.xenproject.org Tue Apr 21 15:37:13 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 21 Apr 2020 15:37: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 1jQuxS-0001Ng-Tv; Tue, 21 Apr 2020 15:37: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=vLTo=6F=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1jQuxR-0001Nb-CI
 for minios-devel@lists.xen.org; Tue, 21 Apr 2020 15:37:09 +0000
X-Inumbo-ID: f451f33e-83e5-11ea-915c-12813bfff9fa
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id f451f33e-83e5-11ea-915c-12813bfff9fa;
 Tue, 21 Apr 2020 15:37:06 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 10FFBF2024;
 Tue, 21 Apr 2020 17:37:05 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (atlas-b.office.hd)
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 jAwCxRIacsXg; Tue, 21 Apr 2020 17:37:04 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from puck.office.hd (puck.office.hd [192.168.24.91])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id CDF30F200A
 for <minios-devel@lists.xen.org>; Tue, 21 Apr 2020 17:37:02 +0200 (CEST)
Received: from localhost (192.168.24.96) by puck.office.hd (192.168.24.91)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Tue, 21 Apr
 2020 17:37:02 +0200
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: <minios-devel@lists.xen.org>
Subject: [UNIKRAFT PATCH v2 0/3] lib/syscall_shim: Enhancements
Date: Tue, 21 Apr 2020 17:36:53 +0200
Message-ID: <20200421153656.5746-1-simon.kuenzer@neclab.eu>
X-Mailer: git-send-email 2.20.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [192.168.24.96]
X-ClientProxiedBy: titania.office.hd (192.168.24.89) To puck.office.hd
 (192.168.24.91)
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

This patch series contains a couple of enhancments to lib/syscall_shim
API that are useful for porting applications to Unikraft.

Changes v2:
 - Avoid unused parameter warning of `arg` in `uk_vsyscall()` and
   `uk_vsyscall_r()`. The warning appears when no system calls are
   registered to the system call shim layer.

Simon Kuenzer (3):
  lib/syscall_shim: Provide `uk_syscall_r_fn()`
  lib/syscall_shim: handler: Take only required number of arguments
  lib/syscall_shim: Provide `uk_syscall6()`, `uk_syscall6_r()`

 lib/syscall_shim/Makefile.uk                  | 20 ++++++++
 lib/syscall_shim/{ => arch}/regmap_linuxabi.h |  0
 lib/syscall_shim/gen_uk_syscall.awk           | 16 ++-----
 lib/syscall_shim/gen_uk_syscall6.awk          | 39 ++++++++++++++++
 lib/syscall_shim/gen_uk_syscall6_r.awk        | 39 ++++++++++++++++
 lib/syscall_shim/gen_uk_syscall_r.awk         | 16 ++-----
 lib/syscall_shim/gen_uk_syscall_r_fn.awk      | 24 ++++++++++
 lib/syscall_shim/include/uk/syscall.h         | 24 ++++++++--
 lib/syscall_shim/uk_syscall.c.in_end          | 28 +++--------
 lib/syscall_shim/uk_syscall6_r.c.in_end       | 18 ++++++++
 lib/syscall_shim/uk_syscall_r.c.in_end        | 46 +++----------------
 11 files changed, 182 insertions(+), 88 deletions(-)
 rename lib/syscall_shim/{ => arch}/regmap_linuxabi.h (100%)
 create mode 100644 lib/syscall_shim/gen_uk_syscall6.awk
 create mode 100644 lib/syscall_shim/gen_uk_syscall6_r.awk
 create mode 100644 lib/syscall_shim/gen_uk_syscall_r_fn.awk
 create mode 100644 lib/syscall_shim/uk_syscall6_r.c.in_end

-- 
2.20.1



From minios-devel-bounces@lists.xenproject.org Tue Apr 21 15:37:16 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 21 Apr 2020 15:37: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 1jQuxY-0001O2-0D; Tue, 21 Apr 2020 15:37: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=vLTo=6F=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1jQuxW-0001Nw-4J
 for minios-devel@lists.xen.org; Tue, 21 Apr 2020 15:37:14 +0000
X-Inumbo-ID: f53a5b2e-83e5-11ea-915c-12813bfff9fa
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id f53a5b2e-83e5-11ea-915c-12813bfff9fa;
 Tue, 21 Apr 2020 15:37:07 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 096DEF2025;
 Tue, 21 Apr 2020 17:37:07 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (atlas-b.office.hd)
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 of6oAaIBlbfL; Tue, 21 Apr 2020 17:37:06 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from puck.office.hd (puck.office.hd [192.168.24.91])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id D5FF2F200A
 for <minios-devel@lists.xen.org>; Tue, 21 Apr 2020 17:37:04 +0200 (CEST)
Received: from localhost (192.168.24.96) by puck.office.hd (192.168.24.91)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Tue, 21 Apr
 2020 17:37:04 +0200
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: <minios-devel@lists.xen.org>
Subject: [UNIKRAFT PATCH v2 1/3] lib/syscall_shim: Provide `uk_syscall_r_fn()`
Date: Tue, 21 Apr 2020 17:36:54 +0200
Message-ID: <20200421153656.5746-2-simon.kuenzer@neclab.eu>
X-Mailer: git-send-email 2.20.1
In-Reply-To: <20200421153656.5746-1-simon.kuenzer@neclab.eu>
References: <20200421153656.5746-1-simon.kuenzer@neclab.eu>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [192.168.24.96]
X-ClientProxiedBy: oberon.office.hd (192.168.24.90) To puck.office.hd
 (192.168.24.91)
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

`uk_syscall_r_fn()` returns a the raw system call handler as function
pointer for a given system call.

Signed-off-by: Simon Kuenzer <simon.kuenzer@neclab.eu>
---
 lib/syscall_shim/Makefile.uk             |  7 +++++++
 lib/syscall_shim/gen_uk_syscall_r_fn.awk | 24 ++++++++++++++++++++++++
 lib/syscall_shim/include/uk/syscall.h    | 12 ++++++++++++
 3 files changed, 43 insertions(+)
 create mode 100644 lib/syscall_shim/gen_uk_syscall_r_fn.awk

diff --git a/lib/syscall_shim/Makefile.uk b/lib/syscall_shim/Makefile.uk
index d3bfe4f8..ad4c8188 100644
--- a/lib/syscall_shim/Makefile.uk
+++ b/lib/syscall_shim/Makefile.uk
@@ -10,6 +10,7 @@ LIBSYSCALL_SHIM_PHONY_SRC_NEW := $(addsuffix .new, $(LIBSYSCALL_SHIM_PHONY_SRC))
 LIBSYSCALL_SHIM_GEN_SRC := $(LIBSYSCALL_SHIM_INCLUDES_PATH)/provided_syscalls.h
 LIBSYSCALL_SHIM_GEN_SRC += $(LIBSYSCALL_SHIM_BUILD)/uk_syscall.c
 LIBSYSCALL_SHIM_GEN_SRC += $(LIBSYSCALL_SHIM_BUILD)/uk_syscall_r.c
+LIBSYSCALL_SHIM_GEN_SRC += $(LIBSYSCALL_SHIM_BUILD)/uk_syscall_r_fn.c
 LIBSYSCALL_SHIM_GEN_SRC += $(LIBSYSCALL_SHIM_BUILD)/uk_syscall_name.c
 LIBSYSCALL_SHIM_GEN_SRC += $(LIBSYSCALL_SHIM_BUILD)/uk_syscall_name_p.c
 LIBSYSCALL_SHIM_GEN_SRC += $(LIBSYSCALL_SHIM_BUILD)/libc_stubs.c
@@ -57,6 +58,10 @@ $(LIBSYSCALL_SHIM_BUILD)/uk_syscall_r.c: $(LIBSYSCALL_SHIM_BUILD)/provided_sysca
 		$(AWK) -F '-' -f $(LIBSYSCALL_SHIM_BASE)/gen_uk_syscall_r.awk $< > $@ && \
 		cat $(LIBSYSCALL_SHIM_BASE)/uk_syscall_r.c.in_end >> $@)
 
+$(LIBSYSCALL_SHIM_BUILD)/uk_syscall_r_fn.c: $(LIBSYSCALL_SHIM_BUILD)/provided_syscalls.h.in $(LIBSYSCALL_SHIM_BASE)/gen_uk_syscall_r_fn.awk
+	$(call build_cmd,GEN,libsyscall_shim,$(notdir $@), \
+		$(AWK) -F '-' -f $(LIBSYSCALL_SHIM_BASE)/gen_uk_syscall_r_fn.awk $< > $@)
+
 $(LIBSYSCALL_SHIM_BUILD)/uk_syscall_name.c: $(LIBSYSCALL_SHIM_BASE)/gen_uk_syscall_name.awk $(LIBSYSCALL_SHIM_TEMPL)
 	$(call build_cmd,GEN,libsyscall_shim,$(notdir $@), \
 		$(AWK) -f $(LIBSYSCALL_SHIM_BASE)/gen_uk_syscall_name.awk \
@@ -89,6 +94,8 @@ LIBSYSCALL_SHIM_CINCLUDES += -I$(LIBSYSCALL_SHIM_BASE)
 
 LIBSYSCALL_SHIM_SRCS-y += $(LIBSYSCALL_SHIM_BUILD)/uk_syscall.c
 LIBSYSCALL_SHIM_SRCS-y += $(LIBSYSCALL_SHIM_BUILD)/uk_syscall_r.c
+LIBSYSCALL_SHIM_SRCS-y += $(LIBSYSCALL_SHIM_BUILD)/uk_syscall_r_fn.c
+LIBSYSCALL_SHIM_UK_SYSCALL_R_FN_FLAGS+=-Wno-cast-function-type
 LIBSYSCALL_SHIM_SRCS-y += $(LIBSYSCALL_SHIM_BUILD)/uk_syscall_name.c
 LIBSYSCALL_SHIM_SRCS-y += $(LIBSYSCALL_SHIM_BUILD)/uk_syscall_name_p.c
 LIBSYSCALL_SHIM_SRCS-$(CONFIG_LIBSYSCALL_SHIM_LIBCSTUBS) += $(LIBSYSCALL_SHIM_BUILD)/libc_stubs.c
diff --git a/lib/syscall_shim/gen_uk_syscall_r_fn.awk b/lib/syscall_shim/gen_uk_syscall_r_fn.awk
new file mode 100644
index 00000000..767b902d
--- /dev/null
+++ b/lib/syscall_shim/gen_uk_syscall_r_fn.awk
@@ -0,0 +1,24 @@
+BEGIN {
+	print "/* Auto generated file. DO NOT EDIT */\n"
+
+	print "#include <uk/syscall.h>"
+	print "#include <uk/print.h>"
+	print "#include <stdlib.h>\n"
+
+	print "long (*uk_syscall_r_fn(long nr))(void)\n{"
+	print "\tswitch (nr) {"
+}
+
+/[a-zA-Z0-9]+-[0-9]+/{
+	name = $1
+	sys_name = "SYS_" name
+	uk_syscall_r = "uk_syscall_r_" name
+	printf "\tcase %s:\n", sys_name;
+	printf "\t\treturn (long (*)(void)) %s;\n", uk_syscall_r;
+}
+
+END {
+	print "\tdefault:"
+	print "\t\treturn NULL;"
+	print "\t}\n}"
+}
diff --git a/lib/syscall_shim/include/uk/syscall.h b/lib/syscall_shim/include/uk/syscall.h
index dc7bc7ef..078129e5 100644
--- a/lib/syscall_shim/include/uk/syscall.h
+++ b/lib/syscall_shim/include/uk/syscall.h
@@ -337,6 +337,18 @@ const char *uk_syscall_name(long nr);
  */
 const char *uk_syscall_name_p(long nr);
 
+/**
+ * Returns the according raw system call handler as function pointer for the
+ * given system call number. If the system call handler is not available,
+ * NULL is returned.
+ * @param nr
+ *  System call number of current architecture
+ * @return
+ *  - Function pointer to raw system call handler
+ *  - (NULL): if system call handler is not provided
+ */
+long (*uk_syscall_r_fn(long nr))(void);
+
 #endif /* CONFIG_LIBSYSCALL_SHIM */
 
 #endif /* __UK_SYSCALL_H__ */
-- 
2.20.1



From minios-devel-bounces@lists.xenproject.org Tue Apr 21 15:37:21 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 21 Apr 2020 15:37: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 1jQuxd-0001On-37; Tue, 21 Apr 2020 15:37: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=vLTo=6F=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1jQuxb-0001OX-4y
 for minios-devel@lists.xen.org; Tue, 21 Apr 2020 15:37:19 +0000
X-Inumbo-ID: f66e27dc-83e5-11ea-915c-12813bfff9fa
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id f66e27dc-83e5-11ea-915c-12813bfff9fa;
 Tue, 21 Apr 2020 15:37:10 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id 1B7D7F2024;
 Tue, 21 Apr 2020 17:37:09 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (atlas-b.office.hd)
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 jZ2UsSVRY0t5; Tue, 21 Apr 2020 17:37:08 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from puck.office.hd (puck.office.hd [192.168.24.91])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id E1564F200A
 for <minios-devel@lists.xen.org>; Tue, 21 Apr 2020 17:37:06 +0200 (CEST)
Received: from localhost (192.168.24.96) by puck.office.hd (192.168.24.91)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Tue, 21 Apr
 2020 17:37:05 +0200
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: <minios-devel@lists.xen.org>
Subject: [UNIKRAFT PATCH v2 2/3] lib/syscall_shim: handler: Take only required
 number of arguments
Date: Tue, 21 Apr 2020 17:36:55 +0200
Message-ID: <20200421153656.5746-3-simon.kuenzer@neclab.eu>
X-Mailer: git-send-email 2.20.1
In-Reply-To: <20200421153656.5746-1-simon.kuenzer@neclab.eu>
References: <20200421153656.5746-1-simon.kuenzer@neclab.eu>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [192.168.24.96]
X-ClientProxiedBy: puck.office.hd (192.168.24.91) To puck.office.hd
 (192.168.24.91)
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Improves the `uk_syscall()`,  `uk_syscall_r()`, `uk_vsyscall()`, and
`uk_vsyscall_r()` implementations in a way that only the number of
required arguments are taken from the stack.

Signed-off-by: Simon Kuenzer <simon.kuenzer@neclab.eu>
---
 lib/syscall_shim/gen_uk_syscall.awk    | 16 ++++--------
 lib/syscall_shim/gen_uk_syscall_r.awk  | 16 ++++--------
 lib/syscall_shim/include/uk/syscall.h  |  8 +++---
 lib/syscall_shim/uk_syscall.c.in_end   | 28 +++++----------------
 lib/syscall_shim/uk_syscall_r.c.in_end | 34 +++++++-------------------
 5 files changed, 29 insertions(+), 73 deletions(-)

diff --git a/lib/syscall_shim/gen_uk_syscall.awk b/lib/syscall_shim/gen_uk_syscall.awk
index 2f2e1fa9..70c4df47 100644
--- a/lib/syscall_shim/gen_uk_syscall.awk
+++ b/lib/syscall_shim/gen_uk_syscall.awk
@@ -5,15 +5,9 @@ BEGIN {
 	print "#include <uk/syscall.h>"
 	print "#include <uk/print.h>\n"
 
-	printf "static inline long __uk_syscall(long nr, "
-	for (i = 1; i < max_args; i++)
-		printf "long arg%d, ",i
-	printf "long arg%d)\n{\n", max_args
-
-	for (i = 1; i <= max_args; i++)
-		printf "\t(void) arg%d;\n", i
-
-	print "\n\tswitch (nr) {"
+	print "long uk_vsyscall(long nr, va_list arg)\n{"
+	print "\t(void) arg;\n"
+	print "\tswitch (nr) {"
 }
 
 
@@ -24,9 +18,9 @@ BEGIN {
 	printf "\tcase %s:\n", sys_name;
 	printf "\t\treturn uk_syscall_e_%s(", name;
 	for (i = 1; i < args_nr; i++)
-		printf("arg%d, ", i)
+		printf("va_arg(arg, long), ")
 	if (args_nr > 0)
-		printf("arg%d", args_nr)
+		printf("va_arg(arg, long)")
 	printf(");\n")
 }
 
diff --git a/lib/syscall_shim/gen_uk_syscall_r.awk b/lib/syscall_shim/gen_uk_syscall_r.awk
index c591fc47..74d13241 100644
--- a/lib/syscall_shim/gen_uk_syscall_r.awk
+++ b/lib/syscall_shim/gen_uk_syscall_r.awk
@@ -5,15 +5,9 @@ BEGIN {
 	print "#include <uk/syscall.h>"
 	print "#include <uk/print.h>\n"
 
-	printf "static inline long __uk_syscall_r(long nr, "
-	for (i = 1; i < max_args; i++)
-		printf "long arg%d, ",i
-	printf "long arg%d)\n{\n", max_args
-
-	for (i = 1; i <= max_args; i++)
-		printf "\t(void) arg%d;\n", i
-
-	print "\n\tswitch (nr) {"
+	print "long uk_vsyscall_r(long nr, va_list arg)\n{"
+	print "\t(void) arg;\n"
+	print "\tswitch (nr) {"
 }
 
 
@@ -25,9 +19,9 @@ BEGIN {
 	printf "\tcase %s:\n", sys_name;
 	printf "\t\treturn %s(", uk_syscall_r;
 	for (i = 1; i < args_nr; i++)
-		printf("arg%d, ", i)
+		printf("va_arg(arg, long), ")
 	if (args_nr > 0)
-		printf("arg%d", args_nr)
+		printf("va_arg(arg, long)")
 	printf(");\n")
 }
 
diff --git a/lib/syscall_shim/include/uk/syscall.h b/lib/syscall_shim/include/uk/syscall.h
index 078129e5..3d2e4e89 100644
--- a/lib/syscall_shim/include/uk/syscall.h
+++ b/lib/syscall_shim/include/uk/syscall.h
@@ -288,8 +288,8 @@ typedef long uk_syscall_arg_t;
 #include <uk/bits/syscall_stubs.h>
 
 /* System call, returns -1 and sets errno on errors */
-long uk_syscall(long n, ...);
-long uk_vsyscall(long n, va_list arg);
+long uk_syscall(long nr, ...);
+long uk_vsyscall(long nr, va_list arg);
 
 /*
  * Use this variant instead of `uk_syscall()` whenever the system call number
@@ -300,8 +300,8 @@ long uk_vsyscall(long n, va_list arg);
 	UK_CONCAT(__uk_syscall, __UK_SYSCALL_NARGS(__VA_ARGS__))(__VA_ARGS__)
 
 /* Raw system call, returns negative codes on errors */
-long uk_syscall_r(long n, ...);
-long uk_vsyscall_r(long n, va_list arg);
+long uk_syscall_r(long nr, ...);
+long uk_vsyscall_r(long nr, va_list arg);
 
 /*
  * Use this variant instead of `uk_syscall_r()` whenever the system call number
diff --git a/lib/syscall_shim/uk_syscall.c.in_end b/lib/syscall_shim/uk_syscall.c.in_end
index 8a5f8e0b..73e74dd0 100644
--- a/lib/syscall_shim/uk_syscall.c.in_end
+++ b/lib/syscall_shim/uk_syscall.c.in_end
@@ -1,27 +1,11 @@
 
-long uk_syscall(long n, ...)
+long uk_syscall(long nr, ...)
 {
+	long ret;
 	va_list ap;
-	long a,b,c,d,e,f;
-	va_start(ap, n);
-	a=va_arg(ap, long);
-	b=va_arg(ap, long);
-	c=va_arg(ap, long);
-	d=va_arg(ap, long);
-	e=va_arg(ap, long);
-	f=va_arg(ap, long);
-	va_end(ap);
-	return __uk_syscall(n,a,b,c,d,e,f);
-}
 
-long uk_vsyscall(long n, va_list arg)
-{
-	long a,b,c,d,e,f;
-	a=va_arg(arg, long);
-	b=va_arg(arg, long);
-	c=va_arg(arg, long);
-	d=va_arg(arg, long);
-	e=va_arg(arg, long);
-	f=va_arg(arg, long);
-	return __uk_syscall(n,a,b,c,d,e,f);
+	va_start(ap, nr);
+	ret = uk_vsyscall(nr, ap);
+	va_end(ap);
+	return ret;
 }
diff --git a/lib/syscall_shim/uk_syscall_r.c.in_end b/lib/syscall_shim/uk_syscall_r.c.in_end
index ae74716e..73ff755c 100644
--- a/lib/syscall_shim/uk_syscall_r.c.in_end
+++ b/lib/syscall_shim/uk_syscall_r.c.in_end
@@ -1,29 +1,13 @@
 
-long uk_syscall_r(long n, ...)
+long uk_syscall_r(long nr, ...)
 {
+	long ret;
 	va_list ap;
-	long a,b,c,d,e,f;
-	va_start(ap, n);
-	a=va_arg(ap, long);
-	b=va_arg(ap, long);
-	c=va_arg(ap, long);
-	d=va_arg(ap, long);
-	e=va_arg(ap, long);
-	f=va_arg(ap, long);
-	va_end(ap);
-	return __uk_syscall_r(n,a,b,c,d,e,f);
-}
 
-long uk_vsyscall_r(long n, va_list arg)
-{
-	long a,b,c,d,e,f;
-	a=va_arg(arg, long);
-	b=va_arg(arg, long);
-	c=va_arg(arg, long);
-	d=va_arg(arg, long);
-	e=va_arg(arg, long);
-	f=va_arg(arg, long);
-	return __uk_syscall_r(n,a,b,c,d,e,f);
+	va_start(ap, nr);
+	ret = uk_vsyscall_r(nr, ap);
+	va_end(ap);
+	return ret;
 }
 
 #if CONFIG_LIBSYSCALL_SHIM_HANDLER
@@ -38,8 +22,8 @@ void ukplat_syscall_handler(struct __regs *r)
 	uk_pr_debug("Binary system call request \"%s\" (%lu) at ip:%p (arg0=0x%lx, arg1=0x%lx, ...)\n",
 		    uk_syscall_name(r->rsyscall), r->rsyscall,
 		    (void *) r->rip, r->rarg0, r->rarg1);
-	r->rret0 = __uk_syscall_r(r->rsyscall,
-				  r->rarg0, r->rarg1, r->rarg2,
-				  r->rarg3, r->rarg4, r->rarg5);
+	r->rret0 = uk_syscall_r(r->rsyscall,
+				r->rarg0, r->rarg1, r->rarg2,
+				r->rarg3, r->rarg4, r->rarg5);
 }
 #endif /* CONFIG_LIBSYSCALL_SHIM_HANDLER */
-- 
2.20.1



From minios-devel-bounces@lists.xenproject.org Tue Apr 21 15:49:55 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 21 Apr 2020 15:49: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 1jQv9m-0002Ou-Bh; Tue, 21 Apr 2020 15:49:54 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=vLTo=6F=neclab.eu=simon.kuenzer@srs-us1.protection.inumbo.net>)
 id 1jQv9l-0002Op-9R
 for minios-devel@lists.xen.org; Tue, 21 Apr 2020 15:49:53 +0000
X-Inumbo-ID: bbcaf540-83e7-11ea-b4f4-bc764e2007e4
Received: from mailer2.neclab.eu (unknown [195.37.70.41])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id bbcaf540-83e7-11ea-b4f4-bc764e2007e4;
 Tue, 21 Apr 2020 15:49:51 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by mailer2.neclab.eu (Postfix) with ESMTP id A31D7F2024;
 Tue, 21 Apr 2020 17:49:49 +0200 (CEST)
X-Virus-Scanned: Amavisd on Debian GNU/Linux (atlas-b.office.hd)
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 FoGRs-JS0S8y; Tue, 21 Apr 2020 17:49:49 +0200 (CEST)
X-ENC: Last-Hop-TLS-encrypted
X-ENC: Last-Hop-TLS-encrypted
Received: from puck.office.hd (puck.office.hd [192.168.24.91])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by mailer2.neclab.eu (Postfix) with ESMTPS id 70ABCF200A
 for <minios-devel@lists.xen.org>; Tue, 21 Apr 2020 17:49:47 +0200 (CEST)
Received: from localhost (192.168.24.96) by puck.office.hd (192.168.24.91)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Tue, 21 Apr
 2020 17:49:46 +0200
From: Simon Kuenzer <simon.kuenzer@neclab.eu>
To: <minios-devel@lists.xen.org>
Subject: [UNIKRAFT PATCH v2 3/3] lib/syscall_shim: Provide `uk_syscall6()`,
 `uk_syscall6_r()`
Date: Tue, 21 Apr 2020 17:49:43 +0200
Message-ID: <20200421154943.5843-1-simon.kuenzer@neclab.eu>
X-Mailer: git-send-email 2.20.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [192.168.24.96]
X-ClientProxiedBy: titania.office.hd (192.168.24.89) To puck.office.hd
 (192.168.24.91)
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

`uk_syscall6()` and `uk_syscall6_r()` are a variant of `uk_syscall()` and
`uk_syscall_r()` that are not variadic.

Signed-off-by: Simon Kuenzer <simon.kuenzer@neclab.eu>
---
 lib/syscall_shim/Makefile.uk                  | 13 +++++++
 lib/syscall_shim/{ => arch}/regmap_linuxabi.h |  0
 lib/syscall_shim/gen_uk_syscall6.awk          | 39 +++++++++++++++++++
 lib/syscall_shim/gen_uk_syscall6_r.awk        | 39 +++++++++++++++++++
 lib/syscall_shim/include/uk/syscall.h         |  4 ++
 lib/syscall_shim/uk_syscall6_r.c.in_end       | 18 +++++++++
 lib/syscall_shim/uk_syscall_r.c.in_end        | 18 ---------
 7 files changed, 113 insertions(+), 18 deletions(-)
 rename lib/syscall_shim/{ => arch}/regmap_linuxabi.h (100%)
 create mode 100644 lib/syscall_shim/gen_uk_syscall6.awk
 create mode 100644 lib/syscall_shim/gen_uk_syscall6_r.awk
 create mode 100644 lib/syscall_shim/uk_syscall6_r.c.in_end

diff --git a/lib/syscall_shim/Makefile.uk b/lib/syscall_shim/Makefile.uk
index ad4c8188..b758f830 100644
--- a/lib/syscall_shim/Makefile.uk
+++ b/lib/syscall_shim/Makefile.uk
@@ -9,7 +9,9 @@ LIBSYSCALL_SHIM_PHONY_SRC_NEW := $(addsuffix .new, $(LIBSYSCALL_SHIM_PHONY_SRC))
 
 LIBSYSCALL_SHIM_GEN_SRC := $(LIBSYSCALL_SHIM_INCLUDES_PATH)/provided_syscalls.h
 LIBSYSCALL_SHIM_GEN_SRC += $(LIBSYSCALL_SHIM_BUILD)/uk_syscall.c
+LIBSYSCALL_SHIM_GEN_SRC += $(LIBSYSCALL_SHIM_BUILD)/uk_syscall6.c
 LIBSYSCALL_SHIM_GEN_SRC += $(LIBSYSCALL_SHIM_BUILD)/uk_syscall_r.c
+LIBSYSCALL_SHIM_GEN_SRC += $(LIBSYSCALL_SHIM_BUILD)/uk_syscall6_r.c
 LIBSYSCALL_SHIM_GEN_SRC += $(LIBSYSCALL_SHIM_BUILD)/uk_syscall_r_fn.c
 LIBSYSCALL_SHIM_GEN_SRC += $(LIBSYSCALL_SHIM_BUILD)/uk_syscall_name.c
 LIBSYSCALL_SHIM_GEN_SRC += $(LIBSYSCALL_SHIM_BUILD)/uk_syscall_name_p.c
@@ -48,6 +50,10 @@ $(LIBSYSCALL_SHIM_INCLUDES_PATH)/provided_syscalls.h: $(LIBSYSCALL_SHIM_BASE)/ge
 		$(AWK) -F '-' -f  $(LIBSYSCALL_SHIM_BASE)/gen_provided.awk \
 		$(LIBSYSCALL_SHIM_BUILD)/provided_syscalls.h.in > $@)
 
+$(LIBSYSCALL_SHIM_BUILD)/uk_syscall6.c: $(LIBSYSCALL_SHIM_BUILD)/provided_syscalls.h.in $(LIBSYSCALL_SHIM_BASE)/gen_uk_syscall6.awk
+	$(call build_cmd,GEN,libsyscall_shim,$(notdir $@), \
+		$(AWK) -F '-' -f $(LIBSYSCALL_SHIM_BASE)/gen_uk_syscall6.awk $< > $@)
+
 $(LIBSYSCALL_SHIM_BUILD)/uk_syscall.c: $(LIBSYSCALL_SHIM_BUILD)/provided_syscalls.h.in $(LIBSYSCALL_SHIM_BASE)/gen_uk_syscall.awk $(LIBSYSCALL_SHIM_BASE)/uk_syscall.c.in_end
 	$(call build_cmd,GEN,libsyscall_shim,$(notdir $@), \
 		$(AWK) -F '-' -f $(LIBSYSCALL_SHIM_BASE)/gen_uk_syscall.awk $< > $@ && \
@@ -58,6 +64,11 @@ $(LIBSYSCALL_SHIM_BUILD)/uk_syscall_r.c: $(LIBSYSCALL_SHIM_BUILD)/provided_sysca
 		$(AWK) -F '-' -f $(LIBSYSCALL_SHIM_BASE)/gen_uk_syscall_r.awk $< > $@ && \
 		cat $(LIBSYSCALL_SHIM_BASE)/uk_syscall_r.c.in_end >> $@)
 
+$(LIBSYSCALL_SHIM_BUILD)/uk_syscall6_r.c: $(LIBSYSCALL_SHIM_BUILD)/provided_syscalls.h.in $(LIBSYSCALL_SHIM_BASE)/gen_uk_syscall6_r.awk $(LIBSYSCALL_SHIM_BASE)/uk_syscall6_r.c.in_end
+	$(call build_cmd,GEN,libsyscall_shim,$(notdir $@), \
+		$(AWK) -F '-' -f $(LIBSYSCALL_SHIM_BASE)/gen_uk_syscall6_r.awk $< > $@ && \
+		cat $(LIBSYSCALL_SHIM_BASE)/uk_syscall6_r.c.in_end >> $@)
+
 $(LIBSYSCALL_SHIM_BUILD)/uk_syscall_r_fn.c: $(LIBSYSCALL_SHIM_BUILD)/provided_syscalls.h.in $(LIBSYSCALL_SHIM_BASE)/gen_uk_syscall_r_fn.awk
 	$(call build_cmd,GEN,libsyscall_shim,$(notdir $@), \
 		$(AWK) -F '-' -f $(LIBSYSCALL_SHIM_BASE)/gen_uk_syscall_r_fn.awk $< > $@)
@@ -93,7 +104,9 @@ CXXINCLUDES-y += -I$(LIBSYSCALL_SHIM_BASE)/include
 LIBSYSCALL_SHIM_CINCLUDES += -I$(LIBSYSCALL_SHIM_BASE)
 
 LIBSYSCALL_SHIM_SRCS-y += $(LIBSYSCALL_SHIM_BUILD)/uk_syscall.c
+LIBSYSCALL_SHIM_SRCS-y += $(LIBSYSCALL_SHIM_BUILD)/uk_syscall6.c
 LIBSYSCALL_SHIM_SRCS-y += $(LIBSYSCALL_SHIM_BUILD)/uk_syscall_r.c
+LIBSYSCALL_SHIM_SRCS-y += $(LIBSYSCALL_SHIM_BUILD)/uk_syscall6_r.c
 LIBSYSCALL_SHIM_SRCS-y += $(LIBSYSCALL_SHIM_BUILD)/uk_syscall_r_fn.c
 LIBSYSCALL_SHIM_UK_SYSCALL_R_FN_FLAGS+=-Wno-cast-function-type
 LIBSYSCALL_SHIM_SRCS-y += $(LIBSYSCALL_SHIM_BUILD)/uk_syscall_name.c
diff --git a/lib/syscall_shim/regmap_linuxabi.h b/lib/syscall_shim/arch/regmap_linuxabi.h
similarity index 100%
rename from lib/syscall_shim/regmap_linuxabi.h
rename to lib/syscall_shim/arch/regmap_linuxabi.h
diff --git a/lib/syscall_shim/gen_uk_syscall6.awk b/lib/syscall_shim/gen_uk_syscall6.awk
new file mode 100644
index 00000000..d6eae04e
--- /dev/null
+++ b/lib/syscall_shim/gen_uk_syscall6.awk
@@ -0,0 +1,39 @@
+BEGIN {
+	max_args = 6
+	print "/* Auto generated file. DO NOT EDIT */\n\n"
+
+	print "#include <uk/syscall.h>"
+	print "#include <uk/print.h>\n"
+
+	printf "long uk_syscall6(long nr, "
+	for (i = 1; i < max_args; i++)
+		printf "long arg%d, ",i
+	printf "long arg%d)\n{\n", max_args
+
+	for (i = 1; i <= max_args; i++)
+		printf "\t(void) arg%d;\n", i
+
+	print "\n\tswitch (nr) {"
+}
+
+
+/[a-zA-Z0-9]+-[0-9]+/{
+	name = $1
+	sys_name = "SYS_" name
+	args_nr = $2 + 0
+	printf "\tcase %s:\n", sys_name;
+	printf "\t\treturn uk_syscall_e_%s(", name;
+	for (i = 1; i < args_nr; i++)
+		printf("arg%d, ", i)
+	if (args_nr > 0)
+		printf("arg%d", args_nr)
+	printf(");\n")
+}
+
+END {
+	printf "\tdefault:\n"
+	printf "\t\tuk_pr_debug(\"syscall \\\"%%s\\\" is not available\\n\", uk_syscall_name(nr));\n"
+	printf "\t\terrno = -ENOSYS;\n"
+	printf "\t\treturn -1;\n"
+	printf "\t}\n}\n"
+}
diff --git a/lib/syscall_shim/gen_uk_syscall6_r.awk b/lib/syscall_shim/gen_uk_syscall6_r.awk
new file mode 100644
index 00000000..d5f8c8ba
--- /dev/null
+++ b/lib/syscall_shim/gen_uk_syscall6_r.awk
@@ -0,0 +1,39 @@
+BEGIN {
+	max_args = 6
+	print "/* Auto generated file. DO NOT EDIT */\n\n"
+
+	print "#include <uk/syscall.h>"
+	print "#include <uk/print.h>\n"
+
+	printf "long uk_syscall6_r(long nr, "
+	for (i = 1; i < max_args; i++)
+		printf "long arg%d, ",i
+	printf "long arg%d)\n{\n", max_args
+
+	for (i = 1; i <= max_args; i++)
+		printf "\t(void) arg%d;\n", i
+
+	print "\n\tswitch (nr) {"
+}
+
+
+/[a-zA-Z0-9]+-[0-9]+/{
+	name = $1
+	sys_name = "SYS_" name
+	uk_syscall_r = "uk_syscall_r_" name
+	args_nr = $2 + 0
+	printf "\tcase %s:\n", sys_name;
+	printf "\t\treturn %s(", uk_syscall_r;
+	for (i = 1; i < args_nr; i++)
+		printf("arg%d, ", i)
+	if (args_nr > 0)
+		printf("arg%d", args_nr)
+	printf(");\n")
+}
+
+END {
+	printf "\tdefault:\n"
+	printf "\t\tuk_pr_debug(\"syscall \\\"%%s\\\" is not available\\n\", uk_syscall_name(nr));\n"
+	printf "\t\treturn -ENOSYS;\n"
+	printf "\t}\n}\n"
+}
diff --git a/lib/syscall_shim/include/uk/syscall.h b/lib/syscall_shim/include/uk/syscall.h
index 3d2e4e89..a3b79d41 100644
--- a/lib/syscall_shim/include/uk/syscall.h
+++ b/lib/syscall_shim/include/uk/syscall.h
@@ -290,6 +290,8 @@ typedef long uk_syscall_arg_t;
 /* System call, returns -1 and sets errno on errors */
 long uk_syscall(long nr, ...);
 long uk_vsyscall(long nr, va_list arg);
+long uk_syscall6(long nr, long arg1, long arg2, long arg3,
+		 long arg4, long arg5, long arg6);
 
 /*
  * Use this variant instead of `uk_syscall()` whenever the system call number
@@ -302,6 +304,8 @@ long uk_vsyscall(long nr, va_list arg);
 /* Raw system call, returns negative codes on errors */
 long uk_syscall_r(long nr, ...);
 long uk_vsyscall_r(long nr, va_list arg);
+long uk_syscall6_r(long nr, long arg1, long arg2, long arg3,
+		   long arg4, long arg5, long arg6);
 
 /*
  * Use this variant instead of `uk_syscall_r()` whenever the system call number
diff --git a/lib/syscall_shim/uk_syscall6_r.c.in_end b/lib/syscall_shim/uk_syscall6_r.c.in_end
new file mode 100644
index 00000000..daa75d95
--- /dev/null
+++ b/lib/syscall_shim/uk_syscall6_r.c.in_end
@@ -0,0 +1,18 @@
+
+#if CONFIG_LIBSYSCALL_SHIM_HANDLER
+#include <uk/plat/syscall.h>
+#include <uk/assert.h>
+#include <arch/regmap_linuxabi.h>
+
+void ukplat_syscall_handler(struct __regs *r)
+{
+	UK_ASSERT(r);
+
+	uk_pr_debug("Binary system call request \"%s\" (%lu) at ip:%p (arg0=0x%lx, arg1=0x%lx, ...)\n",
+		    uk_syscall_name(r->rsyscall), r->rsyscall,
+		    (void *) r->rip, r->rarg0, r->rarg1);
+	r->rret0 = uk_syscall6_r(r->rsyscall,
+				 r->rarg0, r->rarg1, r->rarg2,
+				 r->rarg3, r->rarg4, r->rarg5);
+}
+#endif /* CONFIG_LIBSYSCALL_SHIM_HANDLER */
diff --git a/lib/syscall_shim/uk_syscall_r.c.in_end b/lib/syscall_shim/uk_syscall_r.c.in_end
index 73ff755c..a09c473c 100644
--- a/lib/syscall_shim/uk_syscall_r.c.in_end
+++ b/lib/syscall_shim/uk_syscall_r.c.in_end
@@ -9,21 +9,3 @@ long uk_syscall_r(long nr, ...)
 	va_end(ap);
 	return ret;
 }
-
-#if CONFIG_LIBSYSCALL_SHIM_HANDLER
-#include <uk/plat/syscall.h>
-#include <uk/assert.h>
-#include <regmap_linuxabi.h>
-
-void ukplat_syscall_handler(struct __regs *r)
-{
-	UK_ASSERT(r);
-
-	uk_pr_debug("Binary system call request \"%s\" (%lu) at ip:%p (arg0=0x%lx, arg1=0x%lx, ...)\n",
-		    uk_syscall_name(r->rsyscall), r->rsyscall,
-		    (void *) r->rip, r->rarg0, r->rarg1);
-	r->rret0 = uk_syscall_r(r->rsyscall,
-				r->rarg0, r->rarg1, r->rarg2,
-				r->rarg3, r->rarg4, r->rarg5);
-}
-#endif /* CONFIG_LIBSYSCALL_SHIM_HANDLER */
-- 
2.20.1



From minios-devel-bounces@lists.xenproject.org Tue Apr 21 18:51:03 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 21 Apr 2020 18:51: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 1jQxz4-0005dM-2L; Tue, 21 Apr 2020 18:51:02 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=KY89=6F=gmail.com=murarugeorgec@srs-us1.protection.inumbo.net>)
 id 1jQxz2-0005dC-Fe
 for minios-devel@lists.xenproject.org; Tue, 21 Apr 2020 18:51:00 +0000
X-Inumbo-ID: 0a64460c-8401-11ea-b58d-bc764e2007e4
Received: from mail-wr1-x431.google.com (unknown [2a00:1450:4864:20::431])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 0a64460c-8401-11ea-b58d-bc764e2007e4;
 Tue, 21 Apr 2020 18:50:59 +0000 (UTC)
Received: by mail-wr1-x431.google.com with SMTP id k1so17823478wrx.4
 for <minios-devel@lists.xenproject.org>; Tue, 21 Apr 2020 11:50:59 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=from:to:cc:subject:date:message-id;
 bh=itPjkDsetPlPa8XtFNwtoi9uSrCWdS2+oWnZRnBOSII=;
 b=ewk7D1RjzJoM6GJdy2XZALZH7IXMVqz8K3TOKODRdnJbhjm26Qmr7PED5ibq9NB2bL
 hEEAeY9Vltol/UH7b4o53NMtfXmwdC2gcJVX/Un65yXSlJ6Reh77qDKD+suulFUS0HzA
 TOD0C4aB5F9qwD2xQlnx1wI4AojM0Dr8g6AauNXOWtWI0XMJ7VNNZvau1Cf851EircoC
 IHiEoplbI6/WAIukp50VHvfr21lyt5kcIYzbjaH+JePIcamXQk7n4P9Fn1N7CfF5kIz3
 /JRHWZdloPaeAB24EwfUcBhD7KTlxJ28z+l5ezXHorLHkTUMnT0grrK1hCCvqa7X03GL
 SJiA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:from:to:cc:subject:date:message-id;
 bh=itPjkDsetPlPa8XtFNwtoi9uSrCWdS2+oWnZRnBOSII=;
 b=tUB2jGWxxjOWYv60Q2D+7YOJyS/usKZruFnKteLW0bBWvu1FmwKJNfr9UKe2Kt/vVa
 TzWKCWlRbEtkhW9y2QIaN4CnDELLNRYXn2kwOIevk65FdDLmMRhbZelRC/vmWWnQMMrC
 2oDfYz1Oh5Rl2Fb2vfhGKQcwg077eykqYhg5RIq1j4pPlp/CV5o0L7snxrlAbEUKqaX2
 4Jn/D1H849VlVLxN4a+VhzXhvcCsWU6QG+CKBb62IEp6xBPMPgR9MfPDiV/POAs6ocDU
 /INFg/yvKe40BCldESkofU8C84WHuiS7eQeyXMe4+3HHXZ/pVTukI4HNfxLomO6optBA
 Hr2g==
X-Gm-Message-State: AGi0PuY78LRVuh2on0yC5nLIMw+GiDm1Xz/jtot94JDSZitrxqH4qrRv
 xHEzSGPMb66YSOipZ0P3jGKLWYlWdUE=
X-Google-Smtp-Source: APiQypLKnP2hc9Y/8JjrJuhn3kyHKm07Pf6BLXf0SV0BVQSnWIfrtwhbvxJxFZQWz4h/IzXfhLUOSQ==
X-Received: by 2002:a5d:498d:: with SMTP id r13mr26571520wrq.374.1587495058569; 
 Tue, 21 Apr 2020 11:50:58 -0700 (PDT)
Received: from localhost.localdomain ([2a02:a58:8506:aa00:9983:212f:e79d:88e8])
 by smtp.googlemail.com with ESMTPSA id b85sm4788077wmb.21.2020.04.21.11.50.57
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 21 Apr 2020 11:50:57 -0700 (PDT)
From: George Muraru <murarugeorgec@gmail.com>
To: minios-devel@lists.xenproject.org
Subject: [UNIKRAFT/LIBFFT2D PATCH v2 0/1]
Date: Tue, 21 Apr 2020 21:50:49 +0300
Message-Id: <20200421185050.10087-1-murarugeorgec@gmail.com>
X-Mailer: git-send-email 2.17.1
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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, George Muraru <murarugeorgec@gmail.com>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Changes since v1:
* Set Dimension 2 as default

George Muraru (1):
  Add dimension 2 default

 Config.uk | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

-- 
2.17.1



From minios-devel-bounces@lists.xenproject.org Tue Apr 21 18:51:07 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 21 Apr 2020 18:51: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 1jQxz9-0005eJ-4H; Tue, 21 Apr 2020 18:51:07 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=KY89=6F=gmail.com=murarugeorgec@srs-us1.protection.inumbo.net>)
 id 1jQxz7-0005dy-Ai
 for minios-devel@lists.xenproject.org; Tue, 21 Apr 2020 18:51:05 +0000
X-Inumbo-ID: 0c16789e-8401-11ea-b58d-bc764e2007e4
Received: from mail-wr1-x42b.google.com (unknown [2a00:1450:4864:20::42b])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 0c16789e-8401-11ea-b58d-bc764e2007e4;
 Tue, 21 Apr 2020 18:51:02 +0000 (UTC)
Received: by mail-wr1-x42b.google.com with SMTP id k1so17823731wrx.4
 for <minios-devel@lists.xenproject.org>; Tue, 21 Apr 2020 11:51:02 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=from:to:cc:subject:date:message-id:in-reply-to:references;
 bh=JlSmRy3XkTuy51meyI0sykqDe99Iho6uHzqkQSigjFs=;
 b=l8IXigXHI+HzoyVPp5VGPAqfXh3Ks2AOobyAIGI6XIRokUXCiCTjegoJue1cCTODLo
 FWBxdhMYKwBLecxyhSgjfReH+VTXOygp0td3okq165WTTZ1YEs/PJGdluQc6yHcO37zh
 EE0JI/SSB5sB/Pnb2/m56e4PKerhwNyRXO6YJg20hQOd/QyFIOM23w6vZtvf8fkU1xDe
 oj4hJ+AszED0+OHO0EMz1RXo3KyGJoMJbYSQBczL8G+n4IZowUcPIb6oqfp/z6PVCYxq
 CAkf3yT6RPdxio0EZswhPdltC6DOBYmOyw/5omD2yxaaj3SgnbC6Qrj8n7YINsabi3PO
 iTiw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to
 :references;
 bh=JlSmRy3XkTuy51meyI0sykqDe99Iho6uHzqkQSigjFs=;
 b=Ey1hzksi4fiMAN79xgao5FxMEskBg7lNQiwP4JoDhDx/LCxMKs6W17jpFlAycWf54i
 C9gM8bw/+Z8FkHdt8kq+ZXmC5TA9egZDppDKrH54YQ4kjuLjEIhYspw6g8uiut12UJRz
 KrNtpDKKeEhjjzcq94Jd9rHeBdS0rh7e7KO10ziv96qRtYMRnwPTUG9wfB5/9ouC4q9b
 tLqCDzl8Oq55tZp0qWmj8mI4CQ7Tjqwj204mCtt+24oHVQGDLKklVefKR72JBcqMd0kg
 0anmtpmYJfu5T1F0iTjzRQ4m6183Q8NCM6erKC6a4LPx6OMA+kJA6sdNaIQOBybtYJfl
 VMYA==
X-Gm-Message-State: AGi0Pua9URzJeUp5bamsNeIbljjeN+0q6igJD8wYtm0H6FMRxm+2jtwn
 9fyCJrVA9YWWFfvyBXJteTaZ8ze3pXQ=
X-Google-Smtp-Source: APiQypIIyHUtbE4jBOFpnmysWeP9ECw5+Ve/h8jgbzmYwA/lnZ1RXNjtnFdID7EtQDPhOu3LQy/8Dg==
X-Received: by 2002:a5d:4443:: with SMTP id x3mr24801459wrr.162.1587495061506; 
 Tue, 21 Apr 2020 11:51:01 -0700 (PDT)
Received: from localhost.localdomain ([2a02:a58:8506:aa00:9983:212f:e79d:88e8])
 by smtp.googlemail.com with ESMTPSA id b85sm4788077wmb.21.2020.04.21.11.51.00
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 21 Apr 2020 11:51:01 -0700 (PDT)
From: George Muraru <murarugeorgec@gmail.com>
To: minios-devel@lists.xenproject.org
Subject: [UNIKRAFT/LIBFFT2D PATCH v2 1/1] Add dimension 2 default
Date: Tue, 21 Apr 2020 21:50:50 +0300
Message-Id: <20200421185050.10087-2-murarugeorgec@gmail.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20200421185050.10087-1-murarugeorgec@gmail.com>
References: <20200421185050.10087-1-murarugeorgec@gmail.com>
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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, George Muraru <murarugeorgec@gmail.com>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Signed-off-by: George Muraru <murarugeorgec@gmail.com>
---
 Config.uk | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Config.uk b/Config.uk
index 73f6b2e..57dedc7 100644
--- a/Config.uk
+++ b/Config.uk
@@ -11,7 +11,7 @@ menuconfig LIBFFT2D
 if LIBFFT2D
     choice DIMENSION
         prompt "DIMENSION"
-
+        default LIBFFT2D_2D
         config LIBFFT2D_1D
             bool "1"
         config LIBFFT2D_2D
-- 
2.17.1



From minios-devel-bounces@lists.xenproject.org Wed Apr 22 08:44:46 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 22 Apr 2020 08:44:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1jRAzu-0001P8-K5; Wed, 22 Apr 2020 08:44:46 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=GA2G=6G=gmail.com=murarugeorgec@srs-us1.protection.inumbo.net>)
 id 1jRAzu-0001P3-89
 for minios-devel@lists.xenproject.org; Wed, 22 Apr 2020 08:44:46 +0000
X-Inumbo-ID: 8297dec6-8475-11ea-b58d-bc764e2007e4
Received: from mail-wr1-x441.google.com (unknown [2a00:1450:4864:20::441])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 8297dec6-8475-11ea-b58d-bc764e2007e4;
 Wed, 22 Apr 2020 08:44:43 +0000 (UTC)
Received: by mail-wr1-x441.google.com with SMTP id f13so1338396wrm.13
 for <minios-devel@lists.xenproject.org>; Wed, 22 Apr 2020 01:44:42 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=from:to:cc:subject:date:message-id:in-reply-to:references;
 bh=9JIEqJQxWAs1HxGjyuMMx3Xqcqjv9VzXCFrgrYokwOk=;
 b=MZ5F7FX8aEpeS4lkillbylYBYOiednaY5nqU2c0YJbXGSkYM9bHtB7h5ZpO2resYOX
 jRoL8mYHux8KWzcmz7y+AnZ3kUD9K9Q0aZb/8zbW2sM/56e7kaa4/ce+8mha3Yc0/4Zv
 pT5FMSJVtB2XcwYOSe08it8LiioyTg6e1LXOg8mJOJiBWfI3YJIV0y+oCgK2KeNWzCme
 kZIG8VaHMdjw5VyCyAkSW0FfYYRxHRAg/BgwLCZT2AxCU6CNKugGiOT4og89yQtRyKLq
 iLFuIxWpnOjL0Nt0gw5hHH92o/UngrI97FanLbZnd6Igg9ne1v3mgGIBBmgzT3djENNX
 H9YQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to
 :references;
 bh=9JIEqJQxWAs1HxGjyuMMx3Xqcqjv9VzXCFrgrYokwOk=;
 b=Skku28B/CWRIA/wznE4hlWT2daSC6j5knWcvQTGK49DGW0GFEqsMEIaJc6LUDhoJlb
 2B0NqDHTdo8kK6UuHkS+SLMUoB2hzKVjTgOwsuo3HtyeZAjqc758+o4DwY+I2gygHCKU
 o+aZCzdXIE3ZhXhLHIZ86xUnpp1nhdKVYrA9tu7H2Krh50HBlqtzsuTScSuC+HL8Bi18
 5501YYuku+7qd4mQOq8Am8HYjAiuIYA9JQzdKmGVHRQpt43pEiRzFb+4SD2wCQSPsIov
 v3fOpyQT6EdixuyJNw3S8cd4lc5Qe6Y0bvqTP6Bnfvs/j34TAe5L2+w6jCOvoS3eraET
 Eg1Q==
X-Gm-Message-State: AGi0PuakuveldSBxbT6VHX1g3hQhd2rJNpN2k1mG/ZSw426Dv8r3z3pY
 lxHPZ1CGJCUOJ/tp/lPXCvJheEqxuLE=
X-Google-Smtp-Source: APiQypIMCOpNyOzIqNxGkla/broXN/QFU+0uOAQ6eiFJiGao6Aa1NXRfDZVF4a/5GCpYFo/SMf2G9Q==
X-Received: by 2002:adf:dd8a:: with SMTP id x10mr27851546wrl.308.1587545081934; 
 Wed, 22 Apr 2020 01:44:41 -0700 (PDT)
Received: from localhost.localdomain ([2a02:a58:8506:aa00:9983:212f:e79d:88e8])
 by smtp.googlemail.com with ESMTPSA id 33sm7482524wrp.5.2020.04.22.01.44.41
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 22 Apr 2020 01:44:41 -0700 (PDT)
From: George Muraru <murarugeorgec@gmail.com>
To: minios-devel@lists.xenproject.org
Subject: [UNIKRAFT/PTHREAD-EMBEDDED PATCH 1/1] Remove compile warning
Date: Wed, 22 Apr 2020 11:44:32 +0300
Message-Id: <20200422084432.7546-2-murarugeorgec@gmail.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20200422084432.7546-1-murarugeorgec@gmail.com>
References: <20200422084432.7546-1-murarugeorgec@gmail.com>
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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, George Muraru <murarugeorgec@gmail.com>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Signed-off-by: George Muraru <murarugeorgec@gmail.com>
---
 attributes.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/attributes.c b/attributes.c
index a7b4842..a5397bd 100644
--- a/attributes.c
+++ b/attributes.c
@@ -145,7 +145,7 @@ int pthread_getname_np(pthread_t thread, char *name, size_t len)
 	if (len < _len + 1)
 		return ERANGE;
 
-	sprintf(name, _uk_thread->name);
+	sprintf(name,"%s", _uk_thread->name);
 
 	return 0;
 }
-- 
2.17.1



From minios-devel-bounces@lists.xenproject.org Wed Apr 22 08:44:46 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 22 Apr 2020 08:44:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1jRAzq-0001Ow-IV; Wed, 22 Apr 2020 08:44:42 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=GA2G=6G=gmail.com=murarugeorgec@srs-us1.protection.inumbo.net>)
 id 1jRAzp-0001Or-Hs
 for minios-devel@lists.xenproject.org; Wed, 22 Apr 2020 08:44:41 +0000
X-Inumbo-ID: 812eced2-8475-11ea-83d8-bc764e2007e4
Received: from mail-wr1-x432.google.com (unknown [2a00:1450:4864:20::432])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 812eced2-8475-11ea-83d8-bc764e2007e4;
 Wed, 22 Apr 2020 08:44:40 +0000 (UTC)
Received: by mail-wr1-x432.google.com with SMTP id g13so1355495wrb.8
 for <minios-devel@lists.xenproject.org>; Wed, 22 Apr 2020 01:44:40 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=from:to:cc:subject:date:message-id;
 bh=WHjInXQbL5SErttguiDAoa3cPzhU55MFQG9DyAR2V7Y=;
 b=RHm/A4A/lf4oEUejZF0Xvx5WcOJ63RPIkHr6+mvI9LazZJG7p+edVGDfH5huOm4bHi
 DU71gCPvm8LIdXzL5zH5KB5zK5yA9rlIjwsHfrVZRPm79oHY0smuzIXXj2RzUwRErvFi
 v36jaZuuR8+qvIu+FmUyONFyhMATKoFjZIMLFRGqe8511iUmFvZ96QvI83gBwPtFzFPF
 sSb+8BGANWLaP5jfSpU/VgPJOvUrH9g7KwBJrABqY/VlrztPdE56TXnuKjt3MgXKQ9ld
 v3vsFVC0FcNEXUqZvrbhoJ9FfAzYVTkZDESLUrmEvQ9lg/alHLFa7nEwtusNMPQkEVjy
 uktg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:from:to:cc:subject:date:message-id;
 bh=WHjInXQbL5SErttguiDAoa3cPzhU55MFQG9DyAR2V7Y=;
 b=h0fZ1wwc0j1pGAszFoEzQqNo5HZ00ur9kRBA5OSM6ulvuTXcXI7y3qxJn5VkKQts8z
 +aBbS4UGJ/66BkbZuYvZkSgwFfOS2BY8TlxoSuM/cJ/5+IpKq0n2FyG54QwuHxOyqYR5
 T9+drRarLROFJ1RSd1pHHv95p/vX1i7pvIyv54M48+IghtbWzALje325vQNzgixBcSwt
 b0c9DdzDdbyGQFb178nt0wLlNEEmMlF5th5xrCBDg+1Wx7so790zzv4XUUsAOzUupYeP
 Ri50awPK771fqndom2PQHzaLxsbf0FssKVrd7Fqox5pdyHiSOBtkyPF9IG44U8dtTJl+
 ZcuA==
X-Gm-Message-State: AGi0PuZJkCq/aA4pBCyeGa6izmjM0i3r7ir2EUxaGOZwN8yyGqc0/KY5
 bh4cqjtnoL4saXbuzooFw5kHNVtu/3w=
X-Google-Smtp-Source: APiQypJ/apP8mze1ca0X11dWpiLNP8e40XBL15QAe3QcOuk+MlPqoxQlyFuMTCioI1pFCET6viZkAA==
X-Received: by 2002:a5d:4e12:: with SMTP id p18mr29073295wrt.148.1587545079451; 
 Wed, 22 Apr 2020 01:44:39 -0700 (PDT)
Received: from localhost.localdomain ([2a02:a58:8506:aa00:9983:212f:e79d:88e8])
 by smtp.googlemail.com with ESMTPSA id 33sm7482524wrp.5.2020.04.22.01.44.38
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 22 Apr 2020 01:44:38 -0700 (PDT)
From: George Muraru <murarugeorgec@gmail.com>
To: minios-devel@lists.xenproject.org
Subject: [UNIKRAFT/PTHREAD-EMBEDDED PATCH 0/1]
Date: Wed, 22 Apr 2020 11:44:31 +0300
Message-Id: <20200422084432.7546-1-murarugeorgec@gmail.com>
X-Mailer: git-send-email 2.17.1
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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, George Muraru <murarugeorgec@gmail.com>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

When compiling you get a compile warning:
"
libs/lib-pthread-embedded/attributes.c:148:2: warning: format not a
string literal and no format arguments [-Wformat-security]
  sprintf(name, _uk_thread->name);
"
This change will remove the warning.

George Muraru (1):
  Remove compile warning

 attributes.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

-- 
2.17.1



From minios-devel-bounces@lists.xenproject.org Wed Apr 22 10:42:43 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 22 Apr 2020 10:42:43 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1jRCq0-0004wl-RH; Wed, 22 Apr 2020 10:42:40 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=GA2G=6G=gmail.com=murarugeorgec@srs-us1.protection.inumbo.net>)
 id 1jRCpz-0004wg-DY
 for minios-devel@lists.xenproject.org; Wed, 22 Apr 2020 10:42:39 +0000
X-Inumbo-ID: fc1446f8-8485-11ea-b58d-bc764e2007e4
Received: from mail-wm1-x32a.google.com (unknown [2a00:1450:4864:20::32a])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id fc1446f8-8485-11ea-b58d-bc764e2007e4;
 Wed, 22 Apr 2020 10:42:38 +0000 (UTC)
Received: by mail-wm1-x32a.google.com with SMTP id u127so1780924wmg.1
 for <minios-devel@lists.xenproject.org>; Wed, 22 Apr 2020 03:42:38 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=from:to:cc:subject:date:message-id;
 bh=1CNK8FbpRRPrqg3JReX0cJCCHFIA2unOjbTIOwkFD3M=;
 b=LTY7R7LQ8n6flLiC+gYoUFlCo/D662EuDSko77ByzdlNNMGmKF6HasUtCp7mCUqeUz
 Hhh/FSwcuOl0gV34LanB9St6GYr7UkSFS4E8AORNd7H93XZM3z1K1Af4ovgDsrIrR2vl
 HZWcwBeuFFazmVqH5K4IfXjaWdxySnFXVODrpc04NpPda/DysGUUTNV6whzUY2cWogwk
 1un2j4+og4eX7Gb3SfW7NWlH3wn994xoYLskRURXN5rAbb8twRfs30AP/ZsrG9OPLWxQ
 qNfM2YsoTgGLy6IMQvTjY+9cWRY6sMeOGc2zP6x3aZLMSO7z1cqvH/HwnS+mgLsNqZM9
 XxhA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:from:to:cc:subject:date:message-id;
 bh=1CNK8FbpRRPrqg3JReX0cJCCHFIA2unOjbTIOwkFD3M=;
 b=EXYl03S1WDKIl1tYkDf7xiL1Z5VBaYxARShp5lN5YB1M7Al3d35n8te5WgIvy3eGOh
 5027SMTgXFe1aA9ePb9An/I0WTw+PdRjk0h/HcUs8qkjupwErAjTvNBQGNgb7lCCicSt
 mAsN/jvGVN2j3wkmg7zKunBkQFrW4dWjY52WoDb2xvTUo5gMN/56kbUCElVxiYqE45/5
 xk1vzRDnjBCaD4hcQ4MEMIp81vGm9IxjaAg/S20M6cayFJ4QfwU691RBddGTUso9qfia
 a3wrVXxZe9pm8SLPlc2aXqWcGdrs8LrnGyegawBo0301q0QtYRlhOXaw1lOy9DehjeXh
 TOgQ==
X-Gm-Message-State: AGi0PuZt7H6yvMZFevgV8//XW4q3vSqF5SytC07TaVO/x1ok1au+1Xxq
 EuVhB2AiftPwtL+kFEQRj6Ch7UXBfww=
X-Google-Smtp-Source: APiQypKVEg/p55RgpzMwE+QMnjUnA6P38FPfXWv/WhXPYQwHsuz+ZEf3VHaE3BRJnpNPrvGEUCr/YQ==
X-Received: by 2002:a7b:c772:: with SMTP id x18mr10312417wmk.39.1587552157625; 
 Wed, 22 Apr 2020 03:42:37 -0700 (PDT)
Received: from localhost.localdomain ([2a02:a58:8506:aa00:9983:212f:e79d:88e8])
 by smtp.googlemail.com with ESMTPSA id k6sm7811291wma.19.2020.04.22.03.42.36
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 22 Apr 2020 03:42:37 -0700 (PDT)
From: George Muraru <murarugeorgec@gmail.com>
To: minios-devel@lists.xenproject.org
Subject: [UNIKRAFT/LIBTFLITE PATCH v2 0/1]
Date: Wed, 22 Apr 2020 13:42:29 +0300
Message-Id: <20200422104230.4586-1-murarugeorgec@gmail.com>
X-Mailer: git-send-email 2.17.1
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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, George Muraru <murarugeorgec@gmail.com>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Changes since v1:
* Improve Readme by adding dependencies and fs info
* Add main example
* Add patch for changing "zu" to "lu"

George Muraru (1):
  Add main and improve Readme

 Config.uk                          |   6 +-
 Makefile.uk                        | 106 ++++++++++++++++-------------
 README.md                          |  56 +++++++++++++--
 main.cpp                           |  56 +++++++++++++++
 patches/0001-Change-zu-to-lu.patch |  47 +++++++++++++
 5 files changed, 216 insertions(+), 55 deletions(-)
 create mode 100644 main.cpp
 create mode 100644 patches/0001-Change-zu-to-lu.patch

-- 
2.17.1



From minios-devel-bounces@lists.xenproject.org Wed Apr 22 10:42:44 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 22 Apr 2020 10:42:44 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1jRCq4-0004xC-TA; Wed, 22 Apr 2020 10:42:44 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=GA2G=6G=gmail.com=murarugeorgec@srs-us1.protection.inumbo.net>)
 id 1jRCq4-0004x7-CW
 for minios-devel@lists.xenproject.org; Wed, 22 Apr 2020 10:42:44 +0000
X-Inumbo-ID: fd9969ea-8485-11ea-b58d-bc764e2007e4
Received: from mail-wm1-x334.google.com (unknown [2a00:1450:4864:20::334])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id fd9969ea-8485-11ea-b58d-bc764e2007e4;
 Wed, 22 Apr 2020 10:42:41 +0000 (UTC)
Received: by mail-wm1-x334.google.com with SMTP id u16so1764396wmc.5
 for <minios-devel@lists.xenproject.org>; Wed, 22 Apr 2020 03:42:41 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=from:to:cc:subject:date:message-id:in-reply-to:references;
 bh=d2d9cplTWPCUAyT3UvdoPem/Id2vjahVymbxwoLhUF4=;
 b=pj+LNFUmqfRrBrxe5mLkpLPsWJFcDRpPl3GeXARud/f2BIR1b1zIQUf55IzMK1V1Uj
 Mc+mpLwTmsQDe1msOv3SRzZoJkD4kGBnX6X9/8Ab83KSd3lZ1f6T2KDMBRdDWTSBB3fJ
 YnthIL+7DljXJ4w6Ep/+UZWXjUUCXqv+EuiKUInn8z48L79FBwYVBkmnXqArcunjOcqE
 l9MbLnAu2RQCHaQTaMiYOQTCsHhgNj9Ac0rb61cYdwmo+qYG8UwYUJU+gv8kuTQg8XVc
 J7XPHSliHvcQ82F61H9cfpV2v96NIdObhpTsHOdLBHyJEtcJMKdxTtRzSAQ+kziKkXne
 biIA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to
 :references;
 bh=d2d9cplTWPCUAyT3UvdoPem/Id2vjahVymbxwoLhUF4=;
 b=lKokc1BeesjLJcfdZdDLTrnjsglvpVP7npuRpcXVM/mvxRoDsWhhfR6xu5jPWf0I8V
 xvSwADsqVV7tLxzq+wZeZtEU4c2mYcHk02GoruwXsIyIIz1Ary7eyznuaR0smo0cygHV
 s0LoQZrB42HUoJOmW1vwDZRETyPzNGkAselTuHPDT9yuJ7KUbwPIvHjiMUTNEHxv0dxl
 h8/mT22awsqIMWmV9i0jH6tYs9a8ATBaDTKeuMAf6xf5fxOmzg79HQpMvAQrF3jVLJoQ
 YuRCwllvhgC8ad/XcfC+VYgF0ZibsL/yq6qkuMnCt++fquCu1LqSjDpx3at2l93TlsEb
 3LSQ==
X-Gm-Message-State: AGi0PuY3eQ/SaFDbCaVj+45j0urQbxNS6dKIuUEoQ/qP58MUvTziAWvc
 l8+Ev8ouuULgjqcSfFNBfrTapAZfxY0=
X-Google-Smtp-Source: APiQypKFSPBkBv0J10/W1LPmtCBtX/6eVebT/yhtkTS3nt8yPOSEMJ8bZvCTc8KsaeuFL3vlCcpzHA==
X-Received: by 2002:a7b:c7d6:: with SMTP id z22mr10478560wmk.73.1587552159789; 
 Wed, 22 Apr 2020 03:42:39 -0700 (PDT)
Received: from localhost.localdomain ([2a02:a58:8506:aa00:9983:212f:e79d:88e8])
 by smtp.googlemail.com with ESMTPSA id k6sm7811291wma.19.2020.04.22.03.42.38
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 22 Apr 2020 03:42:39 -0700 (PDT)
From: George Muraru <murarugeorgec@gmail.com>
To: minios-devel@lists.xenproject.org
Subject: [UNIKRAFT/LIBTFLITE PATCH v2 1/1] Add main and improve Readme
Date: Wed, 22 Apr 2020 13:42:30 +0300
Message-Id: <20200422104230.4586-2-murarugeorgec@gmail.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20200422104230.4586-1-murarugeorgec@gmail.com>
References: <20200422104230.4586-1-murarugeorgec@gmail.com>
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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, George Muraru <murarugeorgec@gmail.com>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Signed-off-by: George Muraru <murarugeorgec@gmail.com>
---
 Config.uk                          |   6 +-
 Makefile.uk                        | 106 ++++++++++++++++-------------
 README.md                          |  56 +++++++++++++--
 main.cpp                           |  56 +++++++++++++++
 patches/0001-Change-zu-to-lu.patch |  47 +++++++++++++
 5 files changed, 216 insertions(+), 55 deletions(-)
 create mode 100644 main.cpp
 create mode 100644 patches/0001-Change-zu-to-lu.patch

diff --git a/Config.uk b/Config.uk
index 38bc5fb..2efd518 100644
--- a/Config.uk
+++ b/Config.uk
@@ -8,7 +8,6 @@ menuconfig LIBTFLITE
     select LIBCOMPILER_RT_ATOMIC
     select LIBEIGEN
     select LIBFFT2D
-    select LIBFFT2D_2D
     select LIBFLATBUFFERS
     select LIBGEMMLOWP
     select LIBFARMHASH
@@ -32,3 +31,8 @@ if LIBTFLITE
     default n
 endif
 
+if LIBTFLITE
+config LIBTFLITE_MAIN_FUNCTION
+	bool "Provide main function"
+	default y
+endif
diff --git a/Makefile.uk b/Makefile.uk
index 2b5db3f..7223603 100644
--- a/Makefile.uk
+++ b/Makefile.uk
@@ -38,8 +38,11 @@ $(eval $(call addlib_s,libtflite,$(CONFIG_LIBTFLITE)))
 # Sources
 ################################################################################
 LIBTFLITE_VERSION=2.0.1
+LIBTFLITE_PATCHDIR=$(LIBTFLITE_BASE)/patches
+
 LIBTFLITE_URL=https://github.com/tensorflow/tensorflow/archive/v$(LIBTFLITE_VERSION).tar.gz
 $(eval $(call fetch,libtflite,$(LIBTFLITE_URL)))
+$(eval $(call patch,libtflite,$(LIBTFLITE_PATCHDIR),tensorflow-$(LIBTFLITE_VERSION)))
 
 ################################################################################
 # Helpers
@@ -57,14 +60,23 @@ CXXINCLUDES-$(CONFIG_LIBTFLITE) += -I$(LIBTFLITE_SRC)/tensorflow/lite
 CINCLUDES-$(CONFIG_LIBTFLITE) += -I$(LIBTFLITE_SRC)/
 CINCLUDES-$(CONFIG_LIBTFLITE) += -I$(LIBTFLITE_SRC)/tensorflow/lite
 
+################################################################################
+# Main code
+################################################################################
+
+ifdef CONFIG_LIBTFLITE_MAIN_FUNCTION
+LIBTFLITE_SRCS-$(CONFIG_LIBTFLITE_MAIN_FUNCTION) += $(LIBTFLITE_BASE)/main.cpp
+endif
+
 ################################################################################
 # Global flags
 ################################################################################
-LIBTFLITE_SUPPRESS_FLAGS += -Wno-sign-compare -Wno-unused-parameter -Wno-comment
-LIBTFLITE_SUPPRESS_FLAGS += -Wno-missing-field-initializers
+LIBTFLITE_SUPPRESS_FLAGS += -Wno-sign-compare -Wno-unused-parameter -Wno-comment \
+                            -Wno-missing-field-initializers -Wno-parantheses \
+                            -Wno-unused-function -Wno-unknown-pragmas
 
 LIBTFLITE_CXXFLAGS-y += $(LIBTFLITE_SUPPRESS_FLAGS)
-
+LIBTFLITE_CFLAGS-y += $(LIBTFLITE_SUPPRESS_FLAGS)
 
 ifdef CONFIG_LIBTFLITE_BUILD_WITH_RUY
 LIBTFLITE_CXXFLAGS-y += -D TFLITE_WITH_RUY
@@ -79,58 +91,58 @@ endif
 ################################################################################
 # Library sources
 ################################################################################
-MINIMAL_SRCS := \
-			$(LIBTFLITE_SRC)/tensorflow/lite/examples/minimal/minimal.cc
+MINIMAL_SRCS := $(LIBTFLITE_SRC)/tensorflow/lite/examples/minimal/minimal.cc
 
 
 CORE_CC_ALL_SRCS := \
-			$(wildcard $(LIBTFLITE_SRC)/tensorflow/lite/*.cc) \
-			$(wildcard $(LIBTFLITE_SRC)/tensorflow/lite/*.c) \
-			$(wildcard $(LIBTFLITE_SRC)/tensorflow/lite/c/*.c) \
-			$(wildcard $(LIBTFLITE_SRC)/tensorflow/lite/core/*.cc) \
-			$(wildcard $(LIBTFLITE_SRC)/tensorflow/lite/core/api/*.cc) \
-			$(wildcard $(LIBTFLITE_SRC)/tensorflow/lite/experimental/resource_variable/*.cc) \
-			$(LIBTFLITE_SRC)/tensorflow/lite/experimental/ruy/allocator.cc \
-			$(LIBTFLITE_SRC)/tensorflow/lite/experimental/ruy/block_map.cc \
-			$(LIBTFLITE_SRC)/tensorflow/lite/experimental/ruy/blocking_counter.cc \
-			$(LIBTFLITE_SRC)/tensorflow/lite/experimental/ruy/context.cc \
-			$(LIBTFLITE_SRC)/tensorflow/lite/experimental/ruy/detect_dotprod.cc \
-			$(LIBTFLITE_SRC)/tensorflow/lite/experimental/ruy/kernel_arm32.cc \
-			$(LIBTFLITE_SRC)/tensorflow/lite/experimental/ruy/kernel_arm64.cc \
-			$(LIBTFLITE_SRC)/tensorflow/lite/experimental/ruy/pack_arm.cc \
-			$(LIBTFLITE_SRC)/tensorflow/lite/experimental/ruy/pmu.cc \
-			$(LIBTFLITE_SRC)/tensorflow/lite/experimental/ruy/thread_pool.cc \
-			$(LIBTFLITE_SRC)/tensorflow/lite/experimental/ruy/trace.cc \
-			$(LIBTFLITE_SRC)/tensorflow/lite/experimental/ruy/trmul.cc \
-			$(LIBTFLITE_SRC)/tensorflow/lite/experimental/ruy/tune.cc \
-			$(LIBTFLITE_SRC)/tensorflow/lite/experimental/ruy/wait.cc \
-     		$(LIBTFLITE_SRC)/tensorflow/lite/minimal_logging_default.cc
+            $(wildcard $(LIBTFLITE_SRC)/tensorflow/lite/*.cc) \
+            $(wildcard $(LIBTFLITE_SRC)/tensorflow/lite/*.c) \
+            $(wildcard $(LIBTFLITE_SRC)/tensorflow/lite/c/*.c) \
+            $(wildcard $(LIBTFLITE_SRC)/tensorflow/lite/core/*.cc) \
+            $(wildcard $(LIBTFLITE_SRC)/tensorflow/lite/core/api/*.cc) \
+            $(wildcard $(LIBTFLITE_SRC)/tensorflow/lite/experimental/resource_variable/*.cc) \
+            $(LIBTFLITE_SRC)/tensorflow/lite/experimental/ruy/allocator.cc \
+            $(LIBTFLITE_SRC)/tensorflow/lite/experimental/ruy/block_map.cc \
+            $(LIBTFLITE_SRC)/tensorflow/lite/experimental/ruy/blocking_counter.cc \
+            $(LIBTFLITE_SRC)/tensorflow/lite/experimental/ruy/context.cc \
+            $(LIBTFLITE_SRC)/tensorflow/lite/experimental/ruy/detect_dotprod.cc \
+            $(LIBTFLITE_SRC)/tensorflow/lite/experimental/ruy/kernel_arm32.cc \
+            $(LIBTFLITE_SRC)/tensorflow/lite/experimental/ruy/kernel_arm64.cc \
+            $(LIBTFLITE_SRC)/tensorflow/lite/experimental/ruy/pack_arm.cc \
+            $(LIBTFLITE_SRC)/tensorflow/lite/experimental/ruy/pmu.cc \
+            $(LIBTFLITE_SRC)/tensorflow/lite/experimental/ruy/thread_pool.cc \
+            $(LIBTFLITE_SRC)/tensorflow/lite/experimental/ruy/trace.cc \
+            $(LIBTFLITE_SRC)/tensorflow/lite/experimental/ruy/trmul.cc \
+            $(LIBTFLITE_SRC)/tensorflow/lite/experimental/ruy/tune.cc \
+            $(LIBTFLITE_SRC)/tensorflow/lite/experimental/ruy/wait.cc \
+            $(LIBTFLITE_SRC)/tensorflow/lite/minimal_logging_default.cc
 
 
 
 CORE_CC_ALL_SRCS += \
-			 $(wildcard $(LIBTFLITE_SRC)/tensorflow/lite/kernels/*.cc) \
-			 $(wildcard $(LIBTFLITE_SRC)/tensorflow/lite/kernels/internal/*.cc) \
-			 $(wildcard $(LIBTFLITE_SRC)/tensorflow/lite/kernels/internal/optimized/*.cc) \
-			 $(wildcard $(LIBTFLITE_SRC)/tensorflow/lite/kernels/internal/reference/*.cc)
+             $(wildcard $(LIBTFLITE_SRC)/tensorflow/lite/kernels/*.cc) \
+             $(wildcard $(LIBTFLITE_SRC)/tensorflow/lite/kernels/internal/*.cc) \
+             $(wildcard $(LIBTFLITE_SRC)/tensorflow/lite/kernels/internal/optimized/*.cc) \
+             $(wildcard $(LIBTFLITE_SRC)/tensorflow/lite/kernels/internal/reference/*.cc)
 
 
 CORE_CC_ALL_SRCS := $(sort $(CORE_CC_ALL_SRCS))
 CORE_CC_EXCLUDE_SRCS := \
-				$(wildcard $(LIBTFLITE_SRC)/tensorflow/lite/*test.cc) \
-			    $(wildcard $(LIBTFLITE_SRC)/tensorflow/lite/*/*test.cc) \
-			    $(wildcard $(LIBTFLITE_SRC)/tensorflow/lite/*/*/*test.cc) \
-			    $(wildcard $(LIBTFLITE_SRC)/tensorflow/lite/*/*/*/*test.cc) \
-				$(wildcard $(LIBTFLITE_SRC)/tensorflow/lite/kernels/*test_main.cc) \
-				$(wildcard $(LIBTFLITE_SRC)/tensorflow/lite/kernels/*test_util.cc) \
-				$(LIBTFLITE_SRC)/tensorflow/lite/experimental/ruy/pmu.cc \
- 				$(LIBTFLITE_SRC)/tensorflow/lite/minimal_logging_android.cc \
-				$(LIBTFLITE_SRC)/tensorflow/lite/minimal_logging_ios.cc \
- 				$(MINIMAL_SRCS)
+                $(wildcard $(LIBTFLITE_SRC)/tensorflow/lite/*test.cc) \
+                $(wildcard $(LIBTFLITE_SRC)/tensorflow/lite/*/*test.cc) \
+                $(wildcard $(LIBTFLITE_SRC)/tensorflow/lite/*/*/*test.cc) \
+                $(wildcard $(LIBTFLITE_SRC)/tensorflow/lite/*/*/*/*test.cc) \
+                $(wildcard $(LIBTFLITE_SRC)/tensorflow/lite/kernels/*test_main.cc) \
+                $(wildcard $(LIBTFLITE_SRC)/tensorflow/lite/kernels/*test_util.cc) \
+                $(LIBTFLITE_SRC)/tensorflow/lite/experimental/ruy/pmu.cc \
+                $(LIBTFLITE_SRC)/tensorflow/lite/minimal_logging_android.cc \
+                $(LIBTFLITE_SRC)/tensorflow/lite/minimal_logging_ios.cc \
+                $(MINIMAL_SRCS)
+
 
 COMPILE_MANUAL_SRCS := \
-				$(LIBTFLITE_SRC)/tensorflow/lite/kernels/internal/mfcc.cc \
-				$(LIBTFLITE_SRC)/tensorflow/lite/kernels/mfcc.cc
+                $(LIBTFLITE_SRC)/tensorflow/lite/kernels/internal/mfcc.cc \
+                $(LIBTFLITE_SRC)/tensorflow/lite/kernels/mfcc.cc
 
 
 ifeq ($(CONFIG_LIBUKMMAP),y)
@@ -141,13 +153,13 @@ endif
 
 ifeq ($(LIBTFLITE_BUILD_WITH_NNAPI),y)
 CORE_CC_ALL_SRCS += \
-				$(LIBTFLITE_SRC)/tensorflow/lite/delegates/nnapi/nnapi_delegate.cc \
-   				$(LIBTFLITE_SRC)/tensorflow/lite/delegates/nnapi/quant_lstm_sup.cc \
-    			$(LIBTFLITE_SRC)/tensorflow/lite/nnapi/nnapi_implementation.cc
+                $(LIBTFLITE_SRC)/tensorflow/lite/delegates/nnapi/nnapi_delegate.cc \
+                $(LIBTFLITE_SRC)/tensorflow/lite/delegates/nnapi/quant_lstm_sup.cc \
+                $(LIBTFLITE_SRC)/tensorflow/lite/nnapi/nnapi_implementation.cc
 else
 CORE_CC_ALL_SRCS += \
-				$(LIBTFLITE_SRC)/tensorflow/lite/delegates/nnapi/nnapi_delegate_disabled.cc \
-   				$(LIBTFLITE_SRC)/tensorflow/lite/nnapi/nnapi_implementation_disabled.cc
+                $(LIBTFLITE_SRC)/tensorflow/lite/delegates/nnapi/nnapi_delegate_disabled.cc \
+                $(LIBTFLITE_SRC)/tensorflow/lite/nnapi/nnapi_implementation_disabled.cc
 endif
 
 LIBTFLITE_SRCS-y += $(filter-out $(CORE_CC_EXCLUDE_SRCS) $(COMPILE_MANUAL_SRCS), $(CORE_CC_ALL_SRCS))
diff --git a/README.md b/README.md
index a7a1a6d..617a8bd 100644
--- a/README.md
+++ b/README.md
@@ -1,12 +1,54 @@
-gemmlowp for Unikraft
+TensorFlowLite for Unikraft
 =============================
 
-This is the port of gemmlowp as a Unikraft external library. It
-depends on the following libraries that need to be added to `Makefile`
-in this order:
+This is the port of tensorflowlite as external library
+Please refer to the `README.md` as well as the documentation in the `doc/`
+subdirectory of the main unikraft repository.
+
+## Build
+TensorFlowLite interpreter depends on the following libraries, that need to
+be added to `Makefile` in this order:
 
-* CXX standard library, e.g. `libunwind`, `compiler-rt`, `libcxxabi`, `libcxx`
+* `pthreads`, e.g. `pthread-embedded`
+* `libcxx`
+* `libcxxabi`
 * `libc`, e.g. `newlib`
+* `libunwind`
+* `libcompilerrt`
+* `libgemmlowp`
+* `libflatbuffers`
+* `libfarmhash`
+* `libeigen`
+* `libfft2`
 
-Please refer to the `README.md` as well as the documentation in the `doc/`
-subdirectory of the main unikraft repository.
+## Root filesystem
+### Creating the filesystem
+TensorFlowLite needs a filesystem which should contain one or more *tflite*
+models. Therefore, the filesystem needs to be created before running the VM. 
+
+### Using the filesystem
+Mounting the filesystem is a transparent operation. All you have to do
+is to provide the right Qemu parameters in order for Unikraft to mount
+the filesystem.  We will use the 9pfs support for filesystems and for
+this you will need to use the following parameters:
+
+```bash
+-fsdev local,id=myid,path=<some directory>,security_model=none \
+-device virtio-9p-pci,fsdev=myid,mount_tag=rootfs,disable-modern=on,disable-legacy=off
+```
+You should also use `vfs.rootdev=rootfs` (set by default) to specify the 9pfs mounting
+tag to Unikraft. To enable 9pfs, you'll need to select the following
+menu options, all under `Library Configuration`:
+
+* `uk9p: 9p client`
+* `vfscore: VFS Core Interface`
+	  &rarr; `vfscore: Configuration`
+	  &rarr; `Automatically mount a root filesysytem`
+	  &rarr; `Default root filesystem`
+	  &rarr; `9PFS`
+
+## How to run
+Currently, `main.cpp` contains a minimal example for loading a *tflite* model and
+printing the interpreter state. The sample program will try to load the model from
+`mobilenet_v1_1.0_224.tflite` (this model and other models from the same family can
+be downloaded from [here](https://github.com/tensorflow/models/blob/master/research/slim/nets/mobilenet_v1.md))
diff --git a/main.cpp b/main.cpp
new file mode 100644
index 0000000..45f9b07
--- /dev/null
+++ b/main.cpp
@@ -0,0 +1,56 @@
+/* Copyright 2018 The TensorFlow Authors. All Rights Reserved.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+==============================================================================*/
+#define __clrsbDI2    __NDW(clrsb,2)
+
+#include <cstdio>
+#include "tensorflow/lite/interpreter.h"
+#include "tensorflow/lite/kernels/register.h"
+#include "tensorflow/lite/model.h"
+#include "tensorflow/lite/optional_debug_tools.h"
+
+#include <sys/mount.h>
+#include <sys/types.h>
+#include <fcntl.h>
+
+// This is an example that is minimal to read a model
+// from disk and perform inference. There is no data being loaded
+// that is up to you to add as a user.
+//
+// NOTE: Do not add any dependencies to this that cannot be built with
+// the minimal makefile. This example must remain trivial to build with
+// the minimal build tool.
+//
+// Usage: minimal <tflite model>
+
+using namespace tflite;
+
+int main() {
+  const char* filename = "mobilenet_v1_1.0_224.tflite";
+
+  // Load model
+  std::unique_ptr<tflite::FlatBufferModel> model =
+      tflite::FlatBufferModel::BuildFromFile(filename);
+
+  // Build the interpreter
+  tflite::ops::builtin::BuiltinOpResolver resolver;
+  InterpreterBuilder builder(*model, resolver);
+  std::unique_ptr<Interpreter> interpreter;
+  builder(&interpreter);
+
+  printf("=== Interpreter State ===\n");
+  tflite::PrintInterpreterState(interpreter.get());
+
+  return 0;
+}
diff --git a/patches/0001-Change-zu-to-lu.patch b/patches/0001-Change-zu-to-lu.patch
new file mode 100644
index 0000000..d68a26e
--- /dev/null
+++ b/patches/0001-Change-zu-to-lu.patch
@@ -0,0 +1,47 @@
+From f34b41fd728c06517a1223178af2fbb97dce5dfe Mon Sep 17 00:00:00 2001
+From: George Muraru <murarugeorgec@gmail.com>
+Date: Tue, 21 Apr 2020 23:16:50 +0300
+Subject: [PATCH 1/1] Change zu to lu
+
+---
+ tensorflow/lite/optional_debug_tools.cc | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/tensorflow/lite/optional_debug_tools.cc b/tensorflow/lite/optional_debug_tools.cc
+index a59af3d..c9339b0 100644
+--- a/tensorflow/lite/optional_debug_tools.cc
++++ b/tensorflow/lite/optional_debug_tools.cc
+@@ -80,7 +80,7 @@ const char* AllocTypeName(TfLiteAllocationType type) {
+ 
+ // Prints a dump of what tensors and what nodes are in the interpreter.
+ void PrintInterpreterState(Interpreter* interpreter) {
+-  printf("Interpreter has %zu tensors and %zu nodes\n",
++  printf("Interpreter has %lu tensors and %lu nodes\n",
+          interpreter->tensors_size(), interpreter->nodes_size());
+   printf("Inputs:");
+   PrintIntVector(interpreter->inputs());
+@@ -90,7 +90,7 @@ void PrintInterpreterState(Interpreter* interpreter) {
+   for (size_t tensor_index = 0; tensor_index < interpreter->tensors_size();
+        tensor_index++) {
+     TfLiteTensor* tensor = interpreter->tensor(static_cast<int>(tensor_index));
+-    printf("Tensor %3zu %-20s %10s %15s %10zu bytes (%4.1f MB) ", tensor_index,
++    printf("Tensor %3lu %-20s %10s %15s %10lu bytes (%4.1f MB) ", tensor_index,
+            tensor->name, TensorTypeName(tensor->type),
+            AllocTypeName(tensor->allocation_type), tensor->bytes,
+            (static_cast<float>(tensor->bytes) / (1 << 20)));
+@@ -104,10 +104,10 @@ void PrintInterpreterState(Interpreter* interpreter) {
+     const TfLiteNode& node = node_and_reg->first;
+     const TfLiteRegistration& reg = node_and_reg->second;
+     if (reg.custom_name != nullptr) {
+-      printf("Node %3zu Operator Custom Name %s\n", node_index,
++      printf("Node %3lu Operator Custom Name %s\n", node_index,
+              reg.custom_name);
+     } else {
+-      printf("Node %3zu Operator Builtin Code %3d\n", node_index,
++      printf("Node %3lu Operator Builtin Code %3d\n", node_index,
+              reg.builtin_code);
+     }
+     printf("  Inputs:");
+-- 
+2.17.1
+
-- 
2.17.1



From minios-devel-bounces@lists.xenproject.org Wed Apr 22 10:58:41 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 22 Apr 2020 10:58:41 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1jRD5T-00063w-DV; Wed, 22 Apr 2020 10:58:39 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=GA2G=6G=gmail.com=murarugeorgec@srs-us1.protection.inumbo.net>)
 id 1jRD5S-00063r-Jm
 for minios-devel@lists.xenproject.org; Wed, 22 Apr 2020 10:58:38 +0000
X-Inumbo-ID: 37d536f0-8488-11ea-b58d-bc764e2007e4
Received: from mail-qv1-xf42.google.com (unknown [2607:f8b0:4864:20::f42])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 37d536f0-8488-11ea-b58d-bc764e2007e4;
 Wed, 22 Apr 2020 10:58:37 +0000 (UTC)
Received: by mail-qv1-xf42.google.com with SMTP id fb4so588882qvb.7
 for <minios-devel@lists.xenproject.org>; Wed, 22 Apr 2020 03:58:37 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=mime-version:references:in-reply-to:from:date:message-id:subject:to
 :cc; bh=pyOPIndjtsUKu9uEs+FKyCR5J9cTLFieryBOfjFB5Tg=;
 b=Aqe3IBNJlExKH3mLwJoO/lwMpxXmhz7zCb0nlSnop34g1wZx3Ol1REIp3fhor7qWHK
 dZelldtN2LPohMVO3eSoZgB+GzgqBYlGLX2WsjpcvKrA8iptBSM7opqyL+hOHJiG+cBW
 Czw8XE/D0H9bvdVV4+fnDyQbgFxw+0X6sFV8EsxqCXRdvcLEKIst7VOWDaSvjtI/2BrQ
 VcdfxH32srzMI0a8mS7kXQ9XqskSc6RnBbzWbpNn2tWY/fM2FZPZ1HkyNn0ltqbs93uP
 7eRUJQSlBDgLcOCSdM2E7f8bW8hlftXARmdS/vCxC+9Iuog5KXpffV+jUQwIb5aK8acI
 SPdA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:mime-version:references:in-reply-to:from:date
 :message-id:subject:to:cc;
 bh=pyOPIndjtsUKu9uEs+FKyCR5J9cTLFieryBOfjFB5Tg=;
 b=VurfiMUv6BhlKz+DMHEsZBA+IIA7ufUmCikIzfzz5BfKCAsZt2wdhgxwB0rI9tDWdw
 P5Gn5E7IUqtYDQq06o5sJx/P6RWrRELXz7P4N5GOcGoUqfp3V9lWDXO4JeSfDG+9o07o
 3V/FBwYoKR68DKp6WwfL5sdbD1OxQCmAEzQ8WOwaAoiVNkGNUpLIjFAqNtTZhrd2yQfD
 dO2sdRJWG37e7ILmgHHNndVog7qL/38VmVKYckLxUbQgYBeZie8mqtjRwryxa/In7M8N
 vMLjTpCH4ZA9f3LvDK+y5ev04Y+9Ej83gMAM5Al25Jo8PbcKKGYjELCU6Gmnsi79Z7fQ
 ouSg==
X-Gm-Message-State: AGi0PuaTcuNggtfYrUoLcOSFfezIYBC1B7xcCSGDcx6LdTsTO6bj5lA/
 Q0cVDvbMfZzjHweU7swDy/wDKpImXXNTEUg/TBHO9/BReSs=
X-Google-Smtp-Source: APiQypJWIjB7u/3Um/LzUpLnzmVATPiXzXHH8Lv2Yw7fGYelFdqLN8w/Hr0nYMIGg/7f5s+kMXtS03BAefTBrCKfrz0=
X-Received: by 2002:a0c:c603:: with SMTP id v3mr7494183qvi.82.1587553117078;
 Wed, 22 Apr 2020 03:58:37 -0700 (PDT)
MIME-Version: 1.0
References: <20200421185050.10087-1-murarugeorgec@gmail.com>
In-Reply-To: <20200421185050.10087-1-murarugeorgec@gmail.com>
From: George-Cristian Muraru <murarugeorgec@gmail.com>
Date: Wed, 22 Apr 2020 13:58:26 +0300
Message-ID: <CAEbyvw5X8fk5GDuPRFWe_fMi4RMzDPnpwYsmUapDsyDGi1VwdA@mail.gmail.com>
Subject: Re: [UNIKRAFT/LIBFFT2D PATCH v2 0/1]
To: minios-devel@lists.xenproject.org
Content-Type: multipart/alternative; boundary="0000000000009b0ad905a3df0342"
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

--0000000000009b0ad905a3df0342
Content-Type: text/plain; charset="UTF-8"

This series can be ignored because Felipe already sent a patch with the fix.

On Tue, Apr 21, 2020 at 9:50 PM George Muraru <murarugeorgec@gmail.com>
wrote:

> Changes since v1:
> * Set Dimension 2 as default
>
> George Muraru (1):
>   Add dimension 2 default
>
>  Config.uk | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> --
> 2.17.1
>
>

--0000000000009b0ad905a3df0342
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">This series can be ignored because Felipe already sent a p=
atch with the fix.<br></div><br><div class=3D"gmail_quote"><div dir=3D"ltr"=
 class=3D"gmail_attr">On Tue, Apr 21, 2020 at 9:50 PM George Muraru &lt;<a =
href=3D"mailto:murarugeorgec@gmail.com">murarugeorgec@gmail.com</a>&gt; wro=
te:<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px =
0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Changes sinc=
e v1:<br>
* Set Dimension 2 as default<br>
<br>
George Muraru (1):<br>
=C2=A0 Add dimension 2 default<br>
<br>
=C2=A0Config.uk | 2 +-<br>
=C2=A01 file changed, 1 insertion(+), 1 deletion(-)<br>
<br>
-- <br>
2.17.1<br>
<br>
</blockquote></div>

--0000000000009b0ad905a3df0342--


From minios-devel-bounces@lists.xenproject.org Wed Apr 22 12:30:11 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 22 Apr 2020 12:30:11 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1jREW0-0006rO-97; Wed, 22 Apr 2020 12:30:08 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=GA2G=6G=gmail.com=murarugeorgec@srs-us1.protection.inumbo.net>)
 id 1jREVz-0006mq-41
 for minios-devel@lists.xen.org; Wed, 22 Apr 2020 12:30:07 +0000
X-Inumbo-ID: ff5197ee-8494-11ea-83d8-bc764e2007e4
Received: from mail-qk1-x732.google.com (unknown [2607:f8b0:4864:20::732])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id ff5197ee-8494-11ea-83d8-bc764e2007e4;
 Wed, 22 Apr 2020 12:30:06 +0000 (UTC)
Received: by mail-qk1-x732.google.com with SMTP id l25so2121488qkk.3
 for <minios-devel@lists.xen.org>; Wed, 22 Apr 2020 05:30:06 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=mime-version:references:in-reply-to:from:date:message-id:subject:to
 :cc; bh=L1sbKmqZ7D44LmXEWnzsTPNXaJ/GtLLbJYMKQ/csjaI=;
 b=KSyjgDIVp4rOz5Dogr8qINvK7cnXOOe9LFGxyx+7Xt9aknOUAN0h7zffPtDCimLxaq
 6czJ9zwdIwdO3N06JYMPxth+/m/roQqunpIfM5tZfwGUgE/61TOfbxK0kKe1yx/NGceO
 LWORb8X5kp1GOFQP9AjXrxeW6J+5BqaqTKZOKtPMSEPfmYiZu3pdHGZ6bm6DHm4caNof
 bfFNb4E+TY7uoE/sjJ9yVXJshhT7rPWxSZmZo8mFvVOQyGoMPzkESlaYQQbsydEG0wSv
 ejzJuA2N6WMCyYtO8NAcnvpDutSz9is7qAu3Co0Bbq2lPi0WQFNO9+n1WJ5AR73sGULj
 NxRg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:mime-version:references:in-reply-to:from:date
 :message-id:subject:to:cc;
 bh=L1sbKmqZ7D44LmXEWnzsTPNXaJ/GtLLbJYMKQ/csjaI=;
 b=NjBd0JMpmFpFSmuP2Tv48c2X8ADxXwkWD6d1EVK2+g8Fm+W1aayrOCDhY94+UDBn6A
 hjW7g7xuPvYA1YR8SJWNxBkp9UViSIkHeBMHsziNNeicf6yCWCRyuv87TqvVCf1YCxSK
 OJYFngVC0TAWzVJFSkf/EnSbtmhxjuM7gClkjWjhfd14PGBu2bfCyhLQKpcJAvO3Ltaw
 G8p//sj5pdstCLvUXhW1tvAqr+3zO2UITk9pm6xcsTTv/6zjtOkzJFHCrKLG0uDkWWW9
 rszqHNdodhz0W3ZBb+YUQetTlPpseW7f6RM4j01sKTXN0jNGdozHcvwaW3W8zjwsDvBu
 5plw==
X-Gm-Message-State: AGi0PuabRAsxeupmOAokai8w5tAPp1PBI3u63GbiizbGNNFeVo5Gu7nw
 yqc1wiMLTtLJaDutb2gYAI2+YIv7R9CmvnWgvOJZgTym52Q=
X-Google-Smtp-Source: APiQypI4KcFplMS9kI6xxgvTwB5j/sKDCpb4IvkYTdwZHWEsEXBc7bhEwR2MsQOxSuMfoJextehEF//arGHNXlXV4OY=
X-Received: by 2002:a37:5004:: with SMTP id e4mr26015469qkb.18.1587558605843; 
 Wed, 22 Apr 2020 05:30:05 -0700 (PDT)
MIME-Version: 1.0
References: <20200417201956.23569-1-felipe.huici@neclab.eu>
In-Reply-To: <20200417201956.23569-1-felipe.huici@neclab.eu>
From: George-Cristian Muraru <murarugeorgec@gmail.com>
Date: Wed, 22 Apr 2020 15:29:54 +0300
Message-ID: <CAEbyvw5FPEXkQDTYS_29pCwhVdhLjftRYj3UzM_QZH+mZ91U8Q@mail.gmail.com>
Subject: Re: [UNIKRAFT/GEMMLOWP PATCH] Add supress flags for cleaner builds.
To: Felipe Huici <felipe.huici@neclab.eu>
Content-Type: multipart/alternative; boundary="000000000000c2f2b605a3e04adb"
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

--000000000000c2f2b605a3e04adb
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

>
> +LIBGEMMLOWP_SUPPRESS_FLAGS +=3D -Wno-sign-compare
> +LIBGEMMLOWP_CFLAGS-y +=3D $(LIBGEMMLOWP_SUPPRESS_FLAGS)
> +LIBGEMMLOWP_CXXFLAGS-y +=3D $(LIBGEMMLOWP_SUPPRESS_FLAGS)
>

Hey Felipe. Thank you for the upgrade!

Another warning sign that I had while testing was this this one:
"/main.cpp: In function =E2=80=98void gemmlowp::test_gemm_impl(typename
GemmWrapper::Context*,
const LhsType&, const RhsType&, ResultType*, int, int, int, int, int, int)=
=E2=80=99:
apps/app-gemmlowp/main.cpp:434:48: warning: typedef =E2=80=98BitDepthParams=
=E2=80=99
locally defined but not used [-Wunused-local-typedefs]
"
Maybe we can also add the *-Wunused-local-typedefs* into the SUPPRESS_FLAGS=
?

--000000000000c2f2b605a3e04adb
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr"><div class=3D"gmail_quot=
e"><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;bord=
er-left:1px solid rgb(204,204,204);padding-left:1ex">+LIBGEMMLOWP_SUPPRESS_=
FLAGS +=3D -Wno-sign-compare<br>
+LIBGEMMLOWP_CFLAGS-y +=3D $(LIBGEMMLOWP_SUPPRESS_FLAGS)<br>
+LIBGEMMLOWP_CXXFLAGS-y +=3D $(LIBGEMMLOWP_SUPPRESS_FLAGS)<br></blockquote>=
<div><br></div><div>Hey Felipe. Thank you for the upgrade!</div><div><br></=
div><div>Another warning sign that I had while testing was this this one:</=
div><div>&quot;/main.cpp: In function =E2=80=98void gemmlowp::test_gemm_imp=
l(typename GemmWrapper::Context*,</div><div>const LhsType&amp;, const RhsTy=
pe&amp;, ResultType*, int, int, int, int, int, int)=E2=80=99:</div>apps/app=
-gemmlowp/main.cpp:434:48: warning: typedef =E2=80=98BitDepthParams=E2=80=
=99</div><div class=3D"gmail_quote">locally defined but not used [-Wunused-=
local-typedefs]<br><div>&quot;=C2=A0</div><div>Maybe we can also add the <i=
>-Wunused-local-typedefs</i>=C2=A0into the SUPPRESS_FLAGS?</div></div></div=
>
</div>
</div>

--000000000000c2f2b605a3e04adb--


From minios-devel-bounces@lists.xenproject.org Thu Apr 23 03:34:53 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 23 Apr 2020 03:34:53 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1jRSdV-0006T2-Vg; Thu, 23 Apr 2020 03:34:49 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=QB6S=6H=gmail.com=murarugeorgec@srs-us1.protection.inumbo.net>)
 id 1jRSdU-0006Sx-Oc
 for minios-devel@lists.xen.org; Thu, 23 Apr 2020 03:34:48 +0000
X-Inumbo-ID: 60c5663a-8513-11ea-83d8-bc764e2007e4
Received: from mail-qk1-x742.google.com (unknown [2607:f8b0:4864:20::742])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 60c5663a-8513-11ea-83d8-bc764e2007e4;
 Thu, 23 Apr 2020 03:34:46 +0000 (UTC)
Received: by mail-qk1-x742.google.com with SMTP id b188so3387016qkd.9
 for <minios-devel@lists.xen.org>; Wed, 22 Apr 2020 20:34:46 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=mime-version:references:in-reply-to:from:date:message-id:subject:to
 :cc; bh=bzmh8Uhpb8AAuVubGlnHkUeeU07+oLP6V8oBEcag6PM=;
 b=CvZfPTvVVccYdYuz7evmsNZp49IXn4vn7JpOisYLDNSNSerG/JaaQhi+9eubIPZ5YU
 76C3DoFfZ8C193tRveyLtiv6LXK2mss41DOpoiwfOW44XqIo/MMFM9ZejaFkXMbeVwQM
 2GgmKszDpt3oOfCYFXkzddXaH2orhAN/Q7Yu0pak/MPtg5JhyYuCPPelIZD2RE/cj3DB
 kYcEFWfXsoC1Pmr94e4n0YbqhXXQYkusyuwMeLQnpiZTz/1JTIxCrtLNd7awwR4nPgnm
 y/0y5+zY9lYD0mYm/LxmJZroH2+KeJTJ/zt+G2t+AiniZCD6vyPQZmmB+d0wuG82Npp6
 VgcA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:mime-version:references:in-reply-to:from:date
 :message-id:subject:to:cc;
 bh=bzmh8Uhpb8AAuVubGlnHkUeeU07+oLP6V8oBEcag6PM=;
 b=uZNwbjW+w5NEzUq/61GQTV5IxwkerWItFDJ/fRPUVeDgNPJ4qswMKdYDxBornYkjN6
 szc77cMuP5jQ8R2l9tGUtR3n+MhrcvyVAt8g1+up76QCsXbMkevvaxuO7fWlEEoxlVBw
 risTxxnwVyueb8iTdg2p88FF1E2BwjnFIOlvUcazwcGEflhxEoDmCA1sBww232PNx0Aw
 QikX93uwcPRV29bnq3BRU8qZmXS7fb2z28b2/Mde4gOTgTd3b7wvptZ2SZeYZ4eT7xIo
 92WfQw0pxXTJIj4YrKLYg28UmfkFsjmi/Pdu7gTtryyPYyZJuW03XUSkn+9VUnP4/Fz2
 sdtw==
X-Gm-Message-State: AGi0Pua1pchUb8yolAgHN7TpCcAayjdHDGfOVEfPdtpywP8qblPgMpUo
 20+2cU1EUrKIMMmtIZznHbDOyERugOe3Fm0KjsXJ9oja5us=
X-Google-Smtp-Source: APiQypJ2Syy8oRHfAC4iQhF5LYfLfEpaWnFG57TQ5iNGJ6KUJ7ZyoyGkE+xUax69rgMpQmWiSS7xrU0upMiO2VjixO4=
X-Received: by 2002:a37:a0c7:: with SMTP id j190mr1459733qke.461.1587612884917; 
 Wed, 22 Apr 2020 20:34:44 -0700 (PDT)
MIME-Version: 1.0
References: <20200417202846.24963-1-felipe.huici@neclab.eu>
In-Reply-To: <20200417202846.24963-1-felipe.huici@neclab.eu>
From: George-Cristian Muraru <murarugeorgec@gmail.com>
Date: Thu, 23 Apr 2020 06:34:34 +0300
Message-ID: <CAEbyvw7Qws0PP521oo+YFxCLbm=ubhAOKbyY-sLinGnF2i3=kw@mail.gmail.com>
Subject: Re: [UNIKRAFT/LIBFFT2D PATCH] Set default "dimension" menu option to
 2, as needed by tflite.
To: Felipe Huici <felipe.huici@neclab.eu>
Content-Type: multipart/alternative; boundary="0000000000000be14105a3ecee76"
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

--0000000000000be14105a3ecee76
Content-Type: text/plain; charset="UTF-8"

Hey Felipe,

It looks ok, but I do not know why in the link from patchwork[1] it looks
like "default" should be indented with one more space.

[1] https://patchwork.unikraft.org/patch/737590/

On Fri, Apr 17, 2020 at 11:29 PM Felipe Huici <felipe.huici@neclab.eu>
wrote:

> There is no practical way to programmatically set a choice option in
> kConfig, so we set the default value to 2, as needed by TensorFlow
> Lite. We also add suppress flags for cleaner builds.
>
> Signed-off-by: Felipe Huici <felipe.huici@neclab.eu
> ---
>  Config.uk   |  3 ++-
>  Makefile.uk | 10 ++++++++--
>  2 files changed, 10 insertions(+), 3 deletions(-)
>
> diff --git a/Config.uk b/Config.uk
> index 73f6b2e..58aeaf1 100644
> --- a/Config.uk
> +++ b/Config.uk
> @@ -1,5 +1,5 @@
>  menuconfig LIBFFT2D
> -    bool "Fast Fourier Transform library"
> +    bool "libff2td - Fast Fourier Transform library"
>      select LIBUNWIND
>      select LIBCOMPILER-RT
>      select LIBCXX
> @@ -11,6 +11,7 @@ menuconfig LIBFFT2D
>  if LIBFFT2D
>      choice DIMENSION
>          prompt "DIMENSION"
> +       default LIBFFT2D_2D
>
>          config LIBFFT2D_1D
>              bool "1"
> diff --git a/Makefile.uk b/Makefile.uk
> index 3a00071..412319f 100644
> --- a/Makefile.uk
> +++ b/Makefile.uk
> @@ -49,9 +49,15 @@ LIBFFT2D_SRC=$(LIBFFT2D_ORIGIN)/$(LIBFFT2D_SUBDIR)
>
>  ################################################################################
>  # Library includes
>
>  ################################################################################
> -CXXINCLUDES-$(CONFIG_LIBFFT2D) += -I$(LIBFFT2D_SRC)/
> +CXXINCLUDES-$(CONFIG_LIBFFT2D) += -I$(LIBFFT2D_SRC)
> +CINCLUDES-$(CONFIG_LIBFFT2D) += -I$(LIBFFT2D_SRC)
>
> -CINCLUDES-$(CONFIG_LIBFFT2D) += -I$(LIBFFT2D_SRC)/
>
> +################################################################################
> +# Global flags
>
> +################################################################################
> +LIBFFT2D_SUPPRESS_FLAGS += -Wno-unused-parameter
> +LIBFFT2D_CFLAGS-y += $(LIBFFT2D_SUPPRESS_FLAGS)
> +LIBFFT2D_CXXFLAGS-y += $(LIBFFT2D_SUPPRESS_FLAGS)
>
>
>  ################################################################################
>  # Library sources
> --
> 2.20.1
>
>
>

--0000000000000be14105a3ecee76
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Hey Felipe,<div><br></div><div>It looks ok, but I do not k=
now why in the link from patchwork[1] it looks</div><div>like &quot;default=
&quot; should be indented with one more space.</div><div><br></div><div>[1]=
=C2=A0<a href=3D"https://patchwork.unikraft.org/patch/737590/">https://patc=
hwork.unikraft.org/patch/737590/</a></div></div><br><div class=3D"gmail_quo=
te"><div dir=3D"ltr" class=3D"gmail_attr">On Fri, Apr 17, 2020 at 11:29 PM =
Felipe Huici &lt;<a href=3D"mailto:felipe.huici@neclab.eu">felipe.huici@nec=
lab.eu</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"m=
argin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left=
:1ex">There is no practical way to programmatically set a choice option in<=
br>
kConfig, so we set the default value to 2, as needed by TensorFlow<br>
Lite. We also add suppress flags for cleaner builds.<br>
<br>
Signed-off-by: Felipe Huici &lt;<a href=3D"mailto:felipe.huici@neclab.eu" t=
arget=3D"_blank">felipe.huici@neclab.eu</a><br>
---<br>
=C2=A0Config.uk=C2=A0 =C2=A0|=C2=A0 3 ++-<br>
=C2=A0Makefile.uk | 10 ++++++++--<br>
=C2=A02 files changed, 10 insertions(+), 3 deletions(-)<br>
<br>
diff --git a/Config.uk b/Config.uk<br>
index 73f6b2e..58aeaf1 100644<br>
--- a/Config.uk<br>
+++ b/Config.uk<br>
@@ -1,5 +1,5 @@<br>
=C2=A0menuconfig LIBFFT2D<br>
-=C2=A0 =C2=A0 bool &quot;Fast Fourier Transform library&quot;<br>
+=C2=A0 =C2=A0 bool &quot;libff2td - Fast Fourier Transform library&quot;<b=
r>
=C2=A0 =C2=A0 =C2=A0select LIBUNWIND<br>
=C2=A0 =C2=A0 =C2=A0select LIBCOMPILER-RT<br>
=C2=A0 =C2=A0 =C2=A0select LIBCXX<br>
@@ -11,6 +11,7 @@ menuconfig LIBFFT2D<br>
=C2=A0if LIBFFT2D<br>
=C2=A0 =C2=A0 =C2=A0choice DIMENSION<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0prompt &quot;DIMENSION&quot;<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0default LIBFFT2D_2D<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0config LIBFFT2D_1D<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0bool &quot;1&quot;<br>
diff --git a/Makefile.uk b/Makefile.uk<br>
index 3a00071..412319f 100644<br>
--- a/Makefile.uk<br>
+++ b/Makefile.uk<br>
@@ -49,9 +49,15 @@ LIBFFT2D_SRC=3D$(LIBFFT2D_ORIGIN)/$(LIBFFT2D_SUBDIR)<br>
=C2=A0#####################################################################=
###########<br>
=C2=A0# Library includes<br>
=C2=A0#####################################################################=
###########<br>
-CXXINCLUDES-$(CONFIG_LIBFFT2D) +=3D -I$(LIBFFT2D_SRC)/<br>
+CXXINCLUDES-$(CONFIG_LIBFFT2D) +=3D -I$(LIBFFT2D_SRC)<br>
+CINCLUDES-$(CONFIG_LIBFFT2D) +=3D -I$(LIBFFT2D_SRC)<br>
<br>
-CINCLUDES-$(CONFIG_LIBFFT2D) +=3D -I$(LIBFFT2D_SRC)/<br>
+##########################################################################=
######<br>
+# Global flags<br>
+##########################################################################=
######<br>
+LIBFFT2D_SUPPRESS_FLAGS +=3D -Wno-unused-parameter<br>
+LIBFFT2D_CFLAGS-y +=3D $(LIBFFT2D_SUPPRESS_FLAGS)<br>
+LIBFFT2D_CXXFLAGS-y +=3D $(LIBFFT2D_SUPPRESS_FLAGS)<br>
<br>
=C2=A0#####################################################################=
###########<br>
=C2=A0# Library sources<br>
-- <br>
2.20.1<br>
<br>
<br>
</blockquote></div>

--0000000000000be14105a3ecee76--


From minios-devel-bounces@lists.xenproject.org Fri Apr 24 19:54:13 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 24 Apr 2020 19:54:13 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1jS4Op-0000po-I8; Fri, 24 Apr 2020 19:54:11 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=HGuu=6I=gmail.com=felipehuici@srs-us1.protection.inumbo.net>)
 id 1jS4Oo-0000pj-0A
 for minios-devel@lists.xen.org; Fri, 24 Apr 2020 19:54:10 +0000
X-Inumbo-ID: 5ca4a914-8665-11ea-b58d-bc764e2007e4
Received: from mail-ua1-x943.google.com (unknown [2607:f8b0:4864:20::943])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 5ca4a914-8665-11ea-b58d-bc764e2007e4;
 Fri, 24 Apr 2020 19:54:09 +0000 (UTC)
Received: by mail-ua1-x943.google.com with SMTP id c17so10722700uae.12
 for <minios-devel@lists.xen.org>; Fri, 24 Apr 2020 12:54:09 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=mime-version:references:in-reply-to:from:date:message-id:subject:to
 :cc; bh=oUAPv4fRhhdZUiwZMc5/FIrb1bEX/2ARZ9vdwFyHA6A=;
 b=pNHr7NRwzlvwdcHG/p5m+fAehtVWG3PTL1hUZxDR+MGeP8Y1p/JSKCt6C1HOzwnmdW
 s2Bfzu5O/qlCpReHp5r0uJ9phJrnIGwaK8B3YzlCEdz/NcjbXT2GV/PJMF0wwteNx7cB
 N3ppwHhM2veXCl1lsv2algndo55HhoPhZDLTk56Rl4W29sHMvgjJ+x2L65Tdercj7CIo
 B9LRqmDbmI77ohY7A4KDVW0dtr/0f1X6O4pz9hZNUsIaA1/1ivjM4ouV8REUtDQhuPms
 E7paBVjXZBy9CG0xlUYGEfQG2gsLSYAKBZepsxYbQu5pSJZQhHwAg8wMkzvpjMuYKyOz
 LsSQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:mime-version:references:in-reply-to:from:date
 :message-id:subject:to:cc;
 bh=oUAPv4fRhhdZUiwZMc5/FIrb1bEX/2ARZ9vdwFyHA6A=;
 b=apJvH3LTPTy3HprzTZnUwLqgePGXHUfe9EViKEsxmiSVDQVzGGH1G3HFD5X8uibXuP
 Z+khw2RoT/0vnoc7rwlrE5dzLYTOWfPq8o1e0pOTxQ3p6DMg/2SPGRKiS3XsFJHzjCdR
 s+HYkziLmcPqmsMdYwH3grHJvWh2axUBYvYvbEq5UULMqASab6Rstv+XhyxU5gX3IoA3
 WeO8Rd3nliKrn2YjUUpUqfNBiyAFVA/81WZM8E9T0OxBbgMgJc/6oe63qIq6ekRDlvHu
 i/BxtU1K1EfTzsVMa9QzbO4+hza1KLqt/LKl5s8xqCw9AOa4g/vNX9e/9M2bZd1/wW3K
 Bx7Q==
X-Gm-Message-State: AGi0PuaGyC0sw94CKsaFPFf+tjL/8jwnAJcaTN/CI38sb4P4IKILzbOk
 /l/vHlNVSUNyWqIjpddol8lJEg5fGJIXgYzUmYCbKeCG
X-Google-Smtp-Source: APiQypK2hfUNwarzTZ7tsptm+jsi6BUF5whnQlLrQoq4VeSkWBju87AyjtsUd9NHdrwjn/wGEhE+pgV7uqK6YruFP4Q=
X-Received: by 2002:a67:f60b:: with SMTP id k11mr9512073vso.17.1587758048880; 
 Fri, 24 Apr 2020 12:54:08 -0700 (PDT)
MIME-Version: 1.0
References: <20200417202315.24133-1-felipe.huici@neclab.eu>
In-Reply-To: <20200417202315.24133-1-felipe.huici@neclab.eu>
From: "felipehuici ." <felipehuici@gmail.com>
Date: Fri, 24 Apr 2020 21:53:57 +0200
Message-ID: <CAEX4t-NTYgzZ8PPkSLZEEODVnCs7=qP5cou5Gc8M8=A=b9zpDA@mail.gmail.com>
Subject: Re: [UNIKRAFT/EIGEN PATCH] Prevent kludgeoning by barrier macro.
To: Felipe Huici <felipe.huici@neclab.eu>
Content-Type: text/plain; charset="UTF-8"
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Hi,

Please ignore this patch, the error was a result of my local set up.

Thanks,

-- Felipe

On Fri, Apr 17, 2020 at 10:23 PM Felipe Huici <felipe.huici@neclab.eu> wrote:
>
> Add patch to prevent the definition of the macro "barrier" in lcpu.h
> from kludgeoning the use of the word barrier in eigen code.
>
> Signed-off-by: Felipe Huici <felipe.huici@neclab.eu
> ---
>  patches/0002-prevent-barrier-macro-code-kludge.patch | 10 ++++++++++
>  1 file changed, 10 insertions(+)
>  create mode 100644 patches/0002-prevent-barrier-macro-code-kludge.patch
>
> diff --git a/patches/0002-prevent-barrier-macro-code-kludge.patch b/patches/0002-prevent-barrier-macro-code-kludge.patch
> new file mode 100644
> index 0000000..0b3fe78
> --- /dev/null
> +++ b/patches/0002-prevent-barrier-macro-code-kludge.patch
> @@ -0,0 +1,10 @@
> +--- a/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceThreadPool.h      2020-04-17 17:13:19.072796790 +0200
> ++++ b/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceThreadPool.h      2021-04-17 17:13:41.800543414 +0200
> +@@ -98,6 +98,7 @@
> +       const char* src_ptr = static_cast<const char*>(src);
> +       char* dst_ptr = static_cast<char*>(dst);
> +       const size_t blocksize = (n + (num_threads - 1)) / num_threads;
> ++#undef barrier
> +       Barrier barrier(static_cast<int>(num_threads - 1));
> +       // Launch the last 3 blocks on worker threads.
> +       for (size_t i = 1; i < num_threads; ++i) {
> --
> 2.20.1
>
>


From minios-devel-bounces@lists.xenproject.org Mon Apr 27 05:28:39 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 27 Apr 2020 05:28:39 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1jSwJp-0007ba-B5; Mon, 27 Apr 2020 05:28:37 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=r22v=6L=gmail.com=murarugeorgec@srs-us1.protection.inumbo.net>)
 id 1jSwJn-0007bN-Tp
 for minios-devel@lists.xen.org; Mon, 27 Apr 2020 05:28:35 +0000
X-Inumbo-ID: f08d1ec0-8847-11ea-ae69-bc764e2007e4
Received: from mail-qk1-x741.google.com (unknown [2607:f8b0:4864:20::741])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id f08d1ec0-8847-11ea-ae69-bc764e2007e4;
 Mon, 27 Apr 2020 05:28:35 +0000 (UTC)
Received: by mail-qk1-x741.google.com with SMTP id j4so16856525qkc.11
 for <minios-devel@lists.xen.org>; Sun, 26 Apr 2020 22:28:34 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=mime-version:references:in-reply-to:from:date:message-id:subject:to
 :cc; bh=sk2S9Gm78RDFFgA5qY5oKxuAzpFfCqL62ep/+YLliOk=;
 b=YquWk9D/6AwHgQhGs9G3+R8JkRZX3McNCnq/soKeYBE7V76l1IO0HuVRKfTWqp2d5j
 e103fk7nYHpPbYlzFV1FY/PoLAN2xvqAuqp1IAKEgAF5LODMe24/aeKgbBcVh5AL8a3N
 xYpolUUfTXQuck5LqUnOf/XUywehtq0+usu7O1p4RyFMWQgErzSD0v9iyuBJ3lIOi+0k
 6SsDze4Ke84l+w7BlcRCE8jGvzVzw1Yr7KecO7Nl9acNdfbKZUO3HJiMgx9xqk/p61Mu
 iKYQKcfnjymmALRyGLRhSyA3eZpz1sAUXbJ/LgO7E+zphH2Tsz4IIZEVmT3cMuaamfi/
 K0OQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:mime-version:references:in-reply-to:from:date
 :message-id:subject:to:cc;
 bh=sk2S9Gm78RDFFgA5qY5oKxuAzpFfCqL62ep/+YLliOk=;
 b=neNAPflxKVSO1vOLPyJJtVs49lsS0yYFKQAo83wZmEC1u6A22n6qH5r5lRprYIWCLF
 foNjZXYl0O6aMs8s7iBh69B5KUNPpfSuak9ywvAI2F2LGCCMlZK97vjkJPb38JjGJ7Jq
 AMWc0kACs8iJ7VrMSByiaqu41veQh0sgFnAMBkJl6Cg/FikwNtbTNzfcS543H/CeZqZp
 c+OS65qS1cqoAhebEBJzWmfRuu3MCTmKX2TvPTI+e4niQjsSDMv0TEcSwkuJE19dIReR
 J0nFBw8iIyd6hMvVV1WR0o1vT3FqOQyttTnI1jBf205Rm0Gcswq6sJPcIANSaBrugnQw
 GXsA==
X-Gm-Message-State: AGi0PuaYWNOi18ToKWLMwgbngc48y6bk5D5zKlJ2Oa6iw9cN18Xkjae8
 gCI6Je8A7Z+8ocGMfEMNX5jJce31rPmF93artG7ZpE4brDY=
X-Google-Smtp-Source: APiQypK0673u3KoNj7F4uHq1/OkE5bLMF0FkQpM/JOOYhLAHTP0p3JK133VxFhVmMfcrxnSYB05EU9fb5xdcJcJGJEQ=
X-Received: by 2002:a37:47c3:: with SMTP id
 u186mr19000568qka.117.1587965314472; 
 Sun, 26 Apr 2020 22:28:34 -0700 (PDT)
MIME-Version: 1.0
References: <20200417202846.24963-1-felipe.huici@neclab.eu>
 <CAEbyvw7Qws0PP521oo+YFxCLbm=ubhAOKbyY-sLinGnF2i3=kw@mail.gmail.com>
In-Reply-To: <CAEbyvw7Qws0PP521oo+YFxCLbm=ubhAOKbyY-sLinGnF2i3=kw@mail.gmail.com>
From: George-Cristian Muraru <murarugeorgec@gmail.com>
Date: Mon, 27 Apr 2020 08:28:23 +0300
Message-ID: <CAEbyvw6R12sU4fa5rdxQUt6QGg7rnGLMJrjWgqJibQ4pGb0+Xw@mail.gmail.com>
Subject: Re: [UNIKRAFT/LIBFFT2D PATCH] Set default "dimension" menu option to
 2, as needed by tflite.
To: Felipe Huici <felipe.huici@neclab.eu>
Content-Type: multipart/alternative; boundary="0000000000007c211e05a43efcda"
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

--0000000000007c211e05a43efcda
Content-Type: text/plain; charset="UTF-8"

Hey Felipe, looks good!

There is a minor thing (I think), the "default" text seems like it should
be indented with one more space.
This can be fixed while upstreaming!

Reviewed-by: George Muraru <murarugeorgec@gmail.com>

On Thu, Apr 23, 2020 at 6:34 AM George-Cristian Muraru <
murarugeorgec@gmail.com> wrote:

> Hey Felipe,
>
> It looks ok, but I do not know why in the link from patchwork[1] it looks
> like "default" should be indented with one more space.
>
> [1] https://patchwork.unikraft.org/patch/737590/
>
> On Fri, Apr 17, 2020 at 11:29 PM Felipe Huici <felipe.huici@neclab.eu>
> wrote:
>
>> There is no practical way to programmatically set a choice option in
>> kConfig, so we set the default value to 2, as needed by TensorFlow
>> Lite. We also add suppress flags for cleaner builds.
>>
>> Signed-off-by: Felipe Huici <felipe.huici@neclab.eu
>> ---
>>  Config.uk   |  3 ++-
>>  Makefile.uk | 10 ++++++++--
>>  2 files changed, 10 insertions(+), 3 deletions(-)
>>
>> diff --git a/Config.uk b/Config.uk
>> index 73f6b2e..58aeaf1 100644
>> --- a/Config.uk
>> +++ b/Config.uk
>> @@ -1,5 +1,5 @@
>>  menuconfig LIBFFT2D
>> -    bool "Fast Fourier Transform library"
>> +    bool "libff2td - Fast Fourier Transform library"
>>      select LIBUNWIND
>>      select LIBCOMPILER-RT
>>      select LIBCXX
>> @@ -11,6 +11,7 @@ menuconfig LIBFFT2D
>>  if LIBFFT2D
>>      choice DIMENSION
>>          prompt "DIMENSION"
>> +       default LIBFFT2D_2D
>>
>>          config LIBFFT2D_1D
>>              bool "1"
>> diff --git a/Makefile.uk b/Makefile.uk
>> index 3a00071..412319f 100644
>> --- a/Makefile.uk
>> +++ b/Makefile.uk
>> @@ -49,9 +49,15 @@ LIBFFT2D_SRC=$(LIBFFT2D_ORIGIN)/$(LIBFFT2D_SUBDIR)
>>
>>  ################################################################################
>>  # Library includes
>>
>>  ################################################################################
>> -CXXINCLUDES-$(CONFIG_LIBFFT2D) += -I$(LIBFFT2D_SRC)/
>> +CXXINCLUDES-$(CONFIG_LIBFFT2D) += -I$(LIBFFT2D_SRC)
>> +CINCLUDES-$(CONFIG_LIBFFT2D) += -I$(LIBFFT2D_SRC)
>>
>> -CINCLUDES-$(CONFIG_LIBFFT2D) += -I$(LIBFFT2D_SRC)/
>>
>> +################################################################################
>> +# Global flags
>>
>> +################################################################################
>> +LIBFFT2D_SUPPRESS_FLAGS += -Wno-unused-parameter
>> +LIBFFT2D_CFLAGS-y += $(LIBFFT2D_SUPPRESS_FLAGS)
>> +LIBFFT2D_CXXFLAGS-y += $(LIBFFT2D_SUPPRESS_FLAGS)
>>
>>
>>  ################################################################################
>>  # Library sources
>> --
>> 2.20.1
>>
>>
>>

--0000000000007c211e05a43efcda
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Hey Felipe, looks good!<div><br></div><div>There is a mino=
r thing (I think), the &quot;default&quot; text seems like it should</div><=
span class=3D"gmail-im" style=3D"color:rgb(80,0,80)"><div>be indented with =
one more space.</div></span><div>This can be fixed while upstreaming!<br><d=
iv><br></div><div>Reviewed-by: George Muraru &lt;<a href=3D"mailto:muraruge=
orgec@gmail.com" target=3D"_blank">murarugeorgec@gmail.com</a>&gt;</div></d=
iv></div><br><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_att=
r">On Thu, Apr 23, 2020 at 6:34 AM George-Cristian Muraru &lt;<a href=3D"ma=
ilto:murarugeorgec@gmail.com">murarugeorgec@gmail.com</a>&gt; wrote:<br></d=
iv><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;bord=
er-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr">Hey F=
elipe,<div><br></div><div>It looks ok, but I do not know why in the link fr=
om patchwork[1] it looks</div><div>like &quot;default&quot; should be inden=
ted with one more space.</div><div><br></div><div>[1]=C2=A0<a href=3D"https=
://patchwork.unikraft.org/patch/737590/" target=3D"_blank">https://patchwor=
k.unikraft.org/patch/737590/</a></div></div><br><div class=3D"gmail_quote">=
<div dir=3D"ltr" class=3D"gmail_attr">On Fri, Apr 17, 2020 at 11:29 PM Feli=
pe Huici &lt;<a href=3D"mailto:felipe.huici@neclab.eu" target=3D"_blank">fe=
lipe.huici@neclab.eu</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quo=
te" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204=
);padding-left:1ex">There is no practical way to programmatically set a cho=
ice option in<br>
kConfig, so we set the default value to 2, as needed by TensorFlow<br>
Lite. We also add suppress flags for cleaner builds.<br>
<br>
Signed-off-by: Felipe Huici &lt;<a href=3D"mailto:felipe.huici@neclab.eu" t=
arget=3D"_blank">felipe.huici@neclab.eu</a><br>
---<br>
=C2=A0Config.uk=C2=A0 =C2=A0|=C2=A0 3 ++-<br>
=C2=A0Makefile.uk | 10 ++++++++--<br>
=C2=A02 files changed, 10 insertions(+), 3 deletions(-)<br>
<br>
diff --git a/Config.uk b/Config.uk<br>
index 73f6b2e..58aeaf1 100644<br>
--- a/Config.uk<br>
+++ b/Config.uk<br>
@@ -1,5 +1,5 @@<br>
=C2=A0menuconfig LIBFFT2D<br>
-=C2=A0 =C2=A0 bool &quot;Fast Fourier Transform library&quot;<br>
+=C2=A0 =C2=A0 bool &quot;libff2td - Fast Fourier Transform library&quot;<b=
r>
=C2=A0 =C2=A0 =C2=A0select LIBUNWIND<br>
=C2=A0 =C2=A0 =C2=A0select LIBCOMPILER-RT<br>
=C2=A0 =C2=A0 =C2=A0select LIBCXX<br>
@@ -11,6 +11,7 @@ menuconfig LIBFFT2D<br>
=C2=A0if LIBFFT2D<br>
=C2=A0 =C2=A0 =C2=A0choice DIMENSION<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0prompt &quot;DIMENSION&quot;<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0default LIBFFT2D_2D<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0config LIBFFT2D_1D<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0bool &quot;1&quot;<br>
diff --git a/Makefile.uk b/Makefile.uk<br>
index 3a00071..412319f 100644<br>
--- a/Makefile.uk<br>
+++ b/Makefile.uk<br>
@@ -49,9 +49,15 @@ LIBFFT2D_SRC=3D$(LIBFFT2D_ORIGIN)/$(LIBFFT2D_SUBDIR)<br>
=C2=A0#####################################################################=
###########<br>
=C2=A0# Library includes<br>
=C2=A0#####################################################################=
###########<br>
-CXXINCLUDES-$(CONFIG_LIBFFT2D) +=3D -I$(LIBFFT2D_SRC)/<br>
+CXXINCLUDES-$(CONFIG_LIBFFT2D) +=3D -I$(LIBFFT2D_SRC)<br>
+CINCLUDES-$(CONFIG_LIBFFT2D) +=3D -I$(LIBFFT2D_SRC)<br>
<br>
-CINCLUDES-$(CONFIG_LIBFFT2D) +=3D -I$(LIBFFT2D_SRC)/<br>
+##########################################################################=
######<br>
+# Global flags<br>
+##########################################################################=
######<br>
+LIBFFT2D_SUPPRESS_FLAGS +=3D -Wno-unused-parameter<br>
+LIBFFT2D_CFLAGS-y +=3D $(LIBFFT2D_SUPPRESS_FLAGS)<br>
+LIBFFT2D_CXXFLAGS-y +=3D $(LIBFFT2D_SUPPRESS_FLAGS)<br>
<br>
=C2=A0#####################################################################=
###########<br>
=C2=A0# Library sources<br>
-- <br>
2.20.1<br>
<br>
<br>
</blockquote></div>
</blockquote></div>

--0000000000007c211e05a43efcda--


From minios-devel-bounces@lists.xenproject.org Mon Apr 27 05:29:58 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 27 Apr 2020 05:29:58 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1jSwL8-0007fj-Fd; Mon, 27 Apr 2020 05:29:58 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=r22v=6L=gmail.com=murarugeorgec@srs-us1.protection.inumbo.net>)
 id 1jSwL7-0007fb-V6
 for minios-devel@lists.xen.org; Mon, 27 Apr 2020 05:29:57 +0000
X-Inumbo-ID: 21cc2af8-8848-11ea-9887-bc764e2007e4
Received: from mail-qv1-xf34.google.com (unknown [2607:f8b0:4864:20::f34])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 21cc2af8-8848-11ea-9887-bc764e2007e4;
 Mon, 27 Apr 2020 05:29:57 +0000 (UTC)
Received: by mail-qv1-xf34.google.com with SMTP id p13so7918181qvt.12
 for <minios-devel@lists.xen.org>; Sun, 26 Apr 2020 22:29:57 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=mime-version:references:in-reply-to:from:date:message-id:subject:to
 :cc; bh=fi9QwhcAE1X4TYOoZmArs+3LbN2TDxgkTHsefQqBo9U=;
 b=N58zPoi2uuxihts7SLesXTC4PSSgQWhpdjMNolO/fGuDxDhdXPBN6Z26ehERwCTR5l
 bbhuBLpEY5n69wBTYV3R1Zgr0N28X/GPf7T+oJzPvJjHnEz0fBJq86vvlqfmCXIyFv+Z
 OdPUq2hmmNZjOED0KA66Skn0h2ukpqyottAWHL1bpKTxQptrl2Q6hy3dgeIhL/7NJAGM
 Is9Uyscsf2PtS/cGWrQBNBw0o8CZigWSGKUsSRl5AQ5Hr2EO2IitroFu31H2YQE4xrzk
 bOuBWlM3mJwEzO0fJ2FyBLBkK/eyWVnsYfA91Lw9Zgsnmy925RGT3hsTorHOkt+WMpVk
 cceg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:mime-version:references:in-reply-to:from:date
 :message-id:subject:to:cc;
 bh=fi9QwhcAE1X4TYOoZmArs+3LbN2TDxgkTHsefQqBo9U=;
 b=fjuV1+BS9h/ukrClrf21WsXV8+92Nvvr61OTvih/zMYKV3Moh3L7GOHTCQvtDkQyLw
 UQGOG5BK3MmA9tFmyMP2TX/Vtizd05VpZ/Fi0O2XZlxwwJRsxEaawNX2WUcKaaXOhcuj
 XhvcpisjOYUkPgTsxswco+ZstEVxvrxc7LkUym8Bc0RPBHefpS15m9cU3zRAJDbsumiF
 Af5qKdO6n62TwDLst2A8D/nytEXM8wgE1mhxCuTCLgke01MfUgGm62Wl7CZ93/UE0XdP
 DNIpEC5JtOkj8+13VeD+Z/hUYt2Os7c9Kj2nxwYRj5/x9EkXVpy+vPouwhn0ED0kc98Q
 8N+g==
X-Gm-Message-State: AGi0PuYXyx5U91OisTC1cSOUEzowDqyw2Kx4ERVdT7AXQnUYOn4rh9ZU
 SkirhcI0IoJDFTzRbwRoMwI4KWzLBwRr9x9ORSKOhuOR
X-Google-Smtp-Source: APiQypKRSc1eE4p69sAYwTdrc5MSPhHWxfZMuyiJGRyuonfFlU155MPQsPWJTyC3aJ9a0jVU0+mN5ZB68NmP0pB3SEo=
X-Received: by 2002:a05:6214:414:: with SMTP id
 z20mr13600987qvx.242.1587965397114; 
 Sun, 26 Apr 2020 22:29:57 -0700 (PDT)
MIME-Version: 1.0
References: <20200417201956.23569-1-felipe.huici@neclab.eu>
 <CAEbyvw5FPEXkQDTYS_29pCwhVdhLjftRYj3UzM_QZH+mZ91U8Q@mail.gmail.com>
In-Reply-To: <CAEbyvw5FPEXkQDTYS_29pCwhVdhLjftRYj3UzM_QZH+mZ91U8Q@mail.gmail.com>
From: George-Cristian Muraru <murarugeorgec@gmail.com>
Date: Mon, 27 Apr 2020 08:29:46 +0300
Message-ID: <CAEbyvw4inrKhms1s7ZY6rVqHDcsoZSejT1=Cg8x1_ZHoDrvVUQ@mail.gmail.com>
Subject: Re: [UNIKRAFT/GEMMLOWP PATCH] Add supress flags for cleaner builds.
To: Felipe Huici <felipe.huici@neclab.eu>
Content-Type: multipart/alternative; boundary="00000000000069239605a43f012b"
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

--00000000000069239605a43f012b
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Reviewed-by: George Muraru <murarugeorgec@gmail.com>

On Wed, Apr 22, 2020 at 3:29 PM George-Cristian Muraru <
murarugeorgec@gmail.com> wrote:

> +LIBGEMMLOWP_SUPPRESS_FLAGS +=3D -Wno-sign-compare
>> +LIBGEMMLOWP_CFLAGS-y +=3D $(LIBGEMMLOWP_SUPPRESS_FLAGS)
>> +LIBGEMMLOWP_CXXFLAGS-y +=3D $(LIBGEMMLOWP_SUPPRESS_FLAGS)
>>
>
> Hey Felipe. Thank you for the upgrade!
>
> Another warning sign that I had while testing was this this one:
> "/main.cpp: In function =E2=80=98void gemmlowp::test_gemm_impl(typename
> GemmWrapper::Context*,
> const LhsType&, const RhsType&, ResultType*, int, int, int, int, int,
> int)=E2=80=99:
> apps/app-gemmlowp/main.cpp:434:48: warning: typedef =E2=80=98BitDepthPara=
ms=E2=80=99
> locally defined but not used [-Wunused-local-typedefs]
> "
> Maybe we can also add the *-Wunused-local-typedefs* into the
> SUPPRESS_FLAGS?
>

--00000000000069239605a43f012b
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Reviewed-by: George Muraru &lt;<a href=3D"mailto:murarugeo=
rgec@gmail.com">murarugeorgec@gmail.com</a>&gt;</div><br><div class=3D"gmai=
l_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Wed, Apr 22, 2020 at 3:29=
 PM George-Cristian Muraru &lt;<a href=3D"mailto:murarugeorgec@gmail.com">m=
urarugeorgec@gmail.com</a>&gt; wrote:<br></div><blockquote class=3D"gmail_q=
uote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,2=
04);padding-left:1ex"><div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr"><d=
iv class=3D"gmail_quote"><blockquote class=3D"gmail_quote" style=3D"margin:=
0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">=
+LIBGEMMLOWP_SUPPRESS_FLAGS +=3D -Wno-sign-compare<br>
+LIBGEMMLOWP_CFLAGS-y +=3D $(LIBGEMMLOWP_SUPPRESS_FLAGS)<br>
+LIBGEMMLOWP_CXXFLAGS-y +=3D $(LIBGEMMLOWP_SUPPRESS_FLAGS)<br></blockquote>=
<div><br></div><div>Hey Felipe. Thank you for the upgrade!</div><div><br></=
div><div>Another warning sign that I had while testing was this this one:</=
div><div>&quot;/main.cpp: In function =E2=80=98void gemmlowp::test_gemm_imp=
l(typename GemmWrapper::Context*,</div><div>const LhsType&amp;, const RhsTy=
pe&amp;, ResultType*, int, int, int, int, int, int)=E2=80=99:</div>apps/app=
-gemmlowp/main.cpp:434:48: warning: typedef =E2=80=98BitDepthParams=E2=80=
=99</div><div class=3D"gmail_quote">locally defined but not used [-Wunused-=
local-typedefs]<br><div>&quot;=C2=A0</div><div>Maybe we can also add the <i=
>-Wunused-local-typedefs</i>=C2=A0into the SUPPRESS_FLAGS?</div></div></div=
>
</div>
</div>
</blockquote></div>

--00000000000069239605a43f012b--


From minios-devel-bounces@lists.xenproject.org Mon Apr 27 07:54:38 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 27 Apr 2020 07:54:38 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1jSyb7-0003hd-1F; Mon, 27 Apr 2020 07:54: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.92) (envelope-from
 <SRS0=S7B6=6L=ens-lyon.org=samuel.thibault@srs-us1.protection.inumbo.net>)
 id 1jSyb6-0003hV-Ew
 for minios-devel@lists.xenproject.org; Mon, 27 Apr 2020 07:54:36 +0000
X-Inumbo-ID: 54033638-885c-11ea-9745-12813bfff9fa
Received: from hera.aquilenet.fr (unknown [185.233.100.1])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 54033638-885c-11ea-9745-12813bfff9fa;
 Mon, 27 Apr 2020 07:54:32 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by hera.aquilenet.fr (Postfix) with ESMTP id 2AFA8CEF9;
 Mon, 27 Apr 2020 09:54:31 +0200 (CEST)
X-Virus-Scanned: Debian amavisd-new at aquilenet.fr
Received: from hera.aquilenet.fr ([127.0.0.1])
 by localhost (hera.aquilenet.fr [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id nw7wnHQHPFDg; Mon, 27 Apr 2020 09:54:30 +0200 (CEST)
Received: from function (lfbn-bor-1-797-11.w86-234.abo.wanadoo.fr
 [86.234.239.11])
 by hera.aquilenet.fr (Postfix) with ESMTPSA id 49EB5C9D2;
 Mon, 27 Apr 2020 09:54:30 +0200 (CEST)
Received: from samy by function with local (Exim 4.93)
 (envelope-from <samuel.thibault@ens-lyon.org>)
 id 1jSyaz-006Sd2-B3; Mon, 27 Apr 2020 09:54:29 +0200
Date: Mon, 27 Apr 2020 09:54:29 +0200
From: Samuel Thibault <samuel.thibault@ens-lyon.org>
To: Jason Andryuk <jandryuk@gmail.com>
Subject: Re: [PATCH] mini-os: Avoid segfaults in tc{g,s}etattr
Message-ID: <20200427075429.mshevnm2ype7tq32@function>
Mail-Followup-To: Samuel Thibault <samuel.thibault@ens-lyon.org>,
 Jason Andryuk <jandryuk@gmail.com>,
 minios-devel@lists.xenproject.org, xen-devel@lists.xenproject.org
References: <20200427034019.6251-1-jandryuk@gmail.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20200427034019.6251-1-jandryuk@gmail.com>
Organization: I am not organized
User-Agent: NeoMutt/20170609 (1.8.3)
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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.xenproject.org, xen-devel@lists.xenproject.org
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Jason Andryuk, le dim. 26 avril 2020 23:40:19 -0400, a ecrit:
> Commit c96c22f1d94 "mini-os: minimal implementations of some termios
> functions" introduced implementations of tcgetattr and tcsetattr.
> However, they do not check if files[fildes].cons.dev is non-NULL before
> dereferencing.  This is not a problem for FDs allocated through
> alloc_fd, but the files array pre-allocates FDs 0-2 for stdio.  Those
> entries have a NULL .dev, so tc{g,s}etattr on them segfault.
> 
> ioemu-stubdom segfaults when term_init() calls tcgetattr on FD 0.
> 
> Restore tcgetattr and tcsetattr behavior when .dev is NULL equivalent to
> unsupported_function as it was before c96c22f1d94.
> 
> Signed-off-by: Jason Andryuk <jandryuk@gmail.com>

Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>

Thanks!

> ---
> I can't get ioemu-stubdom to start without this.  With this, the guest
> just reboots immediately, but it does that with a non-stubdom
> device_model_version="qemu-xen-traditional" .  The same guest disk image
> (cirros 0.5.1) boots with a linux stubdom or non-stubdom Ubuntu
> qemu-system-x86_64.
> 
>  lib/sys.c | 10 ++++++++++
>  1 file changed, 10 insertions(+)
> 
> diff --git a/lib/sys.c b/lib/sys.c
> index da434fc..c6a7b9f 100644
> --- a/lib/sys.c
> +++ b/lib/sys.c
> @@ -1472,6 +1472,11 @@ int tcsetattr(int fildes, int action, const struct termios *tios)
>              return -1;
>      }
>  
> +    if (files[fildes].cons.dev == NULL) {
> +        errno = ENOSYS;
> +        return -1;
> +    }
> +
>      if (tios->c_oflag & OPOST)
>          files[fildes].cons.dev->is_raw = false;
>      else
> @@ -1492,6 +1497,11 @@ int tcgetattr(int fildes, struct termios *tios)
>          return -1;
>      }
>  
> +    if (files[fildes].cons.dev == NULL) {
> +        errno = ENOSYS;
> +        return 0;
> +    }
> +
>      if (tios == NULL) {
>          errno = EINVAL;
>          return -1;
> -- 
> 2.20.1
> 


From minios-devel-bounces@lists.xenproject.org Mon Apr 27 13:31:08 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 27 Apr 2020 13:31:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1jT3ql-0002v8-AJ; Mon, 27 Apr 2020 13:31:07 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=UCaW=6L=gmail.com=jandryuk@srs-us1.protection.inumbo.net>)
 id 1jT3qj-0002uM-Np
 for minios-devel@lists.xenproject.org; Mon, 27 Apr 2020 13:31:05 +0000
X-Inumbo-ID: 5795514e-888b-11ea-ae69-bc764e2007e4
Received: from mail-lj1-x241.google.com (unknown [2a00:1450:4864:20::241])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 5795514e-888b-11ea-ae69-bc764e2007e4;
 Mon, 27 Apr 2020 13:31:04 +0000 (UTC)
Received: by mail-lj1-x241.google.com with SMTP id g4so17600294ljl.2;
 Mon, 27 Apr 2020 06:31:04 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=mime-version:references:in-reply-to:from:date:message-id:subject:to;
 bh=BXSutSaL3U/QnQdOrk5RMz1W2afQvWJhycyk5uFYBlM=;
 b=cvTxq3G4KceguELJwbfuu230la5pvZXWBu0Gv/apJ2gdqILROr6K9DZp0zfXNeAXa2
 JEtmNvVyiG06eOnPrR6brRKzW9cWhejvFJnYzjVwB8xBHuUm2t7LpTCLOifTI5GeXkhO
 P00N2RS+YFJBF7UrP68MqPb4QOX2HiRG7yYBE3+LeDNCbBAEKUtUFgEe0bHWv68vJvlu
 EKMa5zoG2w4JVARl8o9ratVthIix2U4M1m22ySNCp5s4nbMNj2Oy01uMaNEEemFF2iVS
 L7mfYDlHXaUX9pk5kaHMchDRmZM+y4QZy9sQqY0ZWCm5fW28fy56d8xaYI2tkaH8jTz5
 Ii8w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:mime-version:references:in-reply-to:from:date
 :message-id:subject:to;
 bh=BXSutSaL3U/QnQdOrk5RMz1W2afQvWJhycyk5uFYBlM=;
 b=nx3zayfSoeMlMKnk20VrMONA2u7AJgagDVra19H+QxbU8AMixzIMuCzuqp583RuhhV
 /rMY5WKqnJAmnVzb5j+Q8OVNOvZklx4qpbZH2sRwjG5YxwxUXtT4RnidWMKLeRsLvjxO
 GspfSr8bIZW7v+X9PUCDKpG/peMbqf7wZLQsxkmCKxlXv9bhKrVbFQfTBWos0eN7MJjO
 mwcTnN9UH/C5x0c4XNrRz6Kj2VigQ1V94ioOog80l3zskw5X4klWpvXbFh5laitaaFM4
 /xtrl2CRn3eOxQggpH2ecxe7/HN5iAJjl6zy59/dr6SePkrdoH4AtZW+UNAjkgEL37PL
 qNyQ==
X-Gm-Message-State: AGi0Pua0Msr+hhyojxArl0Httch+5HrtF+cXjkwtfGHcryuLOSr/K0do
 lQSdZnT84oVesGkyGCSkWh3nZEsfb5juryy9nFk=
X-Google-Smtp-Source: APiQypIG26yA+2Qnkf7imCJP1+eUS2LoVzIzaMi4JkV0OYpff/hgrOAP+MlEppppFo3QPXwTCgb+m2V+IuRVz8yqE5k=
X-Received: by 2002:a05:651c:1055:: with SMTP id
 x21mr11562351ljm.210.1587994263334; 
 Mon, 27 Apr 2020 06:31:03 -0700 (PDT)
MIME-Version: 1.0
References: <20200427034019.6251-1-jandryuk@gmail.com>
 <20200427075429.mshevnm2ype7tq32@function>
In-Reply-To: <20200427075429.mshevnm2ype7tq32@function>
From: Jason Andryuk <jandryuk@gmail.com>
Date: Mon, 27 Apr 2020 09:30:50 -0400
Message-ID: <CAKf6xpuh3v0H-22=7y83ioYsm2GnKOs+FO8nN2s3djXanUL9BQ@mail.gmail.com>
Subject: Re: [PATCH] mini-os: Avoid segfaults in tc{g,s}etattr
To: Samuel Thibault <samuel.thibault@ens-lyon.org>,
 Jason Andryuk <jandryuk@gmail.com>, 
 minios-devel@lists.xenproject.org, xen-devel <xen-devel@lists.xenproject.org>
Content-Type: text/plain; charset="UTF-8"
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

On Mon, Apr 27, 2020 at 3:54 AM Samuel Thibault
<samuel.thibault@ens-lyon.org> wrote:
>
> Jason Andryuk, le dim. 26 avril 2020 23:40:19 -0400, a ecrit:
> > Commit c96c22f1d94 "mini-os: minimal implementations of some termios
> > functions" introduced implementations of tcgetattr and tcsetattr.
> > However, they do not check if files[fildes].cons.dev is non-NULL before
> > dereferencing.  This is not a problem for FDs allocated through
> > alloc_fd, but the files array pre-allocates FDs 0-2 for stdio.  Those
> > entries have a NULL .dev, so tc{g,s}etattr on them segfault.
> >
> > ioemu-stubdom segfaults when term_init() calls tcgetattr on FD 0.
> >
> > Restore tcgetattr and tcsetattr behavior when .dev is NULL equivalent to
> > unsupported_function as it was before c96c22f1d94.
> >
> > Signed-off-by: Jason Andryuk <jandryuk@gmail.com>
>
> Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
>
> Thanks!

Thank you!

> > ---
> > I can't get ioemu-stubdom to start without this.  With this, the guest
> > just reboots immediately, but it does that with a non-stubdom
> > device_model_version="qemu-xen-traditional" .  The same guest disk image
> > (cirros 0.5.1) boots with a linux stubdom or non-stubdom Ubuntu
> > qemu-system-x86_64.

Ubuntu gcc-9 adds -fcf-protection by default.  Somehow that flag
caused rombios (I think) to restart.  Setting -fcf-protection=none
like below (probably just the EMBEDDED_EXTRA_CFLAGS part) lets rombios
start properly.  The hypervisor needs it as well via
EXTRA_CFLAGS_XEN_CORE=-fcf-protection=none and maybe also added to
xen/arch/x86/boot/build32.mk .

diff --git a/Config.mk b/Config.mk
index 0f303c79b2..efb3d42bc4 100644
--- a/Config.mk
+++ b/Config.mk
@@ -205,6 +205,7 @@ APPEND_CFLAGS += $(foreach i, $(APPEND_INCLUDES), -I$(i))

 EMBEDDED_EXTRA_CFLAGS := -nopie -fno-stack-protector -fno-stack-protector-all
 EMBEDDED_EXTRA_CFLAGS += -fno-exceptions
+EMBEDDED_EXTRA_CFLAGS += -fcf-protection=none

 XEN_EXTFILES_URL ?= http://xenbits.xen.org/xen-extfiles
 # All the files at that location were downloaded from elsewhere on
diff --git a/tools/firmware/Rules.mk b/tools/firmware/Rules.mk
index 26bbddccd4..0d33514d53 100644
--- a/tools/firmware/Rules.mk
+++ b/tools/firmware/Rules.mk
@@ -17,3 +17,4 @@ $(call cc-options-add,CFLAGS,CC,$(EMBEDDED_EXTRA_CFLAGS))

 # Extra CFLAGS suitable for an embedded type of environment.
 CFLAGS += -fno-builtin -msoft-float
+CFLAGS += -fcf-protection=none


From minios-devel-bounces@lists.xenproject.org Mon Apr 27 13:56:55 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 27 Apr 2020 13:56:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1jT4Fh-0005AW-6f; Mon, 27 Apr 2020 13:56: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.92) (envelope-from
 <SRS0=HkKC=6L=uliege.be=gaulthier.gain@srs-us1.protection.inumbo.net>)
 id 1jT4Fe-0005AQ-TX
 for minios-devel@lists.xenproject.org; Mon, 27 Apr 2020 13:56:52 +0000
X-Inumbo-ID: f01a7f22-888e-11ea-9796-12813bfff9fa
Received: from serv108.segi.ulg.ac.be (unknown [139.165.32.111])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id f01a7f22-888e-11ea-9796-12813bfff9fa;
 Mon, 27 Apr 2020 13:56:48 +0000 (UTC)
Received: from sauron.run.montefiore.ulg.ac.be
 (sauron.run.montefiore.ulg.ac.be [139.165.223.31])
 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
 (No client certificate requested)
 by serv108.segi.ulg.ac.be (Postfix) with ESMTPSA id 08CCF2018735;
 Mon, 27 Apr 2020 15:56:48 +0200 (CEST)
DKIM-Filter: OpenDKIM Filter v2.11.0 serv108.segi.ulg.ac.be 08CCF2018735
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=uliege.be;
 s=ulg20190529; t=1587995808;
 bh=Gp/C7cw3cISu8AOovx6NC43MpQRC39uyLg5SNw9LqwM=;
 h=From:To:Cc:Subject:Date:From;
 b=nEf5LGI8+yVEznJWWXXsYFLCYCoDiVd6RItbkM7zODn1gVBifcvfoqIIbgsCs0py7
 28kWuVrlf+MbSbkW9Bzug0ZCk0SXpkJu1aii3A5J+OMobf6yF/mG53i5EXTX9/mMC1
 ccLI6W1K3xT0yVKr5y3WH1uS42baWUf+h50UWw6Um1KuGVHV8llDA5JQetShMo5Ote
 ThUcV4yJarzYgyM0TcAo9aD07/erum2uXM2riPy4HcPvmiayssjRias6HCAxjPwjQc
 v4VGbvjac29VfVrG9HlMbUw6UxMBwzdqq3B7vZDSwnJ1EoYIxaWJP0OOwQVNUyp6j7
 av8MvudzXsaqA==
From: gaulthier.gain@uliege.be
To: minios-devel@lists.xenproject.org
Subject: [UNIKRAFT/LIB-PCRE V2] Makefile.uk: Update symbolic link generation
Date: Mon, 27 Apr 2020 13:56:38 +0000
Message-Id: <20200427135638.28690-1-gaulthier.gain@uliege.be>
X-Mailer: git-send-email 2.17.1
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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, gaulthier gain <gaulthier.gain@uliege.be>,
 costin.lupu@cs.pub.ro
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

From: gaulthier gain <gaulthier.gain@uliege.be>

During the creation of the "pcre_chartables.c" symlink, an error
can appear if the file already exists. This patch fixes this issue
by adding the -f option which removes existing destination files.

Changes v2:
- In addition, we also updated the label with "HOSTLN".

Signed-off-by: gaulthier gain <gaulthier.gain@uliege.be>
---
 Makefile.uk | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/Makefile.uk b/Makefile.uk
index fee51c8..0444c7d 100644
--- a/Makefile.uk
+++ b/Makefile.uk
@@ -122,8 +122,8 @@ $(LIBPCRE_EXTRACTED)/config.status: $(LIBPCRE_BUILD)/.origin
 
 # Create pcre_chartables.c symlink
 $(LIBPCRE_EXTRACTED)/pcre_chartables.c: $(LIBPCRE_EXTRACTED)/config.status
-	$(call verbose_cmd,LINK,libpcre: $(notdir $@), \
-		cd $(LIBPCRE_EXTRACTED) && ln -s pcre_chartables.c.dist $@)
+	$(call verbose_cmd,HOSTLN,libpcre: $(notdir $@), \
+		cd $(LIBPCRE_EXTRACTED) && ln -fs pcre_chartables.c.dist $@)
 
 LIBPCRE_PREPARED_DEPS = \
 	$(LIBPCRE_EXTRACTED)/config.status \
-- 
2.17.1



From minios-devel-bounces@lists.xenproject.org Mon Apr 27 14:42:27 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 27 Apr 2020 14:42:27 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1jT4xk-0001dZ-VU; Mon, 27 Apr 2020 14:42:24 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=UCaW=6L=gmail.com=jandryuk@srs-us1.protection.inumbo.net>)
 id 1jSudI-0005Ve-2y
 for minios-devel@lists.xenproject.org; Mon, 27 Apr 2020 03:40:36 +0000
X-Inumbo-ID: d76de5aa-8838-11ea-b07b-bc764e2007e4
Received: from mail-qt1-x842.google.com (unknown [2607:f8b0:4864:20::842])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id d76de5aa-8838-11ea-b07b-bc764e2007e4;
 Mon, 27 Apr 2020 03:40:30 +0000 (UTC)
Received: by mail-qt1-x842.google.com with SMTP id x12so12688149qts.9;
 Sun, 26 Apr 2020 20:40:30 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=from:to:cc:subject:date:message-id:mime-version
 :content-transfer-encoding;
 bh=971x6VUzt76Bct6RLVEpnOoU0De5EYNxXyo8sYPzQmE=;
 b=fJZ7kZcKJtbBfe+iCziz8YSJaX/kV2w5DHb9qqvwqgk1Jn720L80bLQjqwGd/vN8jP
 cj9n/WXlDZwl2w3dztFuFEFrZ8nmSHWSWJSGAweaFJGsFFj1rcQ6d3iUFuEzJ8hz6TD5
 bGGlB+vwZxJvo+nAq6zyIwveQ6mCBZ287E3f2o/Pvb+J2Ql0Tn2xa9FfvvT5QeDXO2mN
 GfL3YTSvLpq3CQuhNlQPxFq9W54E6FzvncFhUF5newECjprdK4lRbz9ybMsizFcek3ZP
 2jwlDIKkmK+NTwYI2L645CsCCJVFC3MerFLnmRLrV9idFrX3ao6OcOo2wdI73VDK3FHr
 2aqw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version
 :content-transfer-encoding;
 bh=971x6VUzt76Bct6RLVEpnOoU0De5EYNxXyo8sYPzQmE=;
 b=C2ZI4/+EhTLuMrS8IT880oPir38geKdVTZdv4OaNjWSgfndereRBldrbE0LJ5eS/pm
 2Ew8xkOnTeenwMqgPk9bfIcbWkoVqqf13PQ6WPjq36D4L6A8KwtfyWThTI5wIWYhwd8J
 t6pNszIiFm/CfouAyj+WK4eQmAR8/qh2q3BL6WuTUptJp9dIVm+OKO0p50K79x+4wtGK
 6zz12Y1fXh5Bv4hv4NxsotiNaofU5qlqeGNbcVrrBsAji0mWyEcjAugPfduJaBXGB2US
 MS/PtDtsxsLOA1g19VK9CZ6qbvd4LxEKvrt6+0NbMNk4NbVb4Wu/kbVWRBAC8lPx+Hmc
 IHrg==
X-Gm-Message-State: AGi0PubXH2R+h+qa4tTH4PaVQ3cGps22p6NuesaMt1vHNq081uUe08mz
 SBIlH2T+5sf2q7c0Tn+zEv7CeOl7
X-Google-Smtp-Source: APiQypJt0895FDL4vWX46DmjCi786MaTYClG+nR3fpMeXWIF2T9Ni/vZsZAjRQ6qkVOyoPVXvl1A1g==
X-Received: by 2002:ac8:108b:: with SMTP id a11mr21431996qtj.173.1587958829051; 
 Sun, 26 Apr 2020 20:40:29 -0700 (PDT)
Received: from shine.lan ([2001:470:8:67e:d026:4ef9:a4d0:cab2])
 by smtp.gmail.com with ESMTPSA id d4sm9421866qtc.48.2020.04.26.20.40.27
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Sun, 26 Apr 2020 20:40:28 -0700 (PDT)
From: Jason Andryuk <jandryuk@gmail.com>
To: minios-devel@lists.xenproject.org,
	xen-devel@lists.xenproject.org
Subject: [PATCH] mini-os: Avoid segfaults in tc{g,s}etattr
Date: Sun, 26 Apr 2020 23:40:19 -0400
Message-Id: <20200427034019.6251-1-jandryuk@gmail.com>
X-Mailer: git-send-email 2.20.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Mailman-Approved-At: Mon, 27 Apr 2020 14:42:24 +0000
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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: samuel.thibault@ens-lyon.org, Jason Andryuk <jandryuk@gmail.com>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Commit c96c22f1d94 "mini-os: minimal implementations of some termios
functions" introduced implementations of tcgetattr and tcsetattr.
However, they do not check if files[fildes].cons.dev is non-NULL before
dereferencing.  This is not a problem for FDs allocated through
alloc_fd, but the files array pre-allocates FDs 0-2 for stdio.  Those
entries have a NULL .dev, so tc{g,s}etattr on them segfault.

ioemu-stubdom segfaults when term_init() calls tcgetattr on FD 0.

Restore tcgetattr and tcsetattr behavior when .dev is NULL equivalent to
unsupported_function as it was before c96c22f1d94.

Signed-off-by: Jason Andryuk <jandryuk@gmail.com>
---
I can't get ioemu-stubdom to start without this.  With this, the guest
just reboots immediately, but it does that with a non-stubdom
device_model_version="qemu-xen-traditional" .  The same guest disk image
(cirros 0.5.1) boots with a linux stubdom or non-stubdom Ubuntu
qemu-system-x86_64.

 lib/sys.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/lib/sys.c b/lib/sys.c
index da434fc..c6a7b9f 100644
--- a/lib/sys.c
+++ b/lib/sys.c
@@ -1472,6 +1472,11 @@ int tcsetattr(int fildes, int action, const struct termios *tios)
             return -1;
     }
 
+    if (files[fildes].cons.dev == NULL) {
+        errno = ENOSYS;
+        return -1;
+    }
+
     if (tios->c_oflag & OPOST)
         files[fildes].cons.dev->is_raw = false;
     else
@@ -1492,6 +1497,11 @@ int tcgetattr(int fildes, struct termios *tios)
         return -1;
     }
 
+    if (files[fildes].cons.dev == NULL) {
+        errno = ENOSYS;
+        return 0;
+    }
+
     if (tios == NULL) {
         errno = EINVAL;
         return -1;
-- 
2.20.1



From minios-devel-bounces@lists.xenproject.org Tue Apr 28 11:16:59 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 28 Apr 2020 11:16:59 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1jTOES-0003FA-JH; Tue, 28 Apr 2020 11:16: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.92) (envelope-from
 <SRS0=v0V7=6M=gmail.com=wei.liu.xen@srs-us1.protection.inumbo.net>)
 id 1jTOEQ-0003F1-RS
 for minios-devel@lists.xenproject.org; Tue, 28 Apr 2020 11:16:54 +0000
X-Inumbo-ID: c03122bc-8941-11ea-984c-12813bfff9fa
Received: from mail-wr1-f65.google.com (unknown [209.85.221.65])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id c03122bc-8941-11ea-984c-12813bfff9fa;
 Tue, 28 Apr 2020 11:16:48 +0000 (UTC)
Received: by mail-wr1-f65.google.com with SMTP id k13so24203800wrw.7;
 Tue, 28 Apr 2020 04:16:48 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:date:from:to:cc:subject:message-id:references
 :mime-version:content-disposition:in-reply-to:user-agent;
 bh=3axJ3aVDA0BwPqLJzXtdYrDrS24VN47nr3PXqYGqeqY=;
 b=UOOzMuZqy3GCOAJgFgiTclT8d+tULYqM9tK0xeZgzyvCbxkDMP+RQWlBAh/QXG8BG1
 40vBkG3bekB38+K0wBqqbcsfQSQE2WhZGsWR/xHa+cD774QDMp3guuK0XXI7YYAK1p5B
 KWAtufMVmIZlTjrxpKDj5E2XPqxZW83RDFMPU5hXnHXqgdAORtDJqDoQuTMZ7eNJsAxq
 +BsVqRyQFznT9N95ObyWZmcNuWrws0kr0ZVSydQZubd+4hJzFgG6dSH5C1M6FIvSty7P
 vXSqGDx4sfgXuAPTuy6IoDQ+nN3TxJh+6i40AwDa487U+Xy0a7h4D5HP6cohwAwfGGwc
 9iFA==
X-Gm-Message-State: AGi0PuYsGCHz9tH7HA2V4Huv78rn7nb0DLu8Xxqru1MJN4lRIFEw/Vf+
 quVrBxZmH0KivdDBqY+s9Sw=
X-Google-Smtp-Source: APiQypJ0jQhlL0xNOmLCng7VZBTA6DCBnlDn7QwYj0GOyf2dHr3Q6qBy399GNpj9a4s8d6eboDeYCA==
X-Received: by 2002:a5d:6b89:: with SMTP id n9mr32802147wrx.356.1588072607486; 
 Tue, 28 Apr 2020 04:16:47 -0700 (PDT)
Received: from
 liuwe-devbox-debian-v2.j3c5onc20sse1dnehy4noqpfcg.zx.internal.cloudapp.net
 ([51.145.34.42])
 by smtp.gmail.com with ESMTPSA id e13sm15605383wrp.15.2020.04.28.04.16.46
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 28 Apr 2020 04:16:46 -0700 (PDT)
Date: Tue, 28 Apr 2020 11:16:45 +0000
From: Wei Liu <wl@xen.org>
To: Jason Andryuk <jandryuk@gmail.com>
Subject: Re: [PATCH] mini-os: Avoid segfaults in tc{g,s}etattr
Message-ID: <20200428111645.pa6xfs6t6rifu6fu@liuwe-devbox-debian-v2.j3c5onc20sse1dnehy4noqpfcg.zx.internal.cloudapp.net>
References: <20200427034019.6251-1-jandryuk@gmail.com>
 <20200427075429.mshevnm2ype7tq32@function>
 <CAKf6xpuh3v0H-22=7y83ioYsm2GnKOs+FO8nN2s3djXanUL9BQ@mail.gmail.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <CAKf6xpuh3v0H-22=7y83ioYsm2GnKOs+FO8nN2s3djXanUL9BQ@mail.gmail.com>
User-Agent: NeoMutt/20180716
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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: Wei Liu <wl@xen.org>, Andrew Cooper <andrew.cooper3@citrix.com>,
 minios-devel@lists.xenproject.org, Jan Beulich <JBeulich@suse.com>,
 xen-devel <xen-devel@lists.xenproject.org>,
 Samuel Thibault <samuel.thibault@ens-lyon.org>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

On Mon, Apr 27, 2020 at 09:30:50AM -0400, Jason Andryuk wrote:
> On Mon, Apr 27, 2020 at 3:54 AM Samuel Thibault
> <samuel.thibault@ens-lyon.org> wrote:
> >
> > Jason Andryuk, le dim. 26 avril 2020 23:40:19 -0400, a ecrit:
> > > Commit c96c22f1d94 "mini-os: minimal implementations of some termios
> > > functions" introduced implementations of tcgetattr and tcsetattr.
> > > However, they do not check if files[fildes].cons.dev is non-NULL before
> > > dereferencing.  This is not a problem for FDs allocated through
> > > alloc_fd, but the files array pre-allocates FDs 0-2 for stdio.  Those
> > > entries have a NULL .dev, so tc{g,s}etattr on them segfault.
> > >
> > > ioemu-stubdom segfaults when term_init() calls tcgetattr on FD 0.
> > >
> > > Restore tcgetattr and tcsetattr behavior when .dev is NULL equivalent to
> > > unsupported_function as it was before c96c22f1d94.
> > >
> > > Signed-off-by: Jason Andryuk <jandryuk@gmail.com>
> >
> > Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
> >
> > Thanks!
> 
> Thank you!
> 
> > > ---
> > > I can't get ioemu-stubdom to start without this.  With this, the guest
> > > just reboots immediately, but it does that with a non-stubdom
> > > device_model_version="qemu-xen-traditional" .  The same guest disk image
> > > (cirros 0.5.1) boots with a linux stubdom or non-stubdom Ubuntu
> > > qemu-system-x86_64.
> 
> Ubuntu gcc-9 adds -fcf-protection by default.  Somehow that flag
> caused rombios (I think) to restart.  Setting -fcf-protection=none
> like below (probably just the EMBEDDED_EXTRA_CFLAGS part) lets rombios
> start properly.  The hypervisor needs it as well via
> EXTRA_CFLAGS_XEN_CORE=-fcf-protection=none and maybe also added to
> xen/arch/x86/boot/build32.mk .

Are you able to turn this into a proper patch? I suspect you will need
to test the availability of this new (?) flag.

Also Cc Jan and Andrew because it affects hypervisor build too.

> 
> diff --git a/Config.mk b/Config.mk
> index 0f303c79b2..efb3d42bc4 100644
> --- a/Config.mk
> +++ b/Config.mk
> @@ -205,6 +205,7 @@ APPEND_CFLAGS += $(foreach i, $(APPEND_INCLUDES), -I$(i))
> 
>  EMBEDDED_EXTRA_CFLAGS := -nopie -fno-stack-protector -fno-stack-protector-all
>  EMBEDDED_EXTRA_CFLAGS += -fno-exceptions
> +EMBEDDED_EXTRA_CFLAGS += -fcf-protection=none
> 
>  XEN_EXTFILES_URL ?= http://xenbits.xen.org/xen-extfiles
>  # All the files at that location were downloaded from elsewhere on
> diff --git a/tools/firmware/Rules.mk b/tools/firmware/Rules.mk
> index 26bbddccd4..0d33514d53 100644
> --- a/tools/firmware/Rules.mk
> +++ b/tools/firmware/Rules.mk
> @@ -17,3 +17,4 @@ $(call cc-options-add,CFLAGS,CC,$(EMBEDDED_EXTRA_CFLAGS))
> 
>  # Extra CFLAGS suitable for an embedded type of environment.
>  CFLAGS += -fno-builtin -msoft-float
> +CFLAGS += -fcf-protection=none
> 


From minios-devel-bounces@lists.xenproject.org Tue Apr 28 11:18:51 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 28 Apr 2020 11:18:51 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1jTOGI-0003MS-On; Tue, 28 Apr 2020 11:18: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.92) (envelope-from
 <SRS0=v0V7=6M=gmail.com=wei.liu.xen@srs-us1.protection.inumbo.net>)
 id 1jTOGH-0003MK-Gy
 for minios-devel@lists.xenproject.org; Tue, 28 Apr 2020 11:18:49 +0000
X-Inumbo-ID: 07e3a24c-8942-11ea-984c-12813bfff9fa
Received: from mail-wm1-f66.google.com (unknown [209.85.128.66])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 07e3a24c-8942-11ea-984c-12813bfff9fa;
 Tue, 28 Apr 2020 11:18:48 +0000 (UTC)
Received: by mail-wm1-f66.google.com with SMTP id z6so2424013wml.2;
 Tue, 28 Apr 2020 04:18:48 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:date:from:to:cc:subject:message-id:references
 :mime-version:content-disposition:in-reply-to:user-agent;
 bh=fBwuZ4QzlGUHOQQ5r8cLpSzseKT/A8Yt+G/+bSzTF6E=;
 b=A3WnMMln2VBVGixAR+4iur7IvC8YjxLYf137vjfswSDJGlWsH3AEfVi4PY5BOwWkl7
 RAdEe31q6+HfvMSkggEgcVbZFUsCMHdLXqYV6y0y8Gt08h/Gt+4PfuSlYUxM0l+lrCC2
 Yr7QEhG979QhUPNkJpUq/TIpfddNzl7SZIHRNJEzD1V0sn4J6xODfZarqZ5wU1JQF5SC
 MUG27PlAU8Tc2OLq1df6GIrvuYUBJJiQIj2SjG1QkRJU9FWnRR8kQVnYt2QEoo52Mxig
 fknPZNyX6OYH4r8nUYXt5RyiyFC8bSGE0hgT7z1HUCfFLD7EO/OLO14AksXpnkOdV8Nb
 vmPQ==
X-Gm-Message-State: AGi0PubuidhADGo3cf+DkAoE/3kcw/IuE4xqyU+j3f7umNedZDJMwgdp
 Lq72mdV3Bc3Yw85vE+oZ8RY=
X-Google-Smtp-Source: APiQypJWZwjuZkDC+XnOTrbzKQjlLQTeFTcMngmgsCo5IN4ctQ64OfCibTgjZom76XIVJ865Q5GXbw==
X-Received: by 2002:a1c:7c18:: with SMTP id x24mr3788296wmc.146.1588072727849; 
 Tue, 28 Apr 2020 04:18:47 -0700 (PDT)
Received: from
 liuwe-devbox-debian-v2.j3c5onc20sse1dnehy4noqpfcg.zx.internal.cloudapp.net
 ([51.145.34.42])
 by smtp.gmail.com with ESMTPSA id s14sm3010581wme.33.2020.04.28.04.18.47
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 28 Apr 2020 04:18:47 -0700 (PDT)
Date: Tue, 28 Apr 2020 11:18:45 +0000
From: Wei Liu <wl@xen.org>
To: Samuel Thibault <samuel.thibault@ens-lyon.org>,
 Jason Andryuk <jandryuk@gmail.com>,
 minios-devel@lists.xenproject.org, xen-devel@lists.xenproject.org
Subject: Re: [PATCH] mini-os: Avoid segfaults in tc{g,s}etattr
Message-ID: <20200428111845.ee7373zz7pn3bdc5@liuwe-devbox-debian-v2.j3c5onc20sse1dnehy4noqpfcg.zx.internal.cloudapp.net>
References: <20200427034019.6251-1-jandryuk@gmail.com>
 <20200427075429.mshevnm2ype7tq32@function>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20200427075429.mshevnm2ype7tq32@function>
User-Agent: NeoMutt/20180716
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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: Wei Liu <wl@xen.org>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

On Mon, Apr 27, 2020 at 09:54:29AM +0200, Samuel Thibault wrote:
> Jason Andryuk, le dim. 26 avril 2020 23:40:19 -0400, a ecrit:
> > Commit c96c22f1d94 "mini-os: minimal implementations of some termios
> > functions" introduced implementations of tcgetattr and tcsetattr.
> > However, they do not check if files[fildes].cons.dev is non-NULL before
> > dereferencing.  This is not a problem for FDs allocated through
> > alloc_fd, but the files array pre-allocates FDs 0-2 for stdio.  Those
> > entries have a NULL .dev, so tc{g,s}etattr on them segfault.
> > 
> > ioemu-stubdom segfaults when term_init() calls tcgetattr on FD 0.
> > 
> > Restore tcgetattr and tcsetattr behavior when .dev is NULL equivalent to
> > unsupported_function as it was before c96c22f1d94.
> > 
> > Signed-off-by: Jason Andryuk <jandryuk@gmail.com>
> 
> Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
> 
> Thanks!

Applied. Thanks.


From minios-devel-bounces@lists.xenproject.org Tue Apr 28 11:23:53 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 28 Apr 2020 11:23:53 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1jTOLA-0004Jj-R3; Tue, 28 Apr 2020 11:23: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.92) (envelope-from
 <SRS0=v0V7=6M=gmail.com=wei.liu.xen@srs-us1.protection.inumbo.net>)
 id 1jTOL9-0004Iu-JE
 for minios-devel@lists.xenproject.org; Tue, 28 Apr 2020 11:23:51 +0000
X-Inumbo-ID: bb7bcb86-8942-11ea-984c-12813bfff9fa
Received: from mail-wm1-f67.google.com (unknown [209.85.128.67])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id bb7bcb86-8942-11ea-984c-12813bfff9fa;
 Tue, 28 Apr 2020 11:23:49 +0000 (UTC)
Received: by mail-wm1-f67.google.com with SMTP id u16so2415473wmc.5;
 Tue, 28 Apr 2020 04:23:49 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version
 :content-transfer-encoding;
 bh=CrEIeTB9JLvrBJcFHNug+oMluBW3s7BuIXlpN/mb6aE=;
 b=tw/IHPfSD3J4Y/AwII5qXgvdD5vcAKFLT7GfpBx7XgaQXrNgpkStRDlNAedsAxMWPp
 IRV5+XQzp+LvV+H4iQxVSYIbaDuiam12wF+JGPXWZWPhVSzeQ9Au33Nuyy9WhFtpHKtw
 VhxBViKzVTX0qyEmbTl9Bg7pCGzjtKabTtuibAh/6QEHtjVEG5whQWui010MsPtJs4AY
 OyN678VlvkFSnrrLVGRLt7cw+aef+LYyQ+XlGvyn6+OJIsX2aiAY26d91zj4FwCPtzMO
 DCr2OLj+CehwW/BQUPOUJVO1yeuY5sIJ5I2I+ewcyfq9ZdJb5WnrRtnDrgUsFlk800JM
 WAtQ==
X-Gm-Message-State: AGi0PuYnwXsSicXoMNQVGL2N88po4JY5Pt+xp9STXFDRXYOoO3TWn4/g
 S+2akllt3wm1zaLIUYmEiw07cu5GZT4=
X-Google-Smtp-Source: APiQypLgZ7cCFOMPURfhADdu5tVLrztIKA+SKGQ94G0JDKXnx19Tkt7i0G2ASZR6dlPCRBnAneHiuQ==
X-Received: by 2002:a1c:2e07:: with SMTP id u7mr4077683wmu.74.1588073028875;
 Tue, 28 Apr 2020 04:23:48 -0700 (PDT)
Received: from localhost.localdomain (44.142.6.51.dyn.plus.net. [51.6.142.44])
 by smtp.gmail.com with ESMTPSA id
 h17sm2871913wmm.6.2020.04.28.04.23.47
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 28 Apr 2020 04:23:48 -0700 (PDT)
From: Wei Liu <wl@xen.org>
To: Xen Development List <xen-devel@lists.xenproject.org>
Subject: [PATCH] MAINTAINERS: list myself as mini-os reviewer
Date: Tue, 28 Apr 2020 12:23:46 +0100
Message-Id: <20200428112346.10498-1-wl@xen.org>
X-Mailer: git-send-email 2.20.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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: Stefano Stabellini <sstabellini@kernel.org>, Julien Grall <julien@xen.org>,
 Wei Liu <wl@xen.org>, Andrew Cooper <andrew.cooper3@citrix.com>,
 Ian Jackson <ian.jackson@eu.citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, minios-devel@lists.xenproject.org,
 Jan Beulich <jbeulich@suse.com>,
 Samuel Thibault <samuel.thibault@ens-lyon.org>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

I probably don't have much time to actually review patches, but I do
want to be CC'ed such that I can commit patches in a timely manner.

Signed-off-by: Wei Liu <wl@xen.org>
---
Cc: Samuel Thibault <samuel.thibault@ens-lyon.org>
Cc: minios-devel@lists.xenproject.org
---
 MAINTAINERS | 1 +
 1 file changed, 1 insertion(+)

diff --git a/MAINTAINERS b/MAINTAINERS
index 8a4c869704b0..e3748167550c 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -374,6 +374,7 @@ F:	xen/test/livepatch/*
 
 MINI-OS
 M:	Samuel Thibault <samuel.thibault@ens-lyon.org>
+R:	Wei Liu <wl@xen.org>
 S:	Supported
 L:	minios-devel@lists.xenproject.org
 T:	git https://xenbits.xenproject.org/git-http/mini-os.git
-- 
2.20.1



From minios-devel-bounces@lists.xenproject.org Tue Apr 28 11:24:40 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 28 Apr 2020 11:24:40 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1jTOLw-0004SD-Em; Tue, 28 Apr 2020 11:24: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.92) (envelope-from
 <SRS0=NU6p=6M=citrix.com=andrew.cooper3@srs-us1.protection.inumbo.net>)
 id 1jTOLw-0004S1-5x
 for minios-devel@lists.xenproject.org; Tue, 28 Apr 2020 11:24:40 +0000
X-Inumbo-ID: d5bb1af7-8942-11ea-984c-12813bfff9fa
Received: from esa5.hc3370-68.iphmx.com (unknown [216.71.155.168])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id d5bb1af7-8942-11ea-984c-12813bfff9fa;
 Tue, 28 Apr 2020 11:24:34 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple;
 d=citrix.com; s=securemail; t=1588073074;
 h=subject:to:cc:references:from:message-id:date:
 mime-version:in-reply-to:content-transfer-encoding;
 bh=d2ppzpQoYuZU0fIiUWjzTipilifiem79IQGnX/DQMpQ=;
 b=F5iKSkWaYhvvjOu3OnvNwT+NSYLb9wfr1VkjMd09lpssBLL6Slw2SxcO
 Ap3QjegErqium6H9IbPWe9E15w5pNQhXiUVejwQ6kVIdxNKt8+rDmWu4q
 nBsAB61ZKMQW+4PeC2/o4CQbpz/W3qrCMrmFd0B/Drz8kMx6JIgBFBW97 Q=;
Authentication-Results: esa5.hc3370-68.iphmx.com;
 dkim=none (message not signed) header.i=none;
 spf=None smtp.pra=andrew.cooper3@citrix.com;
 spf=Pass smtp.mailfrom=Andrew.Cooper3@citrix.com;
 spf=None smtp.helo=postmaster@mail.citrix.com
Received-SPF: None (esa5.hc3370-68.iphmx.com: no sender
 authenticity information available from domain of
 andrew.cooper3@citrix.com) identity=pra;
 client-ip=162.221.158.21; receiver=esa5.hc3370-68.iphmx.com;
 envelope-from="Andrew.Cooper3@citrix.com";
 x-sender="andrew.cooper3@citrix.com";
 x-conformance=sidf_compatible
Received-SPF: Pass (esa5.hc3370-68.iphmx.com: domain of
 Andrew.Cooper3@citrix.com designates 162.221.158.21 as
 permitted sender) identity=mailfrom;
 client-ip=162.221.158.21; receiver=esa5.hc3370-68.iphmx.com;
 envelope-from="Andrew.Cooper3@citrix.com";
 x-sender="Andrew.Cooper3@citrix.com";
 x-conformance=sidf_compatible; x-record-type="v=spf1";
 x-record-text="v=spf1 ip4:209.167.231.154 ip4:178.63.86.133
 ip4:195.66.111.40/30 ip4:85.115.9.32/28 ip4:199.102.83.4
 ip4:192.28.146.160 ip4:192.28.146.107 ip4:216.52.6.88
 ip4:216.52.6.188 ip4:162.221.158.21 ip4:162.221.156.83
 ip4:168.245.78.127 ~all"
Received-SPF: None (esa5.hc3370-68.iphmx.com: no sender
 authenticity information available from domain of
 postmaster@mail.citrix.com) identity=helo;
 client-ip=162.221.158.21; receiver=esa5.hc3370-68.iphmx.com;
 envelope-from="Andrew.Cooper3@citrix.com";
 x-sender="postmaster@mail.citrix.com";
 x-conformance=sidf_compatible
IronPort-SDR: tAn3GjkbWo7SxIv9t5t5Z7/3OqX5McoKXHQMtxUiQS1z+mfbPfTu+cYirne7WjPqmFO0zBDNg4
 N7ndSmJUx9r14aJw2P5G9ztoKBXUuenrLos8YTTjaRuudU1gmNtUDR6zyfSqL/x/G9fvlRLfYR
 e0G4Xh8/vc1mx6hIkXHzoFUGysM6QstK/BrAe/mWS5OH+/riNzVqBABE/Frbad1mYxSmcHScOS
 uQGl9XEnVyj854gKZzR2bD4ALZxaXiSyU5+nkeAz9wWMweYtJ3waMzf+YI7HnbLnxdTjX/sPy1
 7ac=
X-SBRS: 2.7
X-MesageID: 16675484
X-Ironport-Server: esa5.hc3370-68.iphmx.com
X-Remote-IP: 162.221.158.21
X-Policy: $RELAYED
X-IronPort-AV: E=Sophos;i="5.73,327,1583211600"; d="scan'208";a="16675484"
Subject: Re: [PATCH] mini-os: Avoid segfaults in tc{g,s}etattr
To: Wei Liu <wl@xen.org>, Jason Andryuk <jandryuk@gmail.com>
References: <20200427034019.6251-1-jandryuk@gmail.com>
 <20200427075429.mshevnm2ype7tq32@function>
 <CAKf6xpuh3v0H-22=7y83ioYsm2GnKOs+FO8nN2s3djXanUL9BQ@mail.gmail.com>
 <20200428111645.pa6xfs6t6rifu6fu@liuwe-devbox-debian-v2.j3c5onc20sse1dnehy4noqpfcg.zx.internal.cloudapp.net>
From: Andrew Cooper <andrew.cooper3@citrix.com>
Message-ID: <3ed7eb87-070c-28ea-4f8a-aa4421cea93a@citrix.com>
Date: Tue, 28 Apr 2020 12:24:29 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101
 Thunderbird/68.7.0
MIME-Version: 1.0
In-Reply-To: <20200428111645.pa6xfs6t6rifu6fu@liuwe-devbox-debian-v2.j3c5onc20sse1dnehy4noqpfcg.zx.internal.cloudapp.net>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit
Content-Language: en-GB
X-ClientProxiedBy: AMSPEX02CAS01.citrite.net (10.69.22.112) To
 AMSPEX02CL02.citrite.net (10.69.22.126)
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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.xenproject.org,
 Samuel Thibault <samuel.thibault@ens-lyon.org>,
 Jan Beulich <JBeulich@suse.com>, xen-devel <xen-devel@lists.xenproject.org>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

On 28/04/2020 12:16, Wei Liu wrote:
>>>> ---
>>>> I can't get ioemu-stubdom to start without this.  With this, the guest
>>>> just reboots immediately, but it does that with a non-stubdom
>>>> device_model_version="qemu-xen-traditional" .  The same guest disk image
>>>> (cirros 0.5.1) boots with a linux stubdom or non-stubdom Ubuntu
>>>> qemu-system-x86_64.
>> Ubuntu gcc-9 adds -fcf-protection by default.  Somehow that flag
>> caused rombios (I think) to restart.  Setting -fcf-protection=none
>> like below (probably just the EMBEDDED_EXTRA_CFLAGS part) lets rombios
>> start properly.

All it does is insert ENDBR{32,64} instructions, which are nops on older
processors.

I suspect that it is not the -fcf-protection= directly, but some change
in alignment of a critical function.

>>   The hypervisor needs it as well via
>> EXTRA_CFLAGS_XEN_CORE=-fcf-protection=none and maybe also added to
>> xen/arch/x86/boot/build32.mk .
> Are you able to turn this into a proper patch? I suspect you will need
> to test the availability of this new (?) flag.
>
> Also Cc Jan and Andrew because it affects hypervisor build too.

I need to chase this up.  It is a GCC bug breaking the hypervisor build,
and I'm moderately disinclined to hack around it, seeing as
-fcf-protection is something we want in due course.

The bug is that GCC falsely declares that -fcf-protection is
incompatible with -mindirect-thunk=extern, despite me spending a week
during the Spectre embargo period specifically arranging for the two to
be compatible, because we knew we'd want to build retpoline-safe
binaries which could also use CET on newer hardware.

~Andrew


From minios-devel-bounces@lists.xenproject.org Tue Apr 28 11:30:34 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 28 Apr 2020 11:30:34 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1jTORd-0005OP-Dy; Tue, 28 Apr 2020 11:30: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.92) (envelope-from
 <SRS0=sOCy=6M=ens-lyon.org=samuel.thibault@srs-us1.protection.inumbo.net>)
 id 1jTORb-0005O8-Nb
 for minios-devel@lists.xenproject.org; Tue, 28 Apr 2020 11:30:31 +0000
X-Inumbo-ID: a6fbc0de-8943-11ea-984e-12813bfff9fa
Received: from hera.aquilenet.fr (unknown [185.233.100.1])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id a6fbc0de-8943-11ea-984e-12813bfff9fa;
 Tue, 28 Apr 2020 11:30:25 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by hera.aquilenet.fr (Postfix) with ESMTP id D0A12DFE8;
 Tue, 28 Apr 2020 13:30:23 +0200 (CEST)
X-Virus-Scanned: Debian amavisd-new at aquilenet.fr
Received: from hera.aquilenet.fr ([127.0.0.1])
 by localhost (hera.aquilenet.fr [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id HAMh4u15Eazi; Tue, 28 Apr 2020 13:30:22 +0200 (CEST)
Received: from function (unknown [IPv6:2a01:cb19:956:1b00:9eb6:d0ff:fe88:c3c7])
 by hera.aquilenet.fr (Postfix) with ESMTPSA id 7430EDFE2;
 Tue, 28 Apr 2020 13:30:22 +0200 (CEST)
Received: from samy by function with local (Exim 4.93)
 (envelope-from <samuel.thibault@ens-lyon.org>)
 id 1jTORQ-00A1hJ-MP; Tue, 28 Apr 2020 13:30:20 +0200
Date: Tue, 28 Apr 2020 13:30:20 +0200
From: Samuel Thibault <samuel.thibault@ens-lyon.org>
To: Wei Liu <wl@xen.org>
Subject: Re: [PATCH] MAINTAINERS: list myself as mini-os reviewer
Message-ID: <20200428113020.twmgdpcddmbaj73l@function>
Mail-Followup-To: Samuel Thibault <samuel.thibault@ens-lyon.org>,
 Wei Liu <wl@xen.org>,
 Xen Development List <xen-devel@lists.xenproject.org>,
 minios-devel@lists.xenproject.org,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>,
 Ian Jackson <ian.jackson@eu.citrix.com>,
 Jan Beulich <jbeulich@suse.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>
References: <20200428112346.10498-1-wl@xen.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20200428112346.10498-1-wl@xen.org>
Organization: I am not organized
User-Agent: NeoMutt/20170609 (1.8.3)
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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: Stefano Stabellini <sstabellini@kernel.org>, Julien Grall <julien@xen.org>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 Ian Jackson <ian.jackson@eu.citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, minios-devel@lists.xenproject.org,
 Jan Beulich <jbeulich@suse.com>,
 Xen Development List <xen-devel@lists.xenproject.org>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Wei Liu, le mar. 28 avril 2020 12:23:46 +0100, a ecrit:
> I probably don't have much time to actually review patches, but I do
> want to be CC'ed such that I can commit patches in a timely manner.
> 
> Signed-off-by: Wei Liu <wl@xen.org>

I actually thought you were already referenced there...

Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>

> ---
> Cc: Samuel Thibault <samuel.thibault@ens-lyon.org>
> Cc: minios-devel@lists.xenproject.org
> ---
>  MAINTAINERS | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/MAINTAINERS b/MAINTAINERS
> index 8a4c869704b0..e3748167550c 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -374,6 +374,7 @@ F:	xen/test/livepatch/*
>  
>  MINI-OS
>  M:	Samuel Thibault <samuel.thibault@ens-lyon.org>
> +R:	Wei Liu <wl@xen.org>
>  S:	Supported
>  L:	minios-devel@lists.xenproject.org
>  T:	git https://xenbits.xenproject.org/git-http/mini-os.git
> -- 
> 2.20.1
> 

-- 
Samuel
<s> je la connaissais pas celle la : "make: Entering an unknown directory"
 -+- #ens-mim -+-


From minios-devel-bounces@lists.xenproject.org Tue Apr 28 11:32:51 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 28 Apr 2020 11:32:51 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1jTOTq-0005ew-SR; Tue, 28 Apr 2020 11:32: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.92)
 (envelope-from <SRS0=/MZc=6M=suse.com=jbeulich@srs-us1.protection.inumbo.net>)
 id 1jTOTp-0005ek-1e
 for minios-devel@lists.xenproject.org; Tue, 28 Apr 2020 11:32:49 +0000
X-Inumbo-ID: f90ff143-8943-11ea-984e-12813bfff9fa
Received: from mx2.suse.de (unknown [195.135.220.15])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id f90ff143-8943-11ea-984e-12813bfff9fa;
 Tue, 28 Apr 2020 11:32:42 +0000 (UTC)
X-Virus-Scanned: by amavisd-new at test-mx.suse.de
Received: from relay2.suse.de (unknown [195.135.220.254])
 by mx2.suse.de (Postfix) with ESMTP id C4FD9AC69;
 Tue, 28 Apr 2020 11:32:40 +0000 (UTC)
Subject: Re: [PATCH] MAINTAINERS: list myself as mini-os reviewer
To: Samuel Thibault <samuel.thibault@ens-lyon.org>, Wei Liu <wl@xen.org>
References: <20200428112346.10498-1-wl@xen.org>
 <20200428113020.twmgdpcddmbaj73l@function>
From: Jan Beulich <jbeulich@suse.com>
Message-ID: <1e76003b-c1b3-3010-02ea-d45cf977feb0@suse.com>
Date: Tue, 28 Apr 2020 13:32:39 +0200
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:68.0) Gecko/20100101
 Thunderbird/68.7.0
MIME-Version: 1.0
In-Reply-To: <20200428113020.twmgdpcddmbaj73l@function>
Content-Type: text/plain; charset=utf-8
Content-Language: en-US
Content-Transfer-Encoding: 7bit
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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: Stefano Stabellini <sstabellini@kernel.org>, Julien Grall <julien@xen.org>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 Ian Jackson <ian.jackson@eu.citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, minios-devel@lists.xenproject.org,
 Xen Development List <xen-devel@lists.xenproject.org>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

On 28.04.2020 13:30, Samuel Thibault wrote:
> Wei Liu, le mar. 28 avril 2020 12:23:46 +0100, a ecrit:
>> I probably don't have much time to actually review patches, but I do
>> want to be CC'ed such that I can commit patches in a timely manner.
>>
>> Signed-off-by: Wei Liu <wl@xen.org>
> 
> I actually thought you were already referenced there...
> 
> Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>

Acked-by: Jan Beulich <jbeulich@suse.com>


From minios-devel-bounces@lists.xenproject.org Tue Apr 28 11:37:40 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 28 Apr 2020 11:37:40 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1jTOYU-0005qf-8i; Tue, 28 Apr 2020 11:37:38 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=KfNV=6M=xen.org=wl@srs-us1.protection.inumbo.net>)
 id 1jTOYS-0005qa-H7
 for minios-devel@lists.xenproject.org; Tue, 28 Apr 2020 11:37:36 +0000
X-Inumbo-ID: a7e412de-8944-11ea-b07b-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id a7e412de-8944-11ea-b07b-bc764e2007e4;
 Tue, 28 Apr 2020 11:37:35 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=In-Reply-To:Content-Type:MIME-Version:References:Message-ID
 :Subject:To:From:Date:Sender:Reply-To:Cc:Content-Transfer-Encoding:Content-ID
 :Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:
 Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe
 :List-Post:List-Owner:List-Archive;
 bh=H7VgQJ8LNzUCWww4xat13apJceeEkolvQkj8XJzN5c8=; b=liaJeXKXY4W7mQMQusUnEePmLk
 o9BpxT9uXL8zZU+9jUVM0rsFqYALI00edicC/n7XjwswNHjY1kT1idc6nj8Uhn8o9pCli2yPNJNwA
 LYVC4Ughi1ifnZ6e6lruiw3T04kPzvDJwZSOdPcuDR+o/nu+8SXbXUgkGbidoc2NWRSI=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <wl@xen.org>)
 id 1jTOYQ-00020f-H8; Tue, 28 Apr 2020 11:37:34 +0000
Received: from 44.142.6.51.dyn.plus.net ([51.6.142.44] helo=debian)
 by xenbits.xenproject.org with esmtpsa
 (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89)
 (envelope-from <wl@xen.org>)
 id 1jTOYQ-0003bF-7f; Tue, 28 Apr 2020 11:37:34 +0000
Date: Tue, 28 Apr 2020 12:37:31 +0100
From: Wei Liu <wl@xen.org>
To: Samuel Thibault <samuel.thibault@ens-lyon.org>, Wei Liu <wl@xen.org>,
 Xen Development List <xen-devel@lists.xenproject.org>,
 minios-devel@lists.xenproject.org,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>,
 Ian Jackson <ian.jackson@eu.citrix.com>,
 Jan Beulich <jbeulich@suse.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>
Subject: Re: [PATCH] MAINTAINERS: list myself as mini-os reviewer
Message-ID: <20200428113731.ra4jxikqmuv6mtvv@debian>
References: <20200428112346.10498-1-wl@xen.org>
 <20200428113020.twmgdpcddmbaj73l@function>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20200428113020.twmgdpcddmbaj73l@function>
User-Agent: NeoMutt/20180716
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

On Tue, Apr 28, 2020 at 01:30:20PM +0200, Samuel Thibault wrote:
> Wei Liu, le mar. 28 avril 2020 12:23:46 +0100, a ecrit:
> > I probably don't have much time to actually review patches, but I do
> > want to be CC'ed such that I can commit patches in a timely manner.
> > 
> > Signed-off-by: Wei Liu <wl@xen.org>
> 
> I actually thought you were already referenced there...

No I wasn't. Before the introduction of R: tag the only way to get CC'ed
was to step up as a maintainer. And I had had far too many hats
already...

Wei.


From minios-devel-bounces@lists.xenproject.org Tue Apr 28 11:45:09 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 28 Apr 2020 11:45:09 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1jTOfl-0006q7-FK; Tue, 28 Apr 2020 11:45:09 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Vxmr=6M=gmail.com=jandryuk@srs-us1.protection.inumbo.net>)
 id 1jTOfk-0006pr-PQ
 for minios-devel@lists.xenproject.org; Tue, 28 Apr 2020 11:45:08 +0000
X-Inumbo-ID: b2630ade-8945-11ea-ae69-bc764e2007e4
Received: from mail-qv1-xf42.google.com (unknown [2607:f8b0:4864:20::f42])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id b2630ade-8945-11ea-ae69-bc764e2007e4;
 Tue, 28 Apr 2020 11:45:02 +0000 (UTC)
Received: by mail-qv1-xf42.google.com with SMTP id 59so8068808qva.13;
 Tue, 28 Apr 2020 04:45:02 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=message-id:from:to:cc:subject:date:in-reply-to:references
 :mime-version:content-transfer-encoding;
 bh=fd/M3Ffs7OwceegYsMYGTqbAvT1dTQERp72SccZnPBY=;
 b=JYPyhmIYgn8bTgIM0SaWBtvgEIJKI+Bpac4lm1AzE4bMxnjcc8+SGaOTlLbhU/Chkq
 hBUq326SK/Su6heJlXHBdUJp4ddB0PBZnbSNlUcyIw39KOvLayr1nmfRr7I/q50vtZdS
 cBdLP+icy9Z5ALxHub/yq9S6AbIqt3ffUk93G5RxvqlH41UtvIi1CcpIioel5VeQ31FO
 +MWm7mOoLG9jzOEXodi7+0cynz4b5Y10o8u4r11kpL5K6O3lMSvPVbvNnfs+pePUoJ0J
 je5trHddards1xLVs2+vlZhduttcoWuKFeB/5uJ+1AekQe+WRkX2sb52pTNwUUzIQdW3
 Xanw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:message-id:from:to:cc:subject:date:in-reply-to
 :references:mime-version:content-transfer-encoding;
 bh=fd/M3Ffs7OwceegYsMYGTqbAvT1dTQERp72SccZnPBY=;
 b=aRHERUPBBlkcjGAsuTQ1TVm4lgAmySWUFawlwSM/cdSB/r7mjtLbBAIggwvNDZlGyu
 pO1Bt9W47QvNt0DSLfzSqG7VMvNDUxoISRyD6vmvJGBBqgmUtm3C5jQfrJUdVgwhuMhr
 MQvmt2PGVrYi2LVnHNIjISJdZ+xYThXRhXcRdS6VnfdN26+bL2maG/krm7y/24gnqhKS
 Y1tebl/F7si8kek8aKJrx2fXLtnVbfGCAkeGdFlV7xKLajocQoGAs5s3j5uTKO+RmjTN
 lqyQxg0Ob5Md7XgNWJ2YcWbleUUsa1j0SZ2XXBcYr296v+tYFJLzEeG1jzKlWKGODx97
 bOLQ==
X-Gm-Message-State: AGi0PuaHVY+LeLAk1TNa72KXQnZ4AuOTWqOlzGTTc/A5pWNcAmqxg4j5
 fxJx3cCCJXHfvfXdz2Lfz2w=
X-Google-Smtp-Source: APiQypJ7BqPEg+ekb3cUEqbx6s21kP9AG6R4IzIL1zPHxr4AcZKRRps4r/ApG4naung0Pjzx+NKdkA==
X-Received: by 2002:a0c:f1d0:: with SMTP id u16mr27874790qvl.160.1588074302277; 
 Tue, 28 Apr 2020 04:45:02 -0700 (PDT)
Received: from shine.lan ([2001:470:8:67e:15d1:d31e:91aa:b702])
 by smtp.gmail.com with ESMTPSA id 205sm13055464qkj.1.2020.04.28.04.45.00
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 28 Apr 2020 04:45:01 -0700 (PDT)
Message-ID: <5ea8173d.1c69fb81.915ba.8400@mx.google.com>
X-Google-Original-Message-ID: <3ed7eb87-070c-28ea-4f8a-aa4421cea93a@citrix.com> (raw)
From: Jason Andryuk <jandryuk@gmail.com>
To: andrew.cooper3@citrix.com, Wei Liu <wl@xen.org>,
 Jason Andryuk <jandryuk@gmail.com>
Subject: Re: [PATCH] mini-os: Avoid segfaults in tc{g,s}etattr
Date: Tue, 28 Apr 2020 07:44:07 -0400
X-Mailer: git-send-email 2.20.1
In-Reply-To: <20200428111645.pa6xfs6t6rifu6fu@liuwe-devbox-debian-v2.j3c5onc20sse1dnehy4noqpfcg.zx.internal.cloudapp.net>
References: <3ed7eb87-070c-28ea-4f8a-aa4421cea93a@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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.xenproject.org, samuel.thibault@ens-lyon.org,
 Stefan Bader <stefan.bader@canonical.com>, JBeulich@suse.com,
 xen-devel@lists.xenproject.org
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

From: Andrew Cooper <andrew.cooper3@citrix.com>

Andrew Cooper wrote:
>On 28/04/2020 12:16, Wei Liu wrote:
>>>>> ---
>>>>> I can't get ioemu-stubdom to start without this.  With this, the guest
>>>>> just reboots immediately, but it does that with a non-stubdom
>>>>> device_model_version="qemu-xen-traditional" .  The same guest disk image
>>>>> (cirros 0.5.1) boots with a linux stubdom or non-stubdom Ubuntu
>>>>> qemu-system-x86_64.
>>> Ubuntu gcc-9 adds -fcf-protection by default.  Somehow that flag
>>> caused rombios (I think) to restart.  Setting -fcf-protection=none
>>> like below (probably just the EMBEDDED_EXTRA_CFLAGS part) lets rombios
>>> start properly.
>
>All it does is insert ENDBR{32,64} instructions, which are nops on older
>processors.
>
>I suspect that it is not the -fcf-protection= directly, but some change
>in alignment of a critical function.
>
>>>   The hypervisor needs it as well via
>>> EXTRA_CFLAGS_XEN_CORE=-fcf-protection=none and maybe also added to
>>> xen/arch/x86/boot/build32.mk .
>> Are you able to turn this into a proper patch? I suspect you will need
>> to test the availability of this new (?) flag.
>>
>> Also Cc Jan and Andrew because it affects hypervisor build too.
>
>I need to chase this up.  It is a GCC bug breaking the hypervisor build,
>and I'm moderately disinclined to hack around it, seeing as
>-fcf-protection is something we want in due course.
>
>The bug is that GCC falsely declares that -fcf-protection is
>incompatible with -mindirect-thunk=extern, despite me spending a week
>during the Spectre embargo period specifically arranging for the two to
>be compatible, because we knew we'd want to build retpoline-safe
>binaries which could also use CET on newer hardware.

The gcc manual states:
  "Note that -mindirect-branch=thunk-extern is incompatible with
   -fcf-protection=branch since the external thunk cannot be modified
   to disable control-flow check."

https://gcc.gnu.org/onlinedocs/gcc/x86-Options.html

Below is what I was preparing to submit as a patch.  So, yes it hacks around
it, but it isn't messy.

---
Disable fcf-protection to build working binaries

Ubuntu gcc-9 enables -fcf-protection by default, which conflicts with
-mindirect-branch=extern and prevents building the hypervisor with
CONFIG_INDIRECT_THUNK:
xmalloc.h:81:1: error: ‘-mindirect-branch’ and ‘-fcf-protection’ are not
compatible

Stefan Bader also noticed that build32.mk requires -fcf-protection=none
or else the hypervisor will not boot.
https://bugs.launchpad.net/ubuntu/+source/gcc-9/+bug/1863260  Similarly,
rombios reboots almost immediately without -fcf-protection=none.  Both
of those can be handled by setting it in EMBEDDED_EXTRA_CFLAGS.

CC: Stefan Bader <stefan.bader@canonical.com>
Signed-off-by: Jason Andryuk <jandryuk@gmail.com>
---
 Config.mk             | 1 +
 xen/arch/x86/Rules.mk | 1 +
 2 files changed, 2 insertions(+)

diff --git a/Config.mk b/Config.mk
index 0f303c79b2..efb3d42bc4 100644
--- a/Config.mk
+++ b/Config.mk
@@ -205,6 +205,7 @@ APPEND_CFLAGS += $(foreach i, $(APPEND_INCLUDES), -I$(i))
 
 EMBEDDED_EXTRA_CFLAGS := -nopie -fno-stack-protector -fno-stack-protector-all
 EMBEDDED_EXTRA_CFLAGS += -fno-exceptions
+EMBEDDED_EXTRA_CFLAGS += -fcf-protection=none
 
 XEN_EXTFILES_URL ?= http://xenbits.xen.org/xen-extfiles
 # All the files at that location were downloaded from elsewhere on
diff --git a/xen/arch/x86/Rules.mk b/xen/arch/x86/Rules.mk
index 4b7ab78467..c3cbae69d2 100644
--- a/xen/arch/x86/Rules.mk
+++ b/xen/arch/x86/Rules.mk
@@ -69,6 +69,7 @@ CFLAGS += -mno-sse $(call cc-option,$(CC),-mskip-rax-setup)
 ifeq ($(CONFIG_INDIRECT_THUNK),y)
 CFLAGS += -mindirect-branch=thunk-extern -mindirect-branch-register
 CFLAGS += -fno-jump-tables
+$(call cc-option-add,CFLAGS,CC,-fcf-protection=none)
 endif
 
 # If supported by the compiler, reduce stack alignment to 8 bytes. But allow
-- 
2.20.1



From minios-devel-bounces@lists.xenproject.org Tue Apr 28 11:55:13 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 28 Apr 2020 11:55:13 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1jTOpT-0007qI-D7; Tue, 28 Apr 2020 11:55: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.92) (envelope-from
 <SRS0=NU6p=6M=citrix.com=andrew.cooper3@srs-us1.protection.inumbo.net>)
 id 1jTOpS-0007qD-8E
 for minios-devel@lists.xenproject.org; Tue, 28 Apr 2020 11:55:10 +0000
X-Inumbo-ID: 1b569975-8947-11ea-984f-12813bfff9fa
Received: from esa2.hc3370-68.iphmx.com (unknown [216.71.145.153])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 1b569975-8947-11ea-984f-12813bfff9fa;
 Tue, 28 Apr 2020 11:55:09 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple;
 d=citrix.com; s=securemail; t=1588074910;
 h=subject:to:cc:references:from:message-id:date:
 mime-version:in-reply-to:content-transfer-encoding;
 bh=enUyvB+FB7mIYnf4Lgty66y0JScU1/TJBrpTb6nLWdg=;
 b=hsvHj0Q+B7e5O1c4px8KmV/0/V0Ta18m9m1TBWkPHK0BBNHXJqtQUytg
 Vz5CYouMkIdnm1eqC+v6HPXffMBN/ABnNb6CuZUsrKY4S+nZlhIYDAiCd
 XV3SUB6PFxSc2SSIxYNeYA8v3OATkRjgmtE7QGZla6VTA/IUjoxFT7drx Y=;
Authentication-Results: esa2.hc3370-68.iphmx.com;
 dkim=none (message not signed) header.i=none;
 spf=None smtp.pra=andrew.cooper3@citrix.com;
 spf=Pass smtp.mailfrom=Andrew.Cooper3@citrix.com;
 spf=None smtp.helo=postmaster@mail.citrix.com
Received-SPF: None (esa2.hc3370-68.iphmx.com: no sender
 authenticity information available from domain of
 andrew.cooper3@citrix.com) identity=pra;
 client-ip=162.221.158.21; receiver=esa2.hc3370-68.iphmx.com;
 envelope-from="Andrew.Cooper3@citrix.com";
 x-sender="andrew.cooper3@citrix.com";
 x-conformance=sidf_compatible
Received-SPF: Pass (esa2.hc3370-68.iphmx.com: domain of
 Andrew.Cooper3@citrix.com designates 162.221.158.21 as
 permitted sender) identity=mailfrom;
 client-ip=162.221.158.21; receiver=esa2.hc3370-68.iphmx.com;
 envelope-from="Andrew.Cooper3@citrix.com";
 x-sender="Andrew.Cooper3@citrix.com";
 x-conformance=sidf_compatible; x-record-type="v=spf1";
 x-record-text="v=spf1 ip4:209.167.231.154 ip4:178.63.86.133
 ip4:195.66.111.40/30 ip4:85.115.9.32/28 ip4:199.102.83.4
 ip4:192.28.146.160 ip4:192.28.146.107 ip4:216.52.6.88
 ip4:216.52.6.188 ip4:162.221.158.21 ip4:162.221.156.83
 ip4:168.245.78.127 ~all"
Received-SPF: None (esa2.hc3370-68.iphmx.com: no sender
 authenticity information available from domain of
 postmaster@mail.citrix.com) identity=helo;
 client-ip=162.221.158.21; receiver=esa2.hc3370-68.iphmx.com;
 envelope-from="Andrew.Cooper3@citrix.com";
 x-sender="postmaster@mail.citrix.com";
 x-conformance=sidf_compatible
IronPort-SDR: qRGEp+/ruFgmzHfI3f2hn8wrW70I6cFQLjEwobFlX0hnz5KBqeD/A4WzTzMA9j5OoVxC5igpM0
 pXStId8iGGBl+HTIb0zGtRP5AvARC5E/9WmT89PlD4oCFIR/3Ix4+LxIyTUa6useHVcLLo8dLu
 s8tTbZj8iU3a+wXZrAG4aWUXEenqiNIhbmAGEWn58DdEkVZkYEBk491V28A77rX5pljBCgRBDp
 slLmkraaSr/U94kNxinex/LPy+2XaEARZ0oIA4l9wTQuah3fkq7I6BG0DYVaOksLJJlBehnYj7
 NGU=
X-SBRS: 2.7
X-MesageID: 16378220
X-Ironport-Server: esa2.hc3370-68.iphmx.com
X-Remote-IP: 162.221.158.21
X-Policy: $RELAYED
X-IronPort-AV: E=Sophos;i="5.73,327,1583211600"; d="scan'208";a="16378220"
Subject: Re: [PATCH] mini-os: Avoid segfaults in tc{g,s}etattr
To: Jason Andryuk <jandryuk@gmail.com>, Wei Liu <wl@xen.org>
References: <3ed7eb87-070c-28ea-4f8a-aa4421cea93a@citrix.com>
 <5ea8173d.1c69fb81.915ba.8400@mx.google.com>
From: Andrew Cooper <andrew.cooper3@citrix.com>
Message-ID: <c242b963-ae80-1ca0-9b4d-fe2c8f66b6a2@citrix.com>
Date: Tue, 28 Apr 2020 12:55:03 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101
 Thunderbird/68.7.0
MIME-Version: 1.0
In-Reply-To: <5ea8173d.1c69fb81.915ba.8400@mx.google.com>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit
Content-Language: en-GB
X-ClientProxiedBy: AMSPEX02CAS01.citrite.net (10.69.22.112) To
 AMSPEX02CL02.citrite.net (10.69.22.126)
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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.xenproject.org, samuel.thibault@ens-lyon.org, Stefan
 Bader <stefan.bader@canonical.com>, JBeulich@suse.com,
 xen-devel@lists.xenproject.org
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

On 28/04/2020 12:44, Jason Andryuk wrote:
> From: Andrew Cooper <andrew.cooper3@citrix.com>
>
> Andrew Cooper wrote:
>> On 28/04/2020 12:16, Wei Liu wrote:
>>>>>> ---
>>>>>> I can't get ioemu-stubdom to start without this.  With this, the guest
>>>>>> just reboots immediately, but it does that with a non-stubdom
>>>>>> device_model_version="qemu-xen-traditional" .  The same guest disk image
>>>>>> (cirros 0.5.1) boots with a linux stubdom or non-stubdom Ubuntu
>>>>>> qemu-system-x86_64.
>>>> Ubuntu gcc-9 adds -fcf-protection by default.  Somehow that flag
>>>> caused rombios (I think) to restart.  Setting -fcf-protection=none
>>>> like below (probably just the EMBEDDED_EXTRA_CFLAGS part) lets rombios
>>>> start properly.
>> All it does is insert ENDBR{32,64} instructions, which are nops on older
>> processors.
>>
>> I suspect that it is not the -fcf-protection= directly, but some change
>> in alignment of a critical function.
>>
>>>>   The hypervisor needs it as well via
>>>> EXTRA_CFLAGS_XEN_CORE=-fcf-protection=none and maybe also added to
>>>> xen/arch/x86/boot/build32.mk .
>>> Are you able to turn this into a proper patch? I suspect you will need
>>> to test the availability of this new (?) flag.
>>>
>>> Also Cc Jan and Andrew because it affects hypervisor build too.
>> I need to chase this up.  It is a GCC bug breaking the hypervisor build,
>> and I'm moderately disinclined to hack around it, seeing as
>> -fcf-protection is something we want in due course.
>>
>> The bug is that GCC falsely declares that -fcf-protection is
>> incompatible with -mindirect-thunk=extern, despite me spending a week
>> during the Spectre embargo period specifically arranging for the two to
>> be compatible, because we knew we'd want to build retpoline-safe
>> binaries which could also use CET on newer hardware.
> The gcc manual states:
>   "Note that -mindirect-branch=thunk-extern is incompatible with
>    -fcf-protection=branch since the external thunk cannot be modified
>    to disable control-flow check."
>
> https://gcc.gnu.org/onlinedocs/gcc/x86-Options.html

Yes.  This is false.

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93654

but sadly tumbleweeds.

I'll start a thread on the email list.

>
> Below is what I was preparing to submit as a patch.  So, yes it hacks around
> it, but it isn't messy.
>
> ---
> Disable fcf-protection to build working binaries
>
> Ubuntu gcc-9 enables -fcf-protection by default, which conflicts with
> -mindirect-branch=extern and prevents building the hypervisor with
> CONFIG_INDIRECT_THUNK:
> xmalloc.h:81:1: error: ‘-mindirect-branch’ and ‘-fcf-protection’ are not
> compatible
>
> Stefan Bader also noticed that build32.mk requires -fcf-protection=none
> or else the hypervisor will not boot.
> https://bugs.launchpad.net/ubuntu/+source/gcc-9/+bug/1863260  Similarly,
> rombios reboots almost immediately without -fcf-protection=none.  Both
> of those can be handled by setting it in EMBEDDED_EXTRA_CFLAGS.
>
> CC: Stefan Bader <stefan.bader@canonical.com>
> Signed-off-by: Jason Andryuk <jandryuk@gmail.com>

Sadly, this isn't really appropriate.  We specifically do want to use
both -fcf-protection and -mindirect-branch=thunk-extern together, when
GCC isn't broken.

Overriding -fcf-protection is ok but only when we're certain we've got a
buggy GCC, so that when this bug is fixed, we can return to sensible
behaviour.

~Andrew

> ---
>  Config.mk             | 1 +
>  xen/arch/x86/Rules.mk | 1 +
>  2 files changed, 2 insertions(+)
>
> diff --git a/Config.mk b/Config.mk
> index 0f303c79b2..efb3d42bc4 100644
> --- a/Config.mk
> +++ b/Config.mk
> @@ -205,6 +205,7 @@ APPEND_CFLAGS += $(foreach i, $(APPEND_INCLUDES), -I$(i))
>  
>  EMBEDDED_EXTRA_CFLAGS := -nopie -fno-stack-protector -fno-stack-protector-all
>  EMBEDDED_EXTRA_CFLAGS += -fno-exceptions
> +EMBEDDED_EXTRA_CFLAGS += -fcf-protection=none
>  
>  XEN_EXTFILES_URL ?= http://xenbits.xen.org/xen-extfiles
>  # All the files at that location were downloaded from elsewhere on
> diff --git a/xen/arch/x86/Rules.mk b/xen/arch/x86/Rules.mk
> index 4b7ab78467..c3cbae69d2 100644
> --- a/xen/arch/x86/Rules.mk
> +++ b/xen/arch/x86/Rules.mk
> @@ -69,6 +69,7 @@ CFLAGS += -mno-sse $(call cc-option,$(CC),-mskip-rax-setup)
>  ifeq ($(CONFIG_INDIRECT_THUNK),y)
>  CFLAGS += -mindirect-branch=thunk-extern -mindirect-branch-register
>  CFLAGS += -fno-jump-tables
> +$(call cc-option-add,CFLAGS,CC,-fcf-protection=none)
>  endif
>  
>  # If supported by the compiler, reduce stack alignment to 8 bytes. But allow



From minios-devel-bounces@lists.xenproject.org Tue Apr 28 12:09:59 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 28 Apr 2020 12:09:59 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1jTP3l-0000fi-ER; Tue, 28 Apr 2020 12:09:57 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=bb2f=6M=gmail.com=raducanu.costi@srs-us1.protection.inumbo.net>)
 id 1jTP3k-0000fd-Ah
 for minios-devel@lists.xen.org; Tue, 28 Apr 2020 12:09:56 +0000
X-Inumbo-ID: 2bc82000-8949-11ea-ae69-bc764e2007e4
Received: from mail-wm1-x342.google.com (unknown [2a00:1450:4864:20::342])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 2bc82000-8949-11ea-ae69-bc764e2007e4;
 Tue, 28 Apr 2020 12:09:55 +0000 (UTC)
Received: by mail-wm1-x342.google.com with SMTP id u16so2565445wmc.5
 for <minios-devel@lists.xen.org>; Tue, 28 Apr 2020 05:09:55 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=from:to:cc:subject:date:message-id;
 bh=/Zx8UnxtpboA8srJx61JdaSgxPV5mXjfTh7p4JJUxFM=;
 b=dtbPcA0O7M+d8njD99PPr+/MSM2gVY+KQmwgrX4ROUtD5fkzjifDja2zmufx8+PoZH
 mCDfkpuUorEXaPH7d0nwEBS6W+bAyQNf8v3K36Vhh3MN7EIOw++ziK12G2Nno/w/ot9J
 t2/3gdaubuiBlQNLLvFSsjX/skQbg56QucfdPBRHYtxVVJ14bd7ozH6YhTEx8q/O9Qzy
 GbSiRFz++NMtfY9l1YtTVKL+B+cVGAnR8/IxKNtzu3w1ATY4fW1ZInKQpNo6dJA644/Y
 E0M73i/YSlLTgB1UD+rdEaMx/Y/ccDSKTLWUHNKpGp8FQ3azmDIBd61+Y14WIBb4sT4Y
 ciFg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:from:to:cc:subject:date:message-id;
 bh=/Zx8UnxtpboA8srJx61JdaSgxPV5mXjfTh7p4JJUxFM=;
 b=NvKdtt1DKv6DOaR+21V7818Fxai7wvcF9n8xJALVhTo7y9IF+jq94SsP4PAawFzxlW
 p4QvrkfJdepkO8yecJa0Qw3GTYmaveJCDSOyRDxkP4Vy+/D883F4v0+mHTRnqu6IcVFT
 aarxq9a3MgoQEtYYlWNJB0/g+jn/O7lBZLgEaid6EjfZGwfvgm9wI5G+1VA4Z8F8qtUM
 2ngG9P8da8DBmo+okuu9bMqoh+ry57qKkG0jswSSATIg+N+ahFlhsFXbFJ0XPUXn9PfX
 HRmmrvqOYrPFBYxrEZMv/3Hc2uFISEgXdb9MkzndmbK6BpMvJoQ3ZrF5dQVVlU8fhk1z
 3fcg==
X-Gm-Message-State: AGi0PubAFXJ/Pr1g9xCRg4lwPVpYzYFgtll93n2M14mDT+jncFPvaHov
 MPrSFm7KPr6Aleuem9ppMRENdMzJ9UKVSA==
X-Google-Smtp-Source: APiQypLfnoZrTksDmmZH3oMqJ9AYgfbYEcS00owAbnGN6hfxVK8SUfQNRJ5WlaJ5kFR9oJg+9G42UQ==
X-Received: by 2002:a05:600c:da:: with SMTP id
 u26mr4414244wmm.48.1588075794107; 
 Tue, 28 Apr 2020 05:09:54 -0700 (PDT)
Received: from localhost.localdomain ([188.25.211.20])
 by smtp.gmail.com with ESMTPSA id r20sm2914621wmh.26.2020.04.28.05.09.53
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 28 Apr 2020 05:09:53 -0700 (PDT)
From: Constantin Raducanu <raducanu.costi@gmail.com>
To: minios-devel@lists.xen.org
Subject: [UNIKRAFT PATCH 01/10] lib/vfscore: Register `access` to syscall_shim
Date: Tue, 28 Apr 2020 15:07:38 +0300
Message-Id: <20200428120747.21674-1-raducanu.costi@gmail.com>
X-Mailer: git-send-email 2.17.1
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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, Constantin Raducanu <raducanu.costi@gmail.com>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Registers `access` system call to syscall_shim library.

Signed-off-by: Constantin Raducanu <raducanu.costi@gmail.com>
---
 lib/vfscore/Makefile.uk   |  3 ++-
 lib/vfscore/exportsyms.uk |  2 ++
 lib/vfscore/main.c        | 12 ++++++------
 3 files changed, 10 insertions(+), 7 deletions(-)

diff --git a/lib/vfscore/Makefile.uk b/lib/vfscore/Makefile.uk
index 662a2c8..5d50b5d 100644
--- a/lib/vfscore/Makefile.uk
+++ b/lib/vfscore/Makefile.uk
@@ -33,4 +33,5 @@ UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += close-1
 UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += lseek-3
 UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += link-2
 UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += ftruncate-2
-UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += truncate-2
\ No newline at end of file
+UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += truncate-2
+UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += access-2
diff --git a/lib/vfscore/exportsyms.uk b/lib/vfscore/exportsyms.uk
index 2805b73..9c1803a 100644
--- a/lib/vfscore/exportsyms.uk
+++ b/lib/vfscore/exportsyms.uk
@@ -89,6 +89,8 @@ symlink
 statvfs
 fstatvfs
 access
+uk_syscall_e_access
+uk_syscall_r_access
 faccessat
 readlink
 uk_syscall_e_readlink
diff --git a/lib/vfscore/main.c b/lib/vfscore/main.c
index 1bcafe0..759c41b 100644
--- a/lib/vfscore/main.c
+++ b/lib/vfscore/main.c
@@ -1592,7 +1592,7 @@ UK_TRACEPOINT(trace_vfs_access_err, "%d", int);
 /*
  * Check permission for file access
  */
-int access(const char *pathname, int mode)
+UK_SYSCALL_R_DEFINE(int, access, const char*, pathname, int, mode)
 {
 	trace_vfs_access(pathname, mode);
 	struct task *t = main_task;
@@ -1606,17 +1606,17 @@ int access(const char *pathname, int mode)
 		acc |= VWRITE;
 
 	if ((error = task_conv(t, pathname, acc, path)) != 0)
-		goto out_errno;
+		goto out_error;
 
 	error = sys_access(path, mode);
 	if (error)
-		goto out_errno;
+		goto out_error;
 	trace_vfs_access_ret();
 	return 0;
-	out_errno:
-	errno = error;
+
+	out_error:
 	trace_vfs_access_err(error);
-	return -1;
+	return -error;
 }
 
 int faccessat(int dirfd, const char *pathname, int mode, int flags)
-- 
2.17.1



From minios-devel-bounces@lists.xenproject.org Tue Apr 28 12:10:02 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 28 Apr 2020 12:10:02 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1jTP3q-0000mk-GF; Tue, 28 Apr 2020 12:10:02 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=bb2f=6M=gmail.com=raducanu.costi@srs-us1.protection.inumbo.net>)
 id 1jTP3p-0000g6-8w
 for minios-devel@lists.xen.org; Tue, 28 Apr 2020 12:10:01 +0000
X-Inumbo-ID: 2e8bb6d0-8949-11ea-ae69-bc764e2007e4
Received: from mail-wr1-x442.google.com (unknown [2a00:1450:4864:20::442])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 2e8bb6d0-8949-11ea-ae69-bc764e2007e4;
 Tue, 28 Apr 2020 12:09:59 +0000 (UTC)
Received: by mail-wr1-x442.google.com with SMTP id b11so24343393wrs.6
 for <minios-devel@lists.xen.org>; Tue, 28 Apr 2020 05:09:59 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=from:to:cc:subject:date:message-id:in-reply-to:references;
 bh=tv+brnAaSB+n/18VcmFvF7z9KbgqkD7OweHYIiZcH+Q=;
 b=VA4jnommZQDRiffKNvrZB94ZGYyLV9KQ/bm3ajFAWbclLfFGUFkqwcCnExurz2Rd98
 qxA0Z4nFqXjuIpSDcQ8lHC7VqSWAt87l3bDdcwMiDUkVzT6ijIzwig5Y6FetGOy6JDda
 h5BHx8OCtT2fzoaOMqQ+MxPmbS+UcNO2cgGp6J3jUuq66pjp2jaT0xV7gNSjCJbpZJDJ
 v4hvxRmWRq9OBARd8vOcU0OlSDECxuwZ9t1iCY5aV9UTe0uR4aIiTQ2YN8jss99g6YJP
 S/JJGaJtgPiCA/erXZUasBLgA2QxxlRYx1ASJxv4CA40oZyu3/P47UZMbzYpZllxnox7
 jWIA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to
 :references;
 bh=tv+brnAaSB+n/18VcmFvF7z9KbgqkD7OweHYIiZcH+Q=;
 b=QVUUE++9xJxFMcXrY+jtbAqDAuEaD2uiwFHyk4N9MTN5rmk9oXwHkAeYdifGnfuR3h
 plXBBlBjOB32E6bjspNNWZq6A0QkfCPdXGiQFa5fgGPal7uc/pRVIhASpJC6Urh1Kdpt
 vE/luIFlPE3ZyqbfW+k3vngXLFcQDIhnxcCLV+WGomQMfrSZZndfjaM6WH97AxIA15sO
 E4KVyI+lkaZEZKAT8svwFTI/mHl/auMV6TMtE+qhzudE0tyk1NPGk7muN2hjyrmi0Esl
 i/ga2syeNtew+CWDssoo+4nOpl9uWryuOmWhWcfZ3NAfgnYaP/T4NxUNfSe/RYMQs8NA
 AnGw==
X-Gm-Message-State: AGi0PuY4SfPYFf3AeMXxsqEJiEtXMBHA3qupJ8E6d6rNAPAHF1wYqV1I
 aYi+bw31VmOM6+tCIhpxlZ1FyMed77yLxw==
X-Google-Smtp-Source: APiQypJWXTD9wzj2eCPfnNHNv8VY/FJFJ2/Cr0Q96Fjh2rkqaKRWe2sL1lO4K8j7taxmceD3tKmWyA==
X-Received: by 2002:a5d:5230:: with SMTP id i16mr35333271wra.71.1588075798876; 
 Tue, 28 Apr 2020 05:09:58 -0700 (PDT)
Received: from localhost.localdomain ([188.25.211.20])
 by smtp.gmail.com with ESMTPSA id r20sm2914621wmh.26.2020.04.28.05.09.57
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 28 Apr 2020 05:09:58 -0700 (PDT)
From: Constantin Raducanu <raducanu.costi@gmail.com>
To: minios-devel@lists.xen.org
Subject: [UNIKRAFT PATCH 02/10] lib/vfscore: Register `faccessat` to
 syscall_shim
Date: Tue, 28 Apr 2020 15:07:39 +0300
Message-Id: <20200428120747.21674-2-raducanu.costi@gmail.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20200428120747.21674-1-raducanu.costi@gmail.com>
References: <20200428120747.21674-1-raducanu.costi@gmail.com>
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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, Constantin Raducanu <raducanu.costi@gmail.com>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Registers `faccessat` system call to syscall_shim library.

Signed-off-by: Constantin Raducanu <raducanu.costi@gmail.com>
---
 lib/vfscore/Makefile.uk   | 1 +
 lib/vfscore/exportsyms.uk | 2 ++
 lib/vfscore/main.c        | 6 +++---
 3 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/lib/vfscore/Makefile.uk b/lib/vfscore/Makefile.uk
index 5d50b5d..da45140 100644
--- a/lib/vfscore/Makefile.uk
+++ b/lib/vfscore/Makefile.uk
@@ -35,3 +35,4 @@ UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += link-2
 UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += ftruncate-2
 UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += truncate-2
 UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += access-2
+UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += faccessat-4
diff --git a/lib/vfscore/exportsyms.uk b/lib/vfscore/exportsyms.uk
index 9c1803a..41c8f3c 100644
--- a/lib/vfscore/exportsyms.uk
+++ b/lib/vfscore/exportsyms.uk
@@ -92,6 +92,8 @@ access
 uk_syscall_e_access
 uk_syscall_r_access
 faccessat
+uk_syscall_e_faccessat
+uk_syscall_r_faccessat
 readlink
 uk_syscall_e_readlink
 uk_syscall_r_readlink
diff --git a/lib/vfscore/main.c b/lib/vfscore/main.c
index 759c41b..588c4eb 100644
--- a/lib/vfscore/main.c
+++ b/lib/vfscore/main.c
@@ -1619,7 +1619,7 @@ UK_SYSCALL_R_DEFINE(int, access, const char*, pathname, int, mode)
 	return -error;
 }
 
-int faccessat(int dirfd, const char *pathname, int mode, int flags)
+UK_SYSCALL_R_DEFINE(int, faccessat, int, dirfd, const char*, pathname, int, mode, int, flags)
 {
 	if (flags & AT_SYMLINK_NOFOLLOW) {
 		UK_CRASH("UNIMPLEMENTED: faccessat() with AT_SYMLINK_NOFOLLOW");
@@ -1632,8 +1632,7 @@ int faccessat(int dirfd, const char *pathname, int mode, int flags)
 	struct vfscore_file *fp;
 	int error = fget(dirfd, &fp);
 	if (error) {
-		errno = error;
-		return -1;
+		goto out_error;
 	}
 
 	struct vnode *vp = fp->f_dentry->d_vnode;
@@ -1652,6 +1651,7 @@ int faccessat(int dirfd, const char *pathname, int mode, int flags)
 	vn_unlock(vp);
 	fdrop(fp);
 
+	out_error:
 	return error;
 }
 
-- 
2.17.1



From minios-devel-bounces@lists.xenproject.org Tue Apr 28 12:10:07 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 28 Apr 2020 12:10:07 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1jTP3v-0001Gj-IE; Tue, 28 Apr 2020 12:10:07 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=bb2f=6M=gmail.com=raducanu.costi@srs-us1.protection.inumbo.net>)
 id 1jTP3u-00018D-8W
 for minios-devel@lists.xen.org; Tue, 28 Apr 2020 12:10:06 +0000
X-Inumbo-ID: 3041b326-8949-11ea-b9cf-bc764e2007e4
Received: from mail-wr1-x442.google.com (unknown [2a00:1450:4864:20::442])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 3041b326-8949-11ea-b9cf-bc764e2007e4;
 Tue, 28 Apr 2020 12:10:02 +0000 (UTC)
Received: by mail-wr1-x442.google.com with SMTP id d17so24368727wrg.11
 for <minios-devel@lists.xen.org>; Tue, 28 Apr 2020 05:10:02 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=from:to:cc:subject:date:message-id:in-reply-to:references;
 bh=sZiegtzNE/YzNAyRpr5Nq8UrXjvO6owrJFeSMm0yEzA=;
 b=i5u5sORDfvLs6VnaGiSm9rr0sYD9oLWeCAZUaJJx1WYY/pl17efBQ9Elj+F+MghZlB
 OhezLN1tv4OP0c/AI+uiqnWDUk7RcJWsbLtKlWmVHyCveW1IfqU9k2myzxKAe9sh/s7V
 8/dno0Bdmhn8ylwI3HxmFJRD/k5Db2DtZehc6S4KIUzxJ+xdjdgtKtlbWIU0UKcRHw7l
 IxSj+KjdMjkuppFWnns3vmpBnWkqnyE6BUTkPd0HNNb9+0hLKnMpaEqkk1l1yx5vfBv3
 suIAKbPz3JZ9KE+tZW4Wb8yId25PbttLJPvDPHxRhdMGCheiYKNUkV7iZDBPLd5I8A1a
 bj4A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to
 :references;
 bh=sZiegtzNE/YzNAyRpr5Nq8UrXjvO6owrJFeSMm0yEzA=;
 b=GxkF53gjfPdJ1UrQcRiCdUIvN67tQG0V2NaSlq3laAtAHYj+VSw3KhxhAVejwpA7Jr
 bcDDcb0WuPsNT1IJbQLihWu7th/iGOx7cHchwnG+bQCDu3lZfBbMJ2HSlVDyaj5L6Q+8
 DTf6gWq2wCv8gCFXrVXwNnJAo/5WoS30VJ+52M9+9OakUdlEnaeU78c7cD3Yz9qazwTX
 u9w+jXtDnR3HLVuCd80iCceZy1tjnIfZ6HVGDF5NOmjHkoYXXig4q3lyjToVZSfLF3JI
 +6ovKsLUC7j8NJKCJVMQwXkidIU+4KsQzYBXg+fH+GLpABM2ftmZt0AzjbOJ4euOJkQq
 HOiw==
X-Gm-Message-State: AGi0PuaV36jmJPDhhg+F9uNB4M7y5c8zsSzaPVPOPthNwKayvejPl/2T
 uc0qLtW5PxCEIyj7qj2CVk32/z/S/ZaaWA==
X-Google-Smtp-Source: APiQypK8I1w+hh9li332f17GvAu5Zb1/ZZNjXT/Lvv5cgIuMqN4WFJcqyoQV9kO+3yDtwB4xs3qUFA==
X-Received: by 2002:adf:e7ca:: with SMTP id e10mr33532370wrn.18.1588075801602; 
 Tue, 28 Apr 2020 05:10:01 -0700 (PDT)
Received: from localhost.localdomain ([188.25.211.20])
 by smtp.gmail.com with ESMTPSA id r20sm2914621wmh.26.2020.04.28.05.10.00
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 28 Apr 2020 05:10:01 -0700 (PDT)
From: Constantin Raducanu <raducanu.costi@gmail.com>
To: minios-devel@lists.xen.org
Subject: [UNIKRAFT PATCH 03/10] lib/vfscore: Register `fallocate` to
 syscall_shim
Date: Tue, 28 Apr 2020 15:07:40 +0300
Message-Id: <20200428120747.21674-3-raducanu.costi@gmail.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20200428120747.21674-1-raducanu.costi@gmail.com>
References: <20200428120747.21674-1-raducanu.costi@gmail.com>
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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, Constantin Raducanu <raducanu.costi@gmail.com>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Registers `fallocate` system call to syscall_shim library.

Signed-off-by: Constantin Raducanu <raducanu.costi@gmail.com>
---
 lib/vfscore/Makefile.uk   |  1 +
 lib/vfscore/exportsyms.uk |  2 ++
 lib/vfscore/main.c        | 11 +++++------
 3 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/lib/vfscore/Makefile.uk b/lib/vfscore/Makefile.uk
index da45140..1cae643 100644
--- a/lib/vfscore/Makefile.uk
+++ b/lib/vfscore/Makefile.uk
@@ -36,3 +36,4 @@ UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += ftruncate-2
 UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += truncate-2
 UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += access-2
 UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += faccessat-4
+UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += fallocate-4
diff --git a/lib/vfscore/exportsyms.uk b/lib/vfscore/exportsyms.uk
index 41c8f3c..b897aa7 100644
--- a/lib/vfscore/exportsyms.uk
+++ b/lib/vfscore/exportsyms.uk
@@ -98,6 +98,8 @@ readlink
 uk_syscall_e_readlink
 uk_syscall_r_readlink
 fallocate
+uk_syscall_e_fallocate
+uk_syscall_r_fallocate
 lseek
 uk_syscall_e_lseek
 uk_syscall_r_lseek
diff --git a/lib/vfscore/main.c b/lib/vfscore/main.c
index 588c4eb..eb007b9 100644
--- a/lib/vfscore/main.c
+++ b/lib/vfscore/main.c
@@ -1785,7 +1785,7 @@ UK_TRACEPOINT(trace_vfs_fallocate, "%d %d 0x%x 0x%x", int, int, loff_t, loff_t);
 UK_TRACEPOINT(trace_vfs_fallocate_ret, "");
 UK_TRACEPOINT(trace_vfs_fallocate_err, "%d", int);
 
-int fallocate(int fd, int mode, loff_t offset, loff_t len)
+UK_SYSCALL_R_DEFINE(int, fallocate, int, fd, int, mode, loff_t, offset, loff_t, len)
 {
 	struct vfscore_file *fp;
 	int error;
@@ -1793,20 +1793,19 @@ int fallocate(int fd, int mode, loff_t offset, loff_t len)
 	trace_vfs_fallocate(fd, mode, offset, len);
 	error = fget(fd, &fp);
 	if (error)
-		goto out_errno;
+		goto out_error;
 
 	error = sys_fallocate(fp, mode, offset, len);
 	fdrop(fp);
 
 	if (error)
-		goto out_errno;
+		goto out_error;
 	trace_vfs_fallocate_ret();
 	return 0;
 
-	out_errno:
+	out_error:
 	trace_vfs_fallocate_err(error);
-	errno = error;
-	return -1;
+	return -error;
 }
 
 LFS64(fallocate);
-- 
2.17.1



From minios-devel-bounces@lists.xenproject.org Tue Apr 28 12:10:12 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 28 Apr 2020 12:10:12 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1jTP40-0001LB-Js; Tue, 28 Apr 2020 12:10:12 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=bb2f=6M=gmail.com=raducanu.costi@srs-us1.protection.inumbo.net>)
 id 1jTP3z-0001Kx-7w
 for minios-devel@lists.xen.org; Tue, 28 Apr 2020 12:10:11 +0000
X-Inumbo-ID: 31674df6-8949-11ea-b9cf-bc764e2007e4
Received: from mail-wr1-x443.google.com (unknown [2a00:1450:4864:20::443])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 31674df6-8949-11ea-b9cf-bc764e2007e4;
 Tue, 28 Apr 2020 12:10:04 +0000 (UTC)
Received: by mail-wr1-x443.google.com with SMTP id b11so24343732wrs.6
 for <minios-devel@lists.xen.org>; Tue, 28 Apr 2020 05:10:04 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=from:to:cc:subject:date:message-id:in-reply-to:references;
 bh=hl4Yjw8bsUXD90JVYdqq/cgPrrUPOoaHgcPFez+/EX8=;
 b=HuDBrmqHHg5VKENu1fPelaEV43fyIg/Y1XUznzVL9feL/5qmvPMSzkkaEHaZxrfYWE
 KYJhARqyd8VRVtVV0h93zfRU0dyqmmFONDX1kwGYHsGzmWJ+NU5Y60gqRbm2ih8GtboT
 h/rm/T8rg7IwIiNv3pfBnrZVq1TEFhKPPQ+kQUu/a3STHDS3dHuetZIXIOoipFOkXqdM
 J0TZExuOHB903N8/g98zLsXGx01lG1UgypSSz5ZblSYUFp17bKJSLYti8E/dF+9Gnfde
 CIKHBFtxdkOHalyKFuQQgRyi8cx/2vwzOvDx31a2O3lAJo5qC4IvnV77TylaooGV3FKr
 dVSw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to
 :references;
 bh=hl4Yjw8bsUXD90JVYdqq/cgPrrUPOoaHgcPFez+/EX8=;
 b=I2zsZ6KPX5rcSu+3s+wqspwjHvFrF794h/p/dC37/SfNnZ4eCcCYSAhts6o0FIfAXf
 c9tOClQ9o/uEytIRCSnAjdBO0AMEX3KjU7U1Jj45gCWcWkye714b0+6SCwYNnh6tRZhR
 rO4JN9QIVHGeQecM3KB2Q3Mn/TY8TRcLTzHZkEl+8zV+SIKKWNI2O0EvgFEz9TDrgB7y
 SHFR9rTQN0EPtGhLGPqfXU2+GOAawOKaEZFuYue9VNppJlKZ5tWSTdZ3E1+sG0oOOu54
 5ZDXI4+KZY7L6K7Q9Q3/5Qe/Pb8UWRh8TlvfcBC1ksAat304OG2/7N6meiqkJNn8PP2/
 St0g==
X-Gm-Message-State: AGi0PuYC1vUR2mSXg8waEH81m3Cc6eKTTevIpRlXA14obdvllMxLU+Lt
 U3Y8NrbqY/oMV5HRJpZV+nTSqCQQNB3QPg==
X-Google-Smtp-Source: APiQypKieOozVbqIDP1hbp0c/WSsFNgsN8o9gARH2Q3xkUX5lGFPf2aSo3u6kAbYiPJmjIZgeC2IFQ==
X-Received: by 2002:a5d:408d:: with SMTP id o13mr35484133wrp.249.1588075803643; 
 Tue, 28 Apr 2020 05:10:03 -0700 (PDT)
Received: from localhost.localdomain ([188.25.211.20])
 by smtp.gmail.com with ESMTPSA id r20sm2914621wmh.26.2020.04.28.05.10.02
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 28 Apr 2020 05:10:03 -0700 (PDT)
From: Constantin Raducanu <raducanu.costi@gmail.com>
To: minios-devel@lists.xen.org
Subject: [UNIKRAFT PATCH 04/10] lib/vfscore: Register `chmod` to syscall_shim
Date: Tue, 28 Apr 2020 15:07:41 +0300
Message-Id: <20200428120747.21674-4-raducanu.costi@gmail.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20200428120747.21674-1-raducanu.costi@gmail.com>
References: <20200428120747.21674-1-raducanu.costi@gmail.com>
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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, Constantin Raducanu <raducanu.costi@gmail.com>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Registers `chmod` system call to syscall_shim library.

Signed-off-by: Constantin Raducanu <raducanu.costi@gmail.com>
---
 lib/vfscore/Makefile.uk   |  1 +
 lib/vfscore/exportsyms.uk |  2 ++
 lib/vfscore/main.c        | 14 +++++++-------
 3 files changed, 10 insertions(+), 7 deletions(-)

diff --git a/lib/vfscore/Makefile.uk b/lib/vfscore/Makefile.uk
index 1cae643..8fef26e 100644
--- a/lib/vfscore/Makefile.uk
+++ b/lib/vfscore/Makefile.uk
@@ -37,3 +37,4 @@ UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += truncate-2
 UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += access-2
 UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += faccessat-4
 UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += fallocate-4
+UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += chmod-2
diff --git a/lib/vfscore/exportsyms.uk b/lib/vfscore/exportsyms.uk
index b897aa7..30e6aba 100644
--- a/lib/vfscore/exportsyms.uk
+++ b/lib/vfscore/exportsyms.uk
@@ -37,6 +37,8 @@ uk_syscall_e_ftruncate
 uk_syscall_r_ftruncate
 stat
 chmod
+uk_syscall_e_chmod
+uk_syscall_r_chmod
 fchmod
 fchown
 dup
diff --git a/lib/vfscore/main.c b/lib/vfscore/main.c
index eb007b9..aa688b8 100644
--- a/lib/vfscore/main.c
+++ b/lib/vfscore/main.c
@@ -1978,25 +1978,25 @@ UK_TRACEPOINT(trace_vfs_chmod, "\"%s\" 0%0o", const char*, mode_t);
 UK_TRACEPOINT(trace_vfs_chmod_ret, "");
 UK_TRACEPOINT(trace_vfs_chmod_err, "%d", int);
 
-int chmod(const char *pathname, mode_t mode)
+UK_SYSCALL_R_DEFINE(int, chmod, const char*, pathname, mode_t, mode)
 {
 	trace_vfs_chmod(pathname, mode);
 	struct task *t = main_task;
 	char path[PATH_MAX];
 	int error = ENOENT;
 	if (pathname == NULL)
-		goto out_errno;
+		goto out_error;
 	if ((error = task_conv(t, pathname, VWRITE, path)) != 0)
-		goto out_errno;
+		goto out_error;
 	error = sys_chmod(path, mode & UK_ALLPERMS);
 	if (error)
-		goto out_errno;
+		goto out_error;
 	trace_vfs_chmod_ret();
 	return 0;
-out_errno:
+
+out_error:
 	trace_vfs_chmod_err(error);
-	errno = error;
-	return -1;
+	return -error;
 }
 
 UK_TRACEPOINT(trace_vfs_fchmod, "\"%d\" 0%0o", int, mode_t);
-- 
2.17.1



From minios-devel-bounces@lists.xenproject.org Tue Apr 28 12:10:17 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 28 Apr 2020 12:10:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1jTP45-0001MD-Lo; Tue, 28 Apr 2020 12:10:17 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=bb2f=6M=gmail.com=raducanu.costi@srs-us1.protection.inumbo.net>)
 id 1jTP44-0001M0-8X
 for minios-devel@lists.xen.org; Tue, 28 Apr 2020 12:10:16 +0000
X-Inumbo-ID: 320995ca-8949-11ea-b9cf-bc764e2007e4
Received: from mail-wr1-x442.google.com (unknown [2a00:1450:4864:20::442])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 320995ca-8949-11ea-b9cf-bc764e2007e4;
 Tue, 28 Apr 2020 12:10:05 +0000 (UTC)
Received: by mail-wr1-x442.google.com with SMTP id x17so23605105wrt.5
 for <minios-devel@lists.xen.org>; Tue, 28 Apr 2020 05:10:05 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=from:to:cc:subject:date:message-id:in-reply-to:references;
 bh=jSiMyyrMBOBQf7AhdkgCzQr/wRZKR27OnzAwsz/WvmI=;
 b=vfm9OQ0ukECMuFjhVhwQ4Nf+nGRJWexwm1pZ+/+lM8a+v6u+R35Dpc7m3KvsgwjugW
 F3LchxpeULkTsqp4UvApC5Q+5hYA0WsODGdSHQw+LUl2xmu5g7nJmFCkTozy0lzy+0NP
 vAyyeQI/7XV8glncnGMl9Yg582PEkv9cAu6wyn07t5rIMcaKAsEETpf//Xjxhhwhkz3J
 yWl1DcVXTcNK0+cKth2/Rp0z9RewgsNxqC/BHRYmFgpi0ryhUTGIDOYAuqksXBvArlS4
 FZaEctpt3yWz7VUUkDmMW0LnVRaSWNYfS2AAQ12uaAhYcxCIDD9MIKUCpydddinYfgpk
 GEXw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to
 :references;
 bh=jSiMyyrMBOBQf7AhdkgCzQr/wRZKR27OnzAwsz/WvmI=;
 b=fdmEtrfR3dUoKYMI9iIdG5yreUCJxKFZCggQnnRaoTQEH3K8HX3CHsDjsCbtgVF7Zk
 4fxoHW/zVKohD7GYGZ6r2ezys5zmwCRNf1adT/CZ6lcEZYF7TfyUtnrDgpSfMYws8lmK
 xT6i2KFW8YDkN4kkLJWz+/s3/YIIZ/2+Mb265DP+0picxtaO0EhJDVtWIfGllNgfL2aC
 XnE57DEMTipmZM/VSlg9X/bYTlnFHcXL4o+xEl5E3+zbAYdK47aztzEjF5CkEP+nXLA2
 2NEikdvifB+gqwodEUr7RqbU+MEM4LizJmKQdZmBf/AUI06BAXiSg9lVjg9WAxgDg6o7
 7ekw==
X-Gm-Message-State: AGi0Puan9EJUgTuZBauKCpo/vjz7Deq3+udmVk9RKoXgMJDIaySU/lfB
 gcrYQXBMuGSQbKFg13NJijtsmSN0Z0L7fg==
X-Google-Smtp-Source: APiQypJycqzIAhKwjmZJhcE8Rkkqx5fhX0oi694ya+WAJiuq90UsszWVdCWKbOtIXvzBAwdv0rmsLA==
X-Received: by 2002:adf:e8c4:: with SMTP id k4mr31850230wrn.209.1588075804700; 
 Tue, 28 Apr 2020 05:10:04 -0700 (PDT)
Received: from localhost.localdomain ([188.25.211.20])
 by smtp.gmail.com with ESMTPSA id r20sm2914621wmh.26.2020.04.28.05.10.03
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 28 Apr 2020 05:10:04 -0700 (PDT)
From: Constantin Raducanu <raducanu.costi@gmail.com>
To: minios-devel@lists.xen.org
Subject: [UNIKRAFT PATCH 05/10] lib/vfscore: Register `fchmod` to syscall_shim
Date: Tue, 28 Apr 2020 15:07:42 +0300
Message-Id: <20200428120747.21674-5-raducanu.costi@gmail.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20200428120747.21674-1-raducanu.costi@gmail.com>
References: <20200428120747.21674-1-raducanu.costi@gmail.com>
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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, Constantin Raducanu <raducanu.costi@gmail.com>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Registers `fchmod` system call to syscall_shim library.

Signed-off-by: Constantin Raducanu <raducanu.costi@gmail.com>
---
 lib/vfscore/Makefile.uk   | 1 +
 lib/vfscore/exportsyms.uk | 2 ++
 lib/vfscore/main.c        | 9 ++++-----
 3 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/lib/vfscore/Makefile.uk b/lib/vfscore/Makefile.uk
index 8fef26e..e77818d 100644
--- a/lib/vfscore/Makefile.uk
+++ b/lib/vfscore/Makefile.uk
@@ -38,3 +38,4 @@ UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += access-2
 UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += faccessat-4
 UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += fallocate-4
 UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += chmod-2
+UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += fchmod-2
diff --git a/lib/vfscore/exportsyms.uk b/lib/vfscore/exportsyms.uk
index 30e6aba..03a02bb 100644
--- a/lib/vfscore/exportsyms.uk
+++ b/lib/vfscore/exportsyms.uk
@@ -40,6 +40,8 @@ chmod
 uk_syscall_e_chmod
 uk_syscall_r_chmod
 fchmod
+uk_syscall_e_fchmod
+uk_syscall_r_fchmod
 fchown
 dup
 dup2
diff --git a/lib/vfscore/main.c b/lib/vfscore/main.c
index aa688b8..d5ece51 100644
--- a/lib/vfscore/main.c
+++ b/lib/vfscore/main.c
@@ -2002,17 +2002,16 @@ out_error:
 UK_TRACEPOINT(trace_vfs_fchmod, "\"%d\" 0%0o", int, mode_t);
 UK_TRACEPOINT(trace_vfs_fchmod_ret, "");
 
-int fchmod(int fd, mode_t mode)
+UK_SYSCALL_R_DEFINE(int, fchmod, int, fd, mode_t, mode)
 {
 	trace_vfs_fchmod(fd, mode);
 	int error = sys_fchmod(fd, mode & UK_ALLPERMS);
 	trace_vfs_fchmod_ret();
 	if (error) {
-		errno = error;
-		return -1;
-	} else {
-		return 0;
+		return -error;
 	}
+
+	return 0;
 }
 
 UK_TRACEPOINT(trace_vfs_fchown, "\"%d\" %d %d", int, uid_t, gid_t);
-- 
2.17.1



From minios-devel-bounces@lists.xenproject.org Tue Apr 28 12:10:22 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 28 Apr 2020 12:10:22 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1jTP4A-0001NH-NN; Tue, 28 Apr 2020 12:10:22 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=bb2f=6M=gmail.com=raducanu.costi@srs-us1.protection.inumbo.net>)
 id 1jTP49-0001N1-8s
 for minios-devel@lists.xen.org; Tue, 28 Apr 2020 12:10:21 +0000
X-Inumbo-ID: 32d5523c-8949-11ea-ae69-bc764e2007e4
Received: from mail-wm1-x342.google.com (unknown [2a00:1450:4864:20::342])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 32d5523c-8949-11ea-ae69-bc764e2007e4;
 Tue, 28 Apr 2020 12:10:07 +0000 (UTC)
Received: by mail-wm1-x342.google.com with SMTP id x4so2476696wmj.1
 for <minios-devel@lists.xen.org>; Tue, 28 Apr 2020 05:10:07 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=from:to:cc:subject:date:message-id:in-reply-to:references;
 bh=QKeuW+62u9ZdWS3/XJwQaYVrtUaGiZ1OWPHQw2K7jCk=;
 b=V6tvPHNlOYMt0jOUWvHkw3e5WgqxQ6c1nGf3F2rcxuMabkZyZpkzji6dPCap5NisI+
 mioVOfzrrFUu0n7LwtN24VbulzLab9W8OERLGsJ5ZaUmuj6oEJYmS5x2T/wv3c+eNFxa
 7UiXHpumM2o4po7pwyEwaabSIcv3NhX0keaZA0IqHDi48X5VVlLbWPYqsuGBXr5zZzdz
 pIpBkyK1jjNTZXTvnhg06ENl26Ju7jQcgEXEo4lwaH9TshMVzO5CvkvbOKMAGu3p8lpx
 cerP9fzOUYEUgDzCF1e6BZM9YFwejEltWSBzFHc56V48XffbI0ia9meNmLs2j8Ei104z
 WdwQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to
 :references;
 bh=QKeuW+62u9ZdWS3/XJwQaYVrtUaGiZ1OWPHQw2K7jCk=;
 b=D23v7MP1cMuNttRP60aO/PH44OhsbmEdINzbA8wS/PZPplOse1DYd+d8IiwSdIVjPp
 abse2cZ8llaK5Gn9PYNTwI8o6A0NC+iStsbiw0t7h7nncplBUlW5vFnSWl+jRy3yLIfj
 XF81qMPvmzPvNCsUA++llK1tN92bmlbpwBtOL9OO0MOfgFruAyN3p3XX5Zp+gVgH74+b
 Oy+rhQxL77A/XxZLKXrx6ZpBrrBJQmf/RqkOXbZ97ElHYIpocwFvZspPreD7NC5HBYC5
 IvLTMj5XsFCTMdXX7kvm1JJ0LgEWGdDf76ka9H7SEfvtYmTXNMFDrCPGKkfRlV2kO34K
 ACvA==
X-Gm-Message-State: AGi0Pub/zNrJIWtm4xsGcRChq/Qd8TrLODGpcKw/7Uxhwy00M200vSCr
 UZ4gQsPpvUeKF3egzlK8rLnCRfDb0ei++w==
X-Google-Smtp-Source: APiQypLDhBfpiFCqu75m6OMesfGSqzIyY+4SQWa3oNnteFlC/5CdQiMXOCnJGLnnSfvBxRRyht4osQ==
X-Received: by 2002:a7b:c7d2:: with SMTP id z18mr4195774wmk.109.1588075805912; 
 Tue, 28 Apr 2020 05:10:05 -0700 (PDT)
Received: from localhost.localdomain ([188.25.211.20])
 by smtp.gmail.com with ESMTPSA id r20sm2914621wmh.26.2020.04.28.05.10.04
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 28 Apr 2020 05:10:05 -0700 (PDT)
From: Constantin Raducanu <raducanu.costi@gmail.com>
To: minios-devel@lists.xen.org
Subject: [UNIKRAFT PATCH 06/10] lib/vfscore: Register `chdir` to syscall_shim
Date: Tue, 28 Apr 2020 15:07:43 +0300
Message-Id: <20200428120747.21674-6-raducanu.costi@gmail.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20200428120747.21674-1-raducanu.costi@gmail.com>
References: <20200428120747.21674-1-raducanu.costi@gmail.com>
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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, Constantin Raducanu <raducanu.costi@gmail.com>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Registers `chdir` system call to syscall_shim library.

Signed-off-by: Constantin Raducanu <raducanu.costi@gmail.com>
---
 lib/vfscore/Makefile.uk   |  1 +
 lib/vfscore/exportsyms.uk |  2 ++
 lib/vfscore/main.c        | 16 ++++++++--------
 3 files changed, 11 insertions(+), 8 deletions(-)

diff --git a/lib/vfscore/Makefile.uk b/lib/vfscore/Makefile.uk
index e77818d..5ccc917 100644
--- a/lib/vfscore/Makefile.uk
+++ b/lib/vfscore/Makefile.uk
@@ -39,3 +39,4 @@ UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += faccessat-4
 UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += fallocate-4
 UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += chmod-2
 UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += fchmod-2
+UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += chdir-1
diff --git a/lib/vfscore/exportsyms.uk b/lib/vfscore/exportsyms.uk
index 03a02bb..64ca3f6 100644
--- a/lib/vfscore/exportsyms.uk
+++ b/lib/vfscore/exportsyms.uk
@@ -58,6 +58,8 @@ getcwd
 chown
 chroot
 chdir
+uk_syscall_e_chdir
+uk_syscall_r_chdir
 fstatat
 statfs
 lstat
diff --git a/lib/vfscore/main.c b/lib/vfscore/main.c
index d5ece51..8d074fe 100644
--- a/lib/vfscore/main.c
+++ b/lib/vfscore/main.c
@@ -1001,7 +1001,7 @@ __do_fchdir(struct vfscore_file *fp, struct task *t)
 	return error;
 }
 
-int chdir(const char *pathname)
+UK_SYSCALL_R_DEFINE(int, chdir, const char*, pathname)
 {
 	trace_vfs_chdir(pathname);
 	struct task *t = main_task;
@@ -1011,29 +1011,29 @@ int chdir(const char *pathname)
 
 	error = ENOENT;
 	if (pathname == NULL)
-		goto out_errno;
+		goto out_error;
 
 	if ((error = task_conv(t, pathname, VREAD, path)) != 0)
-		goto out_errno;
+		goto out_error;
 
 	/* Check if directory exits */
 	error = sys_open(path, O_DIRECTORY, 0, &fp);
 	if (error) {
-		goto out_errno;
+		goto out_error;
 	}
 
 	error = __do_fchdir(fp, t);
 	if (error) {
 		fdrop(fp);
-		goto out_errno;
+		goto out_error;
 	}
 
 	trace_vfs_chdir_ret();
 	return 0;
-	out_errno:
-	errno = error;
+
+	out_error:
 	trace_vfs_chdir_err(errno);
-	return -1;
+	return -error;
 }
 
 UK_TRACEPOINT(trace_vfs_fchdir, "%d", int);
-- 
2.17.1



From minios-devel-bounces@lists.xenproject.org Tue Apr 28 12:10:27 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 28 Apr 2020 12:10:27 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1jTP4F-0001OM-Ps; Tue, 28 Apr 2020 12:10:27 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=bb2f=6M=gmail.com=raducanu.costi@srs-us1.protection.inumbo.net>)
 id 1jTP4E-0001O8-91
 for minios-devel@lists.xen.org; Tue, 28 Apr 2020 12:10:26 +0000
X-Inumbo-ID: 33912de0-8949-11ea-b07b-bc764e2007e4
Received: from mail-wm1-x341.google.com (unknown [2a00:1450:4864:20::341])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 33912de0-8949-11ea-b07b-bc764e2007e4;
 Tue, 28 Apr 2020 12:10:08 +0000 (UTC)
Received: by mail-wm1-x341.google.com with SMTP id u127so2588487wmg.1
 for <minios-devel@lists.xen.org>; Tue, 28 Apr 2020 05:10:08 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=from:to:cc:subject:date:message-id:in-reply-to:references;
 bh=hDQxnLer27tjQNEuqlAXCHLpVDVWnzwl9n16rQYVNaA=;
 b=df0ma3wX8X8+5VEEE0pwZlcxCsa+8T0w11o64VBKyoQCMd0i1laqA8WA+1f21GxmJo
 jjiC7XeL4/VCZPi1xG/61AHtkL08DUULdKwgh/ooo6/wUmiQPejYGVFpznqrpvRvQHcH
 va3gfg93z0zzxsIOGXiGEiE7ouQ0sQBjoRziNL5xtY5faaE+pgL+uakT9sfcMOExfnGK
 dzJe7//uZzImmGF6GOdBRjJQBwoxkaqvfJidqs9owe7hnUCn6tI/S6x22RmNvRJ8ukF/
 nsA/Q8PJ+nfCNBRqC9XwSpekeZiQk3cfzbDB0kGwS0Gp7aAtYGOSebYJqb+fUA/8sQ5Z
 oV/A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to
 :references;
 bh=hDQxnLer27tjQNEuqlAXCHLpVDVWnzwl9n16rQYVNaA=;
 b=I7QxYATkJ6TUKVLcBT7fie7cGkqBo22HLsXABbMkYdj5V+7J1KbAC/BTqCt4gDvjVl
 osQ7jtHDrFbcLufkTPjQ4KlviRKSfOmdj4uHgNGoveINsCt6E9nFxczbl8qeAx075Gsp
 xLww2AnMCHI5lU8xDjAuMDXqWUnjLqC1SGRvyGj3wWd9bZjvIcvPGHfn14guyC12ewJn
 RGcuGbpbjGuy87DbkedrcPvTSRMbngi+OulUrdcGpaaHWYVeli00qLD42EOkN5d/dIJA
 UYQC4vYbhfvZQ0obZ7tcKHELGac359P1IQrYdxOSrGg7aVeiZtFhsbXFu+WUb5WDYLJZ
 4zcg==
X-Gm-Message-State: AGi0PuZZvSS7Qk0Z7af9O8jhSsmFvNLSw7q8IEmE8MXNbUAjK728LP0v
 FibWD5mOWMxX7WiO6FMMN5wYAJzYJO4fvA==
X-Google-Smtp-Source: APiQypLHWDE/td/opPmuVtKCAGOxpEn/Jgj4nnS24Up3ePYAf8i2gkEs5jNtx6V788hVbWI1M7phMQ==
X-Received: by 2002:a1c:492:: with SMTP id 140mr4526162wme.9.1588075807213;
 Tue, 28 Apr 2020 05:10:07 -0700 (PDT)
Received: from localhost.localdomain ([188.25.211.20])
 by smtp.gmail.com with ESMTPSA id r20sm2914621wmh.26.2020.04.28.05.10.06
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 28 Apr 2020 05:10:06 -0700 (PDT)
From: Constantin Raducanu <raducanu.costi@gmail.com>
To: minios-devel@lists.xen.org
Subject: [UNIKRAFT PATCH 07/10] lib/vfscore: Register `fchdir` to syscall_shim
Date: Tue, 28 Apr 2020 15:07:44 +0300
Message-Id: <20200428120747.21674-7-raducanu.costi@gmail.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20200428120747.21674-1-raducanu.costi@gmail.com>
References: <20200428120747.21674-1-raducanu.costi@gmail.com>
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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, Constantin Raducanu <raducanu.costi@gmail.com>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Registers `fchdir` system call to syscall_shim library.

Signed-off-by: Constantin Raducanu <raducanu.costi@gmail.com>
---
 lib/vfscore/Makefile.uk   |  1 +
 lib/vfscore/exportsyms.uk |  2 ++
 lib/vfscore/main.c        | 11 +++++------
 3 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/lib/vfscore/Makefile.uk b/lib/vfscore/Makefile.uk
index 5ccc917..68d108c 100644
--- a/lib/vfscore/Makefile.uk
+++ b/lib/vfscore/Makefile.uk
@@ -40,3 +40,4 @@ UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += fallocate-4
 UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += chmod-2
 UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += fchmod-2
 UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += chdir-1
+UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += fchdir-1
diff --git a/lib/vfscore/exportsyms.uk b/lib/vfscore/exportsyms.uk
index 64ca3f6..583a75e 100644
--- a/lib/vfscore/exportsyms.uk
+++ b/lib/vfscore/exportsyms.uk
@@ -91,6 +91,8 @@ telldir
 seekdir
 rmdir
 fchdir
+uk_syscall_e_fchdir
+uk_syscall_r_fchdir
 symlink
 statvfs
 fstatvfs
diff --git a/lib/vfscore/main.c b/lib/vfscore/main.c
index 8d074fe..c6e446a 100644
--- a/lib/vfscore/main.c
+++ b/lib/vfscore/main.c
@@ -1040,7 +1040,7 @@ UK_TRACEPOINT(trace_vfs_fchdir, "%d", int);
 UK_TRACEPOINT(trace_vfs_fchdir_ret, "");
 UK_TRACEPOINT(trace_vfs_fchdir_err, "%d", int);
 
-int fchdir(int fd)
+UK_SYSCALL_R_DEFINE(int, fchdir, int, fd)
 {
 	trace_vfs_fchdir(fd);
 	struct task *t = main_task;
@@ -1049,21 +1049,20 @@ int fchdir(int fd)
 
 	error = fget(fd, &fp);
 	if (error)
-		goto out_errno;
+		goto out_error;
 
 	error = __do_fchdir(fp, t);
 	if (error) {
 		fdrop(fp);
-		goto out_errno;
+		goto out_error;
 	}
 
 	trace_vfs_fchdir_ret();
 	return 0;
 
-	out_errno:
+	out_error:
 	trace_vfs_fchdir_err(error);
-	errno = error;
-	return -1;
+	return -error;
 }
 
 UK_TRACEPOINT(trace_vfs_link, "\"%s\" \"%s\"", const char*, const char*);
-- 
2.17.1



From minios-devel-bounces@lists.xenproject.org Tue Apr 28 12:10:32 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 28 Apr 2020 12:10:32 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1jTP4K-0001PU-RY; Tue, 28 Apr 2020 12:10:32 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=bb2f=6M=gmail.com=raducanu.costi@srs-us1.protection.inumbo.net>)
 id 1jTP4J-0001PD-8l
 for minios-devel@lists.xen.org; Tue, 28 Apr 2020 12:10:31 +0000
X-Inumbo-ID: 3458f50a-8949-11ea-b9cf-bc764e2007e4
Received: from mail-wm1-x341.google.com (unknown [2a00:1450:4864:20::341])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 3458f50a-8949-11ea-b9cf-bc764e2007e4;
 Tue, 28 Apr 2020 12:10:09 +0000 (UTC)
Received: by mail-wm1-x341.google.com with SMTP id v4so2210260wme.1
 for <minios-devel@lists.xen.org>; Tue, 28 Apr 2020 05:10:09 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=from:to:cc:subject:date:message-id:in-reply-to:references;
 bh=PeXa5ZAsJ9EY2GRI8Lc4n/5BH8AbnYQfzVk2VM93txs=;
 b=QefOObKZ+QG9HOoXyCQ8bGCd0Hq277pUuXgtNpVW/NRt5rF8o46LjuYcc0D+rijbY1
 6bu/x7EEP3SNTWqEVQQV88/E7Vy/F/DLwURycEx0AeIIq9VSPIgNg4mIpomtdvxajUM8
 E8B57RtV0h2um8p9HvLjlowfAWyb2XZFEnNsHhHGBTMkEBdG+anLz7HCWzYj6016eaP8
 D3uHjNv+S/YANrUIXuxFJA8w576mVldHIj8S7CqcZNIE7qifWCv6reFKTP5VbzAHdD4B
 ucbBqw++XIu/iK61A9zsAgUbNz5b0lsDpJg02nNuN3ZrS7Yg8A8Z9p5rTbhmASwXn9mp
 nrAQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to
 :references;
 bh=PeXa5ZAsJ9EY2GRI8Lc4n/5BH8AbnYQfzVk2VM93txs=;
 b=ONOgXReePBdILFXLwWej76X5sgFmXxNKn3byDStX2cM9qcwV8I/4Xm5eE0snOWLzjK
 vdhGND2qYPAQkoUkMOBEq0FRnzBzI5ogrb65bxy+dEoT8BHQ8jh4XJR/EOmSGbHi0Iaq
 l1CmujKKe8P8/8z07Uo+xo0rE9gozjuPKMe4zD6lHjfVk7g1zzoRqA0JUSv/3LuZfcq0
 OyAkYJdCLzTtBSfNSHjIlgMf3DI6khyzSWqTVK4DSgcAVQo4kM5PKiCAGY4/CbfdhQcW
 TA7p7T0I7+IsT6iMt9Ab8KXax1xASwykH7WGlclocgq20DEZOQr8KXP0t5yLU46RNnM7
 rv/A==
X-Gm-Message-State: AGi0Puag3YMjIlbnIJoFiRlaarYXzuGqv/LJkP8nO8UU2YvhV3+IBepW
 FdvsyIh83Vplu7tf9qm3bbcnkecC9paEHQ==
X-Google-Smtp-Source: APiQypLcU/sM8/oECypKD4iN340XR/j/lRk87fdQXuA1DAkGqF9/GZAIIR1ZiVg6bgfaASamawoE+w==
X-Received: by 2002:a1c:7d90:: with SMTP id y138mr4556238wmc.121.1588075808502; 
 Tue, 28 Apr 2020 05:10:08 -0700 (PDT)
Received: from localhost.localdomain ([188.25.211.20])
 by smtp.gmail.com with ESMTPSA id r20sm2914621wmh.26.2020.04.28.05.10.07
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 28 Apr 2020 05:10:07 -0700 (PDT)
From: Constantin Raducanu <raducanu.costi@gmail.com>
To: minios-devel@lists.xen.org
Subject: [UNIKRAFT PATCH 08/10] lib/vfscore: Register `dup` to syscall_shim
Date: Tue, 28 Apr 2020 15:07:45 +0300
Message-Id: <20200428120747.21674-8-raducanu.costi@gmail.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20200428120747.21674-1-raducanu.costi@gmail.com>
References: <20200428120747.21674-1-raducanu.costi@gmail.com>
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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, Constantin Raducanu <raducanu.costi@gmail.com>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Registers `dup` system call to syscall_shim library.

Signed-off-by: Constantin Raducanu <raducanu.costi@gmail.com>
---
 lib/vfscore/Makefile.uk   |  1 +
 lib/vfscore/exportsyms.uk |  2 ++
 lib/vfscore/main.c        | 10 ++++++----
 3 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/lib/vfscore/Makefile.uk b/lib/vfscore/Makefile.uk
index 68d108c..a1570ed 100644
--- a/lib/vfscore/Makefile.uk
+++ b/lib/vfscore/Makefile.uk
@@ -41,3 +41,4 @@ UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += chmod-2
 UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += fchmod-2
 UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += chdir-1
 UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += fchdir-1
+UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += dup-1
diff --git a/lib/vfscore/exportsyms.uk b/lib/vfscore/exportsyms.uk
index 583a75e..e16fa90 100644
--- a/lib/vfscore/exportsyms.uk
+++ b/lib/vfscore/exportsyms.uk
@@ -44,6 +44,8 @@ uk_syscall_e_fchmod
 uk_syscall_r_fchmod
 fchown
 dup
+uk_syscall_e_dup
+uk_syscall_r_dup
 dup2
 dup3
 sync
diff --git a/lib/vfscore/main.c b/lib/vfscore/main.c
index c6e446a..67344f9 100644
--- a/lib/vfscore/main.c
+++ b/lib/vfscore/main.c
@@ -1395,7 +1395,7 @@ int dup(int oldfd)
 	trace_vfs_dup(oldfd);
 	error = fget(oldfd, &fp);
 	if (error)
-		goto out_errno;
+		goto out_error;
 
 	error = fdalloc(fp, &newfd);
 	if (error)
@@ -1407,10 +1407,12 @@ int dup(int oldfd)
 
 	out_fdrop:
 	fdrop(fp);
-	out_errno:
+
+	out_error:
 	trace_vfs_dup_err(error);
-	errno = error;
-	return -1;
+	if(error > 0)
+		return -error;
+	return error;
 }
 
 UK_TRACEPOINT(trace_vfs_dup3, "%d %d 0x%x", int, int, int);
-- 
2.17.1



From minios-devel-bounces@lists.xenproject.org Tue Apr 28 12:10:37 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 28 Apr 2020 12:10:37 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1jTP4P-0001QV-T5; Tue, 28 Apr 2020 12:10:37 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=bb2f=6M=gmail.com=raducanu.costi@srs-us1.protection.inumbo.net>)
 id 1jTP4O-0001QB-95
 for minios-devel@lists.xen.org; Tue, 28 Apr 2020 12:10:36 +0000
X-Inumbo-ID: 3517f6a8-8949-11ea-b9cf-bc764e2007e4
Received: from mail-wr1-x443.google.com (unknown [2a00:1450:4864:20::443])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 3517f6a8-8949-11ea-b9cf-bc764e2007e4;
 Tue, 28 Apr 2020 12:10:10 +0000 (UTC)
Received: by mail-wr1-x443.google.com with SMTP id k13so24386134wrw.7
 for <minios-devel@lists.xen.org>; Tue, 28 Apr 2020 05:10:10 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=from:to:cc:subject:date:message-id:in-reply-to:references;
 bh=8PyJI2vRtm+tuZ7f9UuvfWRME9SnhjJ41tejx+8D5wE=;
 b=XcqSaeeU3Fx9czUYHs6p7dvRZ9mRfvKb3fvpyqJMdlrR5gyV0bZL+iQaftxHmaPq7b
 uCRq4bEOvr7W7ddcYN1AqKCV4nEklPUeyx7PXjF/NFXRbKXL0R+/idYpnYzDr0Honxwc
 ocR0Tj3yVH+yU7mdRa5XpeFWGSHOmvVSOtg/PV3hsBK3OJ+tRfv3IAe1GcFy+3CCjDUG
 TzK+e0oHqNvUazSNy4Y82RZS8Pw2kRxMMvrR4+ujYpIGYFz09UI7+6C/PPc10l0pRaxF
 IoF/oaHZNmsI9NtHAvb9icOhCKcYawa/2TJJYVkHKB/VlvnjPGUHj8+eicM8cf3gIamm
 xOIA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to
 :references;
 bh=8PyJI2vRtm+tuZ7f9UuvfWRME9SnhjJ41tejx+8D5wE=;
 b=awLYwm+urFPdBPVSSIFDdqHTTr6/ZGxmFbNGoQDM9/RrGeX5B3Mm0EH1ub+xaGt89i
 MWaF//Xsd4hmduem2zu1OzZhKgznoNV8271wvcmzvGRyMRk+FfpkD1mC2Vv0OpNEhlJI
 s+wROyuZANMa6DOUgQxLVTitW5CbnYo7q6u17ZgVzqMx1wuz6mEPaFefluRqCv/zTjvu
 ud8WbfT8EqQkU8Rvjp58MBXw6AttlCmpOpiZdzbEc3XTIlrjFuKaR85/zBIE4H758xGT
 dMa0P3Q9VGBNrbYEXND1WnDSBC86IsNJZLg1ana80Ch8f0DlDuHxUAaHrE0Y+xuU3hph
 Z8fg==
X-Gm-Message-State: AGi0PuZvfzteHRYGFiSq/RCAM8oH/Lu9v2dy+ETiUJvLHZQOJqQd+itL
 XBgLffu0BXDFHivuxdHt4eBdyGllGMCHTg==
X-Google-Smtp-Source: APiQypJkyoN9S/CgkwsBfI3bwlIuMFzNMUo2yv6phGlsprPMhSXP46vY48tQsJ1E1ZT68wYqiAlRIQ==
X-Received: by 2002:adf:f187:: with SMTP id h7mr33391662wro.331.1588075809797; 
 Tue, 28 Apr 2020 05:10:09 -0700 (PDT)
Received: from localhost.localdomain ([188.25.211.20])
 by smtp.gmail.com with ESMTPSA id r20sm2914621wmh.26.2020.04.28.05.10.08
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 28 Apr 2020 05:10:09 -0700 (PDT)
From: Constantin Raducanu <raducanu.costi@gmail.com>
To: minios-devel@lists.xen.org
Subject: [UNIKRAFT PATCH 09/10] lib/vfscore: Register `dup3` to syscall_shim
Date: Tue, 28 Apr 2020 15:07:46 +0300
Message-Id: <20200428120747.21674-9-raducanu.costi@gmail.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20200428120747.21674-1-raducanu.costi@gmail.com>
References: <20200428120747.21674-1-raducanu.costi@gmail.com>
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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, Constantin Raducanu <raducanu.costi@gmail.com>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Registers `dup3` system call to syscall_shim library.

Signed-off-by: Constantin Raducanu <raducanu.costi@gmail.com>
---
 lib/vfscore/Makefile.uk   |  1 +
 lib/vfscore/exportsyms.uk |  2 ++
 lib/vfscore/main.c        | 21 +++++++++++----------
 3 files changed, 14 insertions(+), 10 deletions(-)

diff --git a/lib/vfscore/Makefile.uk b/lib/vfscore/Makefile.uk
index a1570ed..0919de7 100644
--- a/lib/vfscore/Makefile.uk
+++ b/lib/vfscore/Makefile.uk
@@ -42,3 +42,4 @@ UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += fchmod-2
 UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += chdir-1
 UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += fchdir-1
 UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += dup-1
+UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += dup3-3
diff --git a/lib/vfscore/exportsyms.uk b/lib/vfscore/exportsyms.uk
index e16fa90..ead0d9f 100644
--- a/lib/vfscore/exportsyms.uk
+++ b/lib/vfscore/exportsyms.uk
@@ -48,6 +48,8 @@ uk_syscall_e_dup
 uk_syscall_r_dup
 dup2
 dup3
+uk_syscall_e_dup3
+uk_syscall_r_dup3
 sync
 vfscore_mount_dump
 umount
diff --git a/lib/vfscore/main.c b/lib/vfscore/main.c
index 67344f9..dc8f9e2 100644
--- a/lib/vfscore/main.c
+++ b/lib/vfscore/main.c
@@ -1421,7 +1421,7 @@ UK_TRACEPOINT(trace_vfs_dup3_err, "%d", int);
 /*
  * Duplicate a file descriptor to a particular value.
  */
-int dup3(int oldfd, int newfd, int flags)
+UK_SYSCALL_R_DEFINE(int, dup3, int, oldfd, int, newfd, int, flags)
 {
 	struct vfscore_file *fp, *fp_new;
 	int error;
@@ -1433,44 +1433,45 @@ int dup3(int oldfd, int newfd, int flags)
 	 */
 	if ((flags & ~O_CLOEXEC) != 0) {
 		error = EINVAL;
-		goto out_errno;
+		goto out_error;
 	}
 
 	if (oldfd == newfd) {
 		error = EINVAL;
-		goto out_errno;
+		goto out_error;
 	}
 
 	error = fget(oldfd, &fp);
 	if (error)
-		goto out_errno;
+		goto out_error;
 
 	error = fget(newfd, &fp_new);
 	if (error == 0) {
 		/* if newfd is open, then close it */
 		error = close(newfd);
 		if (error)
-			goto out_errno;
+			goto out_error;
 	}
 
 	error = vfscore_reserve_fd(newfd);
 	if (error)
-		goto out_errno;
+		goto out_error;
 
 	error = vfscore_install_fd(newfd, fp);
 	if (error) {
 		fdrop(fp);
-		goto out_errno;
+		goto out_error;
 	}
 
 	fdrop(fp);
 	trace_vfs_dup3_ret(newfd);
 	return newfd;
 
-	out_errno:
+	out_error:
 	trace_vfs_dup3_err(error);
-	errno = error;
-	return -1;
+	if(error > 0)
+		return -error;
+	return error;
 }
 
 int dup2(int oldfd, int newfd)
-- 
2.17.1



From minios-devel-bounces@lists.xenproject.org Tue Apr 28 12:10:43 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 28 Apr 2020 12:10:43 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1jTP4U-0001RN-Ue; Tue, 28 Apr 2020 12:10:42 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=bb2f=6M=gmail.com=raducanu.costi@srs-us1.protection.inumbo.net>)
 id 1jTP4T-0001RA-9f
 for minios-devel@lists.xen.org; Tue, 28 Apr 2020 12:10:41 +0000
X-Inumbo-ID: 35c5a0be-8949-11ea-ae69-bc764e2007e4
Received: from mail-wr1-x443.google.com (unknown [2a00:1450:4864:20::443])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 35c5a0be-8949-11ea-ae69-bc764e2007e4;
 Tue, 28 Apr 2020 12:10:12 +0000 (UTC)
Received: by mail-wr1-x443.google.com with SMTP id d17so24369313wrg.11
 for <minios-devel@lists.xen.org>; Tue, 28 Apr 2020 05:10:12 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=from:to:cc:subject:date:message-id:in-reply-to:references;
 bh=wBlzUBDqIXk7kpKC6GIJs+orLK0Z51THrJj2kPJY9PE=;
 b=dPcCZ096YO4/FI+hHVfZrdSAg/ezi7LXo83sx/ndllMBF1FurFTXwR9fn4e1fySX95
 +wxpTzRbWNPxSmcFujBfjjFl/hn2Baf2kcAF4FVBbheTff8RQqMcbL7VF3qqjeb0HaIw
 Rnv+NecA4G/9f1Fr1btBA5rbUYlF+/zYopUwlZ4sAwOIaQyGSZ0C9DBElNHNMl8gPjgo
 sEHE5J5bdwLfsj8vPwiIP2fw9c3MICR2AuWr3A8K8J6L2jDVBZ6bzj2nLhfIRBVVBMq3
 ayqcPvLfw0eecIrIs+91nfiSCO0S+uJKF+sn/zwoiLB+CBggt9lESMUS2EDcPFqkppdQ
 6fvQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to
 :references;
 bh=wBlzUBDqIXk7kpKC6GIJs+orLK0Z51THrJj2kPJY9PE=;
 b=UPVMcSkSHeBuAjFvS8Ftc8DSb1X7Ozc04+q3Q5y2wW0mfT/hJb2mu8F/swRlzQQTEL
 SJV6xi95FC8UzpaDs1bNDh2qSkbgCe9lDFqYuKFqL86o/1FOWpN5g5r/kC//KbaZAqyf
 DbgsT2vyLO8U0h1jjWkOka4RpUbTVNYtrRwG9hf6nMK8+EEUxftBVkEmGsQFIvpb9nD9
 8a7u8VeCbZXWRE45T2HigMDzNZzg+J2NihqhjYX8R6s27TcfeTtRW7ZpZFSTe6Krz/iU
 AadkyUoYyc3I1/gys/5PO+SNV9pBN4KpPnSbRrKAuAPwJ/OHr7NLLWAaenN3eR34Q57b
 wJXQ==
X-Gm-Message-State: AGi0PuYMhKjmefyiTY9E15lyN/iHWMVMXA/m3CdYCMQ+IH8+2DDKLK+g
 wwnKt13rSQNTUiNG89TMlWywkBzp1UQHSw==
X-Google-Smtp-Source: APiQypJNhGuszeQmYA8s2M3KDdrZVgC0tWUxiQUCNLvlVetRcOThin1kn4cWd7cEOyB5kF2tTiZf0g==
X-Received: by 2002:adf:e7ca:: with SMTP id e10mr33533112wrn.18.1588075810937; 
 Tue, 28 Apr 2020 05:10:10 -0700 (PDT)
Received: from localhost.localdomain ([188.25.211.20])
 by smtp.gmail.com with ESMTPSA id r20sm2914621wmh.26.2020.04.28.05.10.09
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 28 Apr 2020 05:10:10 -0700 (PDT)
From: Constantin Raducanu <raducanu.costi@gmail.com>
To: minios-devel@lists.xen.org
Subject: [UNIKRAFT PATCH 10/10] lib/vfscore: Register `dup2` to syscall_shim
Date: Tue, 28 Apr 2020 15:07:47 +0300
Message-Id: <20200428120747.21674-10-raducanu.costi@gmail.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20200428120747.21674-1-raducanu.costi@gmail.com>
References: <20200428120747.21674-1-raducanu.costi@gmail.com>
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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, Constantin Raducanu <raducanu.costi@gmail.com>
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

Registers `dup2` system call to syscall_shim library.

Signed-off-by: Constantin Raducanu <raducanu.costi@gmail.com>
---
 lib/vfscore/Makefile.uk   | 1 +
 lib/vfscore/exportsyms.uk | 2 ++
 lib/vfscore/main.c        | 2 +-
 3 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/lib/vfscore/Makefile.uk b/lib/vfscore/Makefile.uk
index 0919de7..5906a40 100644
--- a/lib/vfscore/Makefile.uk
+++ b/lib/vfscore/Makefile.uk
@@ -43,3 +43,4 @@ UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += chdir-1
 UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += fchdir-1
 UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += dup-1
 UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += dup3-3
+UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += dup2-2
diff --git a/lib/vfscore/exportsyms.uk b/lib/vfscore/exportsyms.uk
index ead0d9f..037537c 100644
--- a/lib/vfscore/exportsyms.uk
+++ b/lib/vfscore/exportsyms.uk
@@ -47,6 +47,8 @@ dup
 uk_syscall_e_dup
 uk_syscall_r_dup
 dup2
+uk_syscall_e_dup2
+uk_syscall_r_dup2
 dup3
 uk_syscall_e_dup3
 uk_syscall_r_dup3
diff --git a/lib/vfscore/main.c b/lib/vfscore/main.c
index dc8f9e2..7c61013 100644
--- a/lib/vfscore/main.c
+++ b/lib/vfscore/main.c
@@ -1474,7 +1474,7 @@ UK_SYSCALL_R_DEFINE(int, dup3, int, oldfd, int, newfd, int, flags)
 	return error;
 }
 
-int dup2(int oldfd, int newfd)
+UK_SYSCALL_R_DEFINE(int, dup2, int, oldfd, int, newfd)
 {
 	if (oldfd == newfd)
 		return newfd;
-- 
2.17.1



From minios-devel-bounces@lists.xenproject.org Wed Apr 29 12:34:53 2020
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 29 Apr 2020 12:34:53 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1jTlvO-0002fE-LM; Wed, 29 Apr 2020 12:34: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.92) (envelope-from
 <SRS0=4OoD=6N=citrix.com=andrew.cooper3@srs-us1.protection.inumbo.net>)
 id 1jTlvN-0002f9-GJ
 for minios-devel@lists.xenproject.org; Wed, 29 Apr 2020 12:34:49 +0000
X-Inumbo-ID: cf212721-8a15-11ea-993e-12813bfff9fa
Received: from esa3.hc3370-68.iphmx.com (unknown [216.71.145.155])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id cf212721-8a15-11ea-993e-12813bfff9fa;
 Wed, 29 Apr 2020 12:34:47 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple;
 d=citrix.com; s=securemail; t=1588163687;
 h=subject:from:to:cc:references:message-id:date:
 mime-version:in-reply-to:content-transfer-encoding;
 bh=9k33F4hgR+V4F3y/9N2bCfa6gb428rr3sfTfFTQyvSM=;
 b=ZMTdjQEu6bUmkAYDo/Dw5Q1AID6paoicCLhjzXwhoFMnOjnNRK8n9YYW
 sqPb9nSsJIOqjVKPdwsfbMrRtoEu368+/flOa594MaRAYwNCHPNKeYoF5
 y/xXp87f9yzW3FoO50gHb+pEAGKIoDdJID9tEAwZbjoKzfOAOULOKL4lM s=;
Authentication-Results: esa3.hc3370-68.iphmx.com;
 dkim=none (message not signed) header.i=none;
 spf=None smtp.pra=andrew.cooper3@citrix.com;
 spf=Pass smtp.mailfrom=Andrew.Cooper3@citrix.com;
 spf=None smtp.helo=postmaster@mail.citrix.com
Received-SPF: None (esa3.hc3370-68.iphmx.com: no sender
 authenticity information available from domain of
 andrew.cooper3@citrix.com) identity=pra;
 client-ip=162.221.158.21; receiver=esa3.hc3370-68.iphmx.com;
 envelope-from="Andrew.Cooper3@citrix.com";
 x-sender="andrew.cooper3@citrix.com";
 x-conformance=sidf_compatible
Received-SPF: Pass (esa3.hc3370-68.iphmx.com: domain of
 Andrew.Cooper3@citrix.com designates 162.221.158.21 as
 permitted sender) identity=mailfrom;
 client-ip=162.221.158.21; receiver=esa3.hc3370-68.iphmx.com;
 envelope-from="Andrew.Cooper3@citrix.com";
 x-sender="Andrew.Cooper3@citrix.com";
 x-conformance=sidf_compatible; x-record-type="v=spf1";
 x-record-text="v=spf1 ip4:209.167.231.154 ip4:178.63.86.133
 ip4:195.66.111.40/30 ip4:85.115.9.32/28 ip4:199.102.83.4
 ip4:192.28.146.160 ip4:192.28.146.107 ip4:216.52.6.88
 ip4:216.52.6.188 ip4:162.221.158.21 ip4:162.221.156.83
 ip4:168.245.78.127 ~all"
Received-SPF: None (esa3.hc3370-68.iphmx.com: no sender
 authenticity information available from domain of
 postmaster@mail.citrix.com) identity=helo;
 client-ip=162.221.158.21; receiver=esa3.hc3370-68.iphmx.com;
 envelope-from="Andrew.Cooper3@citrix.com";
 x-sender="postmaster@mail.citrix.com";
 x-conformance=sidf_compatible
IronPort-SDR: pZvIiy9Omj3s7gRbP5t5GHyKCL2lkLtdfHUx5DQu2JH6lhg4euykVWArxXFitrZ4e9Nil9B+ie
 4At2nQrn1TOpG2WoGa0p3h+4/idmHFqDZsgdYPil9jL977TS4cW5XOag1iUp7B+VFO/gfGBCrQ
 kbyapf8EmMwvg52GEpqFDSiHtC53ZhvdafP1GostWIMoUZFcTOC6BrJtml0D45knvRhWQR1oVc
 9Pmj3vyUEMYkh4tmUvd/jtEhsbfuq9ZLIL/4HcChyHmeCTmqVc72YeG2KV7iNqqSauF6MRhbDl
 kSo=
X-SBRS: 2.7
X-MesageID: 16421262
X-Ironport-Server: esa3.hc3370-68.iphmx.com
X-Remote-IP: 162.221.158.21
X-Policy: $RELAYED
X-IronPort-AV: E=Sophos;i="5.73,332,1583211600"; d="scan'208";a="16421262"
Subject: Re: [PATCH] mini-os: Avoid segfaults in tc{g,s}etattr
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Jason Andryuk <jandryuk@gmail.com>, Wei Liu <wl@xen.org>
References: <3ed7eb87-070c-28ea-4f8a-aa4421cea93a@citrix.com>
 <5ea8173d.1c69fb81.915ba.8400@mx.google.com>
 <c242b963-ae80-1ca0-9b4d-fe2c8f66b6a2@citrix.com>
Message-ID: <34cc563f-9e05-b55c-54f4-55104d2d42b5@citrix.com>
Date: Wed, 29 Apr 2020 13:34:42 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101
 Thunderbird/68.7.0
MIME-Version: 1.0
In-Reply-To: <c242b963-ae80-1ca0-9b4d-fe2c8f66b6a2@citrix.com>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit
Content-Language: en-GB
X-ClientProxiedBy: AMSPEX02CAS02.citrite.net (10.69.22.113) To
 AMSPEX02CL02.citrite.net (10.69.22.126)
X-BeenThere: minios-devel@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@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.xenproject.org, samuel.thibault@ens-lyon.org,
 JBeulich@suse.com, Stefan Bader <stefan.bader@canonical.com>,
 xen-devel@lists.xenproject.org
Errors-To: minios-devel-bounces@lists.xenproject.org
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>

On 28/04/2020 12:55, Andrew Cooper wrote:
>> Below is what I was preparing to submit as a patch.  So, yes it hacks around
>> it, but it isn't messy.
>>
>> ---
>> Disable fcf-protection to build working binaries
>>
>> Ubuntu gcc-9 enables -fcf-protection by default, which conflicts with
>> -mindirect-branch=extern and prevents building the hypervisor with
>> CONFIG_INDIRECT_THUNK:
>> xmalloc.h:81:1: error: ‘-mindirect-branch’ and ‘-fcf-protection’ are not
>> compatible
>>
>> Stefan Bader also noticed that build32.mk requires -fcf-protection=none
>> or else the hypervisor will not boot.
>> https://bugs.launchpad.net/ubuntu/+source/gcc-9/+bug/1863260  Similarly,
>> rombios reboots almost immediately without -fcf-protection=none.  Both
>> of those can be handled by setting it in EMBEDDED_EXTRA_CFLAGS.
>>
>> CC: Stefan Bader <stefan.bader@canonical.com>
>> Signed-off-by: Jason Andryuk <jandryuk@gmail.com>
> Sadly, this isn't really appropriate.  We specifically do want to use
> both -fcf-protection and -mindirect-branch=thunk-extern together, when
> GCC isn't broken.
>
> Overriding -fcf-protection is ok but only when we're certain we've got a
> buggy GCC, so that when this bug is fixed, we can return to sensible
> behaviour.

GCC has been adjusted on master
(https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=9be3bb2c0a258fd6a7d3d05d232a21930c757d3c)
and the gcc-9 branch
(https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=a03efb266fcbf4a01285fff871a5bfe5caac4944). 
This should be fixed for GCC 10 and 9.4

I checked the resulting hypervisor build with both -fcf-protection and
retpolines, and it works fine.

The question now is what to do all the buggy GCCs out there.  We can
either ignore the problem and it will eventually go away, or spot the
problematic compiler and clobber -fcf-protection.

We also need to see what is wrong with RomBIOS, because that is weird. 
However, we should not be interfering with the HOSTCC settings.

~Andrew


